Nicco Kunzmann

Essays

Freifunk mit Raspberry Pi

Freifunk mit Raspberry Pi

Update 5.10.2019

Die Berliner Firmware-Website verlinkt auf lernekultur.de. Von dort kann man die Images für verschiedene Raspberry-Pis und Versionen herunterladen.

Update 1.4.2018

Bei diesem Image handelt es sich um das Image für den Raspberry Pi 1 Modell B. In den Release Notes für Version Hedy 1.0.2 steht, dass man das Image für Raspberry Pi und Raspberry Pi 3 selber kompilieren kann. Der Code hier verwendet den Code von Kathleen, was die Version der Freifunk Firmware ist, die vor Hedy released wurde.


Gebautes Kathleen-Image für Freifunk runterladen.

Warum mache ich Freifunk mit dem Raspberry Pi?

Warum der Blogpost:

https://niccokunzmann.github.io/niccokunzmann.github.io-data/images/blog/2016-11-23/Freifunk-mit-Raspberry-Pi/raspi.jpg

Verwandte Bemühen

Ich habe recherchiert und einen Blogpost von 2013 gefunden. Dieser beschreibt, wie man ein fertiges OpenWRT-Image auf den Raspberry Pi spielt. Das hat funktioniert und sagt mir, dass der Raspberry Pi unterstützt wird. Allerdings ist das Image veraltet.

Hier habe ich einen offiziellen OpenWRT-Build für den Raspberry Pi gefunden. Jetzt ist nur noch die Frage, wie kann ich das mit der Freifunk-Firmware verwenden? Dann habe ich den Wizard, die Anleitungen und kann es auch anderen schmackhafter machen.

Steffen Volkmann setzte sich auf Basis dieses Blogposts mit der Firmware weiter auseinander. Es steht ein Freifunk-Raspi in der Isoldenstraße in Werder. Folgendes Feedback gab er:

Das Image habe ich jetzt wie folgt gebaut:

git clone https://github.com/niccokunzmann/firmware.git -b RaspberryPi
cd firmware
make TARGET=brcm2708 PACKAGES_LIST_DEFAULT=default_pi

Das funktioniert allerdings erst einigen Anpassungen:

  1. in der firmware/packages/default_pi.txt habe ich die Zeile kmod-usb2-kmod-rt2800-lib auskommentieren.
  2. Die Packete linux-3.18.44.tar.xz und ethtool-3.18.tar.xz konnten nicht geladen werden. Beide habe ich manuell geladen und im ./firmware/openwrt/dl folder abgelegt:

Auf Basis dieses Images kann ich meine Experimente Fortsetzen.

Das Image selber bauen

Ich habe also ein Image selbst gebaut.

Über das Buildbot-Repository bin ich zum Firmware-Repository gekommen.

Dieses hat eine Development-Section, in der alles steht, wie man die Firmware baut.

Meine Änderungen

Die Ändernugen, die ich gemacht habe, sind verfügbar auf niccokunzmann/firmware auf dem RaspberryPi branch. Man kommt so ran:

git clone https://github.com/niccokunzmann/firmware.git -b RaspberryPi

Es gibt nur einen Commit, den ich gemacht habe. Dadurch sind die Änderungen im nächsten Abschnitt alle zu einem Commit zusammengefasst, den man sich für neue Kathleen-Versionen holen kann. So könnte es aussehen (ungesteted, bitte Feedback):

git clone https://github.com/freifunk-berlin/firmware.git
cd firmware
git fetch https://github.com/niccokunzmann/firmware.git 
git cherry-pick 6be684ff9460cb8370d6e87d5d0b5f0d1d984a56

Danach kann man den üblichen Build-Prozess anstoßen.

Änderungen Selber machen

Ich habe folgende Änderungen vorgenommen:

Dann konnte ich das Image bauen, mit 4 genutzen Kernen (-j4), Debug-Output (V=s) und den zusätzlichen Treibern (PACKAGES_LIST_DEFAULT=default_pi):

make -j4 V=s PACKAGES_LIST_DEFAULT=default_pi

Dieses ist dann im Ordner firmware/firmwares/brcm2708/default_pi/ erhältlich.

Gelerntes

Zum Kompilieren habe ich folgendes gelernt:

Image auf SD-Karte tun

Gebautes Kathleen-Image für Freifunk runterladen.

Make machte ich in einer Linux-VM, Bespielen auf Windows:

Durch einen Hinweis vom OpenWRT-Wiki, habe ich Win32DiskImager heruntergeladen und installiert. Dieser kann .img-Dateien direkt auf die SD-Karte spielen.

Zusätzlich brauchte ich noch SDFormatter, um die SD-Karte ab und zu zu formatieren.

Verbinden

Jetzt habe ich die Software noch für Freifunk angepasst. Jedes Freifunk hat dort eine eigene Anleitung. Ich bin der Anleitung von Potsdam gefolgt.

Die IP-Adresse, die nach dem Boot am Ethernet-Port anliegt, ist

192.168.42.1

Dorthin konnte ich mich verbinden, nachdem ich mir die IP 192.168.42.2 gegeben hatte.

OpenVPN automatisch starten

Ich habe festgestellt, dass OpenVPN nach dem Neustart immer aus war. Man kann einstellen, dass es automatisch gestartet wird.

Das macht folgender Befehl (Quelle):

/etc/init.d/openvpn enable

Weiteres

Danach habe ich den Freifunk-Wizard benutzt und ein WAN-Netzwerk einrichtet, das über eth0 als DHCP-Client nach einer IP-Adresse fragt.

Purgatory

Zu schade zum Löschen aber auch nicht nützlich:

WLAN-Stick installieren

Erledigt: Kann man das Package auch schon gleich mitinstallieren, wenn man das Image baut? - Ja, das geschieht oben schon deswegen brauchen wir diese Section nicht mehr.

Um den Logilink-Wifi Stick mit Namen WL0084B für OpenWRT zu installieren, habe ich die packages entpackt mit einem HTTP-Server geserved:

cd packages
py -3 -m http.server

Danach habe ich die Konfiguration für den Raspberry Pi auf meine IP-Adresse und Port umgeändert. SystemSoftware???

So war es:

src/gz kathleen_base http://buildbot.berlin.freifunk.net/buildbot/stable/0.2.0-beta+9227220/brcm2708/packages/base
src/gz kathleen_packages http://buildbot.berlin.freifunk.net/buildbot/stable/0.2.0-beta+9227220/brcm2708/packages/packages
src/gz kathleen_routing http://buildbot.berlin.freifunk.net/buildbot/stable/0.2.0-beta+9227220/brcm2708/packages/routing
src/gz kathleen_luci http://buildbot.berlin.freifunk.net/buildbot/stable/0.2.0-beta+9227220/brcm2708/packages/luci
src/gz kathleen_packages_berlin http://buildbot.berlin.freifunk.net/buildbot/stable/0.2.0-beta+9227220/brcm2708/packages/packages_berlin

So habe ich es geändert:

src/gz kathleen_base http://192.168.42.2:8000/base
src/gz kathleen_packages http://192.168.42.2:8000/packages
src/gz kathleen_routing http://192.168.42.2:8000/routing
src/gz kathleen_luci http://192.168.42.2:8000/luci
src/gz kathleen_packages_berlin http://192.168.42.2:8000/packages_berlin

Jetzt konnte ich die Packages vom Tutorial installieren:

opkg update  
opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb  

Die packages kmod-rt2800-lib, kmod-rt2800-usb, kmod-rt2x00-lib und kmod-rt2x00-usb kann man sicher auch über die Weboberfläche installieren.