ein paar Tage später… mit Trial and Error und ein paar Workaround-script-Iterationen weiter, etwas mehr Klarheit:
- der Hostapd im 2020.1.x-Gluon mag es nicht, ein SigHUP zu bekommen während er gerade DFS-Scanning macht (evtl. mag er es auch zu anderen Zeiten nicht). Ergebnis ist dann ein irgendwie undefinierter Zustand, der sich entweder äußert in
- PID im pidfile passt nicht zur PID in der Tasklist
- es gibt eine Meldung „DFS-PRE-CAC-EXPIRED“ und nie wieder eine weitere Meldung vom Hostapd
- das Radio-Interface ist gemäß „wifi status“ „down“ und status „pending“, trotz vorherigem „wifi up“
Workaround?
Fork vom Offline-SSID-Script, aufruf eines check-Workaround-scripts nach dem „killall -HUP hostapd“, Zeile 174ff
und dann das Checkscript, was
a) mismatching PIDs (main issue) mit einem Wifi-Restart rettet
und
b) longer pending interfaces (script läuft auch in der Cron alle paar Minunten) erkennt und auch dann das wifi restartet.
Falls jemand bessere Vorschläge hat (außer „Muss upstream gefixed werden, also upstream, vom upstream vom upstream“, also entweder in openwert, im Hostapd oder im Linuxkernel)
Was ich mir vorstellen könnte:
- nur das betroffene Phy neu starten
- den Lock-Zustand anders/besser erkennen
- das gerade laufende DFS-Scanning erkennen oder dem Hostapd dafür ein Locking zu verpassen (was in beide Richtungen „wirkt“). Und nein, nicht per „swatch“ (tried, not 100% success) auf dem syslog lauschen. direkt auf dem ubus?
- den hostapd irgendwie sinnvoll patchen, dass er den Fehlerzustand selbst erkennt und restartet.