0b10000000 (also known as 128 in the decimal system) days ago we launched Hello World and to celebrate this round number of days it’s been operational we thought we’d share some numbers from along the way.
The communication system has varied between -2 and +11 degrees Celsius with the average being +4. The power system (a small computer that distributes power) has varied between -3 and +13 degrees with the average being +4. The lithium ion batteries have varied between +5 and +18 with the average being +10.
Why are the batteries so much warmer? Because lithium ion batteries really don’t like to get too cold, so we have a heater that automatically kicks in when the temperature goes too low.
Why does it vary so much? Because of night and day, which for the satellite comes roughly every hour.
Life on orbit
Hello World has traveled 84 million kilometers around the Earth. During that time it has absorbed around 200 rad of radiation.
The battery voltage has been mostly hovering between 8.3V and 8.1V, meaning that during the satellite night (or eclipse, when the Earth is between the satellite and the Sun) the voltage gradually drops to around 8.1V and then rises back to the maximum of 8.3V when the Sun is shining on the solar panels and stays there while the solar panels are in sunlight.
On a single occasion the battery voltage has dropped to 7.1V when due to human error the hyperspectral imager was left powered on for an extended time period. The automatic failure detection kicked in with the recovery plan of going into safe mode: in other words turn off everything that is not absolutely needed for survival.
We have downlinked images from ~50 photo shoots, a total of ~200 hyperspectral frames, and ~14MB of lossfully compressed images, and one lossless frame at ~400KB. Before choosing which frames to downlink we have also gotten down ~250 thumbnails. We have imaged for example fields, rivers and urban areas in Peshawar, Pakistan, desert and an irrigation project in Sahara, and mountains in the Himalayas.
In addition we have downlinked 1770 frames of communications system telemetry and 4437 frames of power system telemetry.
We don’t have an exact handle on how many bytes have our interactive Telnet (yes, really) sessions transferred up or down, or how much our Rsync transfers have used in handshakes and other related meta communication.
During flight we have uplinked new code to the satellite.
- New C binaries, one with 60 lines of code compiled to a 8.6K binary and another with 139 lines compiled to 6.0K
- Two updated C binaries, one with
95 insertions(+), 6 deletions(-), other with
18 insertions(+), 8 deletions(-)and compiled sizes of 16K and 175K
- A new version of a shell script with
98 insertions(+), 13 deletions(-)
- Many many ephemeral shell scripts of a few to tens of lines of codes as our automated task system uses those
- 28 lines of Node.js
That’s right. We finally found a use case where the included JS binary actually was the easiest way to accomplish something. That something turned out to be taking bytes from standard input and reading floating point values out of them while handling endianness correctly. One would have thought that hexdump or od could do it, but turns out we had included a version from our system vendor of od that was too old to handle endianness.