Expromo EPS power sequencer · v2.2 · v3.1 · v3.2 · v3.3

EPS-firmware: alle versioner sammenlignet

Fire firmwareversioner, én tabel pr. emne: hvad de kan, hvordan de håndterer 17 forskellige fejl i netværkschippen, hvordan de kommer sig, når linket, gatewayen eller modtageren svigter, hvor mange krav fra netværksstandarderne de opfylder, og hvordan de opfører sig i daglig drift. Alt er målt på den samme rigtige EPS-boks med de samme forhåndsregistrerede værktøjer; hvor en version ikke er testet, står det i tabellen.

Status 12. okt. 2026 · enhed 3 (rigtig EPS-boks), direkte kabel til en pc · v2.2 feltfirmware, v3.1 (10. okt.), v3.2 (11. okt.), v3.3 (natten til 12. okt.) · alle forsøg rapporteret

English version: EPS firmware: every version compared

Kort fortalt

v3.3 er den mest robuste af de fire på alle de målinger, vi har, og det er den, vi anbefaler som officiel. v2.2 skal slukkes og tændes efter de fleste netværksfejl. v3.1 kommer sig efter mange, men dør på fire chipfejl, heriblandt den, der matcher symptomet fra felten. v3.2 kommer sig efter dem, men er død, når PHY'en (chippens fysiske netværksdel) holdes i reset, og dens tjek af modtageren holder op med at teste noget, så snart gatewayen har svaret én gang. v3.3 kommer sig efter alle 17 fejl, tester reelt sin modtager hvert minut og registrerer forsyningsspændingen ved hver chipfejl. Ingen af dem er bevist i felten endnu, og den mest sandsynlige udløser i felten (et dyk i strømforsyningen) mangler stadig at blive testet manuelt.

Hvad hver version gør

Ben, udgange, sekvenstiming, indgange, LED'en, TCP-styringsprotokollen og de gemte indstillinger er de samme i alle fire; kun netværksdelen er forskellig. v3.1 → v3.2 → v3.3 er små skridt på den samme omskrevne driver.

Områdev2.2 (felt)v3.1v3.2v3.3
NetværksdriverArduino Ethernet 2.0.2egen W5500-driversammesamme
Forbindelser4 sockets delt af alt, én optaget af keepalive; ledige eller halvåbne forbindelser lukkes aldrig8 sockets, faste pr. tjeneste; ledige webforbindelser lukkes efter 5 s, ældste styringsforbindelse smides udsammesamme
Websidens outputét TCP-segment pr. byte (~3.600 pr. visning)bufferet, 2–3 segmentersammesamme
DHCPbibliotek: blokerer op til 60 s, strander på sin reserveadresseRFC 2131, blokerer aldrig, bliver ved med at spørgesammesamme
Detektering af adressekonfliktingenRFC 5227sammesamme
TCP-opgivelsestid18,4 s (biblioteket skriver W5100'ens registeradresser)102 s (RFC 1122)sammesamme
Selvtjek af chippen hvert 5. sintetversion, IP, MAC, maske, gateway+ mode, genforsøg, PHY-konfigurationsbits+ PHY-reset-bit
PHY stopper med linket nedegenoprettes aldriggenoprettes aldrigkun hvis en konfigurationsbit er ændretPHY-reset efter 30 s, med stigende interval op til ~32 min
Modtageren bliver døv (link oppe, hører intet)opdages aldriggateway-probe, kun hvis gatewayen har svaret siden sidste link-upsammegateway eller seneste klient; overlever et link-up; tæller kun, når der slet intet høres
ARP-forespørgsler til en gateway, der er væk9 hvert 30. s20 på 4 s, hvert minutsamme1 pr. minut (RFC 1122)
For lang webforespørgselintet svar400400414 (RFC 9112)
Hændelseslog (overlever strømafbrydelse)ingen96 hændelsersamme+ forsyningsspænding ved hver geninitialisering af chippen
Udlæsning af forsyning og brown-outingeningeningenVCC, VCC_MIN, BOD i NET_STATUS
SyslogingenRFC 5424, valgfrisammesamme
Flash brugt (af 32.256 B) / RAM-globaler (af 2.048 B)29.876 / 73631.120 / 1.36431.238 / 1.36432.094 / 1.407

Hvorfor hver ændring blev lavet (engelsk): why v3.3 · why v3.2 · mekanismer (findings) · fuld rapport · kort på dansk: hvorfor v3.3

Fejlmatrix: ét forkert chipregister ad gangen

Hver fejl skrives ind i den rigtige boks' egen W5500 af firmwaren (kun testbuilds); pc'en sender kun ping, en styringskommando og en webforespørgsel og overvåger alle tjenester i 120 s. Tre forsøg pr. fejl og firmware, forhåndsregistrerede kriterier. F1–F14 for v2.2/v3.1/v3.2 blev kørt 11. okt.; F15–F17 og hele v3.3 natten til 12. okt.

kom sig selv / ingen effekt "ok*": kom sig; ét enkelt ping tabt i de sidste 30 s (≈0,4 % pr. ping, testartefakt) "latent": kører videre med den forkerte indstilling død, indtil den slukkes og tændes
Fejl (ét W5500-register)v2.2v3.1v3.2v3.3
F1 Chip-softreset (alle indstillinger tabt)død 3/3ok 2/3, ok* 1/3 (6–10 s)ok 2/3, ok* 1/3 (6–10 s)genoprettet (4–10 s) 3/3
F2 IP-adresse ændretdød 3/3ok 2/3, ok* 1/3 (10 s)genoprettet (5–10 s) 3/3genoprettet (3–5 s) 3/3
F3 MAC-adresse ændretlatent 3/3ok 2/3, ok* 1/3 (5–10 s)genoprettet (6–10 s) 3/3genoprettet (4–6 s) 3/3
F4 Gateway ændretok* 2/3, latent 1/3genoprettet (6 s) 3/3genoprettet (3–7 s) 3/3genoprettet (6–7 s) 3/3
F5 Netmaske ændretdød 3/3genoprettet (4–7 s) 3/3ok 1/3, ok* 2/3 (5 s)genoprettet (3–7 s) 3/3
F6 Ping blokeret (mode-registret)død 3/3død 3/3ok 2/3, ok* 1/3 (4–7 s)genoprettet (3–7 s) 3/3
F7 PHY slukket (matcher felt-symptomet)død 3/3død 3/3ok 2/3, ok* 1/3 (11–12 s)genoprettet (4–6 s) 3/3
F8 PHY tvunget til 10 Mbps halv duplexlatent 3/3latent 3/3genoprettet (4–10 s) 3/3genoprettet (6–10 s) 3/3
F9 Antal genforsøg 0død 3/3død 3/3genoprettet (3–5 s) 3/3ok 2/3, ok* 1/3 (10 s)
F10 Styringsportens lyttere lukketingen effekt 3/3ingen effekt 3/3ok 1/3, ok* 2/3ingen effekt 3/3
F11 Styringsportens portnummer ændretdød 3/3ingen effekt 3/3ingen effekt 3/3ingen effekt 3/3
F12 Webportens lyttere lukketok 2/3, ok* 1/3ingen effekt 3/3ok 2/3, ok* 1/3ok 2/3, ok* 1/3
F13 Webportens portnummer ændretdød 3/3ok 2/3, ok* 1/3ingen effekt 3/3ok 2/3, ok* 1/3
F14 Styringsportens modtagebuffer 0ingen effekt 3/3ingen effekt 3/3ingen effekt 3/3ingen effekt 3/3
F15 PHY holdt i reset (ny)død 3/3død 3/3død 3/3genoprettet (3–6 s) 3/3
F17 PHY slukket, skrevet én gang (ny)ok* 1/3, latent 2/3ok* 2/3, latent 1/3ok 2/3, ok* 1/3 (5–26 s)ok 2/3, ok* 1/3 (6–7 s)
F16 F15 med kun link-nede-genopretningen (v3.3-build uden tjek af bit 7)———genoprettet (40 s) 3/3

Genoprettelsestider er fra fejlen blev sat ind, til alle tre tjenester svarer igen. "ok*" er slut-pingtjekket, der fanger ét enkelt løst tab, efter at tjenesten allerede var tilbage; det rammer også fejl, der ikke kan påvirke ping. Baggrundstab af ping i forsøg, der kom sig: v3.1 1,97 % (0,43 % uden ét MAC-forsøg, hvor linket flappede i ~60 s), v3.2 1,09 %, v3.3 0,52 %.

Genopretningsscenarier

Scenariev2.2v3.1v3.2v3.3
Netværkschippen mister alle sine indstillinger (chip-reset via kommando)død indtil sluk/tænd (4/4)kom sig på 2–7 s, udgange bevaret (30/30)kom sig (fejlmatrix F1, 3/3)kom sig på 2–8 s (38/40); to gange kom chippen tilbage døv i 38 s / ~3,5 min og kom sig selv
DHCP-server væk under en fornyelsestrandet indtil sluk/tændbliver ved med at spørge, kommer sig selvsom v3.1DHCP-sekvens A–E bestået
PHY holdt i reset (link nede, ny fejl F15)død 3/3død 3/3død 3/3kom sig på 3–6 s (3/3)
PHY hænger med linket nede, registrene ser rigtige ud (F16)ingen genopretning (koden)ingen genopretning (koden)ingen genopretning (koden)PHY-reset efter 30 s: tilbage efter 40 s (3/3)
Gatewayen forsvinder (router-genstart), overvåget i 12 minkeepalive bruger den cachede adresse: ingen ARP, efter den forsvandt (ingen genopretningslogik at udløse)som v3.2: 1 ARP, mens den var der, ingen bagefter; tjekket bliver ved med at "lykkes"ingen ARP, efter den forsvandt: tjekket bliver ved med at "lykkes" på en cachet adresse1 ARP-forespørgsel pr. tjek; ingen falsk PHY-reset
Modtageren bliver døv med linket oppeopdages aldrigkan ikke opdages, når gatewayen har svaret (cachet adresse), og heller ikke uden gatewaysom v3.13 tavse tjek → PHY-reset (emuleret: én gang, efter 6 min); to rigtige episoder efter geninitialiseringer forsvandt af sig selv inden (38 s, ~3,5 min)
Link nede i 180 s (kabel eller switch)tilbage, når linket kommer igen (switchport-flaps, 9. okt.)tilbage, når linket kommer igen (16/16 linkfald, 11. okt.)ikke kørttilbage 8,3–8,6 s efter linket kom igen (2/2); 2 harmløse PHY-resets pr. udfald
Hovedløkken hængerwatchdog-genstart (udgange slukket)watchdog-genstart ~25 s (3/3)som v3.1watchdog-genstart 25 s (3/3 uden for udfaldet kl. 03:48)
Opstart efter USB-reset (nulstiller også netværkschippen)200/200200/200ikke kørt50/50, median 9,2 s

Detaljer (engelsk): DHCP-strandingen · kodeanalyse og v3.3 · fuld rapport §5.20–5.26

Netværksstandarder (56 forhåndsregistrerede krav, 10 standarder)

Beståkriterierne blev skrevet ned, før nogen firmware blev kørt; samme værktøj, samme boks. En standard er kun bestået, hvis alle dens krav er bestået. v3.2 blev ikke kørt gennem testsuiten: dens eneste ændring i forhold til v3.1 er selvtjekket, som intet i suiten måler, så dens kolonne gentager v3.1's.

Standardv2.2v3.1v3.2v3.3
IEEE 802.3 Ethernetbeståetbeståetbestået (som v3.1)bestået
IEEE 802 MAC-adresseringbeståetbeståetbestået (som v3.1)bestået
RFC 826 ARPbeståetbeståetbestået (som v3.1)bestået
IEEE 802.1D/Q-endestationbeståetbeståetbestået (som v3.1)bestået
RFC 5227 detektering af adressekonfliktikke bestået: 6 kravbeståetbestået (som v3.1)bestået (2 kan ikke verificeres uden forfalsket trafik)
RFC 5424/5426 syslogfindes ikkebeståetbestået (som v3.1)bestået
RFC 2131/2132 DHCP-klientikke bestået: 7 kravikke bestået: 1 kravikke bestået: 1 krav (som v3.1)ikke bestået: 1 krav (bevidst: spørger fra sin reserveadresse)
HTTP (RFC 9110/9112)ikke bestået: 7 kravikke bestået: 3 kravikke bestået: 3 krav (som v3.1)ikke bestået: 2 krav (bevidst: tænd/sluk via GET, intet Host-tjek)
TCP (RFC 9293/1122)ikke bestået: 2 kravikke bestået: 1 kravikke bestået: 1 krav (som v3.1)ikke bestået: 1 krav (bevidst: 2 s sendetimeout)
RFC 1122 værtskravikke bestået: 3 kravikke bestået: 3 kravikke bestået: 3 krav (som v3.1)ikke bestået: 2 krav, begge chipbegrænsninger (ARP-raten rettet)
Beståede krav, af 5626464648

Pr. krav (engelsk): findings · executive summary

Daglig drift (regression)

Testv2.2v3.1v3.2v3.3
Strøm og udgangssekvens (21 tjek)referenceadfærd21/21som v3.121/21
Belastningstest, kort (ledige forbindelser, derefter Companion + eXcontrol + browser)styringsporten død med 2 ledige webforbindelser (1 af 30 besvaret)541/541som v3.1541/541
Ledige forbindelser holdt åbne, op til 5 pr. portstyringsporten død fra 2800/800 besvaretsom v3.1alle besvaret
Vedvarende forbindelser fra styresystemerunderstøttes ikke6/6som v3.16/6
Skrald og forkert formateret input—16/16som v3.116/16
HTTP-metoder og forkert formaterede forespørgsleralle metoder behandles som GET21/21som v3.121/21 plus 414
DHCP-sekvens (ingen server, lease, server væk, adresse i brug)strander efter et udfald, genstarter ved fornyelserbeståetsom v3.1bestået
10 Mbps halv duplex—bestået (belastning 543/544)som v3.1bestået (belastning 543/543)
millis()-overløb efter 49,7 dage (simuleret)—beståetsom v3.1bestået
Laveste frie stak set~0,45 KB (beregnet)243 Bsom v3.1190 B

v3.2 deler v3.1's netværksdel bortset fra selvtjekket, så dens daglige drift blev ikke målt separat; "som v3.1" markerer det.

Hvad tabellerne ikke viser

Målt

  • Alle fire firmwareversioner på den samme rigtige boks (10 V forsyning, seks SSR'er, ingen belastning), samme testværktøj, tre forsøg pr. fejl.
  • v3.3 natten til 12. okt.: 51 fejlmatrix-forsøg, 50 opstarter efter USB-reset, hele regressionssuiten samt test af link nede, forsvundet gateway og døv modtager.
  • Boksens brown-out-niveau (2,7 V) og forsyning (≈ 5,1 V på USB), læst af v3.3 selv.
  • To gange i 40 chip-reset-forsøg på v3.3 kom netværkschippen tilbage døv efter sin geninitialisering (38 s og ~3,5 min) og kom sig derefter af sig selv; én episode er optaget (chippen sender, men svarer ikke på noget). v3.1: 0 af 30.

Ikke testet endnu

  • Dyk i forsyningen og langsom opstart. Den førende hypotese for udfaldene i felten (boksen rapporterer et brown-out-niveau på 2,7 V). Strømmen kan kun afbrydes rigtigt, når USB-kablet er taget ud, så testen kræver tid ved bænken.
  • Rigtige belastninger koblet af SSR'erne, drift over flere døgn og andre switchmærker.
  • v3.3's indgreb ved en rigtig døv modtager. De to rigtige episoder på denne boks forsvandt af sig selv, før tjekket greb ind; selve tjekket er testet ved emulering.
  • En W5500, der holder op med at svare på SPI. Ingen firmware på dette kort kan nulstille den (reset-benet er ikke forbundet); det kræver en hardwareændring.
  • Fejlrater i felten: én boks, tre forsøg pr. fejl. Tabellerne viser adfærd, ikke fejlrater.

Resten af undersøgelsen