ME2000v3 Proposal
From ME2000
Contents |
Overview
The aim is to develop a wirless router platform on several Single Board Computers of different architecture.
The SBC's in question will be:
- PC Engines WRAP2C (x86)
- Mikrotik Routerboard 532 (mips)
- Gateworks Avila 2348-4 (xscale)
The intention is to (as much as possible) develop a linux distribution that is common to all three boards, with ethernet drivers, wireless drivers, web-interface, persistent storage of settings, and remote upgrade capability.
It is hoped that a live 1km link will be installed and put live using the operating system to do a burn-in test of the distribution.
Booting and Filesystem
All three boards have different bootloaders, with different capabilities. The native bootloader on each board will be used to boot the kernel, and it is predicted that there will be differences between the setup of each board to get the operating system on because of this. The installation of each board will be handled seperately.
Filesystems
It is intended that all the boards will use the initrd (Initial Ram Disk) method. A compressed image of the root filesystem will be stored in the flash along with the kernel, and expanded into a ramdisk at boot. The footprint of the operating system should be small enough to allow this.
For consistency, the distribution will have a common /boot mountpoint for persistent storage, based on an ext2 filesystem on the Compact Flash card.
General Operation
Once the system has booted, the operation of each board should be practically indistinguishable from the other. All the scripts, user interface, directory layout should be identical. Some boards have more built-in features than others, and in this case there may be extra information available to the user. For example, the Avila has a built-in voltage and temperature sensor, which will be displayed as part of the user interface. This information will not be shown where the hardware or drivers are not available to support it.
Feature Set
- Web interface for ip addresses, wireless settings, routing, various information viewing.
- Madwifi wireless drivers including Access Point and Client mode support.
- ssh access.
- snmpd for snmp queries (traffic/wireless/temperature/voltage).
- on-board statistics (web based), possibly mrtg or something similar for traffic/wireless/temperature/voltage monitoring.
- dhcp daemon.
- iptraf and tcpdump. iptraf is an excellent ncurses-based traffic monitoring tool.
- settings and statictics regularly saved into persistent storage. (CF or on-board flash).
- remote upgradable (kernel and rootfs), with persistence of settings across upgrades (where possible).
- additional package capability. Packages gunzipped over rootfs just after boot. remote upgradable.
- iptables firewall.
- transparent bridging with brctl
- quagga routing daemon with ripd ospfd and bgpd
There is no end to the amount of configuration that can be done via the web interface, so the scope of the project will be limited to the following:
- IP address, netmasak and gateway for each interface.
- Wireless settings, including distance and encryption settings for each wireless interface.
- Routing settings, add/update/delete routes.
- Basic firewall settings with iptables.
- Feature enable/disable (e.g. switch on/off dhcp daemon, etc.)
- Statistics/log viewer.
Why this particular project
Initial research has shown very few cross-platform implementations of wireless router operating systems. While there are open-souce drivers and applications available for these boards, most of them have only proof-of-concept distributions available. The routerboard's reference debian image is missing basic functionality such as a basic editor, and without any persistent storage of configuration changes. Likewise, the Gateworks Avila board has a snapgear linux implemenration, but again, no persistent storage of changes.
What this project hopes to produce is a viable, usable linux implementation, with a set of features that will allow installation of a working wireless operating system on any of the supported platforms with a minimum amount of difficulty. Basically, flash the CF or on-board flash, make a few configurations changes, and it should be up-and-running.

