Originally Published: Thursday, 28 September 2000 Author: Mike Baker
Published to: interact_articles_irc_recap/IRC Recap Page: 1/1 - [Std View]

Yesterday's Best of IRC for Friday, September 29th: Modems!

Welcome to Yesterday's Best of IRC! In this new section, we'll be discussing some of the more frequent or interesting questions that have appeared in #linuxhelp. #linuxhelp, for those of you unfamiliar with it, is linux.com's online support forum, you can reach it by pointing your IRC client to the open projects IRC network (irc.openprojects.net) or by following the link on the bottom of the Linux.com Live! page.

To start off this edition I'd like to cover some of the more common questions that frequent #linuxhelp in attempts to help those few out there that haven't already asked. Since this section is also to be a reference guide, I've expanded on the answers to make them easier to understand. It's not like IRC where you can pause at any point and ask for definitions.


How do I know if my modem is a winmodem?

A Winmodem is a minimalistic modem where much of the hardware has been replaced by specialised software. To put things in perspective imagine hooking a phone line to your sound card and constantly running a program to translate the data in and out of the sound card, now imagine having no documents on how the sound card works or what data to expect; you'll start to see the reason these devices are so unpopular. Winmodems are often included by the manufacturers in an effort to cut costs, as nearly every new PC these days comes with windows most people don't even know they're using a winmodem until they try to connect to the Internet from Linux.

So how do you know if you've got a winmodem? Winmodems tend to be internal or integrated modems due to the fast CPU access they require, any external modem that connects in via the serial port cannot be a winmodem. It's possible that there may be a type of USB winmodem but I haven't run across any yet. This is not to somehow infer that all internal modems are winmodems, the fact that an internal modem (PCI especially) doesn't respond to any serial ports is due to the fact that linux doesn't probe for PCI serial devices - more about that later.

A great resource to help you identify if your modem is a winmodem or not is http://www.o2.net/~gromitkc/winmodem.html. Here you'll find a large database by Linux users of which devices are known winmodems (identified here by a WM prefix). If you find out that your modem in fact is a winmodem there's still a chance that you can get it working, a site called Linmodems.org exists to provide information on winmodems (linmodems) and linux. If you happen to have a winmodem made either by PCTel or Lucent you can download a kernel module that will allow you to use the modem in linux (although a recommendation for a good non winmodem is probably in order).

I have an internal modem and it's not a winmodem, yet Linux doesn't recognise it.

This is a common problem that stems from the fact that linux only checks for the standard serial devices on startup, the solution is pretty straight forward but first you need to know rather your modem is ISA or PCI. ISA and PCI are just terms to identify how the device connects into the computer, ISA will be a long long black connector while PCI tends to be a short white connector.

If you have a PCI modem you should be able to find it in /proc/pci, it's generally marked down as a "Communications Controller", quoth the infobot:

<info> [pcimodem] to configure a pci modem under linux you need to find the IO and IRQ, usually by catting /proc/pci. After you've found those settings you'll need to do a setserial command to map the device to a serial port, eg: setserial /dev/ttyS3 port (IO port goes here) irq (IRQ here) uart 16550A.

If you happen to notice that all your PCI cards are sharing the same IRQ (typically IRQ 9) this is because the bios is not set correctly for Linux. For many computers there's a setting in bios called "plug and play os", if your bios has such an option please set it to disabled, this will force the bios to check for resource conflicts so not all your cards will be sharing the same IRQ which would have adverse effects on system stability. Disabling the bios setting should not affect any other operating systems installed.

If you have an ISA modem the general idea is the same but first you'll have to set the the IO and IRQ. Many ISA modems have jumpers on them to set the IO and IRQ, if at all possible you'll want to set the jumpers so that the modem is on a standard serial port, this will allow linux to detect the modem at startup and you can avoid the more complicated setup I'm about to describe. If for whatever reason you're forced to use plug and play mode you'll have to use isapnp to set the IO and IRQ then use setserial to assign it a device. Typically it goes something like this:

pnpdump --config > /etc/isapnp.conf
isapnp /etc/isapnp.conf
(at this point you'll see the IO and IRQ values assigned to the device)
setserial /dev/ttyS3 port (IO port goes here) irq (IRQ here) uart 16550A

Setserial in these examples is used for nothing more than to map a device to an unused serial port. In both examples given here your modem will be placed on /dev/ttyS3, you'll want to change this if you're already using ttyS3.

I think my modem is set correctly but I'm having trouble using it or I get "modem busy"

The most common error is a mistake setting the modem device. It's important to remember that in linux the device names are different than in Windows, serial ports in linux start at /dev/ttyS0 so if your modem is on COM1 then your modem is ttyS0, COM2 is ttyS1 and so on, the first thing you want to check is that you've chosen the correct device name, you may want to link this to /dev/modem using a command like ln -s /dev/ttyS0 /dev/modem. Errors can also be caused by resource conflicts, where one ore more devices are on the same IO or IRQ, you should check that "plug and play os" is disabled as described above.

Further help configuring modems can be found in the LDP Modem-Howto (http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html).

Mike Baker (aka MbM) is the project manager for Live!, You'll find him and all the rest of the linux.com live! staff online in #linuxhelp answering your questions.