technik:hardware:futro-s900

Futro S900

Dieser Beitrag ist löst die veraltete Seite Futro S550 und Futro S550-2 ab.

Die Futros sind im Frühjahr 2022 zwar schon relativ alt, bieten aber dennoch eine preiswerte Möglichkeit für einen potenten, lautlosen Offloader mit großer Flexibilität. Nachteil ist der vergleichsweise große Stromverbrauch von gemessenen 15 Watt (inklusive Erweiterung einer Dual-NIC HP NC7170).

Der Futro S900 steht exemplarisch für die Futro-Baureihe oder auch jeden anderen x86-PC. Vom Prinzip her läßt sich diese Anleitung direkt auf andere Hardware-Plattformen übertragen.

Als „Handwerkszeug“ werden vorübergehend benötigt:

  • ein Standard-PC mit Browser (zur Konfiguration das Futro im Config-Mode)
  • ein Monitor mit DVI- oder Displayport-Anschluß (für die lokale Konsole des Futro)
  • eine USB-Tastatur (für die lokale Konsole des Futro)
  • ein USB-Stick mit aufgespieltem Live-Linux (für das „Flashen“ des Image auf dem Futro)
  • alternativ ein USB-CDROM-Laufwerk mit Live-Linux CDROM
  • ein zweiter USB-Stick mit dem FFS-Image „x86 Generic 64 Bit; Erstinstallation“

Welches Live-Linux verwendet wird, ist völlig egal. In den Beispielen fand Desinfec't vom Heise-Verlag Anwendung.

Generell bietet Ebay eine gute Auswahl an gebrauchter Hardware. Die angegebenen Geräte sind im Frühjahr 2022 dort zu den angegebenen Preisen gut erhältlich.

Der Futro S900 hat ein Netzwerkinterface (NIC; Netzwerkschnittstelle) auf dem Mainboard. Dazu kommen die Futros häufig mit einer mSATA-SSD von 2 GByte sowie 2 GByte RAM. Dieser Speicherausbau reicht dicke, ein Massenspeicher mit 250 MByte sowie 1 GByte RAM reichen vollkommen. Neben dem Futro wird ein zugehöriges Netzteil (19 Volt, 2 Ampere, Hohlstecker 5.5/2.1mm mit innen + und außen -) benötigt. Ein Ständer ist nützlich, aber kein Muß.

Dazu wird eine zweite NIC benötigt. Auf Ebay gibt es manchmal Futros mit bereits eingebauter zweiter NIC. Dann kann der Futro ohne Modifikation direkt als Offloader verwendet werden.

Wenn nicht bereits eine zweite NIC eingebaut ist, muß diese in den Erweiterungsslot des Futro eingebaut werden. Aber Achtung: es passt nur eine Karte mit Low Profile in den Futro! Wer Übung z.B. im Umgang mit einem Dremel hat, kann Full Profile Slotbleche auch recht problemlos nachträglich kürzen. PCI- und PCI-X-NICs mit dem benötigten Low Profile sind sehr rar! Wer vor der Anpassung der Slotbleche zurückschreckt, sollte einen Futro mit bereits eingebauter zweiter NIC aussuchen.

Um die PCI-Karte einzubauen, wird zudem eine PCI-Riser-Card benötigt. Da es diese links- und rechtsgewinkelt sowie auch sonst in unterschiedlichen mechanischen Maßen gibt, sollte man Riser-Cards besorgen, die passend für die Futros beworben werden.

Das führt zu folgender Stückliste:

  • Futro S900: min 1 GByte RAM, Massenspeicher >256 MByte. Dazu Netzteil und ggf. Ständer (ca. 15 bis 25 Euro)
  • Ggf. zweite NIC: PCI oder PCI-X Single-NIC, z.B. mit Reaktek 8139D Chipsatz (ab 3 Euro), oder Intel Pro/100 (ab 5 Euro), oder Intel Pro/1000 XT (ab 10 Euro)
  • Alternativ PCI-X Dual-NIC, z.B. HP NC7170 (ab 10 Euro)
  • PCI Riser Card für Futro (ab 8 Euro)

Der Ein- und Zusammenbau sollte mit Ausnahme der Anpassung des Slotbleches für PC-Bastler kein Problem sein.

Zu Beginn das passende Gluon-Image von https://firmware.freifunk-stuttgart.de/ herunterladen. Dazu das x86 Generic 64Bit Image auswählen. Achtung: das Image für die Erstinstallation verwenden!

Das Image ist gz-komprimiert. Dieses Image mit einem geeigneten Programm entpacken (auf der Konsole mit gunzip, in grafischer Benutzeroberfläche mit beliebigem anderen Tool). Danach liegt das entpackte Image im Beispiel als gluon-ffs-2.3+2021-06-03-g.d9632c77-s.0ec0f66-x86-64.img vor. Diese Datei auf den zweiten USB-Stick kopieren.

Bevor der Futro mit Software bespielt wird, sollten ein paar Einstellungen im BIOS vorgenommen werden. Den Futro nun startklar machen mit USB-Tastatur und DVI- oder DP-Monitor. Dazu USB-Stick oder -CDROM mit Live-Linux anstecken. Achtung: ohne angesteckten USB-Stick oder -CDROM kann die Bootreihenfolge nicht passend eingestellt werden, weil diese Geräte im BIOS für die Bootreihenfolge nur in gestecktem Zustand angezeigt werden!

Nun Futro einschalten und die BIOS-Einstellungen mit <Entf> bzw. <Del> aufrufen. Danach BIOS nach Wunsch und Bedarf einstellen. Folgende Empfehlungen:

  • Advanced / SATA Configuration / OnChip SATA-Type: „AHCI“ („AHCI“ ist Default)
  • Security / User Password on Boot: „Disabled“ („On every Boot“ ist Default)
  • Security / HDD Password on Boot: „Disabled“ („Enabled“ ist Default)
  • Power / Power Failure Recovery: „Always On“ („Previous State“ ist Default) –> damit schaltet sich der Futro nach Ausfall der Stromversorgung wieder ein
  • Boot / Quiet Boot: „Disabled“ („Enabled“ ist Default)
  • Boot / POST Errors: „Enabled“ („Enabled“ ist Default)
  • Boot / Boot error handling: „Continue“ („Pause and wait for key“ ist Standard) –> damit bootet der Futro auch ohne angeschlossene Tastatur
  • Boot / Boot Option Priorities: <so einstellen, dass USB-Stick bzw. USB-CDROM an erster Stelle steht>
  • Save & Exit / Save as User Defaults: <durchführen>
  • Save & Exit / Save Changes & Exit: <durchführen>

Hinweis

Der hier angegebene Installationsweg ist verwendbar, egal ob zwei, drei oder noch mehr NICs im Futro installiert sind.

NICs testen und MACs zuordnen

Nun alle ggf. noch gesteckten LAN-Kabel entfernen und dann den Futro mit dem Live-Linux starten. Zu Beginn wird geprüft, welche NIC welche MAC-Adresse hat. Konsole des Live-Linux aufrufen und mit ip addr prüfen, dass alle NICs erkannt werden und welche MAC-Adressen diese haben:

desinfect@desinfect:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 90:1b:0e:04:66:e8 brd ff:ff:ff:ff:ff:ff
3: enp2s7f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:11:0a:55:3c:fc brd ff:ff:ff:ff:ff:ff
4: enp2s7f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:11:0a:55:3c:fd brd ff:ff:ff:ff:ff:ff
desinfect@desinfect:~$

In dem o.g. Beispiel sind drei NICs zu sehen. Die MAC 90:1b:0e:04:66:e8 (enp1s0) gehört zur Onboard-NIC des Futro. Die zwei anderen (enp2s7f0 mit MAC 00:11:0a:55:3c:fc und enp2s7f1 mit MAC 00:11:0a:55:3c:fd) gehören zu einer Dual-NIC HP NC7170. Nun die erste NIC per LAN-Kabel mit dem LAN im häuslichen Routers verbinden und erneut ip addr eingeben:

desinfect@desinfect:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 90:1b:0e:04:66:e8 brd ff:ff:ff:ff:ff:ff
3: enp2s7f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:11:0a:55:3c:fc brd ff:ff:ff:ff:ff:ff
4: enp2s7f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:11:0a:55:3c:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.37/24 brd 192.168.100.255 scope global dynamic noprefixroute enp2s7f1 <--- ganz vorne die IP-Adresse
       valid_lft 3580sec preferred_lft 3580sec
    inet6 fe80::6db:732:992c:b7cb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
desinfect@desinfect:~$ 

Die NIC-Schnittstelle enp2s7f1 hat die IP-Adresse 192.168.100.37 vom häuslichen Router erhalten, die NIC funktioniert. Nun die MAC für diese NIC notieren, ggf. auf das Gehäuse schreiben, abschließend das LAN-Kabel bei der ersten NIC entfernen.

Diese Schritte Stecken des LAN-Kabels und ip addr zur Bestimmung der MACs und Zuordnung zu den Buchsen für alle anderen NICs wiederholen, die Schnittstellen auf Funktion testen und die jeweilige MAC notieren.

Der Erfahrung nach wird später bei der Installation von Gluon bei drei NICs folgende Zuordnung vorgenommen:

  • eth0: <niedrigste MAC> –> LAN-Anschluß
  • eth1: <nächst höhere MAC> –> WAN-Anschluß
  • eth2: <höchste MAC> –> in der Standardkonfiguration ohne Verwendung

Massenspeicher zuordnen

Nun noch prüfen, unter welchem Device-Namen der Massenspeicher im Futro ansprechbar ist, meist /dev/sda . Dazu in der Konsole sudo fdisk /dev/sda aufrufen:

desinfect@desinfect:~$ sudo fdisk /dev/sda

Willkommen bei fdisk (util-linux 2.34).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.


Befehl (m für Hilfe): p
Festplatte /dev/sda: 1,87 GiB, 1987051520 Bytes, 3880960 Sektoren <--- Größe des Massenspeichers
Festplattenmodell: InnoDisk Corp. D <--- Typ des Massenspeichers
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0xf721aeb1

Gerät      Boot Anfang   Ende Sektoren Größe Kn Typ
/dev/sda1  *       512  33279    32768   16M 83 Linux
/dev/sda2        33792 246783   212992  104M 83 Linux

Befehl (m für Hilfe): q

desinfect@desinfect:~$ 

Im Futro aus dem Beispiel ist eine InnoDisk mit 2 GByte eingebaut, die hier tatsächlich unter /dev/sda zu erreichen ist, was „zu beweisen“ war.

Image mit dd schreiben

Nun den Stick mit der Image-Datei gluon-ffs-2.3+2021-06-03-g.d9632c77-s.0ec0f66-x86-64.img zusätzlich an den Futro anstecken. Anschließend eine Linux-Konsole öffnen und mit cd in das Verzeichnis wechseln, wo die Image-Datei liegt. Mit ls -l nachschauen, dass die Datei tatsächlich dort liegt:

desinfect@desinfect:/media/desinfect/INTENSO/Freifunk/Gluon$ ls -l
insgesamt 252064
-rw-r--r-- 1 desinfect desinfect   5373956 Apr 18  2021 gluon-ffs-2.1+2020-12-11-g.90d0e33c-s.de75272-ubiquiti-unifi-ac-mesh-sysupgrade.bin
-rw-r--r-- 1 desinfect desinfect 126353408 Apr  9 07:25 gluon-ffs-2.3+2021-06-03-g.d9632c77-s.0ec0f66-x86-64.img
-rw-r--r-- 1 desinfect desinfect 126353408 Apr  8 16:53 gluon-ffs-2.4+2022-02-26-g.75bd58bc-s.fc98d5f-x86-64.img
desinfect@desinfect:/media/desinfect/INTENSO/Freifunk/Gluon$ 

Im obigen Beispiel sind neben dem gewünschten Image zwei weitere Images vorhanden. Dann mit sudo dd das Image nach /dev/sda (bzw. auf den oben identifizierten) Massenspeicher schreiben und anschließend mit sync die Datenträger synchronisieren:

desinfect@desinfect:/media/desinfect/INTENSO/Freifunk/Gluon$ sudo dd status=progress bs=5M if=gluon-ffs-2.3+2021-06-03-g.d9632c77-s.0ec0f66-x86-64.img of=/dev/sda
115343360 Bytes (115 MB, 110 MiB) kopiert, 6 s, 19,1 MB/s
24+1 Datensätze ein
24+1 Datensätze aus
126353408 Bytes (126 MB, 120 MiB) kopiert, 9,24782 s, 13,7 MB/s
desinfect@desinfect:/media/desinfect/INTENSO/Freifunk/Gluon$ sync
desinfect@desinfect:/media/desinfect/INTENSO/Freifunk/Gluon$ 

Das Live-Linux nun herunterfahren und anschließend die beiden USB-Sticks entfernen. Damit ist der Futro mit der Freifunk-Firmware fertig „betankt“.

Nun folgende Schritte durchführen:

  • Den Futro mit entfernten USB-Sticks und entferntem LAN-Kabeln, aber gesteckter USB-Tastatur und gestecktem Monitor starten. Der Futro bootet nun mit dem Freifunk-Image. Auf dem Monitor tauchen die Kernelmeldungen auf. Nach ca. 15 Sekunden ist das Image komplett gestartet und es tauchen keine neuen Kernelmeldungen mehr auf.
  • Einmal die <Enter> Taste drücken, es taucht die OpenWRT-Konsole auf. Hier kann man später beliebig „spielen“.
  • Den Standard-PC ohne gestecktes LAN-Kabel starten. Die im PC eingebaute NIC in den DHCP-Modus bringen.
  • Konsole im PC öffnen und schauen, dass die die NIC keine IP-Adresse zugewiesen bekommen hat. Das geht in Windows mit ipconfig, in Linux mit ip addr.
  • Nun den PC per LAN-Kabel mit der NIC des Futro mit der niedrigsten NIC verbinden. Auf der Konsole des Futro taucht eine Kernel-Meldung auf, dass „eth0 NIC Link is Up…“
  • Einen Moment später am Standard-PC erneut prüfen, ob der NIC im PC nun eine IP-Adresse aus dem Bereich 192.168.1.0/24 zugewiesen wurde. Dazu erneut in Windows ipconfig bzw. in Linux ip addr eingeben.
  • Nun den Browser des PC starten und http://192.168.1.1/ aufrufen und den Futro im Config-Mode beliebig konfigurieren.
  • Zum Schluß die Konfiguration abspeichern und den Futro neu starten.

Nach Neustart ist der Futro einsatzbereit:

  • die NIC mit der niedrigsten MAC-Adresse (eth0) ist die LAN-Schnittstelle. Über diese wurde per Configmode der Futro auch konfiguriert. Diese je nach Konfiguration nun für ein Client- oder Mesh-Netzwerk einsetzen und mit den weiteren Nodes verbinden.
  • die NIC mit der zweitniedrigsten MAC-Adresse (eth1) ist die WAN-Schnittstelle. Diese Schnittstelle z.B. mit dem Heimrouter mit Internetzugang verbinden.

Nach einigen Minuten sollte der Futro einsatzbereit sein und z.B. über https://map.freifunk-stuttgart.de/ auf der Karte lokalisieren.

Die oben aufgeführte Herangehensweise ist garantiert updatefest, selbst wenn mehr als zwei NICs im Futro sind. Die dritte und alle weiteren NICs sind aber funktionslos. Mit ein klein wenig Mehraufwand kann man eine dritte NIC in die Konfiguration integrieren und sowohl Client- als auch Mesh-Netzwerk d.h. parallel aus dem Futro herausführen.

Achtung: dies erfordert einen manuellen Eingriff in die Datei /etc/config/network und ist nicht zwangsläufig updatefest! (Ein Update von Gluon 2.3 auf Gluon 2.4 hat aber problemlos funktioniert.) Zudem wird ausdrücklich davon abgeraten, nach Modifikation den Config-Mode erneut aufzurufen, da hierbei die Datei /etc/config/network erneut geschrieben werden kann!

Im Weiteren soll die dritte NIC (eth2) für Client-Netzwerk genutzt werden, während die erste NIC (eth0) für Mesh-Netzwerk genutzt werden soll. Dies läßt sich durch einen sehr simplen Eingriff in die Datei /etc/config/network bewerkstelligen.

Für die Dateibearbeitungen verwenden wir die lokale Konsole des Futro und den integrierten Editor VI. Dieser Editor ist gewöhnungsbedürftig, aber sehr mächtig. Eine Kurzbeschreibung findet sich z.B. hier: https://www.cs.colostate.edu/helpdocs/vi.html

Für die Bearbeitung auf der lokalen Konsole ist zudem zu beachten, dass als Default-Keyboard-Layout eine US-Tastatur eingestellt ist. Bitte z.B. hier nachlesen, wie die Tastenbelegung ist: https://en.wikipedia.org/wiki/QWERTY

Mesh-on-LAN auf eth0 einrichten

Wenn der Futro an der NIC für LAN (eth0) noch nicht mit Mesh-on-LAN betrieben wird, muß der Futro erst entsprechend konfiguriert werden. Falls das bereits der Fall ist, kann dieser Abschnitt übersprungen werden.

Den Futro nun wieder in den Configmodus versetzen. Dazu auf der Futro-Konsole mit cd /etc/config in das Verzeichnis /etc/config wechseln und mit dem Befehl vi gluon-setup-mode die Datei gluon-setup-mode öffnen. Die Datei sollte wie folgt aussehen:

config setup_mode
    option enabled '0' <--- diesen Eintrag auf '1' ändern
    option configured '1'

Den oben gekennzeichneten Eintrag von '0' auf '1' ändern und die Datei abspeichern.

Folgende weitere Schritte durchführen

  • Auf der Futro-Konsole den Befehl reboot eingeben. Der Futro startet dann neu, und zwar in den Configmode.
  • Den Standard-PC mit der NIC für LAN (eth0) des Futro verbinden und im Browser über http://192.168.1.1/ den Configmode aufrufen.
  • In die „Erweiterten Einstellungen“ wechseln, und dort unter „Netzwerk“ „Mesh auf dem LAN-Port aktivieren“ anhäkeln und abspeichern.
  • In den Wizard zurückwechseln und „Speichern und Neustart“ anklicken.
  • Futro neu starten lassen.

Modifikation von /etc/config/network

Nun auf der lokalen Futro-Konsole mit vi die Datei /etc/config/network öffnen. Darin sollten sich die zwei folgenden Abschnitte befinden:

config interface 'mesh_lan'
        option igmp_snooping '0'
        option ifname 'eth0'
        option index '4'
        option proto 'gluon_wired'
        option transitive '1'
        option macaddr '5a:f2:fc:79:1d:14'
        option disabled '0' <--- muss auf '0' stehen

config interface 'client'
        option igmp_snooping '1'
        option type 'bridge'
        option auto '1'
        option ra_holdoff '30'
        option multicast_querier '1'
        option macaddr '00:11:0a:55:3c:fc'
        option ipv6 '1'
        option keep_ra_dnslifetime '1'
        option sourcefilter '0'
        option peerdns '1'
        option robustness '9'
        option reqprefix 'no'
        option query_interval '2000'
        option query_response_interval '500'
        option proto 'dhcpv6'
        list ifname 'local-port'
        list ifname 'bat0'
        list ifname 'eth2' <--- diese komplette Zeile wurde ergänzt

Die Zeile option disabled '0' im Abschnitt config interface 'mesh_lan' zeigt, dass die NIC eth0 mit Mesh-on-LAN arbeitet (Disabled '0' bedeutet ja Enabled '1'.)

Nun im Abschnitt config interface 'client' die Zeile list ifname 'eth2' neu hinzufügen und die geänderte Datei abspeichern.

Abschließend den Futro neu starten und die gesamte Konfiguration testen:

  • eth0: Mesh-on-LAN-Netzwerk
  • eth1: WAN (Uplink)
  • eth2: Client-Netzwerk

Damit auch nach Updates die Zuordnung der NICs stabil bleibt, sind einige Dateien im Verzeichnis /lib/gluon/core/sysconfig abgelegt. Diese sollten folgende Inhalte haben:

  • gluon_version: v2020.2.3-ffs0.3 . Gibt den aktuellen Softwarestand an.
  • lan_ifname: eth0 . Legt die LAN-Schnittstelle fest.
  • primary_mac: <die physikalische MAC-Adresse der LAN-Schnittstelle>
  • setup_ifname: eth0 . Legt die Schnittstelle fest, von der die MAC-Adressen abgeleitet werden.
  • wan_ifname: eth1 . Legt die WAN-Schnittstelle fest.

An diesen Einträgen sollte man nichts ändern müssen.

  • technik/hardware/futro-s900.txt
  • Zuletzt geändert: vor 6 Monaten
  • von Konrad Panzlaff