Files
roro9stack/site/content/dev/debug/_index.md
T
twislaandClaude Opus 5.5 c68741cc46
CI / build (pull_request) Successful in 7m20s
Site / build (pull_request) Successful in 9s
One firmware: the Debug Console in every build, off until switched on, with the device's own token
There is no Debug Build any more (ADR 0010, issue #68, Q188 to Q195). The
console and the test commands are compiled into every firmware. It listens
only while Settings > Debug Console is on, which isn't the default; off,
neither its task nor its 4 KB ring exists. The token is made by the device
and shown on that page; a client proves it knows it by answering a challenge
with an HMAC, so it never crosses the network, and five wrong answers close
the console for a minute. DBG in the Status Bar while it listens.

Over USB serial only: debug on, debug token <value>, debug token new.
scripts/flash.sh --debug uses them to set a device up with the developer's
token. scripts/rdbg.py takes the token from -t, $RORO_DEBUG_TOKEN or the
file, answers the challenge, and fetches a release's ELF to decode a crash.

Gone: the cardputer-adv-debug environment, RORO_DEBUG, the +debug version,
scripts/debug_flags.py, update install ... force, and the rule that a Debug
Build doesn't install releases. Old clients and old firmwares don't talk to
each other.

Against the builds it replaces: 30 KB more flash and 88 bytes more static
RAM than the release, 4 KB less RAM than the Debug Build. 468 host tests.
Checked on the device: off by default, login, the pause after wrong tokens,
Safe Mode with the console, the setting surviving an update, debug off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
2026-10-06 22:59:35 +02:00

1.1 KiB

+++ title = "The Debug Console" description = "A firmware you can drive from your desk: its console over Wi-Fi, its screen as a PNG, its SD card, its crash dumps, and a way back when an update goes wrong." template = "guide-index.html" page_template = "guide-page.html" sort_by = "weight" weight = 1

[extra] eyebrow = "Developer docs" +++

The Debug Console is the serial console, over Wi-Fi, for whoever holds the device's token. It is in every firmware, switched off until you switch it on, and it is the most useful thing in the project. With it you can:

  • see everything the device prints, boot messages included, without a cable;
  • run every serial command from your desk;
  • press keys and take screenshots, so a UI change can be tested and looked at remotely;
  • copy files to and from the SD card;
  • read crash reports and fetch core dumps, decoded against the exact build that crashed;
  • update the firmware over the same Wi-Fi, and know that a bad update rolls back by itself.

Start with Switch the console on, then the Debug Console. The rest are what you can do with it.