InveneoUbntFirmware

Download
Instructions for download and flashing are available here: Inveneo Ubiquiti Firmware Download

Overview
Inveneo's firmware for Ubiquiti devices is a version of the Ubiquiti AirOS firmware developed with the AirOS 3.0 SDK available for download here (bottom of the screen): AirOS SDK

Inveneo's firmware has all the features of standard AirOS with the following changes and additions:
 * Telnet service is configured ON by default
 * RIP2 dynamic routing is available and configured ON by default (see below for more details)
 * OSPF dynamic routing is available and configured OFF by default
 * The AirOS manual scripting system has been extended and adapted to use Debian like '.d' directories rather than a single monolithic script (see below for more details)
 * Added a 'saveconfig' command as a shortcut for 'cfgmtd -w -p /etc/'

RIP2 Dynamic Routing Implementation
We use the Quagga routing suit to implement RIP2. Configuration is handled by means of properties set in the AirOS configuration file. There is currently no web ui for setting these properties

Properties
The properties are (bold are defaults):
 * org.inveneo.rip=enabled|disabled
 * org.inveneo.rip.export.kernel-routes=enabled|disabled
 * org.inveneo.strip.default-route=enabled|disabled
 * org.inveneo.rip.config.manual=enabled|disabled [default configuration is AUTOMATIC]
 * org.inveneo.ospf=enabled|disabled
 * org.inveneo.ospf.config.manual=enabled|disabled

To change the properties you must:

1. log into the Ubiquiti device

2. edit the config file: > vi /tmp/system.cfg

3. Save the config > saveconfig

4. reboot or powercycle the device

Manual Configuration
If you want to configure RIP2 or OSPF manually, do the following:

1. log into the Ubiquiti device

2. create ripd.conf and or ospf.conf in /etc/persistent > vi /etc/persistent/ospfd.conf

3. edit the system config file and enable manual config properties > vi /etc/tmp/system.cfg [e.g. set org.inveneo.ospf.config.manual=enabled]

4. save the system config > saveconfig

5. reboot or powercycle the device

How RIP2 chooses what NICs to advertise
There is no need to manually set the NICs that RIP2 will advertise. The implementation decides which NICs are 'routable' and advertises those as follows:


 * If the device is in 'Bridge' mode, no routes are advertised
 * If the device is in 'Router' mode with NAT on either interface, no routes are advertised
 * If the device is in 'Router' mode with NAT off on both interfaces, routes for both interfaces are advertised

Extended Manual Scripting
Standard AirOS lets users add scripts in the /etc/persistent directory of an individual Ubiquiti device. These scripts let developers modify behavior by starting additional services or editing configuration files.

These scripts are called:
 * /etc/persistent/rc.prestart
 * /etc/persistent/rc.poststart
 * /etc/persistent/rc.prestop
 * /etc/persistent/rc.poststop

And they are called before and after the standard boot and shutdown scripts start or stop services

In the Inveneo firmware this system has been extended so that multiple scripts can be placed in:
 * /etc/persistent/prestart.d
 * /etc/persistent/poststart.d
 * /etc/persistent/prestop.d
 * /etc/persistent/poststop.d

Any scripts ending in '.sh' added to these directories will be executed, in directory listing order, at the time when the corresponding 'rc' script would have been.

In other words, instead of having to edit 'rc.poststart' to put in all the functionality you may want to configure and start various services, you can add an individual '.sh' file to 'poststart.d' instead.

NOTE: Changes to the contents of '/etc/persistent' are NOT SAVED until you issue the 'saveconfig' command!