=== 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 Ninux.org 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. {{https://wiki.graz.funkfeuer.at/moin_static171/mandarin/img/icon-info.png|{i}|height="16",width="16"}} 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 http://www.ubnt.com/downloads/sdk/toolchain-mips-ls_0.1-1.deb # dpkg -i toolchain-mips-ls_0.1-1.deb # wget http://www.ubnt.com/downloads/firmwares/XS-fw/v3.5/SDK.UBNT.v3.5.4499.tar.bz2 # tar xjf SDK.UBNT.v3.5.4499.tar.bz2 # wget http://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS3.x/patches.tar.gz # 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 http://www.olsr.org/releases/0.6/olsrd-.tar.bz2 # tar --strip 1 -xjf olsrd-.tar.bz2 # rm olsrd-.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 http://www.ubnt.com/downloads/firmwares/XN-fw/v5.2/SDK.UBNT.v5.2.tar.bz2 # tar xjf SDK.UBNT.v5.2.tar.bz2 # wget http://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS5.x/patches.tar.gz # 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 http://www.ubnt.com/downloads/firmwares/XN-fw/v5.2.1/SDK.UBNT.v5.2.1.tar.bz2 # tar jxf SDK.UBNT.v5.2.1.tar.bz2 # wget http://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS5.x/patches.tar.gz # 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): http://stud.netgroup.uniroma2.it/~saverio/SDK.UBNT.v5.3.3.tar.bz2 Go in the {{{openwrt}}} folder and add to the {{{feeds.conf.default}}} these lines: {{{ src-svn zninux https://svn.ninux.org/svn/ninuxdeveloping/packages src-svn zopenwrtpackages svn://svn.openwrt.org/openwrt/packages/ }}} '''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 https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS5.3.3/lighttpd-mod-airos-exploit-fix.patch '''Update''': Apply the patch to remove mandatory default gw from web interface https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS5.3.3/optional-default-gw.patch Now apply this patch to the ubnt-base-files package: https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/patches/AirOS5.3.3/000-ubnt-base-files.patch ''' 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: https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/fw-binaries/XM.v5.2.1.sdk-olsr0.6.0-tinc.bin md5: cd28bfcd173c9e019ed8e781526deb6b AirOS version 5.2.1 + OLSR 0.6.1 (git) + tinc: https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/fw-binaries/XM.v5.2.1.sdk-olsr0.6.1-tinc.bin md5: e7bd9bc254639aec389876326b3ff3b6 AirOS version 5.3 + OLSR 0.6.1 + tinc + IPv6: https://svn.ninux.org/ninuxdeveloping/browser/UbntM5AirOsOLSR/fw-binaries/XM.v5.3.sdk-olsr0.6.1-tinc-ipv6.bin md5: f4590559755e99c8c1afaefb53d35121 === Links === http://www.ubnt.com/support/downloads http://www.olsr.org https://wiki.graz.funkfeuer.at/UbntStations === persistent configurations === http://www.ubnt.com/wiki/Manual_Routes === 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 }}}