Skip to content
Projects / A93-02

RG35XX Unchained

A $60 retro handheld that stands in for your phone. Radio, podcasts, YouTube, Bluetooth headphones, an alarm and a lock screen, all without reflashing it.

Part no.
A93-02
Status
working
Platform
Embedded Linux · Allwinner H700
Year
2026
Stack
PythonPySDL2mpvyt-dlpBlueZTailscaleC kernel modulessystemd
0Firmware flashes needed
25 fpsYouTube at 360p, zero dropped frames
17s → 1sTime to first frame on long videos
12 MB/sSSH over a USB-C cable
01 — The problem

Phones are the most distracting thing we own, yet most of what I actually use one for in a day is listening to the radio, a podcast or a YouTube video, plus an alarm. A $60 retro handheld already has a screen, speakers, Wi-Fi and Bluetooth, but out of the box it only plays games, and Anbernic's 2026 firmware broke the community's tricks for getting root.

02 — The case for it

Replace the phone in a retro form factor. Keep the stock firmware (nothing to flash, nothing to brick) and add what a phone gives you: live radio and podcasts, YouTube with your own subscriptions, Bluetooth headphones with a working mic, a lock screen with now-playing, an alarm clock, and secure access from anywhere. Everything installs by copying files onto the SD card and can be removed again.

03 — Back of the napkin
Back of the napkinRough · not a forecast

Not a business. It’s a question: how much of a phone do you need? The answer is a $60 games handheld and some evenings.

  1. Handheld≈ $60
  2. +SD card≈ $10
  3. +Radio, podcasts, YouTubefree
  4. +Bluetooth headphonesalready owned
  5. =Pocket media device≈ $70
  6. −vs a basic smartphone≈ $150+
  7. =Notifications, feeds, doom-scrollingnone
Running costs
Infrastructure
€0
Tailscale (personal)
free
Real cost
evenings + support questions
At 10× / 100×

It spreads through GitHub and forum posts, one SD card at a time. More users means more device and firmware variants, so everything stays removable and the known traps are written down rather than turned into a support desk.

Verdict

A real dumb-phone alternative for listening and watching, plus your games. Best as an open project; at most a tip jar.

04 — How it works
Diagram · What the phone did, now on a handheld
  1. 01Lock screenPower key locks like a phone: time, what’s playing, play/pause. It dozes but keeps playing.
  2. 02Radio & podcastsBBC stations plus radio-browser.info, and podcasts with downloads for offline listening.
  3. 03YouTubeSearch, 209 imported subscriptions, history with resume, and audio-only Listen mode.
  4. 04Bluetooth audioHeadphones, game audio and the headset mic, recovered automatically after sleep.
  5. 05TailscaleReachable from anywhere over SSH, with exit nodes picked in the UI.
  6. 06USB-CPlug into a Mac for SSH over the cable, or mount the SD card as a drive.
06 — Engineering highlights
01

YouTube on a $60 handheld

yt-dlp (a standalone arm64 build, updatable from the device) finds H.264 streams that the chip can decode in software: 360p at 25 fps with no dropped frames. Your subscriptions are imported on the Mac, so no Google cookies ever live on the device.

02

Beat YouTube’s throttle: 17s → 1s

Long videos stalled for 17 seconds because open-ended range requests get throttled. A tiny local relay fetches bounded 512 KB–4 MB ranges instead: first frame in 0.8–1.7 s, seeks in under a second.

03

Fixing Bluetooth after sleep

The Realtek chip doesn’t survive suspend and the stock restart script can’t bring it back. A recovery routine power-cycles the radio, re-attaches the chip and restarts the audio stack. It also pipes 32-bit game audio through a 64-bit player so RetroArch works on headphones.

04

SSH over USB-C

The stock kernel has no USB networking, so I cross-compiled the missing gadget modules for Linux 4.9 and wrote a tiny DHCP server. Plug into a Mac and you get ssh at ~12 MB/s, or the SD card as a drive. (The final bug turned out to be the cable.)

05

Radio that heals itself

BBC stream URLs move around and old ones start returning 410. Before playing, each station is checked and, if dead, looked up again on radio-browser.info and saved.

06

Tailscale from the SD card

A static arm64 Tailscale runs straight from the card: SSH from anywhere, an exit node picked in the UI, and a badge in the stock status bar while it’s on.

07 — Notes from the build

A day without the phone

The goal was simple: leave the phone in a drawer and carry a retro handheld instead. Here’s what that covers.

  • Waking up. The alarm clock rings at a set time and can play one of your radio stations instead of a beep. Snooze is any button.
  • Commute. Live radio (BBC Radio 4, 6 Music, World Service, plus anything on radio-browser.info by genre or country) and podcasts, with episodes downloaded at home for offline listening.
  • Lunch. YouTube with search, your real subscriptions and resume points, or Listen mode for audio only with the screen off.
  • In your pocket. The power key locks it like a phone: time, what’s playing, play/pause and skip. It dozes to save battery but keeps playing, and Wi-Fi turns off when what’s playing is already downloaded.
  • Headphones. Pair Bluetooth buds and everything follows them: menus, radio, YouTube and games. The headset mic works too.
  • And games, of course.

Why it works on stock firmware

Nothing is flashed. A drop-in app on the SD card starts the new launcher from the stock menu, and every feature lives on the card. Missing kernel pieces (USB networking, zram, a speaker fix) are built as loadable modules against Anbernic’s own kernel config. Take the card out and it’s a stock handheld again.

Credits

Forked from rg35xxp-unchained (itself from rg35xxh-ssh) and rewritten for the 2026 64-bit firmware.