About Us












Secure Spread

Home Photos Software Credits Mailing List Testbed Demo View

SMesh source code and binaries

SMesh is licensed under the SMesh Open-Source License. SMesh requires a device that runs Linux and has a 802.11 wireless interface. We tested it on x86, Linksys WRT54G and Meraki routers. Here is an overview of the operating modes of SMesh. The latest stable version is 2.3. If you intend to build SMesh from source, you also need to download Spines 3.1 or later.

SMesh Redundant Multipath kernel modules

SMesh Redundant Multipath adds kernel support for forwarding data packets to the mobile client through multiple paths. CPU utilization decreases significantly when using SMesh with these modules, allowing low-cost routers to fully utilize the available bandwidth on the wireless networks. A user-space implementation of a routing protocol that uses redundant multipath, as described in our paper, is available in the Spines distribution. These modules are available under the GNU GPL license.

iproute shared library

Changing kernel routing tables from a C program requires system calls that are limitted and sometimes outdated when moving from one version of Linux to another. The common "ip route" shell command is the best way of manipulating routing tables in Linux. However, calling the shell version of the software incurs a significant overhead on low-cost routers (per route update, 40 ms, compared to only 1 ms when using this library on WRT54 routers). This library provides a direct interface to process the "ip route" command with the same usage as the shell version, but without going through the shell. This software is available under the GNU GPL license.

Supported Hardware

SMesh on ADI Pronghorn instructions.
SMesh on Meraki instructions.

Supported models of the Linksys router are all Linux based versions as per the table below. Tested models include a (T) at the end of the line.

WRT54G Models
CDF0 = WRT54G v1.0 / ADM6996L Chipset / CPU 125Mhz
CDF1 = WRT54G v1.0 / ADM6996L Chipset / CPU 125Mhz
CDF2 = WRT54G v1.1 / ADM6996L Chipset / CPU 125Mhz
CDF3 = WRT54G v1.1 / ADM6996L Chipset / CPU 125Mhz
CDF5 = WRT54G v2.0 / ADM6996L Chipset / CPU 200Mhz (T)
CDF7 = WRT54G v2.2 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDF8 = WRT54G v3.0 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDF9 = WRT54G v3.1 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDFA = WRT54G v4.0 / BCM5352E Chipset / CPU 200Mhz (T)

Note: WRT54G v5.0 has 2Mb/8Mb RAM. It uses VxWorks OS and is incompatible with 3rd party firmware and SMesh.
CL7A = WRT54GL / BCM5352E Chipset / CPU 200Mhz (T)
CGN0 = WRT54GS v1.0 / ADM6996L Chipset / CPU 200Mhz
CGN1 = WRT54GS v1.0 / ADM6996L Chipset / CPU 200Mhz
CGN2 = WRT54GS v1.1 / BCM5325EKQM Chipset / CPU 200Mhz
CGN3 = WRT54GS v2.0 / BCM5325EKQM Chipset / CPU 200Mhz
CGN4 = WRT54GS v2.1 / BCM5325EKQM Chipset / CPU 200Mhz
CGN5 = WRT54GS v3.0 / BCM5352E Chipset / CPU 200Mhz
CGN6 = WRT54GS v4.0 / BCM5352E Chipset / CPU 200Mhz

Questions or comments to:
TEL: (410) 516-5562
FAX: (410) 516-6134
Distributed Systems and Network lab
Computer Science Department
Johns Hopkins University
3400 N. Charles Street Baltimore, MD 21218-2686