I’ll be attending the acm regional intercollegiate programming contest next weekend and one of the things we have traditionally done on the way up there is to find geeky ways to pass the time in the van. In the past year, I convinced my parents to let me subscribe to the unlimited T-Mobile GPRS plan. This has obvious practical applications, including the ability to have network connectivity even when in a moving vehicle.
One of the past limitations of this was that the cable I purchased occupied the entire slot on the base of the phone due to the fact that the phone needs a resistor across the first and second pins in order to tell that a cable was plugged into it. Unfortunately, that means that there’s no charging of the phone while using it for data. But thanks to Tristan’s excellent soldering job, I now have a cable that allow my phone to be plugged in to a car charger and connected to GPRS simultaneously.
A few weeks ago, I picked up an Xbox and installed Xebian/Xbox GNU/Linux onto it. It occurred to me that this would be the perfect platform to serve up the network access and perform some additional tasks, such as uploading the coordinates from a GPS unit to a web server tracking our progress. (Alternatives include plugging the device into mine or the other passenger’s laptops the whole time)
So how does one go about setting this up? For starters, I need to be able to have the Xbox establish a GPRS connection on its own. This requires that the Xbox load the usbserial module on boot:
# /etc/modules.xbox: kernel modules to load at boot time. # # This file should contain the names of kernel modules that are # to be loaded at boot time, one per line. Comments begin with # a “#", and everything on the line after them are ignored. loop input keybdev mousedev joydev sunrpc lockd nfs scsi_mod sd_mod lirc_dev lirc_xir usbserial
The next step is to set up pppd for the T-Mobile GPRS service. I have the “VPN” service, but most users with unlimited access will have the regular one. The main difference is that the “VPN” service gets you a public IP address and must be specifically requested. In places where internet3.voicestream.com is used, internet2.voicestream.com should be replaced if this is the case. While I was writing it, I used Brad Midgley’s T-Mobile GPRS page and the Eridani Linux pages as references.
The /etc/ppp/peers/tmobile file:
# File: /etc/ppp/peers/tmobile # connect “/usr/sbin/chat -v -f /etc/chatscripts/tmobile” /dev/usb/acm/0 # Motorola Phone Cable 115200 # speed nodetach # don’t fork debug # show debugging info defaultroute # set the default route replacedefaultroute # yes, override the default route usepeerdns # get the dns servers from the tunnel crtscts # do flow control noauth # no authentication required deflate 0 # don’t compress asyncmap 0 mtu 1500 mru 1500 noipdefault idle 600
The /etc/ppp/chatscripts/tmobile file:
ABORT ERROR ‘’ AT&F OK AT+CGDCONT=1,"IP","internet3.voicestream.com” OK ATDT*99# CONNECT ‘’
The /etc/ppp/pap-secrets file:
(none) * password ‘’ tmobile
With that configured, pon tmobile activates the GPRS connection and poff tmobile deactivates it.