
###################################
B.A.T.M.A.N. Installation and Usage
###################################


  (There is also a very nice HOWTO from Wesley available as a pdf at:
  http://open-mesh.net/batman/documentation/batmand_howto.pdf )


Compiling from source
=====================

Pre-requirements
---------------

You need the usual compile environment and the libpthread-library
and the kernel module "tun". Both should already be installed on 
your machine, if you use a PC using Linux. On embedded devices 
both may not be installed in order to save space.

Compiling
---------

You don't necessarily need to compile. Our download.store at 
downloads.open-mesh.net is likely to offer precompiled packages
for your system.

Download and compile the latest stable sources from the download 
section http://open-mesh.net/batman/downloads by executing eg.:

$ wget http://downloads.open-mesh.net/batman/stable/sources/batmand_0.3-current_sources.tgz
$ tar xzvf batmand_0.3-current_sources.tgz
$ cd batmand_0.x-rvxyz_sources
$ make

After the compilation process is finished you'll find a executable 
file called 'batmand'. This executable is quite big because it is 
not stripped. Don't strip it if you want to help us finding a bug
in the daemon. Strip it by executing:

$ strip batmand

Note there is no installation script at the moment. If you want to 
install it, copy the daemon (batmand) to a location somewhere in 
your path, for example

$ cp batmand /usr/sbin/

Or start it right from the directory where you compiled it by 
issuing:

./batmand 


Installation on a Freifunk Router
=================================

Just to be sure, there has been some confusion with outdated 
batman(d) packages. So its a good idea to check for any old 
package by login into your router and executing:

$ ipkg status | grep batman

Remove everything listed by doing for example:

$ ipkg remove batman batman-iii freifunk-batman-de ...

Then continue with the installation of fresh and stable batman packages!

If you use a wireless router based on Freifunk-Firmware or OpenWRT you can
use the ipkg-package management system. Add the line:

 src lui http://freifunk.schmudde.com/ipkg

to your package sources file ( /etc/ipkg.conf ) and update the list of 
available packages by executing:

$ ipkg update
$ ipkg install batmand
$ ipkg install freifunk-batman

If not already installed (or automatically resolved) you may also need to 
explicitly install the libpthread and kmod-tun package. Do this by executing:

$ ipkg install libpthread
$ ipkg install kmod-tun

Afterwards, reboot your WRT and check the web interface. You need to enable 
batman for one (or several) interfaces and specify the netmask and IP address 
as well as other optionally parameters.

Alternatively you can get the latest stable release (as well as development) 
versions from http://open-mesh.net/batman/downoads/

For example to install batmand-0.3 on a freifunk WRT do:

$ ipkg install http://downloads.open-mesh.net/batman/stable/wrt-freifunk/batmand_0.3-current_mipsel-wr-elf-32-lsb-dynamic.ipk

 Be aware that, a recent batmand-...ipk from open-mesh.net 
 should be equal to the batmand-...ipk from freifunk.schmudde.com/ipkg.
 Both packages install /usr/sbin/batmand and the last installed 
 one will overwrite the previous one.



Usage
=====

Make sure you have no firewall running that is blocking UDP 
port 1966 (originator messages), port 1967 (HNA messages). 
Port 1968 has to be open for incoming UDP traffic if you run the
B.A.T.M.A.N. visualization server.

First the network interfaces supposed to participate
in the batman mesh must be configured properly. Assuming you 
are already running olsr on interface eth1 with the IP address 
104.1.12.123/8 and now want to run batman in parallel to olsr 
on the same physical interface but with a 105.1.12.123/8 IP/netmask.

$ ifconfig eth1:bat 105.1.12.123 netmask 255.0.0.0 broadcast 105.255.255.255
$ batmand -d 3 eth1:bat

This will configure an alias interface on top of eth1 named eth1:bat and start
the batman daemon with debug level 3 on that alias interface. As soon as
another running batmand (with the same netmask and broadcast address) is 
connected to that link (or within the range of the wireless link) 
both batman daemons should see each other and indicate this in the debug output.

The daemon started with debug level 3 can be terminated with ctrl-c.
If no debuglevel is given at startup, using

$ batmand eth1:bat

the daemon will immediateley fork to the background (as is the usual behavior 
of a daemon). However you can always connect to the main daemon (running 
in background) by launching a client-batmand process with the 
-c and -d <number> option, where the number represents the desired 
debug-level. The following command will connect to a running batmand 
process providing debug-level 1 informations.

$ batmand -c -d 1 # shows a list of other nodes in the mesh

$ batmand -c -d 2 # shows a list of nodes offering internet GW access

$ route -n # shows your current routing table as modified by batmand

For a full list of supported debug-levels and other startup options see

$ batmand -h # providing a brief summary of options and

$ batmand -H # for a more detailed list of options

Use ctrl-c to terminate a process running in foreground and 

$ killall batmand

to terminate the main batmand daemon running in background.

If you want to use one of the batman-internet gateways showed with 
debug-level 2 launch the main batmand using:

$ batmand -r 3 eth1:bat # to automatically select a reasonable GW

$ batmand -r 3 -p <ip-of-batmand-gw-node> eth1:bat # to set a preferred GW

In case of success this will setup a tunnel to a (preferred) batman-gw-node 
and configure the routing table that all packets matching the default route 
are forwarded (tunneled) respectively.
More information is available using the -h and -H options.




Happy routing!

The B.A.T.M.A.N. contributors
