US Robotics modem doesn't work after hardware upgrade

 I have recently upgraded my system from P2-300 to an AMD Athlon system.
After the upgrade, my US Robotics 56K Voice/Faxmodem doesn't work in Linux
any more (but works in Win 98).  I have tried vgetty and minicom and they
both failed to get any response from the modem.  I am running Red Hat 7.1.

  A few bits of info.  The modem is an ISA PnP board, and /proc/isapnp

Card 1 'USR3070:U.S. Robotics 56K Voice INT' PnP version 1.0
  Logical device 0 'USR3070:Unknown'
    Device is active
    Active port 0x3e8
    Active IRQ 7 [0x3]
    Resources 0
      Priority preferred
      Port 0x2f8-0x2f8, align 0x0, size 0x8, 10-bit address decoding
      IRQ 3 High-Edge
      Alternate resources 0:1
        Priority acceptable
        Port 0x3f8-0x3f8, align 0x0, size 0x8, 10-bit address decoding
        IRQ 4 High-Edge
      Alternate resources 0:2
        Priority acceptable
        Port 0x3e8-0x3e8, align 0x0, size 0x8, 10-bit address decoding
        IRQ 3,4,5,7 High-Edge
      Alternate resources 0:3
        Priority acceptable
        Port 0x2e8-0x2e8, align 0x0, size 0x8, 10-bit address decoding
        IRQ 3,4,5,7 High-Edge

The result of setserial during bootup is:

Serial driver version 5.05a (2001-03-20) with MANY_PORTS MULTIPORT SHARE_IRQ SER
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS02 at port 0x03e8 (irq = 7) is a 16550A

The output in the vgetty log says:

07/30 22:57:28 yS0  vgetty: experimental test release 0.9.27 / 11Mar01
07/30 22:57:28 yS0  mgetty: experimental test release 1.1.25-Feb01
07/30 22:57:28 yS0  reading generic configuration from config file /etc/mgetty+s
07/30 22:57:29 yS0  reading program vgetty configuration from config file /etc/m
07/30 22:57:29 yS0  reading port ttyS0 configuration from config file /etc/mgett
07/30 22:57:29 yS0  check for lockfiles
07/30 22:57:29 yS0  locking the line
07/30 22:57:29 yS0  lowering DTR to reset Modem
07/30 22:57:30 yS0  send: \dATQ0V1H0[0d]
07/30 22:57:30 yS0  waiting for ``OK''
07/30 22:57:50 yS0  timeout in chat script, waiting for `OK'
07/30 22:57:50 yS0  init chat timed out, trying force-init-chat
07/30 22:57:50 yS0  send: \d[10][03]\d\d\d+++\d\d\d[0d]\dATQ0V1H0[0d]
07/30 22:57:54 yS0  waiting for ``OK''
07/30 22:58:14 yS0  timeout in chat script, waiting for `OK'
07/30 22:58:14 yS0  init chat failed, exiting...: Interrupted system call
07/30 22:58:14 ##### failed in mg_init_data, dev=ttyS0, pid=681

Any help would be greatly appreciated.

Who is Participating?
Well, if you don't have switches or jumpers on your modem board that's gonna be difficult you will have to play with the other components of your PC.
Under win98, is everything working allright (parrallel port (with a printer), serial port (with a mouse maybe))? In case of, but i bet you already did it, you can compare IRQs, I/Os that you have under win98 and linux.
Finally, IRQ 0 should not be used to do a test because this IRQ is already used by some basics fonctions of a PC which could be something as the system clock, keyboard or whatever I don't remember exactly. The symptoms that you describe especially slow response is really typical of a hardware conflict

  Try to use the following command in one of your startup script such as /etc/rc.d/rc.local :

setserial /dev/ttyS2 port 0x3e8 irq 7 autoconfig -v

 To test it use it first from a comand line and you should see a message which show that the linux kernel found your modem. However, I'm wondering if you don't have a irq conflict because IRQ 7 is in general associated with the parrallel port, of course everything depend of your BIOS settings.

Hope this help.

Hi again,

 Don't forget to check that the symbolic link /dev/modem is pointed to /dev/ttyS2. Check also the modem configuration in minicom.

Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

hchengAuthor Commented:
To reply to your comments:

1. Yes, I do have /dev/modem pointed to /dev/ttyS2

2. I have used setserial and it found everything.  Also,
   I have played with the serial port settings in BIOS
   (including disabling the onboard serial ports
   altogether).  When I do that the modem port/IRQ settings
   would be different (but the same in Windows and Linux).
   Whatever settings I tried, it works in Windows but not
   in Linux.

 Just to make sure, Did your modem work under linux before your hardware upgrade ? This is to make sure that you don't have a winmodem (although i believe most of the ISA modem are hardware modems). You should also check the rights that you have on /dev/modem and /dev/ttyS2. If it is possible it will be better to set your modem to IRQ 10 or IRQ 11 (you should have switches to do that on your modem card) this is the IRQ that in general a modem use but of course your modem card must support these IRQs and they must be free, you can check that under windows.

 What is the ouput that you have when you run setserail ?

hchengAuthor Commented:
My modem used to work in Linux before I upgraded.  I definitely have the permissions.  IRQ 10/11 is not possible according to /proc/isapnp.

Running setserial says:

# setserial -a /dev/ttyS2
/dev/ttyS2, Line 2, UART: 16550A, Port: 0x03e8, IRQ: 7
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000
        Flags: spd_vhi skip_test auto_irq

   Can you tell me what are the IRQ which are set on your hardware ISA modem (switches). I really suspect a hardware conflict. Setserial can sometimes give some bad information because it can keep some settings in configuration file such as /etc/serial.conf. What is the IRQ and port address of your parrallel port ? We talked about serial ports (ttyS00 at 0x03f8 (irq = 4) and ttyS01 at 0x02f8 (irq = 3)) but I don't know about the parrallel port. To do a test you can maybe disable /dev/ttyS01 and set your modem to IRQ 3 i/o 0x02f8. I have almost the same configuration and it is working for me (I've got a PCI modem instead of an ISA one). By the way what is your motherboard ?

hchengAuthor Commented:
There is no switch/jumpers on the modem.  It is supposed to be PnP.  I have also tried forcing the irq by passing kernel parameters using isapnp_reserve_irq, but that didn't help.

I have a bit more info:

1. when I tried using irq 0 in setserial, my modem finally
   talked to me.  However, it is slow and it doesn't give
   me "OK".  e.g. when I type "ati", I get "5601" but no
   "OK".  I also don't see "RING" when the phone rings,
   just a blank line.  I have checked my AT codes to make
   sure that it is supposed to report "OK".

2. If I don't use irq 0 (but use what "cat /proc/isapnp"
   tells me, which corresponds to what "pnpdump
   --dumpregs" says), then I get some response but only
   after long delays and possibly missing some characters.

3. I have tried disabling parallel port but that didn't
   help.  I'll try disabling the serial ports when I get
   home tonight.

After reading a few HOWTOs, it really sounds like I have some sort of IRQ conflicts.  The problem I have now is to figure out how to get rid of it.  But that still doesn't explain why my modem partially works (without the "OK" response) when it is set to IRQ 0.
hchengAuthor Commented:
Oh, my motherboard is Abit KT7A.
hchengAuthor Commented:
Everything is working under Win98.

IRQ 0 was used as suggested by the serial HOWTO (and it explained that IRQ 0 is treated in a special way and it isn't a real IRQ).
hchengAuthor Commented:
Okay, turned out that if I disabled one of my serial ports, reserve an IRQ in the BIOS using "legacy ISA", and then force isapnp to set up the modem to use that IRQ (use isapnp_irq_reserve kernel parameter), then my modem works.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.