Public Access
Debug Console: files, screenshots and Update from SD over Wi-Fi
New commands everywhere: ls, rm and install <path> (Update from SD without the Firmware page), all as Storage Service jobs. In Debug Builds the console task answers get and put (one storage job per transfer, file kept open, TCP flow control: about 300 KB/s, against 55 KB/s over serial) and screenshot (the RGB332 frame the UI composes into). rdbg.py turns those into files and PNGs. A failed put closes the connection: the rest of the file had been parsed as commands. Card writes are retried 3 times after closing, truncating to the last good byte and reopening, since FATFS keeps a file in error after one failed write (seen once at 1.3 MB on this card). onStorage() decides with one compare-and-swap whether the job or the timeout wins, so an abandoned job can't touch a returned stack frame. Verified on the device: screenshot; a get round trip byte-identical; 4 puts in a row; a tampered .ota refused by install; a good one put, installed from SD, confirmed on Probation. The retry path itself has not fired since it was added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -10,6 +10,7 @@ It's compiled out of release builds entirely, rather than switched off by a sett
|
||||
- **Commands run on the main loop.** The socket lives on the Debug Console's own task, which only queues command lines. The main loop runs them, as it does serial commands, so they touch Apps and Services from the one task allowed to.
|
||||
- **The token** is 128 random bits in `~/.config/roro9stack/debug-token`, made by the first build and passed into the container. It's never committed; a Debug Build refuses to compile without one. Like the OTA key, it guards against the network, not against someone holding the device.
|
||||
- **One client at a time**, to keep memory flat (about 6 KB for the ring, 6 KB of task stack).
|
||||
- **Binary commands are answered on the console's own task**, not queued: `get`/`put` (SD card files, run as one Storage Service job each so card access stays on the storage task, with TCP doing the flow control), `screenshot` (the 32 KB RGB332 frame the UI composes into, read as it stands, so it may tear), `coredump get` and `reset`. These keep working when the main loop is stuck. A failed `put` closes the connection, so the rest of the file is never read as commands.
|
||||
|
||||
## Keep a Debug Build in the fallback slot
|
||||
|
||||
|
||||
Reference in New Issue
Block a user