Installing A PCI Modem Card
2. I have seen references to folks having difficult-to-fix serial problems by using "setserial" incorrectly. I was able to use it to enable a PCI modem on my PC under Linux, but I was fully prepared to have to re-install if anything went wrong.
Your kernel must have serial support. I was using RedHat Linux 6.2, with kernel 2.2.14-5.0 at the time of this writing.
As root, do "cat /proc/pci > pci.txt" to get a current record of detected PCI devices. Install your pci card modem by the instructions accompanying the card. I chose a US Robotics/3Com 56k Performance Pro PCI, model 3CP5610A.
Boot up and "su" to root. Do "cat /proc/pci" again, to identify the IRQ of the new device you installed. Compare this listing with the previous one saved in "pci.txt". Your modem should have been detected, even if the manufacturer‚?ā¨∆ň?s data shows "unknown". I was fortunate to have only one serial device appear in the list. If you have more, you will have to decide which one it is.:
# cat /proc/pci PCI devices found: . . Bus 0, device 14, function 0: Serial controller: Unknown vendor Unknown device (rev 1). Vendor id=12b9. Device id=1008. Medium devsel. IRQ 9. I/O at 0xfce8 [0xfce9]. . .
Enable the PCI Serial Port
Now that you know the IRQ (mine was "9", above) and I/O port address of your serial device, enter the command:
# setserial /dev/ttyS1 irq 9 port 0xfce8 autoconfig
This assigns port 0xfce8 and IRQ 9 to serial port device ttyS1 as you might have guessed.
Now re-direct your /dev/modem link to the new modem device port:
# rm -f /dev/modem # ln -s /dev/ttyS1 /dev/modem
If you have already set up "netcfg" or "kppp" to use /dev/modem as the device, you should be ready to go. Simply command "/sbin/ifup ppp0" to begin dialing.
I used a modem init of "AT&F1" to start with, so I could hear the modem dialing, and watched a "tail -20 /var/log/messages &" to see how the connection was proceeding. I then reverted to "AT&F1L0" to turn off the speaker.
I put the "setserial..." command (above) at the end of my /etc/rc.d/rc.local file to auto-switch to internal modem at boot.
I modified the modem init command to "AT&F1&K0" later, when I had trouble connecting to some of the less adept modems in my ISP‚?ā¨∆ň?s stack. The "&K0" turms off auto compression mode in the 3COM PCI series. I could tell that my modem was failing negotiation by listening to the repeated "beep-boop-buzz"‚?ā¨∆ň?s as it tried to connect. I thought it was either negotiating for speed or compression, so I picked "compression" and got lucky.
Credits: Thanks to my guru-babe Robin, this time, for having the guts to type the setserial command while I was making breakfast!