Skip to content

v0.3.2 — een kapotte uitgave kan het apparaat niet meer vastdraaien

Choose a tag to compare

@github-actions github-actions released this 05 Sep 09:23
· 23 commits to main since this release
6449b84

Deze versie beschermt het apparaat tegen een uitgave die niet blijft staan — ook tegen een
toekomstige uitgave van onszelf.

Wat er mis kon gaan

Een versie die opstart maar geen netwerk vindt, zet het apparaat vast. De proeftijd loopt nooit
af, en het apparaat valt niet vanzelf terug: de proeftijd markeert alleen goed, nooit fout,
en herstart nooit. Pas als iemand de stekker eruit trekt valt het terug op de vorige versie — en
die installeert vijf minuten later dezelfde kapotte uitgave opnieuw.

Elke stroomonderbreking kocht zo ongeveer vijf werkende minuten. Een fabrieksreset maakte het
erger: die wist de gegevens, niet de updatelogica.

Wat deze versie doet

Vóór de herstart schrijft het apparaat op welke versie het installeert. Komt bij de volgende
start iets anders op, dan krijgt die versie een streep. Bij de tweede streep wordt zij
overgeslagen
, met een regel in de log die zegt waarom.

Niet bij de eerste: een prima versie zakt door haar proeftijd als de router toevallig uit staat,
en die voor altijd weigeren zou een ergere fout zijn dan de fout die we voorkomen.

Dit staat in een eigen plek in de opslag die de fabrieksreset niet wist. Een hogere versie
komt er gewoon door, dus een reparatie bereikt het apparaat altijd nog.

Zie H16 in
docs/REVIEW.md
en "De lus die nooit mag ontstaan" in
docs/OTA.md.

Ook nieuw

docs/NVS.md
beschrijft wat het apparaat in flash bewaart en welke regels gelden als die indeling verandert.
De kern: een apparaat kan lang offline staan en in één sprong van v0.3.2 naar veel later gaan,
dus een migratie is een keten van stappen die stuk voor stuk gelopen worden — en er wordt
toegevoegd, nooit verwijderd.

Voor apparaten op v0.2.x

Zij halen deze versie zelf op, over de lucht, zonder kabel.

Voor wie het apparaat gebruikt:
docs/handleiding.md.

Nog steeds open, en bewust: C5 (het provisioning-netwerk is open) en H5 (credentials
liggen leesbaar in flash).