Having arrived in San Francisco for two months, I needed to find a reliable source for getting connected to the Internet. There was a selection of unsecured WiFi connections available from my new apartment, but all proved to be unreliable at best. I talked to a neighbor to learn that both DSL and Cable are available in this building, but in the end decided to try out a cellular device which in theory would allow me Internet access anywhere I can get a cell phone signal.
I already have a Cingular cell phone, so I explored their options to see what might be compatible with Linux. I found reports of people getting most of their devices working with Linux, but settled on the AirCard 875U USB based LaptopConnect device. It uses the 3G network, and with it I've been averaging about 750-950k down and 150-250k up. Latency is high, with the first packet sometimes taking even a couple of seconds to return, but then subsequent packets average around 100ms-200ms. I worry a little about when I visit areas that don't have a 3G network, as the device then falls back to the EDGE network which is evidently about a third as fast.
Actual configuration on Ubuntu 7.04, Feisty Fawn, was quite simple. The required Sierra driver was already included, so all I had to do was plug the AirCard into a free USB port on my T60 Lenovo ThinkPad and it was instantly recognized. From reading the Sierra Wireless support page on using the device with Linux I was worried I was going to have to first install it on a Windows computer to "activate" the device, only later realizing this didn't apply as the 875U is a GSM device, not a CDMA device. I followed the directions on their support page, and within seconds the device was connected.
The ppp0 interface was up, but I was unable to ping anything. Reviewing /var/log/messages, I finally found the source of the problem:
Jul 2 19:40:38 wanderer pppd: Serial connection established. Jul 2 19:40:38 wanderer pppd: Using interface ppp0 Jul 2 19:40:38 wanderer pppd: Connect: ppp0 <--> /dev/ttyUSB0 Jul 2 19:40:39 wanderer pppd: PAP authentication succeeded Jul 2 19:40:39 wanderer kernel: [ 9806.328000] PPP BSD Compression module registered Jul 2 19:40:39 wanderer kernel: [ 9806.368000] PPP Deflate Compression module registered Jul 2 19:40:43 wanderer pppd: Could not determine remote IP address: defaulting to 10.64.64.64
For whatever reason, the device was failing to determine the remote IP address, and instead falling back to a default (and useless) route of 10.64.64.64. Thus, all my packets were being routed to a nonexistent IP address and being silently dropped.
The next step was to figure out the real default route, simple enough using
tracepath which is what seems to be included on Ubuntu) to a random address then looking at the second reply:
$ tracepath -n 22.214.171.124 1: 126.96.36.199 0.097ms pmtu 1500 1: 172.26.248.2 asymm 2 137.461ms ^c $
I then removed the bad default route and added this proper address as the real default route:
$ sudo route delete 10.64.64.64 $ sudo route add default gw 172.26.248.2
Finally I edited
/etc/resolv.conf to add a valid DNS server (of which there are many public ones easily found with any search engine). At that point, things started working fine, though I notice a large latency the first couple packets to any address:
$ ping kerneltrap.org PING kerneltrap.org (188.8.131.52) 56(84) bytes of data. 64 bytes from kerneltrap.org (184.108.40.206): icmp_seq=1 ttl=56 time=2390 ms 64 bytes from kerneltrap.org (220.127.116.11): icmp_seq=2 ttl=56 time=1398 ms 64 bytes from kerneltrap.org (18.104.22.168): icmp_seq=3 ttl=56 time=399 ms 64 bytes from kerneltrap.org (22.214.171.124): icmp_seq=4 ttl=56 time=100 ms 64 bytes from kerneltrap.org (126.96.36.199): icmp_seq=5 ttl=56 time=100 ms
At this point I really should investigate why the device failed to auto-detect the proper default route, but with plenty of other things commanding my attention it'll probably be quite some time before I get around to it. After following the above manual steps, the device has proved quite stable for the past 24 hours.
(I did do a little more digging, and ran into someone else with similar problems. I followed his directions, creating an
/etc/ppp/chapsecrets, then using
pon cingular to initiate the connection, but this had the same result -- I still had to manually fix the default route.)
The next thing I need to do is set thing up so I can share this Internet connection with Jamie so she and I can both be online at the same time. Unfortunately my WiFi card doesn't support Master mode, so I'm unable to set my laptop up as a wireless access point. My current idea is to buy a cheap wireless router, then to set it up to route all packets to my laptop which in turn I'll set up as a router, routing packets out ppp0. Offhand I don't see any reason this shouldn't work, time will tell.