Softwarefejl redder Aalborg-satellit til skibsovervågning
Siden februar har den lille AAUSAT3 cube-satellit indsamlet data om skibspositioner verden over baseret på signaler fra skibenes AIS-sendere.
Fredag aften, 24. maj opfangede de studerende på Aalborg Universitet, som står bag projektet, signalet ‘B 0.0 T 0'. Nullerne i beskeden viser, at der er noget galt med satellittens strømforsyning EPS (electronic power supply), der ikke længere kommunikerede med radio-modulet.
»Strømforsyningen er det første system, der starter i satellitten. Hvis der er problemer med den, så har vi virkeligt en krise. Den forsyner alle de andre systemer med strøm, udfører overvågning med mere,« fortæller Jens Dalsgaard Nielsen, projektleder og lektor ved Institut for Elektriske Systemer ved Aalborg Universitet.
Det var derfor vigtigt at få strømforsyningen til at fungere normalt igen. Den eneste umiddelbare løsning var at få systemet til at genstarte.
Læs også: Aalborgs studenter-satellit har spottet 30.000 skibe for Søfartsstyrelsen
Satellitten kommer inden for kommunikationsrækkevidde to gange i døgnet i dens bane rundt om Jorden. Når den er inden for rækkevidde, er der fire ‘vinduer’ for at kommunikere med den med ca. 100 minutters mellemrum. Hvert vindue, eller pass, som det kaldes, giver en kommunikationsmulighed på mellem 3 og 10 minutter.
Første pass brugte de studerende ved Aalborg Universitet på at konstatere, at det godt kunne lade sig gøre at pinge-strømforsyningen - altså sende et kald til satellitten og få et svar retur. Men det kunne ikke lade sig gøre at sende genstartskommandoen til den. EPS’en var havnet i såkaldt livelock-situation, hvor EPS og radiosystemet prøver at komme i kontakt med hinanden uden held, fortæller Jens Dalsgaard Nielsen.
Ved systematisk at prøve sig frem fandt de studerende ud af, at strømforsyningen reagerede på kommandoer på to bytes, men ikke på tre eller flere. Det skyldes muligvis, at en bit havde ‘vendt sig’ i ram’en, altså skiftet tilstand fra nul til et eller omvendt i det elektroniske lager.
»Vi gætter på, der er sket en bit-flip i ram-lageret omkring buffersystemet i vores protokolstak. Det er noget skidt. Hvis de variabler, der ligger i bufferen, bliver ødelagt, så har vi et problem,« siger Jens Dalsgaard Nielsen.
Den kommando, der skulle til at få strømforsyningen og dermed alle systemer i satellitten, til at genstarte, er på fire bytes. De ekstra bytes skal forhindre, at en genstartskommando bliver sendt til systemet ved en fejl. Derfor var det låst fast.
En softwarefejl (eller feature)
De studerende bag AAUSAT3 granskede derfor softwaren i satellitten for at se, om der kunne være en anden mulighed for at genstarte strømforsyningen end at sende de fire bytes.
De fandt frem til en service på EPS’en, den kan bruges til at genstarte strømforsyningen med tidsforsinkelse. Men servicen forventer en pakke på tre bytes, altså stadig mere, end det er muligt at komme igennem med.
Det viste sig, at mens bytelængden i datapakker bliver tjekket mange steder i satellittens systemer, så er tjekket udeladt ved netop denne service. Så hvis bytelængden kun er på to, fylder softwaren selv den sidste byte mere eller mindre tilfældigt ud fra indholdet af bufferstakken i satellitten.
»Det manglende tjek kan man jo godt kalde en fejl. Her vil jeg nu sige, det var en feature,« siger Jens Dalsgaard Nielsen.
Byten repræsenterer en værdi fra 0 til 255. Tallet afgør i dette tilfælde, hvor længe der skal gå i sekunder, før EPS’en genstarter.
I løbet af tredje pass fik AAUSAT3-holdet sendt en pakke på to bytes til services på EPS’en. Og under fjerde pass viste data, at systemet var genstartet, og alt igen fungerede, som det skulle.
Andre løsninger
Hvis det ikke var lykkedes at finde en mulighed for at genstarte satellitten via en softwarekommando, ville der stadig være håb.
Det umiddelbare sidste alternativ til at få satellitten til genstarte, ville være at tænde for samtlige systemer på den, så batteriet ville blive drænet.
Hvis alt gik vel, ville satellitten lukke ned, når den løb tør for strøm, og derefter ville den lade op via solpaneler og genstarte.
»Den løsning ville vi dog helst ikke have været ude i, da vi ikke ville have kontrol med forløbet,« siger Jens Dalsgaard Nielsen.
AAU-satellitten, der vejer omkring et kilo, har i skrivende stund indsamlet og downloadet mere end 650000 AIS-pakker i løbet af missionens første 91 dage.
