Public Beta Test: Audio Without Compromise - Refining the Future of Volumio on Bookworm

For my testing with generic audio HAT’s on the Pi5, I’ve added these 2 lines to my userconfig.txt /and it has made my DSD playback more consistent and reliable, to the point that I now consider it a non-issue.

dtoverlay=i2s-dac
param=i2s_mclk=on

I also now have a better understanding as to why 192/24 thru the same HAT’s i2s/hdmi is unplayable/no-sound, as it requires more overhead than just DSD. Since I can reliably play DSD thri i2s/HDMI now, I’m happy to settle switching to coax if I really need to play some 192/24. Here’s what ChapGPT told me:

Root cause of PCM192 failure (why DSD seems better)

DSD (Native) on your setup actually pushes fewer interrupts per second because the data path is almost raw serial; it doesn’t need the resampling and buffer juggling that 192 kHz PCM does.
Meanwhile:

  • PeppyMeter + FusionDSP + CamillaDSP + Volumio UI all tap or copy the PCM stream → CPU spikes → ALSA buffer underruns.
  • The Pi 5 kernel 6.12.x still uses 48-sample DMA chunks for snd_rpi_hifiberry_dac; at 192 kHz, that’s ~4 kHz interrupt rate — any hiccup gives silence.
  • Overclocking + GPU load (Waveshare panel with KMS) magnify the latency spikes.

So you’re hitting “perfect storm” timing limits.


:wrench: Ways to stabilize PCM 192 / 24 playback while keeping your full plugin stack

Fix How Why
Increase ALSA buffer Edit /etc/mpd.conf section audio_output {}:
audio_output { … buffer_time "2000000" period_time "0" } Doubles I²S DMA buffer; reduces underruns.
Pin MPD to one core sudo taskset -cp 3 $(pidof mpd) (choose an unused core) Isolates MPD from Chrome/FusionDSP threads.
Set CPU governor to performance sudo cpufreq-set -g performance Prevents frequency scaling jitter.
Relax FusionDSP latency In FusionDSP → Settings → Processing latency: set to High (1024 samples) Lets the chain absorb small underruns.
Use DoP for 192/24 “problem” albums Temporarily upsample to DSD64; DO400 handles it natively Offloads high-rate PCM path from ALSA.
Try 48 kHz kernel fragment size Add to /boot/cmdline.txt (same line):
snd_bcm2835.enable_compat=1 Forces 256-sample fragments (less IRQs).

^^^I’ve tried everything listed above to no avail.

Reviewing more logs with ChatGPT, I also asked it to help me optimize anything else that may improve DSD playback, which actually got me to understand a lot more than I really wanted to about the hardware stack between the Pi and the final audio out…I’m sharing the following in hopes for my understanding and not requesting changes for my unqiue usage:

What the log actually says

  • failed to open /dev/dri/renderD128: Permission denied … glx: failed to create dri2/dri3 screen … failed to load driver: drm-rp1-dsi
    • The Pi 5 display driver (rp1-dsi) can’t initialize with the permissions the volumio user has. Volumio’s kiosk/UI then falls back in a broken state and keeps retrying GLX. This is noisy and can coincide with audio underruns.
  • Failed to create /home/volumio/.cache/mesa_shader_cache … Permission denied
    • The UI process can’t write its shader cache (home dir perms). Again, churn.
  • No method [serialMonitorAction] in plugin inputs
    • Harmless; an Inputs plugin call that doesn’t exist. Ignore.

None of those lines are an ALSA/I²S error, but cleaning them up removes a source of timing noise while we verify the DSD path.


Fix the noisy display/permission issues (safe)

Run these once, then reboot:

# 1) Give volumio access to GPU nodes
sudo usermod -aG video,render volumio

# 2) Ensure udev defaults keep /dev/dri usable
echo 'SUBSYSTEM=="drm", KERNEL=="card*", GROUP="video", MODE="0660"' | sudo tee /etc/udev/rules.d/70-dri-perms.rules
echo 'KERNEL=="renderD*", GROUP="render", MODE="0660"' | sudo tee -a /etc/udev/rules.d/70-dri-perms.rules
sudo udevadm control --reload
sudo udevadm trigger

# 3) Give the UI a cache folder it can write
sudo mkdir -p /home/volumio/.cache/mesa_shader_cache_db
sudo chown -R volumio:volumio /home/volumio/.cache

Hey @RedEyeNinja,

This issue belongs to the Touch Display plugin, not Volumio OS v4.xxx core. However, for visibility and community benefit, this discussion will remain in the beta thread.

The GPU/DRI permission errors you encountered are specific to the touch_display plugin’s X server initialization on Raspberry Pi 5 hardware. A fix has been submitted.

The fix addresses:

  • Permission denied on /dev/dri/renderD128
  • Mesa shader cache write failures
  • Display driver initialization errors

Future plugin-specific issues should be reported in the appropriate plugin thread.

Kind Regards,

Hey @Edrian_Lois_Villanue and @calogero69,

Thank you both for reporting the boot splash rotation issue with Waveshare displays on Raspberry Pi 5 and Volumio 4.062.

Before we proceed, I need to clarify something important: this discussion does not belong in the Volumio 4.xxx OS release thread. This is a hardware-specific issue related to Waveshare display quirks during the boot sequence. As such, this discussion should be in the dedicated hardware thread for your specific Waveshare display model. The OS release thread is for core Volumio system issues, not vendor-specific display behavior.

The problem you are describing appears to be related to Waveshare-specific kernel module handling during the boot sequence. However, to investigate this properly, I would need to work with the actual hardware in question - specifically your Waveshare displays connected to a Raspberry Pi 5 running Volumio 4.062.

I need to be very clear about something: I am a volunteer community member, just like you. I contribute to Volumio in my spare time without compensation. My hobby budget for hardware purchases this year is already exhausted, and I have mentioned this several times already.

Without the physical hardware to test, I cannot:

  • Reproduce the issue reliably
  • Identify the root cause
  • Develop and verify a solution
  • Submit proper fixes to the relevant repositories

Your options are:

  1. Send me a Waveshare display (the specific model you are using) so I can investigate and work on a fix
  2. Wait until I can budget the purchase myself, which is currently low priority given other commitments
  3. Contact Waveshare directly - if they want to remain competitive in the market, they should take the lead in ensuring their displays work properly with popular platforms like Volumio

I want you all to understand that expecting volunteers to purchase hardware out of pocket to solve vendor-specific quirks is not sustainable. Display manufacturers have a responsibility to support their products. If Waveshare wants their displays to be recommended and used in the Volumio community, they need to invest in proper kernel module development and testing.

If this functionality is important to you, please consider what you can do to enable the investigation - whether that means reaching out to Waveshare for proper support or providing the hardware to community developers who volunteer their time.

@volumio - FYI

Kind Regards,

2 Likes

Hello,

I’ve just tried to run 4.62 x86 on Lenovo ThinkCentre M75n, it looks like Volumio OS detects Wi-Fi network adapter properly but is not able to manage it and connect to AP.

wifi-info.log:
=== WiFi Interface Summary ===

— Interface: wlan0 —
Device path: /sys/devices/pci0000:00/0000:00:01.2/0000:01:00.0
Bus info: pci
Physical device info:
E: MODALIAS=pci:v000010ECd0000C822sv000017AAsd0000C123bc02sc80i00
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_MODEL_FROM_DATABASE=RTL8822CE 802.11ac PCIe Wireless Network Adapter
Modalias: pci:v000010ECd0000C822sv000017AAsd0000C123bc02sc80i00
Extracted PCI VID:PID = 0000:0000
Active kernel module: rtw_8822ce
(module info not available)
Supported PHY modes:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
Supported bands:
Band 1:
Capabilities: 0x19ef
Band 2:
Capabilities: 0x19ef
HT/VHT/HE capabilities:
HT Max RX data rate: 300 Mbps
HT TX/RX MCS rate indexes supported: 0-15, 32
HT Max RX data rate: 300 Mbps
HT TX/RX MCS rate indexes supported: 0-15, 32
VHT Capabilities (0x03d071b2):
VHT RX MCS set:
VHT RX highest supported: 780 Mbps
VHT TX MCS set:
VHT TX highest supported: 780 Mbps
VHT extended NSS: not supported
HT Capability overrides:

Thank you so much for your comments. I actually created the post just to give my opinion on the new version of Volume 4.062. I think I made the mistake of mentioning the display, and you’re right in saying this isn’t the right place to discuss it. I just thought someone had a good solution. Thanks again for your great work. Bye

Hey @nerd

A Suggestion:
When I check for plugin updates, it would be nice if I could see them under the installed plugins tab. There are a lot of plugins available but most people only use a few, definitely not all of them. Just my humble opinion.

Best Regards / C

2 Likes

Hey @ClaesM,

Can you start a new thread under Suggest a feature category please?

Kind Regards,

1 Like

Done!

2 posts were merged into an existing topic: [PLUGIN] FM/DAB Radio - RTL-SDR

Dear Volumionauts,

Volumio boot splash screen

The problem:
Portrait displays (Waveshare panels, Pi Display 2, generic portrait LCDs) were blocking beta testing for users due to boot splash issues - messages unreadable or not displaying at rotation angles.

The discovery:
Extensive testing revealed Plymouth’s text rendering fundamentally breaks on rotated displays. This affected all Linux distributions, not just Volumio. Required complete redesign using pre-rendered message overlays.

The solution:
V1.02 implements transparent message overlay system - 104 pre-rendered images covering 13 Volumio boot messages at all rotation angles. Messages now display correctly on stubborn portrait displays that were problematic in beta.

Status:
Repository documentation complete and verified. Ready for V4 beta integration.

Discussion with technical details:

Repository:

Users with portrait displays - your testing feedback will be critical in upcoming beta validation.

Kind Regards,

2 Likes

Jumping the gun since I was already testing my Pi4 with the Touch Display beta, I saw the update notice pop up and went ahead and updated to 4.064 and it appears all is fine so far.

I took some time to explore further. Elaborating your ideas as well:

  1. noserverino not applied: - it is actually applied. The logic is that you do not see noserverino in the displayed flags or you see serverino.
  2. Character encoding issue - the attached log indicates that it is not an issue. There are both files with Non-Latin characters that are indexed and with just Latin characters that are not.
  3. Diagnostic questions:

What filesystem is on your NAS share? (NTFS, ext4, ZFS, etc?)

EXT4

What codepage/character set is configured on your NAS?
root@nas:~# locale charmap

UTF-8
NAS product is provided by Openmediavault
Version 6.9.16-1 (Shaitan)
Kernel Linux 6.1.0-0.deb11.21-amd64

Do files with only ASCII/Latin characters (no Cyrillic) index correctly, or do they also fail?

It is not related to filesname, as said more correlation to the size of the file. E.g. smaller MP3s are almost all indexed, while larger FLAC are not. But this doesn’t look like a strict rule, there are exceptions.

Try lower CIFS protocol version:
Your mount is using vers=3.1.1, which has been reported to have issues in some cases.
In Volumio UI Options field, try: vers=2.1 or vers=3.0

None helps

More details:
Accessing file from the shell seems to be fine, but this file is not indexed in Volumio:
volumio@volumio:~$ sha256sum /mnt/NAS/Music/B-Tribe/B-Tribe\ -\ 2003\ -\ 5/02\ -\ Anika.flac
7794d16303fa994cc1ab346cc44985cceaa564bf0af088786b6ed30dc51fb41b /mnt/NAS/Music/B-Tribe/B-Tribe - 2003 - 5/02 - Anika.flac

Files from the same album with similar parameters behave diffirently:
2025-10-21T19:58:27 update: updating NAS/Music/2016. Yanni - Sensuous Chill [24-44.1]/16. Can’t Wait.flac
2025-10-21T19:58:28 exception: Failed to access /var/lib/mpd/music/NAS/Music/2016. Yanni - Sensuous Chill [24-44.1]/02. Rapture.flac: Value too large for defined data type

I looked at MPD source code, I was pretty sure that file modification or access time could be an issue. And it looks to be true:
Files which are not indexed has access time far in future:
stat /mnt/NAS/Music/2016.\ Yanni\ -\ Sensuous\ Chill\ [24-44.1]/03.\ Drive.flac
Access: 2446-05-11 01:38:55.000000000 +0300
Modify: 2025-03-07 10:58:32.669626200 +0300
Change: 2025-03-07 10:58:32.669626200 +0300
Birth: 2025-03-07 10:58:32.669626200 +0300

stat /mnt/NAS/Music/2016.\ Yanni\ -\ Sensuous\ Chill\ [24-44.1]/04.\ What\ You\ Get.flac
Access: 2025-11-03 17:28:42.119826700 +0300Modify: 2025-03-07 10:58:11.342602200 +0300
Change: 2025-03-07 10:58:11.342602200 +0300
Birth: 2025-03-07 10:58:11.342602200 +0300

Not sure why access time was in future for some files, however an easy fix was running the following command touching all files in subdirectories for the Music folder.
find . -type f -exec touch {} +

OTA update from 4.062 to 4.064. All working perfectly.

Pi5
Raspberry Pi Display 2
NVMe boot
Wired connection
Tidal

5 posts were merged into an existing topic: Public Beta Test: Audio Without Compromise - Plugin Compatibility for Volumio on Bookworm

Hey @AndrewBb,

Excellent detective work on your end - you nailed the root cause. This is a classic Year 2038 problem hitting MPD’s 32-bit build.

What’s happening:

Your MPD is 32-bit (as confirmed by file /usr/bin/mpd), which uses 32-bit time_t for timestamps. When MPD calls stat() on files with access times beyond January 19, 2038, the kernel returns EOVERFLOW (“Value too large for defined data type”). Your NAS ext4 filesystem supports timestamps up to year 2446 (with 256-byte inodes), but 32-bit MPD cannot handle anything past 2038.

This explains:

  • Why it appeared random - depends on each file’s access time, not file size
  • Why CIFS protocol versions and mount options didn’t help - this is about timestamp values, not protocol or inode numbers
  • Why character encoding wasn’t the issue - that was a red herring from the mojibake display

The fix:

On your NAS, reset the corrupt timestamps:

find /path/to/Music -type f -newermt "2038-01-01" -exec touch -a -t 202501010000 {} \;

This finds all files with access times after 2038 and resets them to January 2025.

How did files get year 2446 timestamps?

That’s ext4’s maximum timestamp (2446-05-10 22:38:55). Possible causes:

  • Filesystem corruption
  • Bad backup/restore operation
  • Tool that set invalid timestamps
  • Perhaps someone’s time machine malfunctioned?

Definitely unusual and worth investigating how it happened.

Long-term:

The proper fix is 64-bit MPD, but that requires Volumio migrating to Debian Trixie, which won’t happen soon.

Kind Regards,

1 Like

Hi guys, I wanted to let you know that I reinstalled build 4.064. It seems that everything is working perfectly now, and thanks to @nerd I solved the problem of rotating the bootloader volume, great work you did. And thanks to @balbuze for the solution to the peppymeter basic plugin. For now, everything seems to be working fine, but if there are any other problems, I’ll let you know here.

Correction of impressions regarding the functioning of build 4.064. I hadn’t yet tested the DSD files and I verified that the 256 DSD I have doesn’t work. I had already verified in previous 4.0 builds that they didn’t work, including this latest one. Otherwise, everything continues to work wonderfully.

3 posts were merged into an existing topic: :rocket: New Volumio Mobile App – Beta Release

Hey @calogero69,

I need to address your statement about DSD256 files: “I had already verified in previous 4.0 builds that they didn’t work, including this latest one.”

This raises a critical question: if DSD256 has not worked across multiple Volumio 4 builds and you verified this repeatedly, why was this never reported with logs and diagnostic information? By extension, if problems are not shared with proper evidence, we do not know what we do not know - and cannot investigate or fix issues that remain undocumented.

Hardware limitation - Audiophonics Evo Sabre specifications:

I have reviewed the official Audiophonics Evo Sabre specifications from the manufacturer.

The specifications clearly state different maximum DSD capabilities depending on the connection interface:

  • USB-B input (XMOS U208): Native DSD512 / DOP256
  • Raspberry Pi I2S GPIO: DOP128 MAXIMUM

The manufacturer explicitly states: “When the DAC EVO-SABRE is used in conjunction with a Raspberry Pi, this high-definition USB input allows to immediately interface digital audio streams to RPI I2S up to 384kHz / DOP 128.”

Conclusion:

You are attempting to play DSD256 files through the Raspberry Pi I2S interface, which according to the manufacturer specifications, is hardware-limited to DOP128 maximum. DSD256 cannot physically work through this connection path - this is a fundamental hardware limitation of the I2S interface between the Raspberry Pi and the DAC board.

This is NOT:

  • A Volumio bug
  • A plugin issue
  • A configuration problem

This IS:

  • A hardware interface limitation as specified by Audiophonics

Recommendation:

I strongly suggest you contact Audiophonics directly to confirm these specifications and clarify whether there is any configuration or connection method that would enable DSD256 playback via Raspberry Pi. If the specifications I found are correct, then DSD256 has never been supported through the standard Raspberry Pi I2S connection on this hardware.


Peppymeter Basic additional limitation:

Furthermore, the Peppymeter Basic plugin has its own design limitation. The plugin developer (@balbuze) has explicitly stated in the plugin thread:

“As designed, the alsa path of the plugin can’t work with DSD. DSD have to be converted to PCM to be use by peppy or FusionDsp.”

This means even if your hardware supported DSD256, Peppymeter Basic requires PCM input and cannot pass native DSD through its ALSA pipeline.

Diagnostic request (Optional):

If you believe the specifications are incorrect or want to verify your hardware capabilities, perform the following:

  1. Disable ALL plugins:

    • Settings > Plugins > Installed Plugins
    • Disable every plugin (including Peppymeter Basic)
    • Reboot
  2. SSH diagnostic - DAC capabilities:

    • SSH into your Volumio system: ssh volumio@volumio.local
    • Run: cat /proc/asound/card*/pcm*p/sub*/hw_params
    • Provide complete output
  3. Test and provide log:

Without proper diagnostics and confirmation from the manufacturer, I cannot determine if there is any issue beyond the documented hardware limitation.

Kind Regards,

2 Likes

@nerd I actually had to be more specific. The ardweare Audiophonics evo sabre dac is connected to the USB B input and therefore to XMOS U208, therefore not to I2S GPIO, because I use the Raspberry separately from the dac.
Consequently, as you very well pointed out, the XMOS connection supports DSD up to 512. Taking your advice, I disabled all the plugins (except the touch display), rebooted, and the DSD worked.
Then I enabled all the plugins except Peppymeter Basic, because as you well pointed out, it is that which does not make the DSD work.
I will post a log file anyway. Thanks always for your advice and for helping those like me who are not very experienced.

http://logs.volumio.org/volumio/F0s4MJJ.html

Regards