B.A.T.M.A.N. goes mainline

Added by Marek Lindner over 14 years ago

Since its existence the batman-adv kernel module has been residing outside of the linux kernel and needed to be downloaded / compiled / installed seperately. We intend to change this by merging the batman-adv kernel module into the linux mainline tree. Greg Kroah Hartman has agreed to include the module as part of the staging drivers as a first step.


  • Bringing the 0.2 release into staging asap.
  • After gathering feedback from other kernel hackers build patches on top of 0.2 to conform with the linux kernel coding style & rules. The result will be version 0.2.5.
  • In parallel we will start the 0.3 branch in which new features can be included as well as the linux patches from the 0.2.5 branch.

How are we going to tackle this ?

As the kernel developers prefer git over SVN we created our own git repository which imports all changes from our SVN to make backporting changes as easy as possible. git allows us to manage different patchesets for the kernel hackers. Checkout to get the git repository and learn how to use it.


We maintain a TODO file in the git repository that you can see here:

If you are interested in helping us out you can grab one item, make a patch and send it to our Mailinglist.

Batman 0.3.2 released

Added by Marek Lindner almost 15 years ago

Hi folks,

the B.A.T.M.A.N. team is releasing the second bugfix and maintenance release of the 0.3 batman daemon which also contains smaller enhancements in various areas. It's mostly an update to batman 0.3 and does not contain major routing protocol changes. We offer signed source tarballs:

In the past many new users experienced difficulties using batman to connect to the internet as it was necessary to enable NAT on the tunnel manually. With this release we address this issue. The batman daemon will try to locate the iptables binary to setup the masquerading automatically. This behaviour can be turned off using the "--disable-client-nat" option. If the outgoing packets are not masqueraded (the iptables binary wasn't found / the automatism deactivated) batman will switch to the "half tunnel" mode which operates without masquerading. This mode requires the gateway to have a routing entry for each client that accesses the internet (e.g. non-batman clients may be announced via HNA).

The whole HNA code has been rewritten and now supports multiple nodes announcing the same network segment. You may have one non-batman network but several entry points to it. All border nodes can announce the same network. Receiving batman nodes choose their entry point based on the best TQ value available. The packet aggregation that exists since batman 0.3 has been enabled by default.

Thanks to Benjamin Henrions persistence the hop penalty was modified to make use of multi radio interfaces to maximize throughput. Nathan Wharton and Sven Eckelmann debugged alignment issues on Avila boards. Sven also improved the kernel routing communication and contributed many more patches. Antoine van Gelder developed an extension for the vis server that allows the vis server to export its data in the JSON format if it was started using the "-j" parameter.

In the coming months we want to focus on improving the protocol. Therefore we will start the batman 0.4 branch soon.

Happy routing,

The B.A.T.M.A.N. team

Wireless Battle Mesh 2009 (Paris) - aftermath

Added by Marek Lindner about 15 years ago

The /tmp/lab crew called wireless mesh protocols to a gathering in Paris. As it seemed to be a good place to exchange ideas and testing our latest stuff we decided to join this event.

We were positively surprised to find out that the area around the /tmp/lab
is very suited for wireless testing: lots of free space, packet loss and collisions.

Nico from the OpenWRT team prepared all images + packages for the various setups and helped all teams to solve OpenWRT related issues. Great job! The B.A.T.M.A.N. project was supported by a French team consisting of massoud, xeu and loloster. They helped us flashing the routers, placing them outside and configuring batman. Before this event they were not using batman at all, hence it was very interesting for us watching them interacting with the batman daemon. They managed the setup very well and we had a lot of fun.


As we wanted to use the occasion to test batman layer 3 we decided to run the trunk (revision 1244 at this time). On top of that we were running the batman vis server to visualize the topology
using s3d. The debian s3d packages worked like a charm - thanks Sven!

The good:

  • Batman (including all its flavors) has an excellent OpenWRT integration. The batman team was the first one ready to deploy despite the lack of mesh / batman experience (other teams needed considerably longer).
  • The daemon is easy to setup & manage. We did not give introduction talks or training of any sort to our French friends. We let them start and whenever needed we explained a feature to them (e.g. how to activate internet gatewaying).
  • The routing was stable and at its optimum.
  • The traffic overhead created by batman is reasonable (much lower than other protocols but not the lowest). There is room for more improvements.
  • Batman handles full & half internet tunnels without problems. No other protocol has a working solution for multiple natted gateways although we heard whispers that the idea of tunneling towards the gateway is spreading.
    We are looking forward to compare the implementations.
  • The 3D visualization of the topology still is an eye opener. ;-)

Lessons learned:

  • We can reduce the traffic overhead even more. Batman could throw away quite some packets without hurting the routing decision.
  • The packet aggregation works but the TQ values are going down if the aggregation is enabled. It might be related to a higher probability of collisions when the packet is bigger or we have a bug somewhere.
  • Compared to other protocols batman is slow converging over many hops.

The event was a great success. We had many discussions with other mesh people which will help all involved parties to move forward. For future events it would be nice to have a database of difficult scenarios for comparing protocols with each other. Also, more testing on layer 2 would be interesting which requires hardware that supports linux 2.6.

We are looking forward to the next Wireless Battle Mesh,

the B.A.T.M.A.N. team

Batman 0.3.1 released (1 comment)

Added by Marek Lindner over 15 years ago


the B.A.T.M.A.N. team is pleased to announce the availability of batman 0.3.1 a bugfix and maintenance release. As usual, we provide signed source tarballs:

As you may have noticed we slighty modified the folder structure to seperate binaries and sources better. Also, we will keep providing older source tarballs to support the various distributions better. In addition, we added a release "bundle" folder which contains related source packages:

Many people outside the B.A.T.M.A.N. team contributed to make this release possible. Thanks to everyone that helped us. Special thanks goes to Antonio and the crew. They provided us with bug reports, test beds and ideas to improve the overall batman experience. Also, we wish to thank Sven Eckelmann for his endless stream of patches and thoughtful hints.

During the past months the code received improvements all over the place. Nearly all functions were touched. The packet aggregation was debugged and improved. Areas with a high density of nodes suffered from bogus routing information which was fixed. BSD compability was committed. Now, on a changing route batman adds new routes to the kernel routing table before the old routes are deleted to avoid race conditions. The batgat kernel module received many fixes that improve stability. The makefile reduced the verbosity of its output to allow easy distinctions between warnings and commands.

Happy routing,


Batman-adv 0.1 released

Added by Marek Lindner over 15 years ago

(posted by Marek on Dec 28th 2008)


today, after a 6 months stabilization and debugging phase we release the first milestone towards a stable version: batman advanced 0.1. As this implementation resides in the kernel land only we wanted to make sure its stability before releasing it to the public.

This batman implemention is marked with the label "advanced" to outline the fact that it operates on layer 2 (mac layer) as opposed to batman which operates on layer 3. To gain optimal performance it resides in the kernel as a module and can be turned on/of or configured via the /proc/net/batman-adv/ interface.

Unfortunately, we can not offer precompiled packages for your kernel as the module sources need to be linked against your very own kernel headers. If you are using debian you will find packages that you can install via apt-get. OpenWRT also has the package included. If you intend to use the module on your own system, simply download the sources, build and load the module.

You can find the sources here:

Special thanks to Sven Eckelmann and Scott Raynel who spent a considerable amount of time testing, debugging and patching the sources. We included all their patches which allow us to release today.

The biggest changes since the beta release are:
  • support latest kernel version (2.6.20 - 2.6.28)
  • LOTS of cleanup: locking, stack usage, memory leaks
  • Change Ethertype from 0x0842 to 0x4305 unregistered at IEEE, if you want to sponsor an official Ethertype ($2500) please contact us

We welcome any feedback/patches/ideas,

The B.A.T.M.A.N. developer team

Batman-adv now available in Debian

Added by Marek Lindner over 15 years ago

(posted by Marek on Nov 16th 2008)

Even if the news is still some days old - its worth mentioning: batman-advanced is now available in Debian!

The packages are available through your favorite dpkg frontend (apt-get, aptitude, ...) using the unstable repositories. To follow the package development you can visit the following pages:

batman-adv-source contains the source code and can be compiled for your kernel using module-assistant [1]. batman-adv-battool contains the battool which provides ping, traceroute and other tools for the batman-adv network.

Big thanks to Sven Eckelmann, Simon Wunderlich and Holger Levsen for their work on these packages. :)

BTW, you also can find the current batman stable (0.3) in the lenny and unstable repositories. Here the respective package pages:



Also available in: Atom