Debian batman-adv AutoStartup

This Page describes how to configure a Debian (or Derived Distribution like Ubuntu, Mint, etc) so that batman-adv starts automatically on boot up. First we’ll start the the same “Simple mesh network” example from the B.A.T.M.A.N. Advanced quick start guide.

Simple mesh network

For this example it is assumed that your ‘eth0’ network interface is already configured for you network, if not do this now. I will not cover how to do this as this is not specific to batman-adv and is well covered in the Debian, Ubuntu, Mint, etc documentation.

Load the module

First we need to ensure that the batman-adv module is loaded before we attempt to use it. Edit /etc/modules and add the batman-adv to a new line in the file:

sudo nano /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines begining with '#' are ignored.

batman-adv

Configure the wlan adapter

Next we want to configure the wlan adapter (wlan0 in this example), to do this we need to configure the following settings:

  • mtu 1532

  • mode ad-hoc

  • essid my-mesh-network

  • ap 02:12:34:56:78:9A

  • channel 1

As we won’t be using any ip address on this interface it doesn’t actually matter whether you use inet or inet6, so where I have used inet6 in this section, you can substitute inet if you wish.

Edit /etc/network/interfaces and add or modify the wlan0 section:

sudo nano /etc/network/interfaces

If there is a section in this file for wlan0 already you may want to comment it out (place ‘# ‘ at the beginning of each line), or just replace with the lines below

auto wlan0
iface wlan0 inet6 manual
    mtu 1532
    wireless-channel 1
    wireless-essid my-mesh-network
    wireless-mode ad-hoc
    wireless-ap 02:12:34:56:78:9A

Configure the bat0 interface

Finally we need to configure the ‘bat0’ interface, before we jump into this you first need to determine your IP addressing configuration for your mesh. For this example I will use two examples, first automatic IPv6, and second manually configured IPv4 with address 192.168.123.3/24 and default gateway of 192.168.123.1.

You also need to find the location of batctl, usually this will be /usr/sbin/batctl but use ‘whereis batctl’ to confirm.

Again we edit /etc/network/interfaces this time we add or modify the bat0 section:

sudo nano /etc/network/interfaces

For automatic IPv6 we would use the following:

auto bat0
iface bat0 inet6 auto
    pre-up /usr/sbin/batctl if add eth0
    pre-up /usr/sbin/batctl if add wlan0

For manual IPv4 we would use the following:

auto bat0
iface bat0 inet auto
    address 192.168.123.3
    netmask 255.255.255.0
    gateway 192.168.123.1
    pre-up /usr/sbin/batctl if add eth0
    pre-up /usr/sbin/batctl if add wlan0

If you have both IPv6 and IPv4 on your mesh then you can combine them, it doesn’t matter which order you put them in, just put the two pre-up lines in the first iface stanza.

auto bat0
iface bat0 inet6 auto
    pre-up /usr/sbin/batctl if add eth0
    pre-up /usr/sbin/batctl if add wlan0
iface bat0 inet auto
    address 192.168.123.3
    netmask 255.255.255.0
    gateway 192.168.123.1

Thats it, now you can reboot your computer and when it starts up it should join your mesh automatically.

Connecting to 2 mesh networks

In this example the computer has 2 wifi adapters (wlan0 and wlan1) and will connect to two batman-adv meshes (bat0 and bat1).

As earlier load the batman-adv module in /etc/modules

next configure your wireless lan interfaces

auto wlan0
iface wlan0 inet6 manual
    mtu 1532
    wireless-channel 1
    wireless-essid my-mesh-network
    wireless-mode ad-hoc
    wireless-ap 02:12:34:56:78:9A

auto wlan1
iface wlan1 inet6 manual
    mtu 1532
    wireless-channel 2
    wireless-essid my-mesh-network2
    wireless-mode ad-hoc
    wireless-ap 02:12:34:56:78:9B

then configure your batman-adv interfaces

auto bat0
iface bat0 inet6 auto
    pre-up /usr/sbin/batctl meshif bat0 if add wlan0

auto bat1
iface bat1 inet6 auto
    pre-up /usr/sbin/batctl meshif bat1 if add wlan1