Kathleen Booth was the author of the first assembly language.
The purpose for this release is to have a stable firmware for beginners for the Freifunk mesh in Berlin. The firmware itself is based on vanilla OpenWRT Barrier Breaker with some modifications (to fix broken stuff in OpenWRT itself or for example luci) and additional default packages/configuration settings. New features like a new network concept will be part of future releases.
- ...
- based on OpenWRT Barrier Breaker release
- includes updated OLSRD and BATMAN
- new OLSR setup and configuration:
- SmartGateway for gateway selection (e.g. honors uplink speed)
- dynamic gateway plugin for uplink connectivity tests (gwcheck script removed)
- freifunk-policyrouting fixed/patched for VPN03 setup
- new configuration wizard
- starts after first boot and guides new users through the configuration of the router
- monitoring of nodes through collectd
- frei.funk as local DNS entry for your router
- you do not have to remember your IP to get access
- change default lan ip address to 192.168.42.1/24
- avoids network collisions
- one dhcp network for APs and lan (bridged)
- remove of autoipv6 and use of ULA ipv6 prefixes
- new primary router target: TP-Link WDR 3500/3600/4300
- default dns servers:
- 85.214.20.141 (FoeBud / Digital Courage)
- 213.73.91.35 (CCC Berlin)
- 194.150.168.168 (dns.as250.net)
- 2001:4ce8::53 (as250)
- 2001:910:800::12 (french data network - http://www.fdn.fr/)
For questions write a mail to [email protected] or come to our weekly meetings. If you find bugs please report them at: https://github.com/freifunk-berlin/firmware/issues
A tutorial on router configuration is available here (in German only): http://berlin.freifunk.net/participate/howto/
For the Berlin Freifunk firmware we use vanilla OpenWRT with additional patches and packages. The Makefile automates firmware creation and apply patches / integrates custom freifunk packages. All custom patches are located in patches/ and all additional packages can be found at http://github.com/freifunk-berlin/packages_berlin.
Please take a look at the openWrt documentation
for a complete and uptodate list of packages for your operating system. Make
sure the list contains quilt
. We use it for patch management.
On Ubuntu/Debian:
apt-get install git subversion build-essential libncurses5-dev zlib1g-dev gawk \
unzip libxml-perl flex wget gawk libncurses5-dev gettext quilt python
To get the source and build the firmware locally use:
git clone https://github.com/freifunk-berlin/firmware.git
cd firmware
make
The build will take some time. You can improve the build time with
build options such as
-j <number of cores>
. V=s
will give more verbose error messages.
An internet connection is required during the build process. A good internet connection can improve the build time.
You need approximately 10GB of space for the build.
You can find the actual firmware images generated by the ImageBuilder (and the ImageBuilder itself)
in firmwares
. The layout looks like the following:
firmwares/
TARGET/
OpenWrt-ImageBuilder-....tar.bz2
backbone/
images..
default/
images..
packages/
base/
luci/
packages/
packages_berlin/
routing/
As you notice there are two different versions:
default
: berlin freifunk firmwarebackbone
: like default but without wizard and with some additional debug programs
These different packages lists are defined in packages/
.
make
will use by default TARGET
and PACKAGES_LIST_DEFAULT
defined in
config.mk
. You can customize this by overriding them:
make TARGET=mpc85xx PACKAGES_LIST_DEFAULT=backbone
The default target is ar71xx
. At the moment we support the following targets:
- ar71xx
- ar71xx_mikrotik
- mpc85xx
- x86
You can find configs for these targets in configs/
.
The firmware is built automatically by our buildbot farm. If you have a bit of CPU+RAM+storage capacity on one of your servers, you can provide a buildbot slave (see berlin-buildbot).
All branches whose name complies to the "X.Y.Z" pattern are built and put into the "stable" downloads directory: http://buildbot.berlin.freifunk.net/buildbot/stable/
All branches with names not fitting the "X.Y.Z" pattern are built and put into the "unstable" directory: http://buildbot.berlin.freifunk.net/buildbot/unstable/ Note that in the directory there is no reference to the branch name; unstable builds can be identified by build number only.
Every release has a semantic version number; each major version has its own codename. We name our releases after important female computer scientists, hackers, etc. For inspiration please take a look at the related ticket.
For a new release, create a new branch. The branch name must be a semantic version number. Make sure you change the semantic version number and, for major releases, the codename in the README and config files (./configs/*)
The buildbot will build the release and place the files in the stable direcotry once you pushed the new branch to github.
Important: all patches should be pushed upstream!
If a patch is not yet included upstream, it can be placed in the patches
directory with the quilt
tool. Please configure quilt
as described in the openwrt wiki (which also provides a documentation of quilt
).
In order to add, modify or delete a patch run:
make clean pre-patch
Then switch to the openwrt directory:
cd openwrt
Now you can use the quilt
commands as described in the openwrt wiki.
quilt push -a # apply all patches
quilt new 008-awesome.patch # tell quilt to create a new patch
quilt edit somedir/somefile1 # edit files
quilt edit somedir/somefile2
quilt refresh # creates/updates the patch file
Please create a pull request for the project you want to submit a patch. If you are already member of the Freifunk Berlin team, please delete branches once they have been merged.
Create a commit in the openwrt directory that contains your change. Use git format-patch
to create a patch:
git format-patch origin
Send a patch to the openwrt mailing list with git send-email
:
git send-email \
[email protected] \
--smtp-server=mail.foo.bar \
--smtp-user=foo \
--smtp-encryption=tls \
0001-a-fancy-change.patch
Additional information: https://dev.openwrt.org/wiki/SubmittingPatches