feat: Aufsetz- und Ausliefer-Skripte der Recovery-Station
setup_pi.sh ist idempotent und laesst eine vorhandene Konfiguration in Ruhe; deploy.sh prueft jedes Image mit nl_mkimage --verify, bevor es etwas uebertraegt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
df8e796f1e
commit
fda732d6c4
@@ -0,0 +1,42 @@
|
||||
# ninlight-Recovery-Station
|
||||
|
||||
Ein Raspberry Pi spannt den Zugangspunkt `ninlight-recovery` auf und liefert unter
|
||||
`http://192.168.8.1/ninlight_<target>_ota.img` Firmware-Images aus.
|
||||
|
||||
Jede ninlight-Lampe sucht beim Booten bis zu drei Sekunden nach dieser Station. Findet sie
|
||||
sie, lädt sie das Image für ihren Gerätetyp und flasht es — ohne dass die Lampe im WLAN
|
||||
erreichbar sein muss. Das ist der Rettungsweg für Lampen, an die man sonst nur noch mit dem
|
||||
Lötkolben käme.
|
||||
|
||||
Trägt das angebotene Image dieselbe Version, die bereits läuft, lehnt die Lampe es ab und
|
||||
bootet normal weiter. Eine angelassene Station flasht also nicht in einer Endlosschleife.
|
||||
|
||||
## Bedienung
|
||||
|
||||
tools/station/setup_pi.sh <pi-host> einmalig einrichten
|
||||
tools/station/deploy.sh <pi-host> [target] Images ausliefern
|
||||
ssh <pi-host> ninlight-station on einschalten
|
||||
ssh <pi-host> ninlight-station status Zustand und letzte Auslieferungen
|
||||
ssh <pi-host> ninlight-station off ausschalten
|
||||
|
||||
SSID und Passwort stehen in `/etc/ninlight-station.conf` auf dem Pi und müssen zu den
|
||||
Build-Parametern `NINLIGHT_RECOVERY_SSID` und `NINLIGHT_RECOVERY_PASSWORD` aus
|
||||
`config.local.cmake` passen. Weicht eines ab, findet die Lampe die Station nicht.
|
||||
|
||||
## Vertrauensgrenze
|
||||
|
||||
Der Trailer eines Images prüft Gerätetyp und SHA256. Er ist **keine** kryptografische
|
||||
Signatur, und der Download läuft über `http://` ohne TLS. Die Station schützt allein ein
|
||||
WPA2-Passwort, dessen Default im Repo steht. Wer in Funkreichweite ist und es kennt, kann
|
||||
jeder Lampe beim nächsten Boot beliebige Firmware unterschieben.
|
||||
|
||||
Das ist gewollt: Die Signaturprüfung der alten Firmware auszuhebeln ist der Zweck dieses
|
||||
Projekts. Daraus folgen zwei Regeln.
|
||||
|
||||
**Setz ein eigenes Passwort.** In `config.local.cmake` und in
|
||||
`/etc/ninlight-station.conf` — an beiden Stellen denselben Wert.
|
||||
|
||||
**Lass die Station nur an, solange du sie brauchst.** Nicht nur wegen des Fremdzugriffs:
|
||||
Die Firmware löscht den Power-Cycle-Zähler, bevor sie einen Recovery-Versuch startet.
|
||||
Solange eine Station in Reichweite ist, funktioniert der Werksreset per fünf Stromzyklen
|
||||
bei **keiner** Lampe in Reichweite mehr.
|
||||
Reference in New Issue
Block a user