It was one month before Yet Another Perl Conference (YAPC), and I had to decide if I was going to drive or fly from Pittsburgh to St. Louis. To help me decide I did what any other programmer would do, I jumped into an IRC channel about Perl and started talking about driving versus flying. If you know anything about Perl IRC channels, this quickly escalated into a Holy War with Emacs users on one side and Jeep Wrangler drivers on the other. It was hard to tell but I think Emacs came out as the better utility vehicle.
When the chaos subsided, I was greeted by a friendly, private message from Meng Wong saying he was organizing a road trip to YAPC from New York. Meng, Michael G. Schwern, and David H. Adler (dha) were driving my way so I was happy to add a second car and make it a caravan.
Since we were taking two cars, we needed a decent form of communication. The first choice was using cell phones, but we quickly realized that it really isn't functional for long road trips. Making a phone call from Pittsburgh to New York while both parties are coasting down I-70 in Illinois wasn't my idea of a smart move. I'd be more inclined to run into them to get their attention; it would have cost the same.
It was obvious that we needed to liberate ourselves from the phone companies. Any normal person would have stopped at this point and bought two-way radios. For better or worse, I'm not a normal person. I'm a geek, a geek beyond reason. A wireless network was in order. After all, most wireless projects are created as a means to bypass the telco and their 800 pound gorilla ways.
I was on a mission. Create the first documented case of 802.11b networking at 85, scratch that, 65 mph. The most important goal of this project was to create a usable, local network between multiple vehicles. This network had to support some form of communication between computers. I had four nuts, Meng, Schwern, David, and me. I just needed a good way to bolt them together.
We needed a way to talk to one another. Between us we had five laptops and at least fourteen different operating systems stemming from the three major offerings. I originally planned to run IRC. IRC is where this idea came from and it was simple enough to get up and running. That is, it would have been simple enough to get up and running if one of us had actually remembered to download an ircd before we started. Since we had no ircd, we did what any resourceful set of programmers would do, we used talkd. Schwern created an extra account on his laptop, running Linux, for ssh access and started talkd on it. That's right folks, we resorted to a protocol invented in 1983. I was three years old when talkd hit the wire.
I talked with Schuyler Erle, a developer for O'Reilly Network and a contributor to the nocat project, about our wireless needs. Once we came up with an equipment list it was time to gather them all up and strap them into my car.
I needed a power source so I got a great deal on a 350 watt dc-to-ac power inverter for $35 USD. Next, I configured my Linksys wap11 wireless access point to work correctly, and I hacked it to 100mw since I don't have the second version of the wap11. I snaked an eight-port hub from my home office rendering my poor wife without a network at home. Last on my list, Aaronsen donated a HyperLink, a high-gain, amplified, omni-directional antenna.
I mounted all this equipment to my center console. On the bottom was the power inverter. Connected to my cigarette lighter I was able to get 180 watts out of it. On top of the power inverter sat my Access Point, the Linksys wap11. At the top of the stack sat the hub and the omni-directional antenna. I cut cardboard inserts to place between each layer then I secured the whole mess to the lid of my center console compartment with Coleman Sleeping Bag Straps and zip ties. This configuration allowed nearly all of the antenna's horizontal signal to escape out my car windows. It also allowed the wireless signal to be pumped to my brain faster than Grant took Richmond. I don't think I suffered any permanent damage. the Confederate Army on the other hand...
Next I began to construct the network. I connected the Linksys wap11 to the hub and the antenna to the wap11 with an RP-TNC to N-Male Pigtail. Then I plugged in all these devices, plus two laptops and a cell phone into two power strips connected to the power inverter.
I mentioned my cell phone because it was part two of my crazy plan. What fun is a network if you can't get it online? I bought a Data Kit for my Kyocera QCP-3035 cell phone. I decided to buy the serial kit hoping it would behave just like a serial modem in Linux; this was not the case. Booting my computer to Windows I installed the software and connected to the Internet via my cell phone. It was not speedy, but for an ssh client and limited browsing it did the trick. Then I connected my laptop to the hub in my car. I had to use a physical line because windows decided my wireless card wasn't good enough that day. After enabling connection-sharing for the cell phone uplink I booted my second laptop to Linux and connected to the wireless network. In seconds I was surfing from both computers over my cell phone. I had proof of concept, I was ready for the road trip.
After stopping for the night at a cabin in central Ohio, we were ready for the final day of driving and a shot at wireless networking. Schwern and dha drove Meng's Volkswagen Passat with Schwern's laptop thrown in the back seat, running talkd. dha was the co-pilot for the Passat and assumed all communication roles for their car. Meng rode with me in my Hyundai Tiburon acting as communications officer and uplink controller.
After quite a bit of man handling, we managed to get everyone on the
network. We had all sorts of odd, novice-like issues. First, we were
using a Netgear Access Point that Meng had in his car. This didn't
work out too well. Next, Schwern's laptop didn't have the proper
essid set and we managed to get that working at a gas stop. Once
those issues were resolved we had our laptops on the network and all
pings were returning and ssh connections were
succeeding. Meng and dha connected using talk on Schwern's laptop and
we spent a good 100 miles just finding things to talk about. That's
what happens when you work hard to build something that's minimally
After rambling on about movies, making fun of each other's driving and deciding where to stop for dinner we decided to connect our network to the Internet. After all, we needed to send out proof that this was working. Once my cell phone reached a state of moderately reliable service, Meng brought up the link. We logged on to IRC and bragged about our connectivity. We sent email stating our coordinates. We acted like little children on sugar highs.
Just then Meng got an emergency call from work and his services were needed online. Our network was needed, what a wonderful feeling. We were online for a solid hour, surely being passed from cell tower to cell tower. The link stayed up just fine. Of course, we eventually drove out of cell range all together and lost that link. The network continued to be useful, we used it to communicate needed stops for gas or bathroom breaks. It's a good thing too, what with Schwern's "expressive" driving.
After hours of driving, we decided it was a good idea to see what conditions caused the network to fail. It had been working like a charm for most of the trip and as any tester will tell you, it's more important to know when it breaks, not when it succeeds. We decided to try a distance test first. Using the 200 foot markers on the side of the highway we gave ourselves an estimated 500 feet of distance and the connection was just as strong as ever. Then we slowly added distance and at an estimated 800 feet the connection broke down. We were very happy with that number, especially because it didn't represent Line Of Sight (LOS). The testing laptop had to acquire a signal through several cars in traffic.
Still later in the day we decided to stream MP3's from one car to another. I had an adapter that converted the tape deck to an audio-in jack that was connected to my laptop. Schwern's laptop was in the Passat and was capable of streaming mp3's using Apache::MP3. The streaming worked but the playback didn't because my XMMS was throwing a temper tantrum. All was not lost, however, we resorted to remotely controlling Schwern's laptop to play random songs in the Passat and there was nothing they could do about it.
There was one major problem that destroyed our network. If a large truck drove directly between us is creates the same effect as a careless backhoe discovering your fiber network. Those of you familiar with most of I-70 know that the geographical layout is just flat. Sure, there are a few hills but mostly it's just flat and bare. Because of this, when large, dense metal objects decided to drive between us there was nothing for our antenna's signal to bounce off of to reach the other car. Again, all was not lost. Thanks to the wonders of the TCP/IP protocol our connections were not harmed in any way, just lagged a little.
There are several answers to this question. The simplest answer is that it's just another incarnation of two way radios, cell phones, or GPS systems. Like two way radios the local network is free. That makes all the difference in the world. Like cell phones and GPS systems, it can be connected to other useful networks and resources.
When I explained this project to Adam Turoff he made a bold prediction. He believes we'll see the US military using wireless networks in the same manner. I giggle at the thought of secure transmission happening over ssh to a server in an unmanned plane but it could happen. I just want to be the first to know if they use IRC or talkd for their communication.
I'd like to see a few companies begin offering wireless kits for cars. With knowledge in the right areas, it would not be difficult to create a hands-free client with voice recognition and even cell phone hook-ups. I could do the software now with great Open Source speech programs such as Sphinx II for voice recognition and Festival for text to speech output. Tie them together with POE and my favorite programming language, Perl, and you there you go.
Last, I can't stress enough the importance of free, (mostly) unobstructed communication. The cell phone costs would have been very high. More troublesome than that is the service area on the open road. Our network was up 99%, the cell phone companies didn't do that well. As for the getting online with the cell phone, I'm just glad I had a credit built up because that was expensive.
I managed to create a lot of hype around this project. Some called me lame, some called me cool, but they all called me geek. All I know is that my friends and I made the most out of an otherwise boring all-day drive. Wireless networking has thousands of undiscovered applications with no end in sight. Do your part to uncover the useful bits.
Copyright © 2009 O'Reilly Media, Inc.