You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is unlikely that we are able to launch the satellite with all of the software perfectly configured for its mission. Even if we could, we might one day decide we want to change the way something works on orbit and therefore need the ability to send it a software update! Ideally there would be a fully update upload, verification, switchover, and fallback system that is implemented into the flight code, but for now we want to just see if we can use the tools that are already within the circuitpy_flight_software to force an update onto the satellite!
This is an issue to track developing code that can do the following:
Setup a command to be sent to a satellite.
Accept from the user a block of code that they would like to write to the satellite file system
Send that block of code to the satellite and have it written permanently into the file system
Attempt to execute that new code that is on the remote file system
How Might We Be Able to Do This?
Right now, within cdh.py there are a few command functions that will hopefully give us the tools to make this happen. Specifically, when the cdh.message_handler() function is called, one of the things it can result in is passing command args to:
Giving us the ability to execute strings as arbitrary blocks of code.
The hacker LMBFAO has indicated to us that the execution of the following code block should place the remote CircuitPy device into a mode where it is able to write to its own filesystem:
This will only set the file system to readonly=False for the current boot. To have the filesystem set to be writable at all times, we might need to do something like this:
What if We Had Access to the Target Device Itself?
For future implementations of Over the Air Updating we will want to try and improve cdh.py to have more helper functions that assist with the process of uplinking new code, verifying that will probably work, and then switching over. A quick Google search reveals at least one proposed implementation of this in the open source cOTA library.
The text was updated successfully, but these errors were encountered:
What Should This New Feature Do?
It is unlikely that we are able to launch the satellite with all of the software perfectly configured for its mission. Even if we could, we might one day decide we want to change the way something works on orbit and therefore need the ability to send it a software update! Ideally there would be a fully update upload, verification, switchover, and fallback system that is implemented into the flight code, but for now we want to just see if we can use the tools that are already within the circuitpy_flight_software to force an update onto the satellite!
This is an issue to track developing code that can do the following:
How Might We Be Able to Do This?
Right now, within
cdh.py
there are a few command functions that will hopefully give us the tools to make this happen. Specifically, when thecdh.message_handler()
function is called, one of the things it can result in is passing command args to:Giving us the ability to execute strings as arbitrary blocks of code.
The hacker
LMBFAO
has indicated to us that the execution of the following code block should place the remote CircuitPy device into a mode where it is able to write to its own filesystem:This will only set the file system to
readonly=False
for the current boot. To have the filesystem set to be writable at all times, we might need to do something like this:What if We Had Access to the Target Device Itself?
For future implementations of Over the Air Updating we will want to try and improve
cdh.py
to have more helper functions that assist with the process of uplinking new code, verifying that will probably work, and then switching over. A quick Google search reveals at least one proposed implementation of this in the open source cOTA library.The text was updated successfully, but these errors were encountered: