Hi,new user here ^^. I saw latest version 4.020 support new cd player. I knew cd plugin need premium sub. , i just want to ask if there is any way to self compile or diy method to use cd player ? Thank you
Hey @BQ_H,
Welcome to the community! You’re absolutely right: the official CD-ROM plugin in Volumio is part of the MyVolumio Premium suite. While the underlying components (like libcdio
, cdparanoia
, etc.) are open source, the actual execution logic of the plugin is Volumio’s intellectual property and cannot be reused directly.
However, you can build a community plugin with similar functionality, provided it’s developed independently and does not reuse any closed-source code from the official plugin. Here are some potential paths:
1. CD Audio playback (Community Version)
Goal: Enable bit-perfect or near-bit-perfect playback of standard Audio CDs via /dev/sr0
.
Tools:
libcdio
orcdparanoia
(for raw CDDA track extraction)aplay
or direct piping into ALSA device- Optional: integrate with
mpd
via FIFO or custom mount point
Approach:
-
Build a Node.js plugin that:
-
Detects an inserted CD (poll
/dev/sr0
or listen for udev events) -
Parses TOC using
cd-info
orcdparanoia -Q
-
Extracts and plays each track using:
cdparanoia -d /dev/sr0 1 -
and pipe to ALSA (aplay -f cd
)- Or create temporary WAVs in
/tmp
and play them using Volumio’s queue interface (requires some scripting)
-
2. Metadata fetcher (optional)
Tools:
libdiscid
+musicbrainz
lookup- Alternatively: call
abcde
in metadata-only mode - Display metadata via Volumio UI (requires integration through REST API or symbolic playlist injection)
Note: Metadata display is not strictly required for playback and can be deferred.
3. Ripping feature (optional)
Tools:
abcde
,cdparanoia
, orcdrdao
+ LAME/FLAC- Store in
/data/INTERNAL/CD Rips/Artist/Album/Track.ext
Approach:
- Expose a “Rip CD” button
- Write a state-machine job handler to rip tracks sequentially and tag them properly
- Optionally push new files into Volumio’s library rescan
4. UX integration
-
Minimal route:
- Add a new “CD Playback” entry in the plugin menu
- Clicking it scans CD and plays Track 1
-
Full route:
- Inject virtual playlist into Volumio queue
- Use dummy URIs with custom handlers
Important
- All udev, MPD, or systemd interactions must be written from scratch or derived from open examples.
- The plugin can be made available via GitHub or Volumio forums as a community installable tarball.
If you’re comfortable with Node.js and bash, this can be a very rewarding weekend project, and you’ll be giving something great back to the community.
Kind Regards,