============================================================================== 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: | http://www-128.ibm.com/developerworks/wireless/library/wi-enable.html | http://www.linuxjournal.com/node/7525 What you need ============= * PCMCIA support (duh), and the serial_cs driver * a system that can make a PPP connection * probably something I'm forgetting here 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 =========== * Figuring out how to get more than 57600 from it * A way to get signal strength without disconnecting and issuing an AT command * linking to some other docs, like the sony ericsson AT command manual * Getting everything nice and automated.