If compilation of your driver is interrupted by with a message like:
 #error Modules should never use kernel-headers system headers,
 #error but headers from an appropriate kernel-source
the kernel headers being used are not adequate and:
 

SOURCES may be NECESSARY
--------------------------------------------------------
The instructions below are minimal and should be 
supplemented with relavant reading as necessary, as a
substantial amount of Linux is involved.
This is NOT an adequate Course for everything mentioned.

A driver generally is software code through which the
central processor unit (CPU) manages computer hardware.
The ltmodem kit contains specific driver code, to be
combining with external resources, kernel-headers. 

So what are kernel-headers?
Linux source code is multifaceted and supports an increasing
array of hardware platforms (initially PCs only, but now
MACs, Sun SPARCS, Compaq alphas and others). Additionally,
even for a single platform, particular choices of which source
code components to use are essential. Some potential sources
are mutually contradictory.  Thus tailoring/choices are essential.

After providing specs needed/chosen for your PC, kernel-headers 
(with FileNames.h) are constructed, through the sequence of 
actions listed below.  Many Linux distros provide kernel-header 
packages matching their stock kernels, which can be imported.
These are MUCH simpler to use than working with Linux source 
packages. Newbies should take this route, initially, if possible.

Unfortunately, some distros are evidently NOT providing header
packages that suffice for compiling with ltmodem driver (or the
lt_modem.o plus lt_serial.o pair of the imminent 5.9n releases).  
A kernel-header package is about a 1 mb download.  Instead you
are forced to download the full sources, which are some
15-20 mb packages.  So PLEASE double check that there may be
some other kernel-header package at your Linux distro that may
suffice.  

If you have a service contract with your distro,
PLEASE try and reach a Human Being thereat. Convey the 
problem: an ltmodem driver will have to be compiled with EACH
change of kernel, and the Distro should provide a kernel-header
package suitable for the increasing community afflicted with
Winmodems. Give them the kit download site:
http://www.heby.de/ltmodem
Give them contacts (stodolsk@rcn.com, Christoph Hebeisen &lt;cth@sfu.ca&gt;,
Mark Spieth &lt;mark@digivation.com.au&gt; ) so that we can try to avoid this
type of problem prospectively.

If necessary, preferable download kernel-sources from your installation
CDs, or your Linux's distro online repository.  
Thereat, some tailoring specific to your distro may have 
already been done. 

If not available there, the general site is http://www.kernel.org/
or its mirrors.  Browse to /pub/linux/kernels/2.?/ . Therein,
you need the linux-version.tar.bz2 with &quot;version&quot;
matching your current(or planned kernel) as closely as possible.
$ uname -r
is the command which outputs your current kernel version. Your are
presumable downloading it under MS-Windows.  

After rebooting into Linux, verify that you have available enough space
for further processing, say 50 mb.
$ cd  /SomeDir/   
with the free space on that partition. Space information is returned by:
$  df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda4             372M  233M  120M  66% /
/dev/hda6             974M  736M  188M  80% /usr
/dev/hda5             900M  666M  235M  74% /Data

Some additional software may be needed.
The utility bzip2 is needed for unpacking. Probably it is on your system
already.  Verify that there is installed the software provided by your
Distro for compiling kernels, including: make and the (PC architecture
specific) bin86 utilities.

After mounting your Microsoft partition if necessary, perhaps with:
$ mount /dev/hda1 -t vfat /mnt
the sources are unpacked with command:
$ tar Ixf PATHto/linux-version.tar.bz2 
After a few minutes there will be a folder:
  /SomeDir/linux-version/  
A symbolic link is necessary:
$ ln -s /SomeDir/linux-version/ /usr/src/linux
Verify with:
$ ls -l /usr/src/linux (which for my system)
lrwxrwxrwx 1 root  src DateTime /usr/src/linux -&gt; linux-2.4.3
Move into it
$ cd /usr/src/linux
Look around:
$ ls  (will show files/folders like)
COPYING        Makefile        arch     include  lib      
CREDITS        README          debian   init     mm   
Documentation  REPORTING-BUGS  drivers  ipc      net
MAINTAINERS    Rules.make      fs       kernel   scripts
-----
It is necessary to clean possible old debris with:
$ make mrproper

This next step is CRITICAL. You must identify on your own System, a
config file specifying the contents of your kernel. For some Linux
Distros, it will be at:
  /boot/config-version
For redhat there is a /usr/src/linux/configs directory.
The version IS same as that displayed by:
$ uname -r
and the start if the file is like:
===============
#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
CONFIG_ISA=y
# CONFIG_SBUS is not set
CONFIG_UID16=y
================

Then within /usr/src/linux/ input this config-version into the
configuration process:
$ make menuconfig  OR make Xconfig
Near the bottom of the menus generated, there will be a choice to:
&quot; Load an Alternate Configuration File &quot;
Use /boot/config-version or the equivalent for your Distro.
$ Exit
$ Exit with Save configuration
Now , the kernel-source system has the necessary information about your
running kernel, which you will want to compile and use ltmodem (and all
other drivers) under.  This config information is stored in the file 
&quot;.config&quot;  

It is next used to compile the NEEDED kernel headers specific to your
system:
$ make dep
This will take some 5-15 minutes. Relieve yourself, get some lunch, walk
your dog, or take a nap. Afterward, a hugh output of filenames.h should
be displayed by:
$ ls /usr/src/linux/include/linux
Your kernel-version should be in the output of:
$ cat /usr/src/linux/include/linux/version.h | grep UTS
#define UTS_RELEASE &quot;2.4.3&quot;
-----------
For my system, it is the:  &quot;2.4.3&quot; 

If all this checks, you are ready to make ltmodem drivers finally!!!

$  cd ToYourFolder/ltmodem-version
$ ./build-module
and follow through.
