| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste  Überarbeitung | Vorhergehende Überarbeitung | 
| knb:rpb4 [2022/04/05 11:54]  – [USB 3.0 LAN Adapter]  goligo | knb:rpb4 [2023/11/08 17:36] (aktuell)  – [Offloader auf Basis eines Raspberry PI 4B]  goligo | 
|---|
| Offloader auf Basis eines Raspberry PI 4B - eine Kurzanleitung von **[[https://chat.ffmuc.net/freifunk/messages/@goligo|goligo]]**. | Offloader auf Basis eines Raspberry PI 4B - eine Kurzanleitung von **[[https://chat.ffmuc.net/freifunk/messages/@goligo|goligo]]**. | 
|  |  | 
| Dieser Anleitung beschreibt das Aufsetzen eines Offloaders auf dem Raspberry PI 4B mit der vorhandenen Freifunk München-Firmware. Es kann entweder ein zusätzlicher USB-LAN-Adapter angeschlossen werden oder, wenn man einen VLAN-fähigen Switch hat, geht es auch nur mit dem einen vorhandenen Netzwerkport. | Dieser Anleitung beschreibt das grundsätzliche Aufsetzen eines Offloaders auf dem Raspberry PI 4B mit der vorhandenen Freifunk München-Firmware. Es kann entweder ein zusätzlicher USB-LAN-Adapter angeschlossen werden oder, wenn man einen VLAN-fähigen Switch hat, geht es auch nur mit dem einen vorhandenen Netzwerkport. | 
|  |  | 
| Der Raspberry PI 4 ist schnell genug, um eine 250 MBit/s Leitung voll auszulasten, unabhängig davon, ob man mit einem zusätzlichen Adapter oder einem VLAN arbeitet. | Der Raspberry PI 4 ist schnell genug, um eine 250 MBit/s Leitung voll auszulasten, unabhängig davon, ob man mit einem zusätzlichen Adapter oder einem VLAN arbeitet. | 
|  |  | 
|  | <WRAP center round important 80%> | 
|  | **Wichtiger Hinweis**((Stand: Nov. 2023)): \\ \\ | 
|  | Upstream Gluon supportet den Pi4 nur experimentell, weil die WiFi-Hardware im Raspberry 4 nicht tauglich ist für den Betrieb als WLAN Access Point. Hintergrund ist, dass die PIs alle FullMAC/HardMAC Radios haben, die per USB angebunden sind. Bei diesen fehlen wichtige Modes z.B. fürs meshen. | 
|  | Das bedeutet als Offloader kann man ihn nur sinnvoll einsetzen, wenn man das Mesh-Netz, bzw. das Client-Netz über den LAN-Port oder einen externen USB-LAN-Adapter ausleitet und auf die Verwendung als AP oder WLAN-Mesh-Node verzichtet. | 
|  | </WRAP> | 
|  |  | 
| ==== Hardware ==== | ==== Hardware ==== | 
|  |  | 
| Man benötigt natürlich einen Raspberry PI 4, am besten in einem ordentlichem Gehäuse, außerdem eine MicroSD-Karte mit wenigstens 1GB Speicher: | Man benötigt natürlich einen Raspberry PI 4, am besten in einem ordentlichem Gehäuse, ausserdem eine MicroSD-Karte mit wenigstens 1GB Speicher: | 
|  |  | 
| {{:knb:raspberry_pi_4.jpg?400|}} | {{:knb:raspberry_pi_4.jpg?400|}} | 
|  |  | 
| [[https://firmware.ffmuc.net/?q=Raspberry%C2%A0Pi%C2%A0Foundation%E2%81%A3%20PI4%E2%81%A3|Raspberry PI 4 Firmware Download]] | [[https://firmware.ffmuc.net/?q=Raspberry%C2%A0Pi%C2%A0Foundation%E2%81%A3%20PI4%E2%81%A3|Raspberry PI 4 Firmware Download]] | 
|  |  | 
|  | Bevor wir das gerade heruntergeladenen Firmware-Image auf die SD-KArte schreiben können, entpacken wir das **.gz** file noch. | 
|  |  | 
|  | $ gunzip gluon-ffmuc-<aktuelle version>-raspberry-pi-4-model-b.img.gz | 
|  |  | 
| Die Firmware auf die SD-Karte zu flashen geht unter Linux oder MacOS am einfachsten im Terminal mit dem "dd"-Befehl (auf dem Mac vorher eine evtl. bereits vorhandene Partition unmounten und Festplatten den Vollzugriff für das Terminal erlauben): | Die Firmware auf die SD-Karte zu flashen geht unter Linux oder MacOS am einfachsten im Terminal mit dem "dd"-Befehl (auf dem Mac vorher eine evtl. bereits vorhandene Partition unmounten und Festplatten den Vollzugriff für das Terminal erlauben): | 
|  |  | 
| <code> | $ sudo dd if=gluon-ffmuc-<aktuelle version>-raspberry-pi-4-model-b.img of=/dev/<sdcard device> bs=65536 | 
| sudo dd if=gluon-ffmuc-<aktuelle version>-raspberry-pi-4-model-b.img of=/dev/<sdcard device> bs=65536 |  | 
| </code> |  | 
|  |  | 
| Unter Windows braucht man dazu ein Programm wie zum Beispiel den [[https://sourceforge.net/projects/win32diskimager/|Win32DiskImager]]. | Unter Windows braucht man dazu ein Programm wie zum Beispiel den [[https://sourceforge.net/projects/win32diskimager/|Win32DiskImager]]. | 
| </code> | </code> | 
|  |  | 
| Um Gluon jetzt beizubringen, dass ein zusätzliches Netzwerk-Interface vorhanden ist, muss man die Datei "/lib/gluon/core/sysconfig/lan_ifname" anlegen mit dem Namen des Interfaces als Inhalt. Danach ruft man "gluon-reconfigure" auf, um die Konfiguration zu aktualisieren. Danach sollte "eth1" mit ins Client-Netzwerk aufgenommen sein und nach einem Neustart des Knotens sollte ein angeschlossener Computer Freifunk-Netzwerk haben auf dem Anschluss. | Um Gluon jetzt beizubringen, dass ein zusätzliches Netzwerk-Interface vorhanden ist, muss man per uci einen zusätzlichen Interface-Eintrag dafür anlegen. Danach ruft man "gluon-reconfigure" auf, um die Konfiguration zu aktualisieren. Dann sollte "eth1" mit ins Client-Netzwerk aufgenommen sein und nach einem Neustart des Knotens sollte ein angeschlossener Computer Freifunk-Netzwerk haben auf dem Anschluss. | 
|  |  | 
| <code> | <code> | 
| network.client.ifname='local-port' 'bat0' 'eth1' | network.client.ifname='local-port' 'bat0' 'eth1' | 
|  |  | 
| root@raspi4:~# reboot | root@raspi4:~# service network restart | 
| </code> | </code> | 
|  |  | 
| root@raspi4:~# uci del_list gluon.iface_single.role='uplink' | root@raspi4:~# uci del_list gluon.iface_single.role='uplink' | 
| root@raspi4:~# uci add_list gluon.iface_single.role='none' | root@raspi4:~# uci add_list gluon.iface_single.role='none' | 
| root@raspi4:~# uci set gluon.iface_lan=interface |  | 
| root@raspi4:~# uci add_list gluon.iface_lan.name='eth0.20' |  | 
| root@raspi4:~# uci set gluon.iface_lan.role='client' |  | 
| root@raspi4:~# uci set gluon.iface_wan=interface | root@raspi4:~# uci set gluon.iface_wan=interface | 
| root@raspi4:~# uci add_list gluon.iface_wan.role='uplink' |  | 
| root@raspi4:~# uci set gluon.iface_wan.name='eth0.10' | root@raspi4:~# uci set gluon.iface_wan.name='eth0.10' | 
|  | root@raspi4:~# uci add_list gluon.iface_wan.role='uplink' | 
|  | root@raspi4:~# uci set gluon.iface_lan=interface | 
|  | root@raspi4:~# uci set gluon.iface_lan.name='eth0.20' | 
|  | root@raspi4:~# uci add_list gluon.iface_lan.role='client' | 
|  |  | 
| root@raspi4:~# uci commit gluon | root@raspi4:~# uci commit gluon | 
| Configuring: 999-version | Configuring: 999-version | 
|  |  | 
| root@raspi4:~# reboot | root@raspi4:~# service network restart | 
| </code> | </code> | 
|  |  | 
|  |  | 
| <code> | <code> | 
| root@raspi4:~# uci set network.mesh_lan.disabled=0 | root@raspi4:~# uci del_list gluon.iface_lan.role='client' | 
|  | root@raspi4:~# uci add_list gluon.iface_lan.role='mesh' | 
|  |  | 
| root@raspi4:~# uci del_list network.client.ifname=$(cat /lib/gluon/core/sysconfig/lan_ifname) | root@raspi4:~# uci commit gluon | 
|  |  | 
|  | root@raspi4:~# gluon-reconfigure | 
|  | Configuring: 001-upgrade | 
|  | Configuring: 005-set-domain | 
|  | ... | 
|  | Configuring: 998-commit | 
|  | Configuring: 999-version | 
|  |  | 
| root@raspi4:~# uci commit network | root@raspi4:~# service network restart | 
| </code> | </code> |