Using a Modem with GNU/Linux

Platform: GNU/Linux
Level of Difficulty: Intermediate
<hr>
Rutgers Main | OIT Main | NBCS Main | NBCS Documentation Main


Support for different types of modems in Linux, even though it is getting better with every new release, still is not up to par.   The main problem is that Linux does not support Win Modems.  A Win Modem is a modem that needs on special drivers, and other applications to do things like error correction, and detection.  Because of this these types of modems need the Windows operating System to run.  The majority of internal modems that come preinstalled on computers are win modems.  Recently some companies as well as some programers in the Linux community have developed drivers that allow certain win-modems to work with Linux. You can look and see if your win-modem has a driver available for it by going to http://linmodems.org. Not all modems are listed at this website, but it is a good start.  External modems that are non-win modems, are relatively cheap (under $100), give you a better connection speed, and work very well with Linux..

The next step to using a modem with Linux is finding out on which serial port you modem is located.  To do this follow these steps.

    login to your system as root At the prompt, type:

    echo ATDT [your phone number] >/dev/ttyS0

    note: you can replace "ttyS0" in the example above with ttyS1, ttyS2, and ttyS3.  These devices correspond
               to COM ports 1 through 4)

If you type that echo command to all four possible COM devices and your modem does not pick up and dial your phone number on at least one of those devices, then Linux can't communicate properly with your modem.

Before giving up, though, you should visit the web site of your modem's manufacturer and search for information on drivers.  There may be special software that will allow Linux to communicate with your modem.  It's also a good idea to check with the main Linux web site (http://www.linux.org/) and also the web site of the company that published your version of Linux.  In particular, you want to look for links to Hardware Compatibility lists.

If you've tested your modem using the method above, and it worked, the next thing to check is that the modem device has its permissions set so that all of the users on your system can access it.  This way, you won't have to login as root every time you want to dial out.   Make sure you are setting the permissions on the correct device (ttyS0, ttyS1, ttyS2, or ttyS3) and follow these steps (while logged in as root):

cd /dev
chmod a+rw [device]
ls -l [device] 

You should see something like this:

    crw-rw-rw-    1    root    uucp   5    64    May  5  1998 [device]

The important part is crw-rw-rw- which should match exactly with what you see on your system.

Now, you'll want to make sure that you have a /dev/modem entry. This makes it much easier to remember which device (ttyS0, ttyS1, ttyS2, or ttyS3) the modem is connected to. In a root shell window, cd to the /dev directory and type:

ln -s /dev/[your modem device] modem 

Where [your modem device] is ttyS0, ttyS1, ttyS2, or ttyS3 (whatever device your modem is connected to).


<hr>
Copyright © 2008 Rutgers, The State University of New Jersey, NBCS Help Desk. All rights reserved.

Rutgers Logo

webmaster@nbcs.rutgers.edu
11/25/02