Compile Manually

Libre-Mesh firmware can be built via OpenWRT build root or via lime-build tool, here both methods are described.

Starting from a new compilation of OpenWrt

Resources needed:

Probably a Linux based operating system.

Some tools for the compilation process, on Debian:

apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion

About 9 GB of disk space.

About 3 hours of compilation time.

Download OpenWrt 14.07. Using trunk version of OpenWRT is currently not supported.

git clone git://git.openwrt.org/14.07/openwrt.git

Add our repositories to the list of the default ones.

cd openwrt
cp feeds.conf.default feeds.conf
echo "src-git libremap git://github.com/libremap/libremap-agent-openwrt.git" >> feeds.conf
echo "src-git lime https://github.com/libre-mesh/lime-packages.git" >> feeds.conf

If you want to use a specific branch of lime-packages specify it adding ;nameofthebranch at the end of the last line. For example:

src-git lime https://github.com/libre-mesh/lime-packages.git;sandbox/hotfix/luci-lib-ip

Download all these packages and put sources in the right place.

scripts/feeds update -a
scripts/feeds install -a

Then enter the OpenWrt configuration menu.

make menuconfig

Go in "Base system" and deselect "dnsmasq" (this is the IPv4 version which if selected won't support IPv6) then select "dnsmasq-dhcpv6". In the same section deselect "firewall" (because some devs say that this can cause problems which are hard to debug).

Exit from "Base system" and enter "Network". Then deselect "odhcpd" (don't be confused with "odhcp6c" which is needed, seems that "odhcpd" if installed together with dnsmasq-dhcpv6 could release duplicated leases...).

Exit from "Network" and enter in "LiMe" section, select what you want, exit.

  • Suggested base modules: lime-system, lime-proto-wan, lime-hwd-openwrt-wan, lime-debug, lime-webui
  • Suggested modules for batman-adv based networks: lime-proto-batadv, batman-adv-auto-gw-mode, dnsmasq-lease-share
  • Suggested modules for bmx6 based networks: lime-proto-bmx6, bmx6-auto-gw-mode, lime-proto-anygw
  • Suggested modules for babeld based networks: still under development
  • Suggested modules for olsr based networks: still under testing
  • Suggested modules for networks containig nodes using ground routing: lime-hwd-ground-routing

If you need to compile images only for one type of devices you could specify the type in the menu "Target system" and "Target profile", otherwise keep the default and images for each profile will be produced. Exit and save.

Launch the compilation.

make

The produced firmware image files are in bin/ directory.

Flash on your devices, optionally change the default configuration, and enjoy!

Updating a previous compilation of Libre-Mesh

Enter the base directory of the previous compiled image, for example

cd ~/openwrt

Update the OpenWrt source code.

git pull

Update the Libre-Mesh package source code.

scripts/feeds update -a
scripts/feeds install -a

Launch the compilation. The make -j [number] makes the compiler use multiple cores. If you have more than 2 cores, change to the appropriate number.

make -j 3

If you encounter some errors try compiling without the -j option or cleaning completely the installation environment

make clean
make dirclean
rm -rf feeds/*

and restart from the top of this section about updating.

Using lime-build

Resources needed:

Probably a Linux based operating system.

Some tools for the compilation process, on Debian:

apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion

About 9 GB of disk space.

About 3 hours of compilation time.

Download the lime-build source:

git clone https://github.com/libre-mesh/lime-build.git

Have a look at the list of devices supported by lime-build:

make list_targets

if you see your device you can continue with this guide, otherwise you have to use the instructions in the section "Starting from a new compilation of OpenWrt".

Compile specifying the target device in T= and roughly the number of CPU cores plus one in J=. That is, for compiling on a dual core computer the image for Ubiquiti NanoStation M5:

make J=3 T=nsm5 build

You'll find the compiled images in the directory images.

Other options for lime-build are documented here: https://github.com/libre-mesh/lime-build/blob/master/README.md