Quozl's Maxon MM-5100 & MM-5500U on Linux

Summary

Requires the cdc-acm kernel module, appears as
/dev/ttyACM0, uses the AT command set just like other modems,
and works fine with ppp. An additional initialisation string
AT+CRM=150 is needed to use a 1x RTT packet switched call.

2006-04-16

Update - Community Support Page

If you'd like to contribute, please see the separate Wiki Community Support
Page. Use the Login link to create an account on the Wiki, then
edit the page to add anything on-topic. You can also subscribe to the
page so that you receive changes, or add the RecentChanges RSS feed to
your aggregator. Quozl and others will remove off-topic information,
or edit the contributions so that they are succinct.

2006-04-12

Update - Ubuntu CHAP

David Barton got his MM-5100U working on Ubuntu 5.10, selecting CHAP
manually in pppconfig.

It's a measure of success of this page when someone writes thanking
me saying they got it working in ten minutes:

The guy in the Telstra shop actually found your site, because he
couldn't get any joy from tech support. Your site is what convinced
me to buy the modem (plus his promise I could return it if it didn't
work :-) ).

2005-08-18

Update - PPP Renegotiations

One of the annoying problems has come back harder than ever; and it
corresponded with my adoption of the satellite
service. The connection spontaneously renegotiates, causing
another call record in Telstra's service. It appears to happen as a
result of packets that the NAT implementation won't understand; packet
traces so far have shown the following to be probable triggers;

a midflight PPTP GRE packet sent out the modem because the route
to the PPTP server changed to use the new PPP interface,

an NTP update request, with a source IP address corresponding to
the eth1 interface.

I'm working with some experts on the PPP Mailing List. You can see
the current
thread.

2005-06-03

Update - Maxon Mini-Max

Craig Farrier wrote to me to say that the Maxon Mini-Max worked fine
for him, he tested on Novell Linux Desktop V9.0.
"The USB card was detected as a Qualcom CDMA Modem. I set it up in
YAST and configured it to dial a PPP connection and presto I was
online. The only thing is I will add AT+CRM=150 before it dials to get
it to do 1xRTT."

2005-04-13

Update - tcp_sack

An apparent recent change to either the kernel I'm running (2.6.11.7)
or the Telstra service, requires tcp_sack in /proc/sys/net/ipv4 to be
set to zero. The symptom is connections that stall, even though other
connections work. The cause seems likely to be the kernel, since
there is a packet that arrives that the kernel ignores, but I haven't
diagnosed it yet.

2005-03-11

Introduction

Quozl is using a Maxon MM-5100 modem with Linux to access the Telstra
CDMA 1x RTT service. Quozl's Maxon
modem is based on the Qualcomm MSM5100 chipset, has a USB interface,
and two RS-232 serial interfaces on a 15-pin high density
connector.

Others are using an MM-5500U; which is a faster EVDO version, with
only USB interface.

Figure 1 - Maxon MM-5100 with supplied USB cable, power on

Summary

Requires the cdc-acm kernel module, appears as
/dev/ttyACM0, uses the AT command set just like other modems,
and works fine with ppp. An additional initialisation string
AT+CRM=150 is needed to use a 1x RTT packet switched call.

Prerequisites

Linux distribution: Debian GNU/Linux

(tested on this distribution, and it worked, and since most of the
functionality is part of the kernel and PPP program, expect it to work
on other recent distributions)

Linux kernel: 2.6.8, 2.6.9, 2.6.10

(tested on these versions, and it worked, tests haven't been
attempted on other kernel versions yet, reports welcome to quozl@us.netrek.org)

Linux packages (mandatory): ppp

(you need this package to establish an internet connection)

Linux packages (optional): hotplug, udev, and
pppconfig

(these packages make configuration much easier)

Configuring

connect modem using USB cable.

The "pwr" light on the modem should turn on. Shortly after, the
"rssi" light should begin to indicate the received signal strength,
and if you are in CDMA 1x RTT coverage the "1x cell" light will
appear.

check that a /dev/ttyACM0 device is created.

When the kernel USB driver detects the modem, the hotplug
program will load the cdc-acm module, and run the udev
program to create the device file. If you don't have hotplug
and udev you can create a device node manually with mknod
/dev/ttyACM0 c 166 0

According to usb/acm.txt in the kernel documentation, if you're using
devfs then the device will be /dev/usb/acm/0 instead of
/dev/ttyACM0.

(for an MM-5500U you may need to use minicom to reset the modem;
we're not sure why yet, but we're looking into it)

configure PPP using pppconfig

Option

Value

Manually Select Modem Port

/dev/ttyACM0

Number

#777

User

user@telstra.xstream

Password

telstra (per page 15 of the manual)

Speed

230400

This created two configuration files, /etc/ppp/peers/name and
/etc/chatscripts/name, where name is the name you set
for the connection.

edit /etc/chatscripts/name to issue an AT+CRM=150
command before dialling ... this directs the modem to use 1x RTT
rather than a circuit switched call.

You can also edit /etc/chatscripts/name to capture the received
signal strength indicator and antenna level on each connection
attempt. Here are the files:

This generates lots of information, just in case something goes wrong
and you want to work out why. It isn't necessary to do it every time.
The updetach option makes PPP wait until the connection is
established before finishing the command. The debug and
dump options are described in the manual page for
pppd(8).

test internet access, e.g. using a web browser or mail client, and
when you're finished turn it off using the command poff.

if it all worked, in future start the connection using pon,
stop it using poff.

You can use other programs that start and stop connections. For
example, gkrellm has a button you can press, and kppp
can do it as well.

Costs

$AUD 800 for the MM-5100 modem,

$AUD 99 per month for the service, 50 hours,

there is no call establishment charge, but each call costs at
least 15 minutes off your 50 hours, which makes it $AUD 0.50 per call.

Problems

CHAP reauthentication.

Occasionally, the network will send another request for CHAP
authentication. PPP on the Linux host responds, and then IPCP
allocates a new address. This can repeat. We've seen this happen up
to six times in a minute.

The effect is stalling and timeout of any active TCP/IP connection.
Each event shows up as another call on the carrier's billing system,
and so this can be quite costly. $AUD 0.50 per event.

We have pppdumps of one of these events; there's nothing unusual about
the byte stream immediately prior to the event, though there does
appear to be some illegal packets following the event. The pppdumps
can be analysed by Ethereal.

No fix known. Still waiting for the carrier to return my calls after
logging a system fault (3803 946 345). A way to detect the problem
early is to use nodetach instead of updetach, since this
causes the reauthentication to be visible on the console or terminal
that the connection is started from.

Another method is a kind of deadmans switch, which kills all pppd
processes on connection termination; using an /etc/ppp/ip-down.d
script.

random beep while connected.

For no apparent reason, the modem will emit a short beep. This
might correlate to an idle link, but we've been unable to prove
it. The beep appears to have no effect on the link.

100% ping loss for 91 seconds.

Periodically, all inbound traffic will cease. Pinging the peer
address on the PPP link results in 100% packet loss. Modem shows
transmit packets on the LEDs, but no receive data. After 90 or 91
seconds, the pings begin to be returned, with the sequence number just
sent. There's no buffer of pings. Once affected by this symptom, it
will repeat during the current call.

Seen from about 2004-12-24 onwards. We have tcpdumps of these
events, which can be analysed by Ethereal.

Conjecture; new version of concentrator software to fix the
reauthentication and billing problem. As of 2005-01-04, we haven't
seen problem 1 since 2004-12-24.

no response to AT commands.

Sometimes the modem will not respond to AT commands send to
/dev/ttyACM0. The LEDs on the modem show data is received.
Workaround is to disconnect and reconnect the modem.

(This may also potentially be fixed by using minicom to reset the
modem, but we're not sure why yet.)

ChangeLog

Added some updates from an MM-5500U user who got his modem working with Linux.

2005-01-04

Added a problems section with the difficulties experienced during
normal operation.

2004-11-16

An hour long test with the large antenna mounted properly, over 59.8
minutes received 41,393,657 bytes, which is a long run average of 90.13
kilobits per second, or 11.26 kilobytes per second, though during one
large download of 37,315,291 bytes gkrellm showed bursts of 12-15
kilobytes per second.

2004-11-10

Added mail address. Linked now from Dave Davey's page.

2004-11-09

Noted the possibility that a system using devfs may see the
device as /dev/usb/acm/0.

2004-11-08

Did early morning (00:15) test with small antenna about 200m from
Gilgandra CDMA tower, result was 75kbps at an RSSI of 62, ANTLVL of 1.
Confirmed the plan pricing with Telstra. Maxon linked to this page.
Changed the layout of this page.

2004-11-07

Tested at a home in Gilgandra. Worked fine.

2004-11-06

Tested on mountain top site using large antenna at 2m elevation; RSSI
of 72. Tested at new site using small antenna in kitchen; RSSI of 92.

2004-11-05

Tested network capability further at old site. SSH worked fine. PPTP
worked fine to employer. The IP assigned to me gave SERVFAIL on
reverse lookup. Packet arrival rate was 58kbps. It was quite jerky;
watching a tcpdump and gkrellm showed regular pauses. Ethereal
graphed bytes per second of one transfer like this;

Lunch time, went to new site. Disappointing results. Despite having
five to six bars on the Nokia 6385, the modem did not exceed about
70kbps, a far cry from the 144kbps advertised. The RSSI value was
around 82, and ANTLVL was still 1, suggesting insufficient radio
conditions.

Curiously, both the small antenna and large antenna gave about the
same RSSI.

There was the same pulsing of data rate, and the first hop lag was an
average 300ms with 55ms standard deviation.

/proc/devices shows a new entry 166 ttyACM. But no /dev entry
matches. So I installed udev package. Reboot per the
recommendation in the package install scripts (allegedly there's a
risk of odd things happening, but I didn't try to find out what).

/dev/ttyACM0 appeared this time. Connected using kermit, DTR LED
turned on, and was able to issue AT and get back OK.

Attempted ATDT without antenna, response was "NO CARRIER".

Connected small antenna. Response was "$$Voicemail: 0".

Attempted ATDT, destination phone line rang, presented caller ID.
Unlike other modems, the call could not be cancelled by hitting enter,
and I had to wait for it to time out. The response was "NO
CARRIER".

Noted from CDMA
information page that PPP configuration may need to issue PPP
packets first, and not wait for CONNECT.

Attempted ATDT#777, then a pause, then hit enter a few times.
Response was "NO CARRIER".

Attempted #777 after +CRM=150. This showed that a CONNECT arrives
followed by PPP negotiation, contrary to the suggestion already seen
above.

Note to self: pulling the USB cable tends to cause the laptop to turn
off the power to the USB port until the laptop is power cycled.

Attempted connection via pppd. It works. Was able to ping Yahoo.

Disconnected and checked signal levels. Using little three-inch
antenna gave ANTLVL=1 and RSSI=92. Using big two foot antenna gave
ANTLVL=1 and RSSI=89. Not a particularly good improvement, but I am
testing indoors half way up a mountain.