Team LiB
Previous Section Next Section

Choosing a Modem

If you don't have a modem or are contemplating buying a new one, your safest bet is to choose an external serial modem. Every external serial modem I have used works fine from the get-go. USB modems can be a bit harder to get going, but basically work well. A few internal PCI modems are great, namely those that include a supported chipset.

The official word from Red Hat, Inc. ( on modem support as of Red Hat Linux 9 was:

While officially this is true, there are ways to get some winmodems working in Fedora and Red Hat Linux if you care to take the trouble.


If you already have a modem and you just want to give it a shot, go ahead. As you go through this chapter, I will describe how to determine the kind of modem you have and whether or not it is supported in Linux.

Using PCI Modems

A common way to distinguish between PCI modems you can use with Linux is distinguishing between controller-less and controller-based modems. Controller-less modems are referred to as winmodems. Winmodems that have drivers that allow them to work in Linux are sometimes referred to as Linmodems. While there are no officially supported Linmodems in Fedora or Red Hat Linux, there are drivers available you can try. (See the "Using winmodems" sidebar for further details.)

If you are going to purchase an internal PCI modem (one that plugs directly into a PCI slot on your computer), make sure that the modem:

  • Is controller-based-In other words, all the basic modem functionality takes place within the modem and not in the operating system. The box or online description for the modem should note it as a controller-based modem.

  • Contains a supported chipset-Linux modem drivers are written based on the type of communications chips inside the modem. Because the same chips can be used in different modems (and because, on occasion, the same modem name will include different chipsets), determining the chipset will tell you if the modem has a supported Linux driver.

Chipsets for controller-based PCI modems (in other words, not winmodems) include the following:

  • Lucent Venus chipset-Includes the Zoom 2920 and Actiontec PCI56012 modems (as well as several MultiTech modems)

  • USR/TI Kermit chipset-Includes the 3COM/US Robotics 3CP5610 family of modems (models 5610A, 5613 and 5609) and OEM models 2976, 2977, and 3258

  • TOPIC TP560i chipset-Well Communications (FM-56PCI-TP, GVC MD0321) and the Archtek Smartlink 5634PCV

The modems just mentioned are generally more expensive than their controller-less counterparts. Because winmodems are cheap and plentiful, some people are willing to try to get a winmodem working before they go out and buy a real modem.

Checking Your Chipset for Linux Support

If you are not sure what kind of modem you have, examine the chipset on the card before you install it. Using that information, you can check out these websites for information on Linux modem support:

  • Winmodems are not modems ( see if your PCI modem has a supported chipset, click Home Site, and then click the Chipset Database link. The site also contains a wealth of information on winmodems, other modem types (USB, ISA, and so on), and general modem operations.

  • A Linmodems support page ( it doesn't contain as large a database of supported modems as the previous site, the content here is very current (there are even references to Fedora).


If you know at this point that you have a winmodem, before proceeding you should be sure that there is a Linux driver available for the winmodem. If there is none, you need to go and get a different modem. If you have a laptop computer, you might want to dig a bit deeper and check out to research how others who own your model laptop have dealt with their modems for Linux.

Installing the Modem

The next step for a PCI modem is to install it and check it out, using the following instructions.

  1. Physically install the modem-Follow the manufacturer's instructions for installing the modem. Make sure that you have:

    • Firmly seated the modem in the PCI slot

    • Replaced the screw holding the modem to the case (if appropriate)

    • Plugged the line jack on the modem to your telephone wall jack

  2. Boot Linux-During the boot process, the kudzu utility checks the /etc/sysconfig/hwconf file to look for any hardware that has been added or removed since the computer was shut down.

    In this case, kudzu should find the new modem installed in one of your PCI slots and offer to let you configure it. Figure 13-1 shows an example of a kudzu screen where a supported Multitech modem is detected; in Figure 13-2 a nonsupported winmodem is detected:


    If you are booting to runlevel 5 (the default state), a graphical screen is shown during startup. You need to click Show Details to be able to see the kudzu screen when it appears.

    In Figure 13-1, you can see that a modem containing the supported Lucent Venus chipset was detected. In Figure 13-2, kudzu can tell that the device is a modem from Motorola, but it does not have a driver to support the device. In both cases, you are prompted for a response.

  3. Configure Modem in Kudzu-From the kudzu screen, click Configure. Kudzu will try to add your modem to the local /etc/sysconfig/hwconf file (which contains information defining all the hardware on your computer).

Click To expand
Figure 13-1: During boot-up, kudzu finds a supported Multitech modem with a 4Lucent Venus chipset.
Click To expand
Figure 13-2: Here kudzu finds a nonsupported Motorola winmodem.

You can run kudzu from the command line by simply typing kudzu as root user. However, you might want to turn off the GUI (go to runlevel 3) to run kudzu because it probes the video card as well and can scramble your GUI.

Checking the Modem

At this point, if the modem was properly detected you should be able to list information about that modem. Here's how:

  1. List PCI devices-Once the computer starts up, type the following to list all the PCI devices connected to your computer (presumably including the modem you installed).

    # /sbin/lspci -vv | less

    Page through the output (use the space bar) to view the hardware connected to your PCI slots. Here's an example of output for a PCI modem:

    00:09.0 Communication controller: Lucent Microelectronics
            Venus Modem (V90, 56KFlex)
       Subsystem: Lucent Microelectronics: Unknown device 5656
       Control: I/0+ Mem+ BusMaster+ SpecCycle- MemWINV-
         VGASnoop- ParErr- Stepping- SERR- FastB2B-
       Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
         DEVSEL=medium>TAbort- <TAbort- <MAbort- >SERR- <PERR-
       Latency: 0 (63000ns min, 3500ns max)
       Interrupt: pin A routed to IRQ 10

    In this case, the modem is a MultiTech MT5634ZPX-PCI. Key information is that it is a PCI modem that includes the Lucent Venus chipset. (That is one of a handful of chipsets you can find on internal PCI modems that are controller-based.)

    The lspci output from the winmodem I tested gave less information about the modem:

    00:09.0 Communication controller: Motorola:
           Unknown device 5608
      Subsystem: Motorola: Unknown device 0000
      Flags: bus master, medium devsel, latency 32,IRQ 10
      I/0 ports at ec00 [size=256]
      Memory at dffff000 (32-bit, non-prefetchable) [size=4K]
      Capabilities: [40] Power Management version 2

    This winmodem contained the Motorola 62412-51 chip, which I had to determine by physically looking at the card. By checking the Chipset Database at the site and selecting the Motorola SM56 PCI link, I could see that there was support for that Motorola chip through Red Hat Linux 7.1, but that modems with that chipset were not supported for later systems.

  2. Run scanModem-To get more information about your PCI modem, download the scanmodem utility and run it. This utility gives you information about any PCI modems it finds (winmodems or not) and will give you any Fedora-specific information it has about modem drivers.

    1. Change to the directory in which you want to save the scanmodem utility and type the following:

      # wget
    2. Unzip the utility by typing gunzip scanModem.gz

    3. Run the utility by typing sh scanModem

    4. Read the ModemData.txt file (for information specific to Fedora and your modem), ModemData.txt.2 (for general scanModem information), and ModemDriverCompiling.txt (to compile your own winmodem driver).

  3. Continue-Where you go from here depends on whether or not you have a controller-based or controller-less modem:

    • Winmodem-If you have a winmodem and are still determined to try to get it working, refer to the "Using Winmodems" sidebar and Table 13-2 for further information. They will help you understand what you need to do to get your winmodem working (if that's possible).

    • Controller-based PCI modem-With a supported controller-based PCI modem, Linux should automatically know to use the serial.o driver to provide a serial interface to the modem. Therefore, to Linux, the modem is configured to be used via a standard serial port (/dev/ttyS0, /dev/ttyS1, and so forth).

The next step is to make sure that Linux can find your modem and communicate with it. For that, skip ahead to the Probing and Trying your Modem section, given later in this chapter.

Using USB Modems

Because some new computers have limited PCI slots and often don't even have serial ports, USB modems are becoming more popular for those who still need dial-up. If you are choosing a USB modem for Linux, you should make sure that:

  • It is not a controller-less modem (yes, there are USB winmodems).

  • It does conform to the USB Communication Device Class Abstract Control Model (CDC ACM) specification.

In Linux, USB modems that comply with the CDC ACM should work with the acm driver. According to documentation that comes with that driver, USB modems known to work with the driver include:

  • 3Com USB OfficeConnect 56k

  • 3Com USB Voice FaxModem Pro

  • 3Com USB Sportster

  • Multitech USB Multimodem 56k

  • Zoom 2986L FaxModem USB

  • Compaq 56k FaxModem

  • ELSA Microlink 56k

When Linux detects a supported USB modem, it creates the devices needed to access the modem. For the first USB modem, the /dev/ttyACM0 and /dev/cuacm0 devices can be used to access the modem. The second USB modem is accessible through /dev/ttyACM1 and /dev/cuacm1, and so on.


The device name beginning with /dev/cu ... is a throwback from the first uucp (UNIX-to-UNIX copy) programs used with early UNIX systems. The cu stood for Call UNIX, and device names beginning with cu were used to access serial ports connected to modems that dialed other computers.

Using Serial Modems

With new, external serial modems starting at about $40 (and even cheaper if you get a used one), this might be the best way to go if you are getting a dial-up modem for Linux. To set up an external serial modem in Linux, simply follow these steps:

  1. Follow the manufacturer's instructions to install the modem (typically, just plug in the modem to a serial port on your computer, the power cord to an electrical outlet, and the line to a telephone jack.)

  2. Either reboot the computer or run the kudzu command from a shell (as root user) to configure the modem.

Next, go ahead to the Probing and Trying Your Modem section.

Team LiB
Previous Section Next Section