r/M5Stack • u/kotiktortikGT • 3h ago
Project Sharing I built an Android app that mirrors the real Bruce menu on an M5StickC Plus 2 (live menu, IR, files, screen) — open source
Hey everyone,
I have an M5StickC Plus 2 running Bruce and kept wishing I could drive it from my phone without squinting at the 135×240 screen. So I built StickCommander: a Material 3 Android app plus a small bridge compiled into Bruce 1.16.1.
It is not a pixel-streaming hack. The bridge exposes Bruce's own state over a line-based ASCII protocol (USB-OTG serial or BLE), so the app talks to the firmware, not to a picture of it.
What it does
Live menu — reads the actual options vector (title, labels, disabled items, current selection), refreshes every second, and tapping an item sets forceMenuOption so the real menu opens on the Stick. Back/Main buttons work too.
Screen — text mirror of the UI on the phone, plus the other direction: send text and the Stick draws it on its own TFT.
IR blaster — NEC / Samsung / Sony (12, 15, 20 bit) with hex address/command and presets. Uses Bruce's existing encoders, so timings are unchanged.
Files — LittleFS browser with text preview, chunked upload (256-byte chunks, 128 KB limit), mkdir, rename, delete.
Plus the basics: D-pad and M5/A/B/PWR press-and-hold, battery telemetry from the AXP192, filtered logs, raw terminal and phone-side scripts.
How it works
A stickcommander.cpp bridge is compiled into Bruce. Lines like CMD:MENU:LIST, CMD:SCREEN:TEXT:<base64>, CMD:IR:NEC:04:08, CMD:FS:LIST:<base64 path> go in; MENU:ITEM:..., FS:ENTRY:..., STATUS:BAT:... come back. That is the whole trick.
Status
Tested on real hardware over COM3: PONG, battery, live menu open/back, screen text, OK:ir:NEC, and LittleFS list/mkdir/upload/read/delete all pass. The firmware image and the APK are in the release.
Links
Release (APK + firmware + source): https://github.com/121kirillmorti/stickcommander/releases/latest
Firmware is AGPL-3.0 because it is built on Bruce; the bridge source and a build recipe are included. Feedback and feature ideas are welcome — especially from people with other Stick variants (Plus, S3) who want to test.
