Help File Library: Configuring Your ISA External or PCI Modem
Written by Wayne Goodrich (Radar)
mailto:
radar@linuxpimp.net
This Help File assumes that you:
1: Have the modem installed
2: Have Linux installed and running
3: have a dialup account with an ISP
4: Know what type of modem you have (ISA or PCI)
5. Know if your modem is a hardware modem.
If you are not sure about (5) go to --> http://www.idir.net/~gromitkc/winmodem.html
and look up your modem in their list.
This Help File will not discuss winmodems. Winmodems use software which emulate hardware routines that
hardware based modems perform in order to keep costs down. If you have one, you may want to go to
http://www.linmodems.org to see if your particular modem is supported.
If you're modem is an ISA or an external (connected to com port) chances are it is already
configured. The way to tell is to issue the following command: setserial -bg /dev/ttyS*
(may need to be root) The following should appear: (in the case of ISA / external)
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
For PCI modems, you may need to do a little work.
Issue the following command: cat /proc/pci (may need to be root) You should see the following
after scrolling down some:
Serial controller: Unknown vendor Unknown device (rev 1).
Vendor id=12b9. Device id=1008.
Medium devsel. IRQ 5.
I/O at 0xfcc0 [0xfcc1].
Bus 1, device 0, function 0:
Using this information, we can use the setserial command to set values.
Issue the following command as root:
setserial /dev/ttyS2 uart 16550A port 0xfcc0 irq 5
substituting the port and irq values for your own. Now let's find the appropriate init script to
put this command in so that it will automatically be prepared at bootup. In Red Hat & Mandrake
you should have a file called rc.local (/etc/rc.d/rc.local) where you can add this command. Make
sure that the file is there, and as root type: echo setserial /dev/ttyS2 uart 16550A port 0xfcc0
irq 5 >> /etc/rc.d/rc.local (this appends the setserial entry to the end of the file). In Debian,
I use /etc/init.d/bootmisc.sh. (Alternatively, you can just edit the script with your favorite
editor.) Your modem should now be configured for use. Now, when you type:
setserial -bg /dev/ttyS*
you should see:
/dev/ttyS2 at 0xfcc0 (irq = 5) is a 16550A
Now we can set up ppp to dial our ISP. If you have a GUI program that dials for you, you should
be able to select /dev/ttyS* (substitute a valid com port from above) and have the program probe
it for you. If it fails, try the next one. You should now be able to dial out. If you cannot dial
out as a regular user, make sure youruser belongs to the proper groups -- dip, dialout & possibly
pppusers. If not, issue: adduser dip (and so forth).
For Debian users: make sure you have pppconfig installed (it is the default). Type as root:
pppconfig. Go through and configure your connection using "provider" as the name. This way you
can just type "pon" to dial the ISP. You will need to know your ISP's DNS servers and whether to
use PAP or CHAP. You can let pppconfig probe your modem, but it's not necessary. Just manually
enter what it is. When you're through, as root type: linuxconf. Go to users / groups and tab over
to ppp groups. It will ask to create a pppusers group. Do it, then (at terminal)
adduser pppusers, adduser dip,
adduser dialout. Now, as your username,
type: pon
(if all is well, you should hear the modem dialing). press CTRL-ALT-F1 to get to a
terminal (if
you're already at a terminal, type ALT-F2 etc). Log in as root, and type:
tail -f /var/log/syslog
(depends on distro I think). You should see your logfile scrolling down. This is where you will
see any errors that may occur. Once you're issued an ip address according to this
logfile, you
can type ALT-F7 to get back to GUI.