I have a drawer full of handheld devices in various states of neglect. Retro gaming handhelds with outdated firmware. An e-reader that hasn’t turned on in months. The kind of stuff that sits there because fixing it feels like a project, and projects need a plan, and plans need motivation.
This week the motivation was simpler than that. It was: I wonder if Claude Code can talk to this thing.
Session 1: The Odin Pro

The AYN Odin Pro is an Android-based retro gaming handheld. I’d been meaning to update its emulator setup for months. Plugged it in via USB-C, ran adb devices, and got a connection.
From there, Cerebro took over. Audited what was installed. Identified that the PS2 emulator had been discontinued and needed replacing. Pushed NetherSX2 as a replacement, installed PPSSPP for PSP, added Obtainium so emulators could auto-update, and set up EmuDeck to manage the whole stack.
The interesting part wasn’t the setup. It was the ROM curation. Rather than dumping everything from the NAS, we built curated lists per system — top picks, not bulk. Then transferred them via libmtp because Android 10’s scoped storage blocks ADB push to shared directories.


Three hours. About 50 ADB commands. One device pulled out of the drawer and made useful again.
(I tried the Anbernic RG350M first. USB wasn’t detected. Its Linux-based OS crashed when attempting USB communication. Dead end in under ten minutes. Not every device cooperates.)
Session 2: The Anbernic SP
The Anbernic RG35XX SP is a Game Boy SP-style clamshell handheld. Its USB-C port is charge-only — no data. But it has WiFi, so we connected over SSH instead.
First discovery: the stock firmware’s sleep mode is broken. The hall sensor that detects the lid closing works fine, but the firmware just turns the screen off. CPU stays active. WiFi stays active. Battery drains overnight regardless.

That was enough to justify a firmware flash. Backed up saves and BIOS files, downloaded muOS (a community firmware), and flashed it from Terminal using dd. Then came the same curation exercise as the Odin — built target lists for 11 systems, cross-referenced against the NAS, identified what was missing, and transferred games over SCP.
Seven hours on this one. The bulk of the time was the curation, not the flashing. Picking 386 games from a library of 5,900 is a judgment call on every title.
Session 3: The Kobo That Wasn’t Dead
The Kobo Clara 2E had been sitting in the drawer because it wouldn’t turn on. Screen dark, buttons unresponsive. Written off.
When I plugged it in via USB, macOS showed a notification. The device identified itself as “SE Blank 6SLL” — which is meaningless unless you know that the NXP i.MX6 chip inside has a last-resort recovery protocol called Serial Download Protocol. The device wasn’t dead. Its brain was calling for help.

That one notification changed the entire session.
We built the NXP UUU tool from source for SDP communication. Cloned a custom u-boot fork, cross-compiled it with USB Mass Storage and fastboot support, and pushed it to the device’s RAM. The device entered fastboot mode. Communication established.
Then we booted the stock Kobo bootloader via SDP — and the device reached its PIN lock screen. The OS on the internal storage is intact. The e-reader isn’t broken. Its bootloader is corrupted, but everything else is fine.
Here’s where it broke: the custom u-boot that can talk to a computer over USB can’t initialize the internal storage — likely a missing bus configuration in the device tree. The stock bootloader that can see the storage has no USB recovery features. The tool that can talk to you can’t see the disk. The tool that can see the disk can’t talk to you.
Classic catch-22. Still unresolved.
(We also burned about 90 minutes on the wrong firmware — I misidentified the device model initially, and Cerebro didn’t catch it. Same processor, different board. I had to correct course.)
The deeper thing
None of these were planned projects. Each one started with plugging something in and asking “what happens?”
The hacker mentality is “I have a tool and a cable — what else can I try?” Claude Code is built for codebases and file systems. But ADB is a command line. SSH is a command line. dd and scp and cross-compilation are all things that happen in a terminal. The tool doesn’t care that the thing on the other end of the cable isn’t a computer in the traditional sense.
Two wins. One partial failure that pushed into embedded systems territory I’ve never touched before. And three fewer devices gathering dust in a drawer.
The question I can’t answer yet: that Kobo catch-22 — can we build a u-boot that initializes both the eMMC and USB at the same time? That’s a device tree problem, not an AI problem. But the AI got us to the point where we know exactly what the problem is. That’s further than the device got in six months of sitting in a drawer.