AI Passport Radio: a self-contained radio for young listeners

on air

HDT CoLab · Embedded · ESP32-C3

AI Passport Radio: a self-contained radio for young listeners

Internet-radio firmware for a handheld children already recognise. Forty-nine stations from three places, played straight from the broadcaster, with no phone and no browser in the loop.

  1. 49stations, three regions
  2. 3buttons, one screen
  3. 8 MBof flash, one application

forty-nine stations, three regions

  • 6 Hong Kong RTHK channels
  • 17 Singapore Mediacorp stations
  • 26 Malaysia Astro Radio · RTM

Both MP3 and AAC decoders are linked in, the now-playing line is read out of the ICY metadata stream, favourites survive a reboot, and a long press of up or down switches region. Every address in the catalogue was measured before it was committed: an HTTP 200 plus at least five valid frame headers, which is what keeps out the links that answer politely and then play nothing.

transmission log

The AI Passport is a small handheld: an ESP32-C3 with a screen, three buttons, a speaker and 8 MB of flash. It does one thing at a time, which is exactly what makes it teachable.

Wi-Fi scanning, the network list, the on-screen keyboard and the password entry all live on the device, so no companion app is needed. Favourites survive a reboot and the last station resumes by itself.

the device

The AI Passport is a small handheld: an ESP32-C3 with a 240 by 320 screen, three buttons (up, down and OK), a speaker and 8 MB of flash. It was designed as a companion for children, which is precisely why it makes an interesting teaching platform: it is a computer a young person can hold, and it does one thing at a time.

system on chip
ESP32-C3
display
240 × 320
keys
three — up / down / ok
flash
8 MB
toolchain
ESP-IDF 5.5.3
term
Fall 2026

what the firmware does on its own

  • Wi-Fi scanning, the network list, the on-screen keyboard and the password entry all live on the device — no companion app, no captive portal.
  • The screen can be switched off while the music keeps playing.
  • A sleep timer stops playback, shuts the peripherals down in order and puts the device into deep sleep.
  • The last station is restored and resumed on the next switch-on.
  • A battery gauge reads the charge.
  • A generated CJK font is compiled in as the fallback, because network names and track titles are not always ASCII.

why it matters in education

Think of the AI Passport as the Raspberry Pi of the AI era.

It is a small, inexpensive, self-contained computer that a child can hold in one hand and take apart in software, and it was meant from the start to be handed to young people rather than to specialists.

This radio is a firmware demonstration of what that platform can carry: a board support layer, a station catalogue, an MP3 and AAC decoding path, a state machine, Wi-Fi provisioning with an on-screen keyboard, favourites, a sleep timer and a CJK font — all compiled from source with ESP-IDF into 8 MB of flash.

For K-12 computer science that is the whole point. A class can take the demonstration apart: change the station catalogue, alter the state machine, run the host tests and flash its own build. Embedded systems, C, networking, audio, user interface and testing stop being separate chapters and become one program the students hold in their hands.

Because the device is deliberately single-purpose it is also easy to teach with: nothing on it can lead anywhere else, the radio plays without a phone or a browser in the loop, and a teacher can hand one out without handing over an afternoon of the internet.

how it is checked

verified

Playback from all three regions, Wi-Fi scanning, password entry through the on-screen keyboard, favourites, the auto screen-off and both the settings and playing pages have been verified on the board.

next

The sleep timer's deep-sleep hand-off and the double-press screen-off gesture are implemented, and are the next things to confirm on hardware.

This radio is a demonstration. The platform is the point, and the platform is meant to be programmed.

Back to all projects