Linux PCI Modem Notes

Sonora Communications, Inc.

  • Increase font size
  • Default font size
  • Decrease font size

Linux PCI Modem Notes

E-mail Print PDF

These are some rough notes that may be useful to someone and may not constitute a complete howto.

Thank you to whomever I stole this info from long ago...

Though some winmodems can be made to work, we don't recommend tham or use them for Hylafax fax servers.

Install the (real – not winmodem) internal PCI modem or PCI serial board an external modem will be attached to.

Boot Linux.

Grep the boot messages to see if Linux detected the modern or serial board:

dmesg|grep tty

You may get something like this:

ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS04 at port 0xd800 (irq = 18) is a 16550A

In this case, Linux detected the two built-in seral ports as well as the new internal 3COM/USR modem.

As the modem was automatically detected by the OS, we only need to create a symbolic link to make the modem readily useable:

ln -s /dev/ttyS4 /dev/modem

I then like to test things with Minicom logged in with root privileges:


Minicom defaults to using /dev/modem and will usually report:

Welcome to minicom 2.00.0
OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
Compiled on Feb 26 2002, 09:38:06.

Press CTRL-A Z for help on special keys


If I don't get an OK from Minicom, something is usually wrong and I troubleshoot until it reports OK.

Warning: some/most PCI modems WILL NOT work with a shared IRQ!

3COM/USR PCI Modem Howto

This howto is mostly obsoleted by better hardware detection in newer Linux distributions.

Modem Specification
  • Brand: 3Com

  • Model: 0727

  • FCC: 4X2USA-32034-M5-E

  • Product: 3CP 2976-OEM-50

  • Interface: PCI

  • Speed: 56K

1. Configure the Modem

1.1. Determine the IRQ and I/O of the modem

The IRQ and I/O is reported by the kernel.

1.1.1. Using 'lspci'

Run: 'lspci -v' and search for something like this:

00:0c.0 Serial controller: US Robotics: Unknown device 1008 (rev 01) (prog-if 02)
Subsystem: Unknown device 12b9:00aa
Flags: medium devsel, IRQ 11
I/O ports at b400
Capabilities: <available only to root>

1.1.2. Using /proc/pci

Run: 'cat /proc/pci' and search for something like this:

Bus 0, device 12, function 0:
Serial controller: Unknown vendor Unknown device (rev 1).
Vendor id=12b9. Device id=1008.
Medium devsel. IRQ 11 .
I/O at 0xb400 [0xb401].

1.2. Determine the serial tty of the modem.

The tty of the modem is the next available serial tty.

If you have ttyS0 and ttyS1, the modem the modem should be in ttyS2.

Try using: ttyS0, ttyS1, ttyS2 or ttyS3

1.3. Build the command for configuring the modem

You must use the command 'setserial' to configure the modem.

Replace IRQ, I/O and TTY with your settings:

setserial /dev/TTY irq IRQ port I/O ^fourport ^auto_irq skip_test autoconfig spd_vhi


setserial /dev/ttyS3 irq 11 port 0xb400 ^fourport ^auto_irq skip_test autoconfig spd_vhi

2. Update the /dev/modem link

The file /dev/modem is a symbolic link to the serial port. You must update it after finding a tty that works.

If your modem is at ttyS03, use this command as root:

cd /dev
ln -sf ttyS3 modem

3. Configure the modem at boot time

You have to run the setserial command every time you boot Linux.

RedHat 6.x Instructions

Create the file: /etc/rc.d/rc.serial

Put the setserial command in that file. Example:

# 3COM 0727 56K PCI
setserial /dev/ttyS3 irq 11 port 0xb400 ^fourport ^auto_irq \ skip_test autoconfig spd_vhi
# Print the modem setting at boot time
setserial /dev/modem -b

Make the file executable:

chmod +x /etc/rc.d/rc.serial


If after starting minicom the first message is not an "OK " string, the modem is not responding.

Try starting minicom with the tty as the first parameter, i.e.: minicom /dev/ttyS3

Try configuring another COM port (ttyS1 to ttyS3)

lspci does not show an IRQ number for the modem Check your BIOS setup. To debug the problem, try disabling the COM2 or the USB to free some IRQ lines.

The PnP OS option may be set to 'On', and the BIOS does not automaticallyassign an IRQ number to the selected PCI Slot.