Softwarefejl redder Aalborg-satellit til skibsovervågning

28. maj 2013 kl. 10:376
Takket være et manglende byte-tjek lykkedes det studerende på Aalborg Universitet at genstarte strømforsyningen til den nano-satellit, der indsamler skibspositioner.
Artiklen er ældre end 30 dage

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.

Artiklen fortsætter efter annoncen

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.

Artiklen fortsætter efter annoncen

»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.

Artiklen fortsætter efter annoncen

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.

6 kommentarer.  Hop til debatten
Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
5
28. maj 2013 kl. 23:33

for en god ordens skyld

Det er ikke det grå staff som mig der har håndteret sagen - det er ene og alene de studerende !

Jens

4
28. maj 2013 kl. 23:23

vi ved ... ikke om det er et bitflip, men CSP protokol stakken har kørt stabilt med mange mange pakker i lang tid så det er et (kvalificeret ?) gæt

3
28. maj 2013 kl. 23:02

Det er jo desværre svært at kompensere for et bit-flip i RAM, og det er også begrænset hvor meget afskærmning der kan blive plads/vægt til. Et ganske imporende stykke analysearbejde og "hacking". :-)

2
28. maj 2013 kl. 22:17

jo - det var ret godt gået af de unge mennesker og endda iløbet af ganske få timer efter vi fandt ud af at der var noget galt deroppe.

meget apropos fik jeg fra en bekendt et indspark om man ikke skulle skrive et paper med titlen:

Why important software need bugs (tak til Henning Bo) :-)

interessant tanke

1
28. maj 2013 kl. 13:04

Jeg gætter på at der er givet en high-five eller to i mission-control...