When I first looked at the M5StickS3 specifications, I immediately thought of the dedicated MP3 players I used about 20 years ago. Its compact body already contained a display, physical buttons, Wi-Fi, an ESP32-S3, and enough flash and PSRAM for audio decoding and a responsive interface. It felt like the right foundation for rebuilding that familiar kind of pocket player with modern network features. The idea sounded both nostalgic and genuinely fun to make.
I wanted the result to behave like a dedicated device, not a smartphone accessory or a development board with wires attached. It should start quickly, work through physical controls, show the important information at a glance, play through wired headphones, and switch between live Internet radio and MP3 files on a microSD card.
The result is Pocket Audio Deck: a custom expansion board, a two-part 3D-printed enclosure, and Arduino firmware that turns the M5StickS3 into a Web Radio and microSD MP3 player.
From the first prototype to a dedicated audio boardThe first prototype played network audio through the M5StickS3's built-in audio hardware. That was useful for proving the streaming and UI concepts, but a pocket player also needs wired headphone output, removable storage, and controls that can be operated without navigating menus.
I designed a dedicated Pocket Audio Deck board in KiCad. The board connects to the M5StickS3 expansion pins and adds:
- A PCM5102A stereo I2S DAC
- A TPA6132A2 stereo headphone amplifier
- A 3.5 mm headphone jack
- A microSD card socket
- Two previous/next switches
- A left/right/push control for volume and mute
The M5StickS3 remains the controller. It handles Wi-Fi, network protocols, MP3 decoding, metadata, FFT processing, the display, button logic, persistent settings, and mode switching. The custom board handles audio conversion, headphone drive, storage, and ergonomic controls.
The first prototype received far more attention on X than I expected. That response showed me that the idea resonated beyond my own nostalgia and was worth developing into a complete, purpose-built device.
Hardware architectureThe custom board was designed specifically around the M5StickS3 HAT2 expansion format. Fitting headphone audio, microSD storage, and tactile controls into that compact footprint required careful placement and routing, but it allowed the finished device to feel like one integrated player rather than a stack of development boards.
The design started from the experience I wanted: clean stereo sound through wired headphones and controls that could be used without navigating menus. I selected a dedicated stereo DAC and headphone amplifier for that purpose, then arranged the microSD slot, track buttons, volume control, and headphone jack around the way the player would actually be held and used.
The important point is not the individual signal path, but that the HAT2-size board gives the M5StickS3 everything it needs to behave like a real portable audio player. The PCB, controls, and enclosure were designed together, with sound quality and everyday usability treated as the main requirements rather than afterthoughts.
EnclosureBecause the original idea was to recreate the directness of an older dedicated MP3 player, I deliberately kept the enclosure simple. The M5StickS3 and the custom PCB fit tightly into one continuous package instead of looking like two development boards joined together.
The side layout follows the familiar arrangement of portable audio players. The volume control and microSD slot can be reached without turning the device into a menu-driven gadget, while the previous and next tact switches are positioned for quick operation. I also designed small 3D-printed button caps around the switches so they are easier to find and press while still being printable as part of a compact enclosure.
And this is secured from the rear using M2 x 6 mm self-tapping screws at the headphone-jack and USB-connector sides. This prevents it from coming apart during everyday carrying while still allowing deliberate disassembly for maintenance.
Finally, I added an integrated strap loop. It is a small detail, but it changes the project from something that lives on a workbench into something that can actually be carried like the pocket audio players that inspired it.
The public firmware includes four listener-supported SomaFM stations using direct HTTP MP3 streams:
- Groove Salad
- Drone Zone
- Indie Pop Rocks!
- Space Station Soma
The player reads ICY stream metadata and displays the current track title. Long titles remain on one line and scroll only when they do not fit. During normal playback, the screen prioritizes station and track information above a real 16-band spectrum analyzer calculated from decoded PCM data; the visualization is delayed by about 180 ms so it follows the sound heard through the headphones. Connection and buffering messages appear only when audio is not yet available, and localized sprite updates prevent full-screen flicker as the stream state or metadata changes.
I also developed and hardware-tested a private version that can play radiko, a Japanese service for listening to live radio and podcasts. This mode can show the current station and program information and uses the same physical controls, headphone output, and spectrum interface as the public Web Radio edition.
The radiko implementation is demonstrated in the project video, but its service-specific authentication and streaming code is intentionally not included in the public repository. The reproducible public build therefore uses open HTTP MP3 radio streams, while the private version shows that the same Pocket Audio Deck hardware can also serve as a practical Japanese radio receiver.
MP3 mode was designed to bring back the feel of the dedicated players I used about 20 years ago. The display can switch between a real audio-reactive spectrum analyzer and a seek/progress view with elapsed and remaining time, so it can look lively during playback or show practical timing information when needed.
It also includes the controls expected from a complete music player: play/pause, previous and next track, Repeat One, Repeat All, and Shuffle. A built-in equalizer allows the sound to be adjusted directly from the physical controls. Track title and artist are read from ID3 metadata, and long text scrolls automatically when it does not fit.
The player detects microSD insertion and removal, disables Wi-Fi during local playback, and remembers its last volume, playback, display, and equalizer settings. Localized sprite updates change only the affected area when repeat mode, volume, or other settings change, keeping the small display stable and flicker-free.
Pocket Audio Deck is not just a Web Radio sketch. It combines an M5Stack controller, a purpose-built audio PCB, physical controls, removable storage, a responsive low-flicker interface, real PCM-based visualization, persistent settings, and a printable enclosure into one reproducible pocket device.
The public firmware intentionally uses direct HTTP MP3 radio streams that other makers can test without regional authentication. The source code, schematic PDF, and enclosure STEP files are all available in the GitHub repository.
ResultThe finished device boots into the last-used mode, remembers the last station and listening volume, plays live Web Radio or local MP3 files, and can be controlled without taking out a phone. It captures the direct, tactile feeling of a dedicated MP3 player while using the M5StickS3 as a modern networked audio controller.
- Public firmware and hardware files: https://github.com/norippy-i/PocketAudioDeck-WebRadio
- M5Stack Global Innovation Contest 2026: https://m5stack.com/global-innovation-contest-2026
- SomaFM listen page: https://somafm.com/listen/







Comments