CanoFlash is an ESP32-S3 accessory that plugs into the Game Boy Advance Link Port and takes homebrew games online on original hardware. In the demo video, a GBA and a GBA SP, each with its own CanoFlash, meet in an online room and play together with no PC.
How it works
Game on cartridge ⇄ Link Port ⇄ CanoFlash (ESP32-S3) ⇄ Wi-Fi / TLS ⇄ Game server
- The game runs from a flash cartridge and talks to CanoFlash through a small C API polled once per frame.
- CanoFlash handles Wi-Fi, TLS and device authentication, so the game never touches passwords or tokens.
- The server only manages rooms and forwards data. Game rules stay in the game, and only CanoFlash devices can connect.
The SDK
Free and MIT-licensed: two C99 files with no engine dependency and no dynamic allocation, for devkitARM C and Butano C++.
- Public matchmaking, or private rooms with a six-digit code
- Lobbies with player names and a room host
- State updates for positions and reliable events for turns and actions, up to 480 bytes each
- Recovery from short Wi-Fi drops

The lobby example from the video ships with full source code. Source on GitHub · Documentation
It also writes the games

CanoFlash started as a Wi-Fi loader. It sends a native menu into the console's RAM through Multiboot, downloads authorized homebrew or your own backups, writes them to a compatible rewritable cartridge and backs up saves. The same device writes an online game to the cartridge and then connects it. No console modification is needed.

One thing that bit me
On the Link Port the GBA is the serial slave: it can't speak first, it can only leave a 32-bit word and wait for CanoFlash to clock it. At 256 kHz the last bit of every GBA→ESP32 word went missing, because the GBA releases its output line before the 32nd bit is sampled. More stories like this are coming in the project logs.
Status and limits
- Tested with two players on real hardware; more consoles are still to be tested
- Works in games made with the SDK, not in existing games
- Built for turn-based and slower real-time games, not 60 fps action
- No latency or online battery figures yet: they still have to be measured on the current firmware
- A compatible flash cartridge is required, and the battery is not included

What's next
I'm moving from a working prototype to a repeatable first production run. The Kickstarter campaign launches on September 20, 2026 at 17:00 CEST. If it's funded, I'll also release a self-hosted version of the game server and a firmware update to connect to it.
CanoFlash is an independent project and is not affiliated with, endorsed by or licensed by Nintendo.
Emilio Cano