Installation instructions are given for the binary drivers described above, since the accompanying documention is scant (if existing at all) and can be very misleading. Installation of open-source drivers is not covered here, since it is usually better described by its own documentation, and varies more dramatically from package to package and from time to time.
You may wish to use the installation script which may have accompanied your driver instead of following the instructions given here, but all of the scripts I have seen simply perform a subset of the following steps in any case.
You should read through the instructions given below before beginning, to get a feeling for what's going on and where you might run into problems.
If your modem is an ISA PNP modem, make sure that the PNP resources have been appropriately allocated using isapnptools. (See "ISA Plug-n-Play" above.)
See "What Hardware is Supported" above for the approprate URL for the driver for your hardware.
If necessary, unpack the driver package in an empty directory
with unzip
(if .zip),
tar -zxvf
(if .tar.gz ), etc. The files present should
include binaries with names like some-driver.o
(e.g., in the example
in the next step, the module is named ltmodem.o
).
A trial insertion of the module is a good first check to do. Though its results are not necessarily indicative of your final success, it is a fair indicator of whether the remaining steps will be worth your time.
In the directory in which the files were unzipped, perform the following
steps, replacing ltmodem.o
with the name of the appropriate module(s)
for your modem:
First, try to simply insert the module with:
insmod ltmodem.oThere may be a complaint such as:
kernel-module version mismatch ltmodem.o was compiled for kernel version 2.2.12-20 while this kernel is version 2.2.14.If so, try forcing the insertion with:
insmod -f ltmodem.oHaving done this, check for successful insertion into the kernel with:
lsmodwhich will, if insertion was successful, display a list including
ltmodem.o
such as:
Module Size Used by ltmodem 453200 0 (unused) nls_iso8859-1 2268 1 (autoclean) nls_cp437 3744 1 (autoclean) vfat 9052 1 (autoclean) fat 29248 1 (autoclean) [vfat]: ...
If the module (ltmodem) was not inserted, there is an
outstanding problem. The some-driver.o
may not
be matched with the modem hardware; the differences between
the sources from which the kernel and module were compiled
may be too great; or, your module may require another module
to be loaded beforehand (some PCTel packages have two modules;
try reversing the insertion order of the two?).
Before abandoning the current effort
entirely, a more closely version matched kernel could be
installed and tested. Source files for
Linux kernels can
be downloaded and already compiled kernels are available
with many Linux distributions.
If the insertion was successful, it is worth proceeding further.
In the following, all steps except the final one are optional, but will allow the modules to be inserted without forcing and without version-mismatch warning messages. (Below, replace "ltmodem" with "esscom" if you have an ESS modem.)
mkdir /root/modem
and cd /root/modem
/root/modem/fixscript
chmod +x fixscript
mv ltmodem.o ltmodem.2212.o
./fixscript ltmodem.2212.o ltmodem.o
insmod ltmodem.o
(it should insert without version warnings)cp ltmodem.o /lib/modules/`uname -r`/misc/ltmodem.o
If you are running Linux kernel 2.2.15-x or newer, you need to obtain the
ppp.o
module from kernel 2.2.14 (and should use the "fixscript" on it as well),
as described in the next step.
There are apparently two types of PCTel module package around.
/lib/modules/2.2.16
.
With such a package, if you are running a kernel more recent than 2.2.16, you should try the "fixscript" method used with the Lucent and ESS modules above, but note that this has not to my knowledge been tried out yet. If you are running a kernel older than 2.2.16, you should consider upgrading your kernel, or else try the fixscripting as well (this is also not guaranteed to work). You should not have to get the 2.2.14 ppp.o module. Please send me a report if you get these to work.
mkdir lib mkdir src mkdir src/module mv *.a lib/ mv Makefile *.c src/module
Now go to the directory src/module and type make
. This should generate the module
file pctel.o
, which will appear back up in the directory lib
. (The driver module is not the file ptmodule.o
in src/module
!)
The version of the module generated in this way will match your current kernel version.
ppp.o
if necessary and desirable
If you have a Lucent or ESS modem, and your kernel is more recent than 2.2.15-x), use of a ppp.o from 2.2.14 sources will be necessary. A copy of this module is available at http://walbran.org/sean/linux/stodolsk/ppp2214.o.
It can be copied to the appropiate /var/lib/version/net directory
as described below. To avoid forcing insmod -f ppp.o
,
the mismatched ppp.o can be version fixed as described here for
the example of a kernel version 2.2.17 mismatch.
su root
and give the password. Change to the working directory cd /root/modem
fixscript ppp2214.o pppfix.o
rmmod ppp
, if it's already loaded insmod pppfix.o
, which should proceed without any
mismatch complaint.lsmod
should display the inserted ppp in the list./lib/modules/2.2.17/net/ppp.o
,
by renaming it with:
mv /lib/modules/2.2.17/net/ppp.o /lib/modules/2.2.17/net/ppp2217.oand place the fixed pppfix.o with
cp pppfix.o /lib/modules/2.2.17/net/ppp.o
If not already done copy the other module file(s) (such as ltmodem.o
,esscom.o
, and
pctel*.o
) into the directory
/lib/modules/`uname -r`/misc/
mknod /dev/ttyS14 c 62 78
mknod /dev/ttyS15 c 62 79
mknod /dev/esscom c 127 1
wvdial
.
Note, however, that wvdial
is reported to give a kernel panic on ppp-off
with this module under kernel 2.2.16 (and possibly others). This may not be a general situation however.chgrp uucp /dev/ttyS14 chmod 666 /dev/ttyS14Group definitions can be modified in
/etc/group
.
ln -s /dev/
yourdevicefile /dev/modem
Note: if you chose to skip the "Align the module and kernel versions" step above, you may need to use "insmod -f" here.
insmod ltmodem
insmod essmodem
insmod pctel
Every Linux distribution has a script file(s) governing the
use of its serial ports. Yours will probably have to be
modified to accommodate the new device. For example,
to use a PCI Lucent winmodem with a Debian installation, the following
section is needed in the file /etc/serial.conf
:
# These are two spare devices you can use to customize for # some board which is not supported above.... # #Lucent Modem driver version 4.27.5.66 # ltmodem.o was compiled for kernel version 2.2.12-20 # with MANY_PORTS MULTIPORT SHARE_IRQ enabled # ttyS14 at 0x0260 (irq = 3) is a Lucent /dev/ttyS14 uart 16450 port 0x0260 irq 3 #/dev/ttyS15 uart XXXXX port XXXX irq X # These are the ports used for either the Usenet Serial II # board, or the Boca Board 4, 8, or 16 port boards.Conflicts for interrupt (IRQ) assignments must generally be avoided. Information on your serial port properties can be displayed with:
setserial -agv /dev/ttyS*which returns information like:
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal skip_test session_lockout /dev/ttyS14, Line 14, UART: 16950/954, Port: 0x0260, IRQ: 3 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal skip_test
Note: While Marvin's Debian system needs this addition, Sean's Red Hat system didn't need any modification to the serial configuration. You may wish to try yours with and without, and see if either works (better).
The name and location of these scripts depend on the particular Linux distribution (among Redhat, Debian, Suse and many others) and the particular software mediating the dialup (such as kppp and wvdial). Many distributions/dial-up software have a configuration utility which will request your input and then automatically generate the dial-up scripts. The minimum information required is:
If you have trouble, consult the documentation of your ppp dialer and/or the PPP-HOWTO. Example scripts for the particular example of pppconfig with Debian are given in the appendix.
Try to connect to your ISP with the ppp dialer.
Congratulations!
Dang!
See the Troubleshooting and FAQ sections of this howto for some ideas on how to fix it.
To avoid having to insert the module(s) in the kernel every time you want to dial in, see the appendix section "Coincident insertion and removal of ppp related modules."