My modem no
longer works, so I cannot test with newer kernels and
distributions. Therefore, this page will probably get out
of date. Bug reports are welcome, of course.
Linux supports a number of newer Anydata
modems, including ADU-310, ADU-500 and ADU-620. They can
be configured in the way described here. However, I
haven't tested them myself. Many 3g and CDMA modems look
like a CD or memory stick when you first plug them in, and
you have to switch them over before you can use them as
modems. Look into usb_modeswitch
or huaweiAktBbo
if you have this problem. Sometimes, it's sufficient to
"eject" the storage device.
ICE distributed the Anydata ADU-E100A
USB modem until autumn 2007, rebranding it D-10. From
October 2007, they are distributing another modem, which
they call D50. I have not tested this modem or tried to
configure it. Linux is supported, and there are several
success stories on the web.
A couple of points before we start:
- All commands mentioned below should be given as the
root user from a terminal window.
- A couple of times I tell you to watch the log file
'/var/log/messages'. On some distros, the information may
turn up in different log files.
The latest releases of all major desktop oriented Linux distributions
already support the modem
correctly. These include
- Ubuntu Edgy, Feisty and newer
- Ubuntu Dapper with current updates
- Fedora Core 6, Fedora 7 and newer
- Fedora Core 5 with current updates
- OpenSuse 10.2 and newer
- Debian Etch
and many others. So these days, most people can go
straight to configuring the
modem. However, if you are running kernel 2.6.17 or
older, and have problems, please read the following
sections.
People have been reporting two kinds of problems:
-
The modem doesn't respond at
all
-
You can work around this without rebuilding your
kernel.
-
New connections can't be made once
the first has been closed
-
You have to build a new kernel to fix this, until the
fix reaches your distribution.
After telling how to fix these, the page has a few words
about configuring the modem.
There used to be a typo in the modem driver which caused this
misbehaviour. The bug was introduced in kernel version
2.6.15 and fixed in 2.6.18. However, there could also
be other reasons for the modem not responding. It won't
work if it isn't plugged in!
The workaround is to use the generic usbserial driver.
Give these commands:
rmmod anydata usbserial
modprobe usbserial vendor=0x16d5 product=0x6501
If you get an error message after 'rmmod anydata', that's
OK.
Now you can turn the modem off and back on and try to
connect. Assuming that you got connected, the next step
is to make sure things are set up correctly next time
without manual work. You have to
- Arrange for the generic usbserial driver to be called
with the right parameters when it is loaded.
- Move the anydata driver out of the way so it doesn't
get loaded again.
- Tell the system that the anydata driver is no longer
there.
On my Debian sid system, I did it like this:
echo "options usbserial vendor=0x16d5 product=0x6501" > /etc/modprobe/anydata
cd /lib/modules/`uname -r`
Those are backticks, not forward quotes.
mv drivers/usb/serial/anydata.ko drivers/usb/serial/anydata.ko-
depmod
Give the command 'rmmod anydata' once more. It may have
got loaded when you turned the modem back on.
You could also fix the typo in the modem driver and
build a new kernel. The patch is here. But if you're going
to build a new kernel, you may as well fix both problems.
You do so by following the directions below.
You can connect to the network once. But after you
disconnect, you have to turn the modem off and back on
before you can reconnect to the network. After the
unsuccessful attempt to reconnect, you'll see something
like this in /var/log/messages:
Jul 20 19:53:32 localhost pppd[5321]: pppd 2.4.4 started by root, uid 0
...
Jul 20 19:53:33 localhost chat[5322]: send (ATZ^M)
Jul 20 19:53:33 localhost chat[5322]: expect (OK)
Jul 20 19:53:36 localhost chat[5322]: ~^?}#@!}!}(} }7}!}$}%}4}"}} } } } }#}%B#}%}'}"}
Jul 20 19:53:42 localhost chat[5322]: } } } }#}%B#}%}'}"}(}"R$~~^?}#@!}!}*} }7}!}$}%}
Daniel Kozák discovered that he could solve this
problem by making another driver handle AnyDATA modems.
This driver was originally made for GSM/GPRS cards made
by Option, and is named 'option'. More information - in
Czech - here and
here. This fix
is included in the standard kernel since version
2.6.18. Some vendors backported the fix to
their versions of the kernel. For instance, it is
included in Ubuntu Dapper kernels since update 2.6.15-26.
For others, here are versions of the patch for recent
kernels:
Some people like to write configuration files by hand,
but I used the pppconfig program and got a setup that
worked. You can use the modem configuration utility that
comes with your Linux distribution.
The information you are going to need is
-
Phone number
-
All CDMA providers seem to be using #777
-
Login name
-
My provider (ICE) uses "cdma" for all customers.
-
Password
-
My provider uses "cdma".
-
Authentication method
-
My provider uses CHAP.
-
Speed
-
Doesn't seem to matter. I could enter 9600 and still
get maximum speed.
-
Port
-
Often /dev/ttyUSB0. If it isn't, you have to watch the
log while plugging in the modem. Type
# tail -f /var/log/messages
in a terminal window, and look for lines like
Jul 20 21:53:55 localhost kernel: usb 2-1: GSM modem
(1-port) converter now attached to ttyUSB0
If you chose the generic usbserial workaround, the
converter would be called 'generic' instead.
The modem has two /dev/ttyUSBn interfaces. We only
use the lower numbered one. The other one is
apparently for control, but the documentation hasn't
been released.
I ended up with the following configuration files:
'/etc/ppp/peers/cdma', '/etc/ppp/chap-secrets' and '/etc/chatscripts/cdma'. I've left
them just as pppconfig made them. To get on the network,
I give the command 'pon cdma', and the command to close
the connection is 'poff cdma'. On distros which don't
have pon and poff, you can use 'pppd call cdma' instead.
There are also graphical dialers.