knb:flash-aruba-ap325

Router flashen: Aruba AP-325 (Siemens Scalance 1750d)

Hier ist beschrieben, wie man die Firmware von Freifunk München auf den Aruba AP-325/AP-324 lädt. Bitte prüfe unbedingt auf dem Typenschild, dass es sich um genau dieses Modell handelt, und beachte auch die allgemeine Anleitung: Router flashen.

Der AP-325 lässt sich nicht per Weboberfläche flashen. Es muss zuerst per serieller Konsole ein angepasster Bootloader geflasht werden, bevor OpenWrt / Gluon startet. Dafür gibt es das Script ap325-flashtool, das den kompletten Ablauf (Bootloader per TFTP flashen, Initramfs per TFTP booten, Sysupgrade per SCP installieren) automatisiert.

Das funktioniert identisch auch für den Aruba AP-324 (gleiche Hardware wie AP-325, nur mit externen Antennen).

Hinweis zum Gerätenamen in OpenWrt / Gluon: Beide Geräte werden seit einiger Zeit unter dem gemeinsamen Profil aruba_ap-32x geführt. Sollte dein Gerät noch eine Firmware mit der Bezeichnung „ap-325“ haben, musst du sie mittels sysupgrade -F aktualisieren.

Quelle für den Ablauf: maurerle/ap325-flashtool auf GitHub und lukasstockner/ap325-apboot-openwrt (gepatchter APBoot).

Du brauchst für den Flash-Vorgang insgesamt drei Dateien:

  • u-boot.mbn — der gepatchte APBoot-Bootloader. Entweder aus dem Bootloader-Repo selbst bauen oder ein fertiges Release herunterladen.
  • openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari — OpenWrt-Initramfs-Image (wird nur ins RAM gebootet, für die Installation). Kann z.B. von OpenWrt heruntergeladen werden: openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari (Snapshots, Target ipq806x/generic, Profil aruba_ap-32x).
  • gluon-ffmuc-vXXXX.YY.ZZ-aruba-ap-32x-sysupgrade.bin — das eigentliche Freifunk-München-Sysupgrade-Image (wird ins NAND geschrieben), herunterzuladen von unserer Firmware Seite

Lege alle drei Dateien in ein Verzeichnis auf Deinem Rechner, z.B. ~/Downloads/ap325/.

Empfohlen ist ein Linux-Rechner. Du brauchst:

  • Python 3.11 oder neuer
  • pyserial — z.B. pip install pyserial oder sudo apt install python3-pyserial-asyncio-fast
  • Werkzeuge ip, ssh, scp, ping
    • ip kommt von iproute2: sudo apt install iproute2
  • Root-Rechte - am einfachsten mit sudo starten.
  • Einen USB-zu-Seriell-Adapter, verkabelt mit dem RJ45-Konsolenport des AP (Cisco-Pinout).
  • Eine direkte Netzwerkverbindung zwischen deinem Rechner und dem Aruba AP — entweder ein direkt gestecktes Netzwerkkabel (ggf. mit PoE-Injektor dazwischen) oder über einen Switch (für mehrere Geräte gleichzeitig).

Lade das Flash-Tool von GitHub herunter: https://github.com/maurerle/ap325-flashtool/blob/all/flash_aruba_ap325.py

Hinweis: NetworkManager und lokaler TFTP-Server stoppen:

Das Tool richtet selbst IP und TFTP-Server ein. Stoppe vorher störende Dienste:

sudo systemctl stop tftpd-hpa.service NetworkManager
# nach dem Flashen wieder starten mit:
sudo systemctl start tftpd-hpa.service NetworkManager

Achtung: Firewall!

Der AP lädt Bootloader und Initramfs per TFTP (UDP/69 eingehend) von Deinem Rechner. Wenn die Firewall das blockt, bleibt der Flash-Vorgang beim TFTP-Transfer hängen.

Entweder die Firewall temporär abschalten, z.B.:

sudo systemctl stop firewalld
# nach dem Flashen wieder starten mit:
# sudo systemctl start firewalld

oder eingehenden TFTP-Verkehr erlauben, z.B. für firewalld / ufw:

# Reines firewalld
sudo firewall-cmd --add-service=tftp
# ufw (z.B. Ubuntu)
sudo ufw allow 69/udp
  1. Verbinde die Netzwerkbuchse Deines Rechners mit einem LAN-Kabel mit dem Ethernet-Port des AP-325, ggf. mit einem PoE-Injektor dazwischen. Lasse den PoE-Injektor noch stromlos!
  2. Verbinde den USB-Seriell-Adapter mit dem RJ45-Konsolenport des AP („CONSOLE“).
  3. Trenne während des Flashs auf keinen Fall die Stromversorgung, insbesondere beim Schreiben des Bootloaders. Ansonsten läufst du Gefahr, das Gerät zu „bricken“.

Prüfe den Gerätenamen des seriellen Interfaces auf deinem Rechner (meist /dev/ttyUSB0), z.B.

dmesg | grep tty

Finde den Namen Deines LAN-Interfaces heraus, z.B.:

ip a

Typisch ist z.B. eth0, enp0s31f6 oder eno1. Diesen Namen brauchst Du gleich für –interface.

Einzelnes Gerät (Bei Bedarf Interface und Pfade anpassen):

sudo python3 flash_aruba_ap325.py \
    --bootloader u-boot.mbn \
    --initramfs openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari \
    --sysupgrade gluon-ffmuc-v2026.8.2-aruba-ap-32x-sysupgrade.bin \
    --interface eth0 \
    --host-ip 192.168.1.1/24 \
    --port /dev/ttyUSB0
  1. –interface: Dein LAN-Interface von oben.
  2. –host-ip: IP, die das Tool temporär auf Deinem Rechner einrichtet, z.B. 192.168.1.1/24. Wenn diese IP oder IP Range schon von deinem lokalen Netz belegt ist, nimm eine beliebige andere, z.B. 192.168.99.1/24.
  3. –port: Serieller Port
  4. Die Geräte-IPs werden automatisch vergeben (.10, .11, … im gleichen Subnetz).

Dann den AP einschalten. Das Tool:

1. wartet auf den APBoot-Banner
2. unterbricht den Autoboot, setzt statische IP-Umgebung, lädt ''u-boot.mbn'' per TFTP ins RAM und schreibt es ins SPI, dann Reset in den neuen Bootloader,
3. löscht NAND, passt die UBI-Volumes an, bootet das Initramfs per ''tftpboot'' mit ''autostart=yes'',
4. wartet auf die OpenWrt-Konsole, konfiguriert die Geräte-IP auf ''br-lan'', kopiert das Sysupgrade-Image per ''scp'' nach ''/tmp/'' und führt ''sysupgrade -n'' aus. Wenn SSH nicht geht (z.B. Dropbear ohne passwortloses root), fällt das Tool automatisch auf ''busybox tftp'' + ''sysupgrade'' über die serielle Konsole zurück.

Wenn fertig, meldet das Tool z.B. [ttyUSB0] DONE und das Gerät bootet in das frisch installierte Gluon neu.

Der einzige wirklich destruktive Moment ist das Flashen des neuen Bootloaders. Das Tool zeigt vorher ein DO NOT interrupt-Banner — dort auf keinen Fall Strom oder Kabel trennen. Alles andere ist durch Power-Cycle wiederholbar.

Bitte warte auf jeden Fall bis der AP neu gestartet ist. Nach ungefähr 2 Minuten ist der AP mit dem initialen Bootvorgang fertig. Damit der neue Freifunk-Router jetzt im Freifunk-Netz funktionieren kann, muss dieser noch entsprechend konfiguriert werden. Im Kapitel Router-Grundkonfiguration mit Hilfe der WEB-GUI sind die weiteren Schritte bis zur Inbetriebnahme detailliert beschrieben.

Einfach –port mehrfach angeben. Der TFTP-Server kann parallele Transfers, es gibt keine Serialisierung im Netzwerkpfad:

sudo python3 flash_aruba_ap325.py \
    --bootloader u-boot.mbn \
    --initramfs openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari \
    --sysupgrade gluon-ffmuc-v2026.8.2-aruba-ap-32x-sysupgrade.bin \
    --interface eth0 \
    --host-ip 192.168.1.1/24 \
    --port /dev/ttyUSB0 \
    --port /dev/ttyUSB1 \
    --port /dev/ttyUSB2

Jeder Worker läuft in einer Endlosschleife. Nach einem fertigen (oder fehlerhaften) Gerät einfach das nächste frische Gerät am gleichen seriellen Port per Power-Cycle anschließen — der Worker erkennt es ohne Neustart des Tools. Beenden mit Strg-C.

Fortgeschrittene Optionen (z.B. externer TFTP-Server) sind im Repository des Flash-Tools dokumentiert.

  • host IP … already configured — IP entfernen und erneut versuchen (sudo ip addr del 192.168.1.1/24 dev eth0), oder eine andere –host-ip übergeben. Das Tool übernimmt keine IP, die es nicht selbst angelegt hat, weil es sie beim Beenden sonst löschen würde.
  • Kein APBoot-Banner — das Tool wechselt endlos zwischen 9600 und 115200. Wenn keins geht: Verkabelung prüfen (RJ45, Cisco-Pinout), richtigen /dev/ttyUSB* prüfen, Kabel mit screen /dev/ttyUSB0 9600 manuell testen.
  • device is booting OS, missed the autoboot window — AP war zu schnell, Power-Cycle machen.
  • SSH/SCP nach Initramfs-Boot verweigert — normal, das Tool fällt automatisch auf TFTP über seriell zurück.
  • RTNETLINK answers: Operation not permitted — als root starten, oder setcap cap_net_admin,cap_net_bind_service+ep auf den Python-Interpreter setzen.
  • TFTP-Timeout trotz Banner — fast immer die Firewall (siehe oben) oder falsches Interface / Subnetz. firewalld stoppen oder UDP/69 erlauben, –interface und –host-ip prüfen.

Wir haben zwei Vorlagen (S & XL) in Form von .stl Dateien um Halterungen für den Aruba AP-325 selbst zu drucken:

aruba325_halter.zip

  • knb/flash-aruba-ap325.txt
  • Zuletzt geändert: 2026/09/16 19:15
  • von dasskelett