Italiano English
Edit History Actions


Ubiquiti Nanostation M5 with AirOS firmware and OLSR

Ubiquiti Networks provides developers with a SDK to build their factory firmware, AirOS. Both the SDK and the cross-compiler toolchain can be found in the support section of their homepage [0].

By default AirOS uses no dynamic routing protocol, while uses OLSR. The only way to use OLSR with AirOS to make a Ninux node speak OLSR is to patch the firmware and the web interface to include OLSR support.

{i} This patch does not modify the existing kernel configuration nor the wifi driver in order to preserve the stability and functionality of the original firmware. So please note that this patched firmware, like the original one, has no adhoc mode.

You can build your own Image on your preferred linux distribution by invoking the following commands:

SDK 3.5 with Debian/Ubuntu

# mkdir ubnt-3.x
# cd ubnt-3.x
# wget
# dpkg -i toolchain-mips-ls_0.1-1.deb
# wget
# tar xjf SDK.UBNT.v3.5.4499.tar.bz2
# wget
# tar -xzvf patches.tar.gz
# cd SDK.UBNT.v3.5.4499
# patch -p1 < ../UBNT_SDK3.5_with_olsrd-01.patch
# tar xzf ../UBNT_SDK3.5_files-02.tar.gz

now we have to download and copy the olsrd source

# cd apps/gpl/olsrd
# wget<version>.tar.bz2
# tar --strip 1 -xjf olsrd-<version>.tar.bz2
# rm olsrd-<version>.tar.bz2
# cd ../../../
# make xs5

You can build a image for 2.4GHz Hardware by replacing the xs5 with xs2.

After building the Image it can be installed via the AirOS Webinterface. If the interface complaints about a wrong image file you have to upgrade AirOS to a newer version which allows the use of third party firmware images.

SDK 5.2 with OLSR 0.6.0

# mkdir ubnt-5.x
# cd ubnt-5.x
# wget
# tar xjf SDK.UBNT.v5.2.tar.bz2
# wget
# tar -xzvf patches.tar.gz
# cd SDK.UBNT.v5.2
# patch -p1 < ../olsrd-package.patch
# patch -p1 < ../ubnt-web-with-olsrd.patch
# patch -p1 < ../optional-default-gw.patch
# patch -p1 < ../fffversion.patch
# tar xzf ../additional-files.tar.gz
# cd openwrt
# make

SDK 5.2.1 with OLSR 0.6.1

# mkdir ubnt-5.x
# cd ubnt-5.x
# wget
# tar jxf SDK.UBNT.v5.2.1.tar.bz2
# wget
# tar -xzvf patches.tar.gz
# cd SDK.UBNT.v5.2.1
# patch -p1 < ../ninux-airos_olsr0.6.1_final.patch
# tar -zxvf ../additional-content.tar.gz
# cd openwrt
# make

After building the binary file can be found in openwrt/bin and can be installed via the AirOS Webinterface.

If you have successfully installed the image you can turn on olsrd using the enable button at the services section of the Web Interface.

You can also download your own olsrd.conf via the Webinterface. If you download an own configuration file be sure it includes the configuration lines for the txtinfo plugin as this plugin is needed by the Web Inteface to show the OLSR Info.

If you want to edit the olsrd.conf via ssh or telnet you have to make sure that it gets stored inside the persistent storage area of the flash. Create the Configuration file inside the /etc/persistent/ directory and invoke the following command:

# cfgmtd -w -p /etc/

After that you have to reboot.

Official Ubiquiti SDK 5.3.3 with olsrd (stable git)

This document is written for people that are already a little familiar with the OpenWRT toolchain.

Download the SDK (here we provide a mirror):

Go in the openwrt folder and add to the feeds.conf.default these lines:

src-svn zninux
src-svn zopenwrtpackages svn://

OPTIONAL: I like to use the src-link feed because usually I have already the Ninux packages and the OpenWRT packages on my machine but you can also use src-svn feeds style

src-link zninux /somepath/packagesninux
src-link zopenwrtpackages /somepath/packages

Update the feeds:

./scripts/feeds update

Install necessary package in the toolchain. Note that for some packages like radvd, that are present in more feeds, we need to specify which feed where to pick the package from.

./scripts/feeds install olsrd-ninux
./scripts/feeds install -p zopenwrtpackages radvd

run make menuconfig and select packages you need, like olsrd-ninux, ipv6, radvd and so on.

UPDATE: Add this security patch

Update: Apply the patch to remove mandatory default gw from web interface

Now apply this patch to the ubnt-base-files package:

the patch adds a file called /ninux in the / directory, remember to set it executable with chmod +x

What is this patch doing ?

At boot time the existance of /etc/persistent/ninux is cheched. If it exists it is executed, otherwise the file /ninux is executed.

The /ninux script acts in the same way, checking for the existance of /etc/persistent/olsrd.conf, otherwise it uses /olsrd.conf

This means that when the device is freshly flashed, olsrd is already running with a default configuration, ideally just the HNA configuration is missing.

Binary Firmware Images

AirOS version 5.2.1 + OLSR 0.6.0 (stable) + tinc:

md5: cd28bfcd173c9e019ed8e781526deb6b

AirOS version 5.2.1 + OLSR 0.6.1 (git) + tinc:

md5: e7bd9bc254639aec389876326b3ff3b6

AirOS version 5.3 + OLSR 0.6.1 + tinc + IPv6:

md5: f4590559755e99c8c1afaefb53d35121

persistent configurations

Quick and dirty notes

Comandi da terminale comodi su AirOS

Per fare upgrade del firmware se /tmp/fwupdate.bin รจ l'immagine che vogliamo flashare (controllate l'md5 prima di proseguire)

/sbin/ubntbox fwupdate.real -m /tmp/fwupdate.bin -d 

Per caricare un file di configurazione

cfgmtd -f /tmp/system.cfg -w && reboot