Skip to content

The serial console

Plug the console's USB into a computer: it shows up as a serial port named papyDeck RP1 (115 200 bauds, any terminal). Everything the three chips log comes out there — RP3's console in both directions, RP2's as read-only lines prefixed [rp2] — and a handful of control keys drive the machine.

Reading the state — Ctrl+L

Ctrl+L prints the state, one line per subsystem:

Line What it says
[sup] supervisor: cause of the last boot (boot=watchdog\|reboot\|run\|por), RUN state of RP2/RP3, VSYNC presence and rate, HDMI hot-plug, link counters (err, ovf)
[game] the frame budget: update and draw times in µs against the 16 667 µs of a frame, then the display list — used/clipped/dropped/repeats/missing — and the Lua heap
[pool] the art cache of RP2: Kio used, resident bitmaps, loads, misses (full = working set larger than the pool)
[map] background map writes: runs, entries, pending, dropped
[sd] the micro-SD: detected, mounted, size, label, number of games
[esp] the ESP32 link: hello, paired gamepads, Wi-Fi state

The [game] line is how you measure a game on the real board: update=181 us … budget 16667 reads as ~1 % of the frame. The [sup] line also repeats every 2 s on its own.

More keys

  • Ctrl+Q — toggles the periodic reports of RP2 and RP3: per-line cycle counts (compose, bg, pass against the budget), blitter self-test, palette rebuild times. The numbers the architecture pages quote as "measured" come from here.
  • Ctrl+P then a game name and Enter — launches that game (sys.run), without touching the dashboard.
  • Ctrl+R / Ctrl+T — hardware reset of RP3 / RP2 (RUN pulsed low); Ctrl+W reboots RP1 by its watchdog, which restarts everything.
  • Ctrl+K — empties the compilation cache: the next launch recompiles the game's art bundle.
  • Ctrl+D — stops sending the display list (a freeze-frame for probing).

Any other key is forwarded to RP3's console. The remaining keys (Ctrl+U, Ctrl+F, Ctrl+G, Ctrl+E) are the development bridges for programming the NOR flashes and the ESP32 over this same cable — see the firmware repository's READMEs.