Open-Source Hardware MP3 Player Hands-On: Building a Self-Hosted Music Terminal for $50

A $50 open-source M5 Core2 MP3 player deeply integrated with the self-hosted mStream music server.
A developer shared an open-source MP3 player project on Reddit built on the M5 Core2 (ESP32) board for around $50. It supports Bluetooth, a 3.5mm jack, built-in speaker, MP3 and FLAC playback, up to 2TB SD cards, and BPM detection. The key differentiator is deep integration with the self-hosted music server mStream — firmware updates and music file management are both handled server-side, eliminating manual SD card operations. The software is open source on GitHub but still in active development, targeting self-hosting enthusiasts and ESP32/M5Stack makers.
An Underrated Idea: Self-Hosted Music Hardware
Streaming subscriptions dominate music consumption, but a dedicated community of developers and enthusiasts still insists on keeping their music under their own control. One developer recently shared an open-source MP3 player project on Reddit — and this isn't just a standalone device. It's a hardware terminal deeply integrated with the self-hosted music server mStream.
The real value of this approach is that it bridges two previously disconnected worlds: "local music playback" and "self-hosted media management." You get the independence of a physical device while using a server to centrally manage both firmware and your music library.

Hardware Specs: Pragmatic Trade-Offs for $50
This player is built on the M5 Core2 development board, with an all-in total cost of around $50. Based on the published specs, it makes a remarkably balanced set of trade-offs given the low price point:
- Connectivity: Supports Bluetooth, a 3.5mm headphone jack, and a built-in speaker — covering everything from personal listening to desktop playback
- Storage: Supports SD cards up to 2TB, which is more than generous for a FLAC lossless music library
- Battery: Ships with 500mAh standard, upgradeable to 2000mAh for different endurance needs
- Format support: Plays both MP3 and FLAC files, covering both compressed and lossless audio
- Extra feature: Built-in BPM (beats per minute) detection
The M5 Core2, an ESP32-based development board with an integrated touchscreen, power management, and multiple interfaces, is already a mature platform in the maker ecosystem. Choosing it as the foundation keeps both development complexity and hardware costs under control, and makes it easier for the community to contribute and fork the project.
The Potential of BPM Detection
Adding BPM detection to an entry-level device like this is an interesting choice. For runners, gym-goers, or DJs, beat information can be used to match workout tempo or organize playlists. While the project doesn't go into much detail on use cases for this feature yet, it lays the groundwork for smart playlist generation, rhythm visualization, and other creative applications down the road.
M5 Core2 is a modular development board from Shenzhen-based M5Stack, powered by Espressif's ESP32-D0WDQ6-V3 dual-core processor running up to 240MHz, with built-in Wi-Fi and Bluetooth 4.2/BLE. It retails for roughly $35–45. The board integrates a 2-inch 320×240 touchscreen, an IMU sensor, an RTC real-time clock, an AXP192 power management chip, and Grove expansion ports — making it M5Stack's flagship entry-level board for advanced prototyping. Compared to a bare ESP32 module, the M5 Core2 dramatically lowers the barrier to peripheral integration: developers don't need to design their own touchscreen drivers or power management circuits, and can build directly on top of Arduino or the ESP-IDF framework. This makes it a popular base for DIY projects — like audio players and portable instruments — that require both a UI and battery management.
mStream Integration: The Real Highlight
What truly sets this project apart from a typical DIY player is its co-design with mStream. mStream is an open-source, self-hosted music streaming server that lets users deploy their own music library on a home NAS or cloud server and access it from anywhere.
In this setup, mStream handles two key responsibilities:
- Firmware update management: Device firmware updates are distributed and maintained through the server
- File management: Music files on the SD card are organized and synced by mStream
This means users don't need to constantly pull out the SD card to manually load music, and firmware updates become painless — the server becomes the central hub of the entire experience. For anyone already running a self-hosted media setup, this player can slot seamlessly into their existing workflow.
mStream is a lightweight, open-source music streaming server written in Node.js. It supports Linux, macOS, and Windows, and can be deployed on a Raspberry Pi, NAS, or VPS. It provides a browser-based web player and exposes a REST API, allowing third-party clients — including the hardware player described here — to fetch library metadata, cover art, and audio file streams via standard HTTP requests. Compared to general-purpose media servers like Plex or Jellyfin, mStream is laser-focused on music, has an extremely low resource footprint, and is well-suited to running persistently on low-power devices. Its "Pocket" feature also supports offline sync — users can cache selected tracks to a local device — which aligns perfectly with this project's approach of using the server to centrally manage SD card content.
Open Source and the Reality of "Work in Progress"
The developer is upfront that the project is still a work in progress, though the software is already open source and hosted on GitHub. That's worth keeping in mind: right now, this is better suited for technically inclined tinkerers who are comfortable with rough edges, rather than everyday consumers expecting a plug-and-play experience.
The biggest benefit of being open source is transparency and extensibility. Anyone can read the code, submit improvements, or even clone and modify their own version based on the same M5 Core2 hardware. For users worried about commercial players being discontinued, privacy concerns, or format lock-in, the "total ownership" model here is genuinely compelling.
Who Should Pay Attention
All things considered, this $50 open-source player is aimed at a specific audience:
- Users already running a NAS or self-hosted services who want their music consumption to fit into the same ecosystem
- Enthusiasts fatigued by streaming subscriptions who want to own a physical music device
- Makers who enjoy the ESP32/M5Stack ecosystem and want to participate in open-source hardware development
If you're just looking for an out-of-the-box music player, it's probably not quite there yet. But conceptually, combining open-source hardware, lossless audio, and a self-hosted server represents a compelling "decentralized music consumption" philosophy worth watching. As the project matures and community involvement grows, it has real potential to become a practical addition to the self-hosting world.
Related articles

Amphibious Transforming Drone: Beyond 100x Power Savings, What Are the Real Needs?
Is the amphibious transforming drone just a gimmick? Starting from the 100x power difference of the M4 Morphobot, explore real application scenarios and thesis topic ideas, analyzing boundary conditions where pure drones and pure ground robots both fail.

Warhound Raises $200 Million: Genetically Engineered "War Dogs" Paired with Anduril Gear
Warhound raises $200M, backed by Ben Lamm and Palmer Luckey, to genetically engineer dogs for military and law enforcement use and equip them with Anduril gear. This article analyzes its technology direction, funding logic, and ethical controversy.

Claude API Comes to Google Cloud: IAM Integration and SDK Access Guide
Anthropic hosts the full Claude API on Google Cloud with IAM-controlled permissions and unified billing. This guide covers the Vertex AI and Anthropic-hosted entry points, IAM role configuration, and SDK access.