Make your own free website on

Infrablue atTripod



miniPCI Modems on IBM Thinkpads


IBM Thinkpads come with different modems but the most common is that using the Lucent chipset.  It is called a Winmodem, LT modem, or Lucent Winmodem.  It may be in combination with an Ethernet card or by itself.

So far the two miniPCI LT modems that I have successfully run under Linux are the Lucent Winmodem miniPCI card and the Lucent Winmodem that is integrated into the Intel miniPCI ethernet/modem combo card.  From what I read it looks like the Xircom combo miniPCI card also uses the Lucent modem chipset but the 3Com combo card DOES NOT.  This site states that the modem of the 3com miniPCI cards is currently not supported under Linux.  And I am not entirely sure about the Xircom one.  I purchased what was stated to be a Xircom miniPCI on Ebay yet the actual card I received says Intel on it.  Go figure.  From what I have read from the info at this page at IBM's website they use similar chipsets for the modem.

These modems work perfectly under Linux thanks to Agere Systems and independent developers for writing and maintaining the drivers.  Their site contains a lot of information about Winmodems.  From there you can download the driver:      or  

As of this writing the most recent driver is ltmodem- 8.26a9.  You can download pre-compiled binaries yet I prefer to download the source and create my own .deb using their easy scripts (there is also a script to build a .rpm and one to just build the bare modules).  There is also now a driver released for 2.6 kernels.  I have successfully compiled and used it.  I believe the link to it is on the "Resources" page on the above sites.  Note the instructions here are not for the 2.6 driver although some of the information may still be relevant.

It is a simple procedure to download the source package ltmodem- 8.26a9.tar.gz, untar it, run the build_deb script, and install the modules.  The script assumes that the source to the currently running kernel is located under /usr/src/linux.  If it is not an alternate target kernel source can be specified.

Once the build_deb script finishes you will be left with a .deb named ltmodem-<kernel_version>_8.26a9_i386.deb   When installing sometimes the installation script fails and gives an error message.  Usually this is not serious and the modules will be been correctly installed but the post install script fails.  If that happens (which there is a high likelihood it will if you are installing a ltmodem .deb  a second time for a different kernel) try to modprobe lt_modem to verify that the module got installed.  With lsmod you should see two modules, lt_modem and lt_serial.  If these get loaded then it means the modules got compiled and installed but the post-install script failed setting up the device.  You can manually set up the ltmodem serial device with the following commands:

mknod /dev/ttyLT0 c 62 64
setserial /dev/ttyLT0 irq 11 port 0xff38 ^fourport ^auto_irq skip_test
ln -sf /dev/ttyLT0 /dev/ttyS14
ln -sf /dev/ttyLT0 /dev/modem

Note that if at some point you use a pcmcia card that has a modem, or connect another modem to your computer, the symlink to /dev/modem from /dev/ttyLT0 may get replaced by the new modem and you will have to re-symlink /dev/ttyLT0.  Or you can do what I do and just specify /dev/ttyLT0 in your ppp configuration scripts so the symlink to /dev/modem is irrelevant.

Dialing up

Since we've come this far I might as well write about the dialing up process.  Dialup is very easy to set up with the pppconfig command.  apt-get install pppconfig  It has a nice dialog interface that can run under a console and can let you set up multiple accounts.  It needs to be run as superuser or root.  Note some things when setting up a new dial-up account:

usually you want to choose "Dynamic"  for DNS, not the default "Static"

most ISP's use PAP authentication, which is the first choice. 

it is best to leave the modem port speed set to the default of 115200

For the number to dial I often like to preceed the actual number with


This disables caller-id and then creates a slight pause before dialing the actual number.

I usually answer "no" to having the modem identified automatically and just enter /dev/ttyLT0

Make sure you select the "Finish" option to save the information before exiting

Now how do I dial?

First you want to make sure that the user you are dialing out as has permissions to dial out.  You must add him to the dialout group with the command

addgroup user dialout

You may also need to add the user to the group dip.

Then he can run the command

pon ispname

Ispname is the name you used in pppconfig.

poff closes the connection.

I often use another method to dial out, since I like to see the output from the ppp daemon and to know that it is actually working, and to debug it if it is not.  To do this I wrote a little script called dial:

#! /bin/bash
/usr/sbin/pppd nodetach call ispname

(this needs chmod u+x in order to execute).  I run ./dial in a console window and can see all the nice output from the ppp daemon.  ctrl- c kills the daemon and disconnects (as does unplugging the phone line when your roommates are screaming)