Getting Linux and a Sony Ericsson GC89 to work on T-Mobile's GPRS/EDGE network

an incomplete HOWTO-like thing

Credit where it's due. 95% of my info was stolen from the following.

First, I wouldn't have made it online with this thing had it not been for the GC83 HOWTO at http://advantedgecomputing.com/opensource/gc83linux.html . It provided enough AT commands to get myself into the trouble I needed.

The Linux Dev Center article at http://linuxdevcenter.com/pub/a/linux/2004/02/05/linux_cellular.html filled in some of the gaps about the T-Mobile network.

There were also two articles, one on IBM Developerworks, and the other on Linux Journal (both written by the same person), that tricked me into thinking I could pull this off:

What you need

This was configured on a system running Ubuntu Dapper Drake. If you have something else, you'll have to be able to figure out the differences.

Reassuring yourself that the hardware works

Pop the card in, and do an lspci. The GC89 shows up as two devices: a Broadcom 802.11 device, and a Broadcom unknown device. The latter is what you want. This unknown device kind of minimally resembles a regular old 16550 UART, and the serial_cs driver will work with it, kind of (you might want to modprobe it before popping it in).

Check the console or kernel log to make sure the device was detected. I get something like:

PCI: Enabling device 0000:02:00.1 (0000 -> 0001)
ttyS14 at I/O 0x4000 (irq = 11) is a 16550A

I had it come up as ttyS1 on another system. Check /dev/ttyS* to make sure that the correct device node was created. If not, do this:

mknod ttyS[n] c 4 [n + 64]

In my case, I needed:

mknod ttyS14 c 4 78

...but I filled in all the other missing ones up until then.

Next I connected using minicom to /dev/ttyS14. I had to make sure the port was set to 57600 8N1, and the rate and tty needed to be in the default config BEFORE starting minicom, or it didn't seem to work. I don't know why, probably something I did wrong on my end, and one of these days I'll bother to find out why.

I've had no luck getting the GC89 to operate at any DTE rate other than 57600. I suspect it has some kind of non-standard way of setting DTE rate, but in the absence of a fully-functional driver, I guess we're stuck with this rate. I'll keep looking to see if I can figure out a way to bump the rate up to something better.

OK, so from minicom, you can issue a couple of silly little AT commands. Many of the ones I tried didn't work, but some familiar ones do: +++ATH (hangup), for example. One neat one is AT+CSQ , which queries the device for signal strength.

All right now, get out of minicom. You're wasting time that could be better spent looking at porn from the freeway.

Configuring PPP

For now, I'm just going to paste the contents of the files. I'll explain in another revision.

/etc/ppp/peers/tmobile

/dev/ttyS14 # use whatever your system assigns it to
57600       # I'd love to be able to bump this up somehow

defaultroute    # use this interface for the default route
usepeerdns      # use their DNS
nodetach        # keep pppd in the foreground
crtscts         # hardware flow control
lock            # lock the serial port
noauth          # don't expect authentication from the modem
local           # don't use CD or DTR
debug           # blah blah blah to STDERR

persist         # keep re-connecting when dropped

# this section's not necessary at all, but here it is anyway.
remotename ''
user 'tmobile'
password ''
show-password

lcp-echo-interval 0 # don't bother with echo requests, since
                    # t-mobile doesn't effing bother sending them back!

lcp-restart 1       # one-second resend

connect '/usr/sbin/chat -v -V -t3 -f /etc/ppp/chat-gc89'
disconnect '/usr/sbin/chat -v -V -t3 -f /etc/ppp/chat-gc89-disconnect'

/etc/ppp/chat-gc89

SAY 'trying to connect...\n'
SAY '\n'

ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED

SAY 'Initializing modem\n'

"" AT+cfun=1
OK AT+cfun=1
OK AT+cgreg=1
OK AT

"" AT+CSQ

SAY '\n'
SAY 'Setting APN\n'

# this context string came straight from t-mobile tier 3 tech support.
# The APN (internet2.voicestream.com) may be internet3 if your account is set
# up for public IP addresses.  Mine isn't, so here we are.
OK AT+CGDCONT=1,"IP","internet2.voicestream.com"

SAY '\n'
SAY 'Dialing...\n'

OK ATDT*99***1#
CONNECT " "

/etc/ppp/chat-gc89-disconnect

"" "\K"
"" "+++ATH0"
SAY "Disconnected."

Connecting

Cross your fingers, and type

pppd call tmobile

As soon as the output says it connected and got an IP address, you're probably all set. Check ifconfig to make sure.

What's left