Is there a way to self compile or diy method to use cd player?

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 or cdparanoia (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 or cdparanoia -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, or cdrdao + 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,

1 Like