Re: USR 5605 External USB modem not 'recognized'
From: Rick Moen (rick_at_linuxmafia.com)
Date: Sat, 10 Apr 2004 07:40:15 -0000
E. Bruce Lynn, II <firstname.lastname@example.org> wrote:
> I just bought a 3Com USR model 5605 external USB modem on eBay to use
> with my laptop which has an onboard winmodem. This modem was listed at
> http://start.at/modem as being compatible with linux. My laptop, a
> Toshiba P15-S479, does not have a serial port so the modem is connected
> via a USB connection. Windows XP indicates that this modem is on Com 4.
> Could someone please tell me how to get Xandros 2.x (based on Debian) to
> 'recognize' this modem? I already tried the Internet Connection wizard I
> believe it is called, but it would only recognize the on board winmodem
> which it could install.
> I don't mind reading the manual, but in this case I can't find 'manual'
> that addresses this issue in particular.
I've never actually solved that particular problem, so following is
strictly an attempt to solve this problem on the fly, working mostly
from http://www.linux-usb.org/USB-guide/ and a rudimentary understanding
of Linux USB support. Here goes:
http://www.linux-usb.org/USB-guide/x332.html makes clear that you're
going to need a kernel driver called "acm" (filename acm.o), so named
because it supports the USB standard's Abstract Control Model class,
which includes modems.
(Please don't panic at that bit of technogeekery: Just file the
information, as we'll use it later on.)
Now: I have considerable respect for Xandros's hardware recognition,
though I don't run it. Odds are that it has already set up basic USB
support for you already. Our next step is to verify that. Open a
terminal window, and run "lspci -v | more". You'll see a whole lot of
output about the half-dozen or so PCI devices known to your
motherboard's PCI controller chip, including the USB chipset, with a
blank line separating the paragraph about each. Here's the USB
paragraph from my old laptop:
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
(prog-if 00 [UHCI])
Flags: bus master, medium devsel, latency 64, IRQ 11
I/O ports at fce0 [size=32]
It happens that there are two types of USB controller chips, UHCI-class
(Intel's standard) or OHCI-class (Compaq and some others). Those
require respectively the usb-uhci or usb-ohci kernel driver. Both of
those automatically also cause a driver called "usbcore" to load.
The pair of drivers for your particular hardware setup are a modular
(plug-in) software rig into which higher-level drivers for sundry USB
functions can plug in. Such as, for example, the acm driver. Your
modem talk to the acm driver, which talks to the usbcore driver for
generic USB functionality, which talks to either the usb-uhci or
usb-ohci low-level driver (depending), which knows how to talk directly
to your motherboard's USB chip. With me so far?
OK, so, I'll bet that when you type at a terminal prompt "lsmod" to list
(to screen) the currently loaded kernel modules, you'll see something
Module Size Used by Not tainted
apm 9116 2 (autoclean)
usb-uhci 20676 0 (unused)
parport_pc 25672 1 (autoclean)
lp 6880 0 (autoclean)
parport 21696 1 (autoclean) [parport_pc lp]
usbcore 48000 1 [usb-uhci]
Notice that module "acm" isn't listed. (The above is, again, from my
laptop.) But you can add it. As the root user, type "modprobe acm".
Now, type "lsmod" again, and notice that it's now loaded.
Since Xandros is Debian-like, I imagine that (as with Debian), adding
the name of a module to /etc/modules will cause it to be loaded at boot
time. So (again, as root), add "acm" as a new line to that file, and
save your changes and exit your editor.
Now, you're almost done. The aforementioned Web page
(http://www.linux-usb.org/USB-guide/) says you should have some USB
modem "device" files in directory /dev/usb/ , which directory probably
doesn't yet exist on your system. So, create it. As root, at a
terminal prompt, type
# cd /dev
# mkdir usb
# mknod /dev/usb/ttyACM0 c 166 0
# mknod /dev/usb/ttyACM1 c 166 1
# mknod /dev/usb/ttyACM2 c 166 2
# mknod /dev/usb/ttyACM3 c 166 3
(As with the "$" previously, the "#" stands for your shell prompt, and
is not part of what you type.)
For your convenience, you should create a /dev/modem symbolic link that
points to whichever of the above newly-created device files corresponds
to your modem's USB device, almost certainly ttyACM0 (the first USB
ACM-class device). Like this:
# cd /dev
# ln -sf /dev/usb/ttyACM0 modem
The "/dev/modem" symlink is a sort of convention, a shortcut, indirect
way of addressing your modem's actual device. (It's similar in that
respect to /dev/mouse and /dev/cdrom .)
You should now be able to test-address your modem. The usual tool for
doing so is the terminal program "minicom", which happens to be set to
address /dev/modem by default. Fire up minicom. When you get to its
terminal window, type "ATE1", which is a standard modem command telling
the modem to turn on display of responses to any commands it receives.
The modem should reply "OK", which is then duly shown in the minicom
If not, then something has gone wrong in the above chain of reasoning,
and probably means I've screwed up in some way. But give it a shot.
-- Cheers, "Linux means never having to delete your love mail." Rick Moen -- Don Marti email@example.com