RUNNER PROTOCOL needs three things from a handheld:
python3, no packages, just the interpreter. Several popular firmwares don't ship one at all.- A writable
/dev/fb0at 32 bits per pixel. It draws by copying raw bytes into the framebuffer; there is no SDL, no OpenGL, no compositor. - A 640x480 panel. Unlike its sibling pocket-clawd, which centres itself on larger screens, this one is drawn wall-to-wall for exactly 640x480 and does not letterbox. Other sizes are untested and will probably render misaligned.
Check a device in ten seconds:
cat /sys/class/graphics/fb0/virtual_size # want 640,480 (or 640,960 panned)
cat /sys/class/graphics/fb0/bits_per_pixel # want 32
command -v python3| Device | Screen | Firmware |
|---|---|---|
| "R36S" / K36 / R35S / R33S clones | 640x480 | ArkOS4Clone. This is the one it was built on |
That's the honest list: one device family, personally tested. The devices below share the panel, the SoC class and the firmware family, so they should work - but that is reasoning from specifications, not from having run it:
| Device | SoC | Firmware |
|---|---|---|
| Anbernic RG351V, RG351MP | RK3326 | ArkOS, ROCKNIX |
| Powkiddy RGB10X | RK3326 | ArkOS4Clone, ROCKNIX |
| Anbernic RG353V / VS (640x480 panels) | RK3566 | ArkOS, ROCKNIX |
If you try one, I'd genuinely like to know either way - open an issue.
- Any panel that isn't 640x480 - 480x320 (RG351P/M), 720x720 (RGB30), 1280x720 (TrimUI Smart Pro). A resolution-aware layout is the obvious next thing to build if people want it.
- Panels that aren't 32 bits per pixel (16-bit RGB565, common on SigmaStar devices).
- Firmwares with no python3: muOS (unless you add it), OnionOS, MinUI.
- Android handhelds. Different world entirely.
ArkOS / ArkOS4Clone / dArkOS. The best case: Ubuntu-derived, real
python3, writable filesystem, and the carousel installer works exactly as
designed. SSH is off until you switch on Remote Services in the Options menu.
ROCKNIX / Batocera / Knulli. python3 and a framebuffer are present, but
the carousel step won't apply as written (those firmwares regenerate or
drop-in their EmulationStation configs). Launch
device/Claude Runner.sh directly, or wire it into whatever menu the
firmware uses.
The defaults cover the standard Linux gamepad codes and the non-standard
ones this class of clone emits (SELECT and START arrive as
BTN_TRIGGER_HAPPY1/2, 704 and 705, rather than 314 and 315). If a button
does nothing on your device, open an issue with the output of evtest and
I'll add the codes.
The game normally plays against live usage data pushed from a PC (see INSTALL.md). Without one it sits on the NO SIGNAL screen - press Y there to run the PROTOCOL DRILL: a full synthetic run (cold, the band, critical, blackout, reset) on the real renderer, clearly badged as synthetic, for trying every mechanic without a live link.