November 24, 2007
I had originally planned on using inexpensive Linksys WRT54GL devices for the long distance link. This has been done successfully in the past on much longer links (see my previous post). However, I did not realize how seriously throughput is effected by distance using the unmodified 802.11 protocol. On a 279 km link with Linksys hardware, they were only able to get about 70 Kb/s, which will not support too many VoIP calls! As Yahel Ben-David (of AirJaldi) expressed it, "I would not call 70kbs ‘bandwidth’." In an exchange of emails, Yahel convinced me to use the software developed by the TIER group instead of WRT54GL devices–"WRT54GL are not advisable for that task. Too little power and worse – it uses a Broadcom radio for which we can’t do many of the things we do for Atheros-based radios." He also pointed out what I have come to know all too well–"The fact that [there] is little technical documentation about the WiLD project remains, and IMHO is a big problem. Nevertheless, things are not so-ready for production quality usage, again IMHO – although lots of work is being done and should soon be ready for wider consumption." (WiLD stands for wireless long distance.)
Based on the decision to use TIER Linux, I purchased two Soekris net4826 single board computers, two Ubiquiti XR2 mini-PCI radios, two aluminum outdoor cases, and several assorted pigtales and adapters.
Flashing the Soekris boards with TIER Linux proved very tedious for me. The TIER site has good directions for writing TIER Linux to boards with removable flash memory, such as the (now discontinued) WRAP boards. However, the net4826 has flash memory which is soldered to the board and cannot be removed for programming. Because there are no connectors for external drives, the only way to flash the memory is to boot via PXE (over the network). I waded my way through connecting via the serial port (using this USB adapter and null modem cable), setting up DHCP and TFTP servers, finding a suitable PXE Linux loader image, modifying the TIER Linux install script to create the image on a loopback device with the proper drive geometry (//sfdisk// and lilo don’t work the same with loopback devices, and losetup -o doesn’t have an option for specifying the end of a partition), and flashing the image onto the Soekris board via wget and dd. Most of these steps took several attempts, but now I have clear documentation on how to do it all again, and I learned a lot in the process.
The above was using TIER Linux 2.4.26, which does not seem to have options for tuning parameters such as the number of retransmissions and forward error correction (FEC) discussed in this paper. (If these options are available, they are not documented.) FEC may be especially useful for reducing jitter, which is one of the key requirements for high-quality VoIP calls. I tried version 2.6.13.2, which may include these options, but for some reason it did not recognize the XR2 radio card. When time permits, I’ll investigate this option further.
Installing the boards into the above-mentioned cases was much easier, using #4-40 15 mm screws and 7 mm plastic spacers. I punched out holes for the N connector and for a CAT5 cable. Perhaps not for this test, but in the future I’d like to try this CAT5 pass thru gland. I realize it’s probably less convenient than an actual RJ45 jack, but it’s so much cheaper. Has anyone had experience with something like this?
My plan was to run a single CAT5 wire to each Soekris board to supply power as well as Ethernet connectivity. However, I was not able to get either of my Soekris boards to turn on using PoE at 12.8 volts DC. PoE did work with 25.5 volts (using pins 4, 5 [blue] for positive and pins 7, 8 [brown] for negative), but in the end I used 12.8 volts through the DC power jack. Others (here too) have also experienced problems with PoE on these boards.