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

Hey @hifiswede,

Thanks for sharing your script and systemd service solution - this is a great example of forward thinking. Your workaround confirms that once the adapter is given enough time post-boot, it can reliably associate and acquire an IP. That’s very helpful confirmation.

We’re currently evaluating the broader implications of this approach across the Volumio ecosystem. While your setup works well on Raspberry Pi 5 with the COMFAST CF-953AX, we also need to consider:

  • x86-based devices (NUC, PC-style platforms)
  • SBCs with onboard or USB-attached wireless chipsets
  • Other ARM platforms with different init timing

Any core-level adjustment to wireless bring-up (including delayed activation or fallback mechanisms) must be carefully reviewed to ensure it doesn’t break hotspot fallback, first-time setup, or wired-first detection logic on other supported systems.

I appreciate you taking the time to test and document this in detail - it’s exactly the kind of practical insight that helps us refine the platform for edge cases like this.

I’ll follow up if a general solution based on this pattern makes its way into the core.

Kind Regards,

1 Like

its sadly useless anyway ive noticed since volumio cleans my mpd database if network share isnt mounted at boot… I need to delay the start of volumios network somehow but cant figure out how

Dear @nerd, I will test the fix next Saturday.
I‘m curious :slight_smile:

Thanks & warm regards,
Ralf

Is the plugin server down? Logged in and all but can’t see any. Logs say can’t reach plugin.volumio.org

@ hifiswede

Somewhere above, I’ve reported that sometimes [assuming the servers’ addresses don’t change] the plugin server gets flagged by my firewall as a honeypot.

1 Like

Ok, i dont have a firewall though

OTA installation of 4.017 from 4.016 : everything is OK
RPi 4 - 4GB RAM
Boot from SSD / USB3.0
Touch Display Plugin (rotated 90°) with Official RPi Touch Display 2 powered by USB adapter
Squeezlite client : OK
Radioparadise : OK
DigiOne Signature : OK
Music FLAC on CIFS NAS : OK
Logs after first reboot :
http://logs.volumio.org/volumio/2PKYFm7.html

userconfig.txt parameters :

#Custom ben
arm_freq=900
arm_freq_min=600
core_freq=300
boot_delay=0
dtoverlay=disable-wifi
dtoverlay=disable-bt
#custom 2
over_voltage=-2
#si freezz over_voltage a monter -1 ou 0
gpu_freq=300
sdram_freq=400
hdmi_blanking=2
#Add your custom config.txt options to this file, which will be preserved during updates
display_auto_detect=1
dtoverlay=vc4-kms-v3d-pi4,nohdmi
dtoverlay=vc4-kms-dsi-ili9881-7inch
##touch Display rotation setting below: do not alter ####
display_lcd_rotate=1
display_hdmi_rotate=1

Great JOB !!!

Upgraded from V4.016 to V4.017.
No issues encountered.
The CD spinning mechanism seems to be doing its job perfectly.
No attempts at interstellar travel, just a gentle, soothing purr from the drive.

Even with a prepped CD, to increase errors and rescans…

1 Like

Good afternoon!

As promised after @nerd’s announcement a little bit Bluetooth testing today, so this post is a little bit longer.
For those who are not interested in debugging information the “general” and most important part first:
Installed 4.017 via OTA - went without problems.

Capability of reboot from installer/GUI is still missing.
This time this is unfortunately true for reboot commands from terminal as well- so reboot is currently not possible - hard reset (power off) is neccessary.

As @nerd has promised:
BT remote is connected and it WORKS ! :slight_smile: - great job, thanks a LOT!.

Unfortunately again one of the rotary encoders has stopped to work - it’s the same one as last time, connected to GPIO 22/27 for rotation and GPIO 17 for clicking. Click works, rotation NOT.

(HW) Config:

Pi5,
Raspi 2 Display (DSI),
Two rotary encoders on several GPIOs - one working fine, one not.

Working BT remote :slight_smile:

Testing:

  • Spotify plugin, works (my only use case).
  • Touch display (and corresponding plugin) works
  • “Now Playing” plugin works
  • Rotary encoders are working partly
  • WiFi is working (can access from laptop / phone).
  • BT remote is working (connected and signals detected)

CORRD link still only leads to app-store, no intergrations as far as I can see.

Here my findings during trial of debugging the BT thingy:

Initial attempt: remote is working but not reliably. Some clicks are recognized, some not, Volume increases/decreased two ticks, song skipping skips two songs, play/pause not working.

So I’ve tried to figure out, what the system is recognizing.

from my notes I found that I’ve successfully used in the past

sudo thd --dump /dev/input/event0
sudo thd --dump /dev/input/event1
sudo thd --dump /dev/input/event2

to identify the trigger signals and the channel where the signal is detected.
This doesn’t work anymore. Despite the sytem IS recognizing signals, the above commands didn’t show them up.

From earlier trials I had a weird triggerhappy configuration file which contains the mapping of all events for all three channels - this was my assumption for the reason of the misbehaviour.
So from my perspective it seems that not only the dump of signals isn’t working but the signals are detected on multiple channels in parallel?

Because I was not able to figure out where the signals are detected, I tried/errored in mentioned config file

/etc/triggerhappy/triggers.d/audio.conf

After several reboots I’ve identified that channel 1 works for me, so the current file looks like (as far as I remember correctly this is the default configuration):

#VOLUMIO TRIGGERHAPPY CONFIGURATION FILE

#VOLUME UP
KEY_VOLUMEUP 1 /usr/local/bin/volumio volume plus

#VOLUME DOWN
KEY_VOLUMEDOWN 1 /usr/local/bin/volumio volume minus

#PLAY PAUSE TOGGLE
KEY_PLAYPAUSE 1 /usr/local/bin/volumio toggle

#NEXT
KEY_NEXTSONG 1 /usr/local/bin/volumio next

#PREVIOUS
KEY_PREVIOUSSONG 1 /usr/local/bin/volumio previous

In the course of debugging I’ve made two mistakes:
My older notes suggested to delete “/lib/systemd/system/triggerhappy.socket” - this worked earlier obviously but in current version this socket isn’t re-created after reboot and the service stops working.
Fortunately I made a copy before deleting so I was able to recover and the service works again properly.
Same of my notes suggested as well to use

sudo /etc/init.d/triggerhappy reload

To apply changes in triggerhappy config file to the demon - This fails as well (There is a confirmation statement, but it needed reboot to apply changes).

With the above config file with only one channel per command the Bluetooth remote is working properly.

The SKIP functionalty is a little bit buggy but this is true for the GUI and the rotary encoders, as well - so no problem of the BT device alone.

So far my findings.
Let me know if you need more information, more than happy to deliver.

Really GREAT work - respect!

Nice rest of the day to all of you,
Regards,

Happy to report both Pi5 8gb and J4125 MiniPC OTA-updated from 4.016 to 4.017 with no issues. Only the Pi5 needed to re-authorize Spotify. Haven’t played any music yet but these few weeks have been the longest stretch without having to disassemble my Pi5 streamer to get at the NVME for reflash…so I’m grateful!

Hey @rkorell,

Thanks for the thorough breakdown under 4.017 - your report covers all the critical areas we’re focused on right now.

Bluetooth remote functionality

Excellent to hear that the Bluetooth remote is now working correctly. The recent changes to udev permissions and input propagation were designed specifically for this class of HID devices, and your confirmation helps close that validation loop.

Rotary Encoder

The fact that GPIO 22/27 (rotation) and GPIO 17 (click) has failed again - while the second encoder continues to work - suggests a localized conflict from overwrites or misbinding at the event layer.

Please capture and share the following to assist deeper analysis:

sudo cat /sys/kernel/debug/gpio
dmesg | grep rotary

Also helpful:

  • dtoverlay parameters from /boot/userconfig.txt or equivalent
  • Any custom service or encoder plugin in use

We are not observing this issue on clean Pi 5 development images, so localized interaction or overlap is likely.

Reboot failure

Your note that reboot fails both from GUI and console - requiring a hard reset - points to something altering or obstructing shutdown target resolution.

Please gather:

systemctl status reboot.target
cat /etc/os-release
sudo find /etc/systemd/ -name '*reboot*'
sudo find /etc/ -type f -name '*rc.local*'

This will help identify if any third-party component, overlay, or misconfigured shutdown handler is interfering with system reboot. This behavior is not reproducible here on Pi 5 Beta development, prototyping environments from 2GB to 16GB models - suggests deeper overwrites or environment-specific interference.

Triggerhappy behavior and event routing

You’ve correctly identified the problem space. Some clarifications and helpful tips follow:

1. Configuration persistence

Your custom triggerhappy config at /etc/triggerhappy/triggers.d/audio.conf is not overwritten by OTA updates. This directory is covered by overlayfs, so your modifications will persist unless a full system reset is performed (e.g., reflash or factory reset).

2. Default Configuration Reference (4.017)

For reference, the default content of the file is:

#VOLUMIO TRIGGERHAPPY CONFIGURATION FILE

#MUTE TOGGLE
KEY_MUTE 1 /usr/local/bin/volumio volume toggle
#
#VOLUME UP
KEY_VOLUMEUP 1 /usr/local/bin/volumio volume plus
#
#VOLUME DOWN
KEY_VOLUMEDOWN 1 /usr/local/bin/volumio volume minus
#
#STOP
KEY_STOP 1 /usr/local/bin/volumio stop
#
#START
KEY_PLAY 1 /usr/local/bin/volumio play
#
#PLAY PAUSE TOGGLE
KEY_PLAYPAUSE 1 /usr/local/bin/volumio toggle
#
#NEXT
KEY_NEXTSONG 1 /usr/local/bin/volumio next
#
#PREVIOUS
KEY_PREVIOUSSONG 1 /usr/local/bin/volumio previous

3. Service management

Modifying system-level service components like:

/lib/systemd/system/triggerhappy.socket

can prevent the daemon from capturing input events. If removed, the service may fail silently.

Also, the following no longer applies configuration reliably and is deprecated on Bookworm:

sudo /etc/init.d/triggerhappy reload

Instead, always apply changes with:

sudo systemctl restart triggerhappy

4. Detecting input event devices

Multiple devices (e.g. encoders, BT remote, touchscreen) can shift /dev/input/eventX assignments across reboots. Always list active bindings first:

ls -l /dev/input/by-id/
ls -l /dev/input/by-path/
ls -l /dev/input/

This helps map symbolic links to stable device names.

5. Advanced event testing (thd alternative method)

You can also test event detection by stopping triggerhappy and running:

sudo systemctl stop triggerhappy
sudo /usr/sbin/thd --dump /dev/input/eventX

(Use appropriate event number for BT remote - symlinks under /by-id/ are preferred for consistency.)

6. Using evtest

evtest is not installed by default, but it is highly useful for debugging raw input at the kernel level:

Install it:

sudo apt update
sudo apt install evtest

Then run:

sudo evtest

You’ll be prompted with:

/dev/input/event0:    gpio_keys.19
/dev/input/event1:    rotary@1
/dev/input/event2:    Bluetooth Remote Control

Select the correct event number and test keypresses. Use Ctrl+C to exit. This confirms whether Linux is receiving the signal before it hits triggerhappy.

Thanks again for all your detailed reports - particularly your observations about overlapping channel behavior and multiple signal dispatch. We’ll be taking this forward as we continue refining the input stack for the Beta series.

Kind Regards,

RPi5, NVMe, 4.017, 1920x480
Music from:
Synology NAS - plays without any problem
Spotify - plays without any problem
TIDAL - plays without any problem
YT Music - plays without any problem
Web radio - plays without any problem

Music@Peppymeter Basic:
Spotify and YT Music - doesn’t work
NAS,Tidal, Web radio - work

Plugins:
Rotary encoder - work
Info - work
Now playing - work

No boot logo on startup (userconfig.txt empty, 90 degrees set in Touch Display plugin)

Great job! @nerd

Hey @benatreptar,

Thanks again for your detailed report and log. Below is a technical analysis of the kernel warning you observed after the OTA upgrade to Volumio 4.017.

System configuration recap:

  • Device: Raspberry Pi 4 Model B Rev 1.5 (4GB RAM)

  • Boot: USB3 SSD

  • Display: Official Raspberry Pi Touch Display 2 (ILI9881C panel)

  • Touch Plugin: Enabled with 90° rotation

  • Volumio Version: OTA from 4.016 to 4.017

  • Kernel: 6.12.34-v7l+

  • Overlays in use:

    • dtoverlay=vc4-kms-v3d-pi4,nohdmi
    • dtoverlay=vc4-kms-dsi-ili9881-7inch

Kernel warning observed:

WARNING: CPU: 0 PID: 252 at drivers/gpu/drm/vc4/vc4_kms.c:508 vc4_atomic_commit_tail+0x928/0x998 [vc4]

Context:

  • This warning originates from vc4_atomic_commit_tail(), a function within the VC4 KMS driver responsible for committing display state updates atomically.
  • The call trace confirms this occurred during execution of plymouthd (boot splash renderer) at an early boot stage.
  • It reflects an unexpected or invalid state transition during atomic display configuration.
  • Full DRM stack was active: vc4, panel_ilitek_ili9881c, and supporting modules like drm_kms_helper, drm_dma_helper.

Analysis:

  • The panel overlay vc4-kms-dsi-ili9881-7inch is correctly used for the Raspberry Pi Touch Display 2 and is required.
  • This warning has been seen upstream in similar setups when display clients (like Plymouth) trigger atomic commits before the panel fully initializes or completes regulator/EDID negotiation.
  • The kernel log also shows non-fatal dependency cycle resolution between /soc/dsi@7e700000 and CPRMAN, confirming complex overlay interactions.

Conclusion:

  • This is an upstream VC4 DRM driver issue, not a Volumio regression.
  • It is non-fatal and does not impact normal operation or display rendering, as confirmed by successful boot and UI display.
  • The kernel is marked tainted (Tainted: G WC) due to the warning and proprietary codec modules.

Recommendation:

No action needed at this time. The warning should be:

  • Monitored across future kernel updates.
  • Reported upstream if it becomes persistent or affects display stability.

Avoid suppressing it (e.g., via disable_splash=1) unless it evolves into a blocking issue. Your configuration is correct, and the system remains stable.

Thanks for surfacing this. We will keep tracking it.

Kind Regards,

1 Like

Hey @Gelo5,

Thanks for the detailed report - that’s very helpful!

To properly investigate the missing boot logo, we need one more key detail:

What screen are you using?

  • Is it connected via HDMI, DSI, or GPIO?
  • Do you know the model or manufacturer?
  • Which port is it plugged into? (HDMI0, HDMI1, DSI)
  • If known, is it using a framebuffer interface or KMS DRM?

This info will tell us whether the lack of boot logo is due to firmware-side framebuffer setup, or if a DRM overlay is required early in boot.

Once we have that, we can proceed with fact-based troubleshooting.

Kind Regards,

Hey @Wheaten,

Thanks for confirming your upgrade from V4.016 to V4.017 went smoothly.

Your note on CD behavior is especially appreciated. From the image you provided, it’s clear the CD was intentionally modified with a bold radial line across the data area. This type of physical interference is ideal for testing error correction and drive spin control logic.

Key observations:

  • The black marker line is positioned toward the outer edge, where audio tracks are typically recorded. This would naturally stress test the drive’s ability to maintain low-speed playback while managing read errors or retries.
  • You confirmed that even with this setup, there were no erratic spinups, retries, or audio interruptions.
  • The drive’s gentle and stable behavior suggests that the current cdspeedctl + plugin logic is successfully capping RPM and gracefully handling read faults.

This is excellent validation for our goal of “whisper quiet” CD playback while maintaining bit-perfect audio extraction, even under deliberately degraded conditions.

If you have any dmesg or kernel logs from this session and are open to sharing them, I’d be happy to scan them for additional insight.

Kind Regards,

Monitor HDMI
HDMI 0

When turning it off, the logo appears but is rotated 90 degrees
Edit: I turned it off and the logo didn’t appear
Sorry

I see on the what to test section it mentions Casting to Sonos / Chromecast. Does this function work? Or is it still to be developed?

Thanks a lot for deep analysis and feedback!
Regards
Benoît

The bar indeed covers from almost the start (left the TOC uncompromised) to the end.
The last tracks on this CD should suffer the most as the spacing there is wider.

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

I OTA updated to 4.017 on a few x86 devices (Lenovo Yoga520, Dell Wyse 3040, Lenovo T15V and Chuwi Larkbox) and encountered no issues.