The guts of our wireless node/sensor is a Soekris net4801 or net4826 embedded computer, which has a 266 Mhz 586 class CPU (Geode) single chip processor. The 4801 board includes one Compact Flash slot, three 10/100 ethernet ports, 128 Megabytes of RAM, serial ports, MiniPCI/PCI slot. In addition, 4801 has IDE port and two USB 1.1 ports. 4826 can be powered over Ethernet. Most of our nodes are 4826 boxes.

The Compact Flash slot is loaded with a Compact Flash card (4801 has 256M, 4826 has 64M), used to store the moderately patched Pebble Linux image and related files. In normal operation the card is mounted in read-only mode to reduce wear and help ensure filesystem consistency in the face of power outages. A small portion of the memory is mounted for RW file system access. Each node is equipped with two Atheros-based 802.11 a/b/g wireless cards. Two NICs enable a broader range of experiments. The radio is attached to a 5dBi omni-directional attenna. We use heavily patched versions of the Atheros MadWiFi driver for these radios.

Originally, the 4801 has a 20 Gigabyte (minimum) IDE hard disk. But we found hard disk failure is the major cause for crashes, so we removed them from 4801 boxes. Otherwise, the boxes are pretty stable and seldom crashes beside our own Kernel/drivers bugs. For our traffic monitoring project, all traces are directly dumped over NFS to one RAID 0 2 TB storage server.

We have done several things to help us test new software and run experiments more conviently. First we install/re-install the kernels and other software through a master controller to keep all software synchronized and up-to-date automatically. It usually takes 1-2 minutes to re-install everything for all boxes. Since the kernel logs are gone after reboot because they are stored in memory file systems, we have all kernel logs remotely logged into our master server. This helps us to perform post-crash analysis or makes system management easier in general. In cases when the kernel hangs/panics or for some reason we can not login to perform a manual reboot, we can remotely reboot these boxes (and instruct them to boot to a stable kernel) in a minute. In addition, we use Geode CPU watch dog functions to make the boxes reboot themselves after certain timeout. Thus we minimize manual intervention for software update, experiements, and debugging.

Soekris 4801

Soekris 4826

4826 Pod (sep'd 1meter)