Contents
The Idea
Raw Materials
Homebrew
Development
Assembly
Conclusion
Resources
Contributors
Links
|
Things to do with a wireless router when it is not routing packets!
|
The Idea
|
|
Why build an embedded wireless Linux router?
Cost: The alternative to getting high speed data access would have
been to install one or two pairs of dedicated copper and drive those with
SHDSL modems. The one time installation cost would have been
equal to the cost of the material for the wireless connection. But the
local Telco would have the pleasure of sending me a bill every month. In
contrast, the airwaves are free, especially in the unlicensed 2.45GHz range.
Speed: Even though I joined the wireless game early on, way before
11Mbps wireless access points, the Proxim Symphony cards certainly beat 56kbps
modem access. However, at an effective throughput of 400kbps, the selected Proxim
Symphony cards are no match to a 2Mbps SHDSL connection. Maybe sometime in
the future, when my bandwidth demands grow beyond bounds, the routers will be
refurbished with 44Mbps cards *smiles*
Challenge: It was great fun seeing this project come together.
In the beginning there was an old Pentium desktop booting from a
single floppy, and at the end there was an embedded single board computer
booting from flash disk with 'value added services' like webcam and
thermometer.
Finally: Just because I can, why else?
Note: Clicking on the images will pop-up larger images.
|
|
Raw Materials
|
The hardware platform for the current version of the wireless router is an
Advantech PCM-4823L single board computer
(SBC). The brains of the SBC is an AMD 5x86-133 processor. The board has all the
interfaces usually found on a desktop PC except for onboard video. Note that a
version of the PCM-4823 including video exists. However, in the application as a
wireless router mounted in a remote location video is not really needed. The
interfaces available are: one parallel port, two serial ports, IDE interface and
floppy interface. It also features a socket for onboard DiskOnChip from
M-Systems. The SIMM memory slot has been filled
with a 32MB stick. Network connectivity is provided by the onboard NE2000
compatible 10base-T ethernet interface.
Unfortunately I wasn't able to find any PC/104 wireless cards when this project
was started. An alternative would have been to choose a PCMCIA PC/104 adapter
and install a wireless PCMCIA card. The advantage of this approach would have
been a perfect fit of the wireless adapter to the form factor of the SBC.
But the cost for the adapter card was rather high and wireless PCMCIA cards
were usually more expensive than their PCI or ISA counterparts.
Configuring PCMCIA on the embedded Linux system is complex and requires
disk space and memory for the
cardmanager and configuration files. PCI and ISA do not require a cardmanager.
I found a riser card with 2 ISA slots which fit nicely into a PC/104 slot. It
is available from Circuit Specialists
as part number AR-B1052. It fit quite well and the second ISA slot is handy
for connecting a video card during development.
The heart of a wireless router is the wireless network adapter. The card selected
for this project was a Proxim Symphony ISA PnP
card. At the time this project was started the IEEE 802.11b standard was still in
it's infancy. The Proxim Symphony adapter was one of the first wireless adapters
targeted at the average home user. Thanks to Dave Koberstein there is a Linux
driver available for
this wireless adapter.
The advertised throughput of the Proxim Symphony ISA adapter is 1.6 Mbps.
In real life I have seen speeds of up to 400kbps. If I were to source the parts
for a wireless router today I would opt for one of the many IEEE 802.11b
adapters available; keeping in mind that PC/104 is essentially a repackaged
ISA interface requiring an ISA wireless adapter.
The advertised range of the card with the included omni directional desktop
antenna is 150 feet without obstructions. As distance increases beyond the 150
feet mark throughput rapidly decreases and latency increases. It became clear
early on that the Proxim supplied antenna was not sufficient for an outdoor
application spanning several hundred feet.
Til-Tek is a Canadian company specialized in
manufacturing cost effective high quality antennas. The TA-2411 provides
11.5dBi of unidirectional gain which is more than sufficient for covering a few
hundred feet between sites.
What else could an embedded box do other than route packets? Since the SBC has
parallel and serial ports I wanted to do something unique, something not
commonly found in a router. To mind came an old Connectix QuickCam, now a
Logitech product. This camera is an
older model which connects to the parallel port and is powered by an adapter
that fits between the keyboard and the keyboard connector on the motherboard.
The Linux driver for this camera is
cqcam. It supports the
Connectix and Logitech Color Quickcam and Color Quickcam 2. Unfortunately the
currently shipping Quickcam VC (with parallel adapter) is listed in the
unsupported section. There we go, now we have a wireless router that not only
routes packets but also provides entertainment by serving live pictures via
a webcam and built-in webserver.
But that's not all! There are still unused serial ports, one of which features
a standard DB9 connector. It would be interesting to be able to record
temperatures with an outdoor mounted router. The Dallas Semiconductor DS1820
(datasheet) is a 1-Wire Temperature Probe. Inside this
3 pin TO-92 package is a temperature sensor, analog to digital converter and
logic that allows the device to be accessed and powered by a single wire
serial bus. The DS1820 is capable of 0.01 degree resolution at 0.5 degree
accuracy. Each device contains a unique serial number which allows it to be
explicitly addressed among several devices on the same serial bus. So with just
one interface adapter that connects to the serial port of the single board computer
it is possible to monitor several temperatures, like outdoor and router case
temperatures.
Since the planned location for the assembled router would be on the outside of
the house a weatherproof enclosure was required. A very easy to work with box
can be obtained from electrical supply places. The ABS box is quite easy to work
with. The material is soft enough for machine screws to create their own thread
if a small hole is provided for them. The snug fit of the screws in the case
provides for moisture resistance. A seal for the lid is provided with the
enclosure. Larger holes for rubber grommets can easily be cut using a dremmel
tool and a router bit.
|
|
Development
|
During the development phase the whole wireless router was assembled on
a work bench without enclosure. This allowed for peripherals like the
QuickCam and wireless card to be connected and tested without modifications.
The operating system of the router is
PeeWeeLinux, a Linux distribution
targeted specifically at embedded devices like routers and thin clients.
PeeWeeLinux contains several features targeted at systems booting from
read-only filesystems and running in ramdisks. It also includes support
for the peripherals found on the PCM-4823L 'out of the box'. Support for
the QuickCam, image manipulation and temperature sensor were added to
PeeWeeLinux during the course
of development of the wireless router.
The router was designed to operate as an appliance. The disk drive is
mounted read-only during the boot process. The kernel and a ramdisk image
are loaded into memory and executed. Configurable system files are stored
in a tar.gz archive on the flash disk drive and loaded during the boot
process.
Keeping the disk drive mounted read-only prevents filesystem
corruption. Power outage and brownouts will merely cause a reboot without
any cause for concern. A small shell script allows for system settings to
be saved. System files specified in a configurable list are written to
the flash disk when the shell script is executed. During the save process
there is a small window of opportunity during which the flash disk is
mounted read-write and susceptible to corruption. Since configuration
changes should be rarely necessary this is an acceptable risk.
The flash drive used on the final product is a 16MB capacity M-Systems
DiskOnChip device. The current operating system occupies only 3MB on the
flash drive. A smaller device could have been used instead. Since it is
rather awkward to load the onboard DiskOnChip device the development was
done using a CompactFlash card attached to the SBC via an IDE - CompactFlash
adapter. This allowed for the CompactFlash card to be programmed using a
USB CompactFlash reader attached to the workstation with the development
environment. The final image contained support for IDE, DiskOnChip
and the syslinux bootloader installer. This allowed for the
contents of the CompactFlash card to be transferred to DiskOnChip without
any special programming tools.
The DiskOnChip is used as shipped by M-Systems with the original firmware
in place and one large FAT formatted partition. The syslinux bootloader
loads the ramdisk and kernel images during boot. Keeping the original
DiskOnChip formatting in tact greatly simplifies loading the embedded
Linux system onto the device. All that is required is to run the syslinux
installer and to copy kernel and ramdisk images and the custom.lst file to
the DiskOnChip. The custom.lst file is a simple text file listing the
system files to be saved if the configuration of the operating system
is altered at runtime.
The embedded Linux system contains a full suite of network tools. Most features
expected in a basic router are present. The wireless router supports: ip
aliases, ip firewall, ip masquerading (NAT), ip port forwarding, tunneling,
etc. A range of network monitoring tools are installed: tcpdump, iptraf,
netstat, etc.
The router is accessible for configuration changes and monitoring via telnet.
The embedded webserver allows access to the webcam images and temperature
readings. A ftp client allows for manual software updates in the field
by downloading a new kernel and ramdisk image; however, there is no
failsafe mechanism in place. A failed attempt to upgrade kernel and
ramdisk will leave the wireless router in a nonbootable state requiring
the DiskOnChip to be loaded with fresh content from an alternate boot device.
The PeeWeeLinux distribution
contains the wireless project as an example.
|
|
Assembly
|
The 8x8 inch ABS enclosure was quite adequate for the wireless router once the
modifications outlined above had been made. The ABS material does not provide
for any RF shielding. One way to solve this problem would have been to coat
the inside of the enclosure with conducting graphite spray. Instead a trimmed
anti-static bag was used to line the interior of the box. It was a feeble
attempt at providing RF shielding and some means of static charge control,
but so far there has been no problem related to static discharge or RF
interference. The anti-static lining is held in place by the mounting posts
for the single board computer. These posts are standard hex studs used to
mount motherboards in computer cases. The studs easily cut their own threads
into pre-drilled holes in the ABS material.
Velcro straps screwed to the enclosure worked fabulous to mount the
switch mode power supply and to secure the QuickCam. Cable entries were
waterproofed by compression type bushings. The compression method also
provided for adequate strain relief of the wires. To minimize the risk
of water entering the enclosure all screw holes were covered with
silicone sealant. Two 1/8 inch drain holes were drilled on the bottom
of the enclosure to ensure any accumulated moisture could escape.
This also helped control condensation on the lid.
The lid supplied with the enclosure was also made of ABS. It had to be
replaced with something transparent. Lexan was choosen because of it's
superior strenghts. It is almost unbreakable and drilling holes near the
edge of the sheet presented no problem. The lack of a lip on the Lexan
cover to contain the rubber seal presented a challenge. It took some
effort to line up the edge of the enclosure and the rubber to provide
a proper seal. The srews holding the Lexan cover should be tightened
just snug enough to hold the rubber seal in place. The transparent lid
causes a significant amount of glare if exposed to direct sunlight. It
also causes the interior of the enclosure to warm up significantly. A
future modification will be to use the original lid with a small Lexan
window for the QuickCam.
Mounting the QuickCam required additional modifictions. It's round body
slipped out of the Velcro strap quite easily. The bottom of the QuickCam
has a threaded hole for use with a tripod. A small screw attached to the
box and protruding into the hole of the QuickCam solved this problem.
The Velcro strap now allows for reasonable movement and placement of the
camera.
Fitting all of the components into the ABS enclosure was fairly straight
forward. There was plenty of room, provided the assembled SBC was moved as
far to the top of the case as possible. With the wireless adapter placed
in the top ISA slot there was enough clearance for the AC adapter. This
made the bottom ISA slot inaccessible which was not an issue with this design.
Initially there were concerns about the heat generated by the electronics
and the lack of ventilation. The assembled wireless router warmed up
approximately 20 Celcius above ambient temperature. During the winter
months this is sufficient to keep the electronic components within their
rated temperature range. If the box is deployed with southern exposure,
heating due to the sun is a concern.
Any through holes in the enclosure were limited to the back and bottom sides.
The cable entries were located in the bottom of the box. This should provide
for adequate weather protection. Direct exposure to the elements is not
recommended since the seal between the Lexan lid and ABS sides can be easily
broken with little mechanical force. For exposed installation a different
cover should be designed.
|
|
Conclusion
|
The image to the left shows the assembled router just before moving it to
it's current location on the gable of the house. Curious about the webcam?
The live image, updated every minute, can be seen at
http://cam.adis.on.ca (Update: The camera page is no longer online).
As of February 17, 2001 the box has performed flawless for 3 months in its
main function as wirless router. The webcam has been a bit of a
disappointment. The image quality is less than satisfying during daylight
hours due to significant glare caused by sunlight. Relocation of the router
is planned to reduce the problem. Exposure to the sun also causes the
interior temperature to rise significantly. This will have to be addressed
before the summer months to avoid turning the wireless router into a
molten plastic glob.
|
|
Resources
|
Here are some links to the software used in this project:
- PeeWeeLinux, the embedded Linux
operating system
- Proxim Symphony Driver,
the Linux driver for the Proxim Symphony wireless adapter
- cqcam, the Linux driver
for the Color Quickcam
- DigiTemp; the driver for
the Dallas Semiconductor DS1820 temperature sensor for Linux amd Windows
Here are some links to the hardware used in this project:
|
|