Winmodems with Linux
NOTE: if you read the tutorial and are still experiencing difficulties and would like help, you are asked to start a new topic on the forums.
Please do NOT reply to this thread to ask a technical question. Replies to THIS thread should be corrections and enhancements on the tutorial/howto only.
Thanks in advance for your co-operation.
This post covers how to get a Winmodem working with Linux. It is based upon my experiences getting my Winmodem (PCI/Internal Modem) working with Redhat linux (releases from 7.3 to 9.0) using an internal modem with microchips manufactured by Lucent.
If you do not have either Redhat's Linux distribution or a Lucent chipped modem, this posting may still be of use to you, as the procedures are similar for other distributions (many can make use of rpm files - such as Mandrake, Suse, and Conectiva) and modem chip manufacturer.
All command line (terminal) commands are enclosed in single quotes ' ', which you should leave out. They are only included for clarity.
There are times, during the driver installation, that you will need to have the powers of the root (also called the super user) userid. This can be achieved by either logging on as root, or by entering 'su - ' (note: there is a space between the 'su' and the'-') command in a terminal. Either way you will need to use the root password that you created when you installed Linux. You will know when you are the root user (super user) as the command prompt will change from a "$" to a "#" .
Don't worry too much if you don't yet understand the command line (terminal) interface. If you follow the examples, as they are written, you will start to learn some more about it.
In Linux, Winmodems are, quite rightly, called Linmodems, and you may find the site http://www.linmodems.org useful.
For the impatient person
1) Download the relevant rpm file from http://www.heby.de/ltmodem
2) Install the driver by entering (in a terminal window as root/su -)
'rpm -i ltmodem-kv_version_number.i686.rpm'
3) Start using the modem
For the person who wants to know a bit more
1) File download -
The file that you need to download (from http://www.heby.de/ltmodem) will depend upon what release (version) of kernel your Linux is running. To find this out enter, in a terminal window, 'uname -r'
which will give you a message along the lines :-
[nerderello@localhost nerderello]$ uname -r
The above example shows that the Linux kernel version number is 2.4.20-8 .Your Linux may give you a different result, depending upon which kernel you are running.
So, in this example (shown above) we will need to find and download the file called
ltmodem-kv_2.4.20_8-something.i686.rpm . Where the "something" is the version number of the driver itself. You should go for the latest version you can find in the list.
2) Installing the RPM file.
Now that we have the file safely on the hard disk (I usually put it into my home directory, but it doesn't really matter where you put it, as long as you can find it again) it's time to install the driver.
There are two main ways of installing the driver from an RPM file - the command line and the graphical way. I'll start with the command line way.
Open a terminal and become super user ('su -') or be logged on as root. Then goto ('cd') the sub-directory [folder] where the downloaded RPM file is (for example, if you have downloaded the file into a sub-directory called /home/nerderello/downloads , then you would enter 'cd /home/nerderello/downloads' . If you're unsure of which sub-directory you're in, then enter 'pwd' , for Print Working Directory).
Then enter :-
'rpm -i ltmodem-kv_kernel-version-driver-version.i686.rpm' . So, in the example we had earlier, the command to enter will be :- 'rpm -i ltmodem-kv_2.4.20_8-something.i686.rpm' .
Linux will then chunter away for a minute or two (depends on how fast your PC is), and then return the command line prompt. No error messages mean that it has been installed successfully. See below if you have problems.
Open your favorite file manager and find the downloaded file. Double click on the downloaded rpm file and the GUI front end to RPM will be launched. It will then go through the driver installation process. See below if you have problems.
3) Using the modem
Before we can use the modem we must setup the internet account. There are various ways of doing this, from the Internet Configuration Wizzard in Gnome to KPPP in KDE, or even editing /etc/wvdial.conf and then using the 'wvdial' command to dial up, at the command line interface. The device that we need to use is either the standard internal modem device called "/dev/modem" or the Lucent device called "/dev/ttyLT0" (obviously without the double quotes), either will do.
Note: you may find that you have to type the device name into the relevant box (rather than select it from a list), in the GUI utility.
The other thing to note, is that we need to create the dial-up connection first and then make use of our favorite web browser - email client - ftp client - etc.
4) What has been done to my Linux by this driver?
If we look at the file /etc/modules.conf ('cat /etc/modules.conf') we notice that a few new lines have been added.
These are the lines as they are appear on my PC:-
# lt_drivers: autoloading and insertion parameter usage
alias char-major-62 lt_serial
alias /dev/tts/LT0 lt_serial
alias /dev/modem lt_serial
# The next two lines are syntax examples, only Rarely Needed, to automate parameter usage during lt_drivers insertion. See documentation for details.
# options lt_modem vendor_id=0x115d device_id=0x0420
# options lt_modem Forced=3,0x130,0x2f8,0
# section for lt_drivers ends
Once we have used the modem, we can have a look at the modules that have been loaded ('/sbin/lsmod') .
Mine shows (amongst others) these two:-
[nerderello@localhost nerderello]$ /sbin/lsmod
Module Size Used by Tainted: P
lt_serial 20180 0 (autoclean)
lt_modem 521467 0 (autoclean) [lt_serial]
If we now have a look at the device/file that is used (/dev/modem) by the internal modem ('ls /dev/modem -alF') we notice how it has been pointed at the Lucent device (as far as Linux is concerned, just about everything, including your modem, is a file. This is why you can list your modem in the same way that you can list any "normal" file). Like so :-
[nerderello@localhost nerderello]$ ls /dev/modem -alF
lrwxrwxrwx 1 root root 11 Jul 18 17:26 /dev/modem -> /dev/ttyLT0
5) Trouble shooting, problems and questions
a) How do I know which chips my modem has?
The way I did it, origionally, was to have a look at the modem card, write down all the numbers on any chip that I could find, and then (having re-installed the card and using another well know operating system) I went to this site :-
Then did a find (Ctrl F in most browsers) using the numbers that I found on the chips.
The site also lists the internal/PCI modems by manufacturer, and anything with a penguins head logo next to it on the list works with Linux. The site has photos of the chips, which may help.
Another way of finding out what PCI cards you have installed, is by using the excellent PCIUTILS package, available from http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html . This gives you the 'lspci' command that, for me, gives :-
[nerderello@localhost nerderello]$ /sbin/lspci
00:00.0 Host bridge: Intel Corp. 82810 GMCH [Graphics Memory Controller Hub] (rev 03)
00:01.0 VGA compatible controller: Intel Corp. 82810 CGC [Chipset Graphics Controller] (rev 03)
00:1e.0 PCI bridge: Intel Corp. 82801AA PCI Bridge (rev 02)
00:1f.0 ISA bridge: Intel Corp. 82801AA ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801AA IDE (rev 02)
00:1f.2 USB Controller: Intel Corp. 82801AA USB (rev 02)
00:1f.5 Multimedia audio controller: Intel Corp. 82801AA AC'97 Audio (rev 02)
01:04.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 02)
01:04.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 02)
01:05.0 Communication controller: Lucent Microelectronics F-1156IV WinModem (V90, 56KFlex) (rev 01)
It's the last line that is of interest with us.
b) I don't have a distribution that uses RPM
If you look near the bottom of the page at http://www.heby.de/ltmodem you will find the drivers in a gzipped format. These need to be downloaded and then unzipped and then compiled. The README or INSTALL file that comes with them will tell you how
c) I try to install the RPM file but I'm told that I don't have certain dependencies
This is the great bug bear of RPM file installation. What you need to do is go to http://rpmfind.net and put the missing dependencies into the search field (one dependency at a time). You should be presented with the RPMs that you download and install in the same way that | described above. Then retry the ltmodem driver install.
d) I try to install the RPM file, but I'm told that the kernel was compiled under a different version of the C or C++ libraries.
The only answer I've found for this is to search for a different release (still with the correct kernel version number) of the driver and then try to install that (http://www.google.com/linux using ltmodem in the search box). If that fails look at installing using the gzipped file.
e) I've done all of this, and the modem dials up, but doesn't connect me with the internet.
Try checking out the syslog ('tail --lines 60 /var/log/messages' as root/su -) to see if there are any helpfully error messages. Or, if you are using KPPP, turn on the terminal mode and see what get sent down the line.
My syslog looks like this, when I've had a successful connection, using the Network Device Control within Gnome:-
localhost ifup-ppp: Setting up a new /etc/ppp/peers/ppp0 config file
localhost ifup-ppp: pppd started for ppp0 on /dev/ttyLT0 at 57600
localhost kernel: CSLIP: code copyright 1989 Regents of the University of California
localhost kernel: PPP generic driver version 2.4.2
localhost pppd: pppd 2.4.1 started by root, uid 0
localhost kernel: Loading Lucent Modem Controller driver version 8.26
localhost kernel: Detected Parameters Irq=5 BaseAddress=0xc400 ComAddress=0xc000
localhost kernel: Lucent Modem Interface driver version 8.26 (2002-11-04) with SHARE_IRQ enabled
localhost kernel: ttyLT00 at 0xc400 (irq = 5) is a Lucent Modem
localhost insmod: Warning: loading /lib/modules/2.4.20-8/ltmodem/lt_modem.o will taint the kernel: non-GPL license - UNKNOWN
localhost insmod: See http://www.tux.org/lkml/#export-tainted for information about tainted modules
localhost insmod: Module lt_modem loaded, with warnings
localhost insmod: Module lt_serial loaded, with warnings
localhost wvdial: WvDial: Internet dialer version 1.53
localhost wvdial: Initializing modem.
localhost wvdial: Sending: ATZ
localhost wvdial: ATZ
localhost wvdial: OK
localhost wvdial: Modem initialized.
localhost wvdial: Sending: ATDT08450796699
localhost wvdial: Waiting for carrier.
localhost wvdial: ATDT08450796699
localhost wvdial: CONNECT 44000 V42bis
localhost wvdial: User Access Verification
localhost wvdial: login:
localhost wvdial: Carrier detected. Chatmode finished.
localhost pppd: Serial connection established.
localhost pppd: Using interface ppp0
localhost pppd: Connect: ppp0 <--> /dev/ttyLT0
localhost /etc/hotplug/net.agent: assuming ppp0 is already up
localhost modprobe: modprobe: Can't locate module ppp-compress-21
localhost pppd: local IP address ***.***.***.***
localhost pppd: remote IP address ***.***.***.***
localhost pppd: primary DNS address ***.***.***.***
localhost pppd: secondary DNS address ***.***.***.***
I've "*" out the TCP/IP addresses, for obvious reasons, and the telephone number that your modem dials will, probably, be different (this one - 08450796699 - dials Freeserve in the UK). And the modprobe error message is something I'll get around to clearing up, one day. Maybe.
So don't worry too much if you don't understand what is going on in this example of the syslog (a combination of modules being loaded, modem commands and ppp (Point to Point Protocol - the bit of the TCP/IP network software that we're making use of) stuff), I've included it so that you know what a successful connection looks like, warnings/error messages and all.
f) I have upgraded my kernel and now my modem no longer works.
You need to upgrade your modem driver to have the same number as your new kernel.
Copyright Tony Pattison 2003
for people with Conexant / Rockwell modems, there is a 'How to' document at :-
nerderllo.. the conxant, rockwell site has moved to...