Volumio USB-DAC Hi-Res Playback Issue (ref#HNOYXJ)

Hi! What’s not quite right with Roon?

· None of the above quite fits

None of the above quite fits

· None of these quite match

Tell us what's going on

· I have a Volumio client (PC) with Roon-Plugin. On this PC i have a USB-DAC (Shanling UA2). It works fine to use it from Roon with 44.1/16 but not with highres. Hires only works when i enter Audio/Device-Setup in Roon and close the dialog... from this point it works until i restart volumio... the i have to repeat the setup in Roon... 44.1/16 works fine after Volumio Reboot... but hires only rustles on the left channel.... after open/close device-setup in roon it works up to the next volumio restart.

Tell us about your home network

· Use wireless... but same with ethernet cable.

Hello @Beat_Blum ,

Welcome to the forum! Does the issue only happen with the Shanling UA2 in the mix? Are you able to play to other zones as expected? Can you reproduce the issue and let us know the exact local time + date the issue next occurs? We will enable diagnostics for your account and check to see if logs provide clues. Thanks!

Hi

This happens also with Shanling UA3 on Volumio.
Volumio 4.x and also on Volumio 3.887
I never had any issues when streaming to a ropieee with attached smsl su-9

It happened a few moments ago. I stopped playing, did nothing and a few minutes later i started the song again without issues. I willdo more tests. Maybe it happens when volumio is not fully up after the start (on a 2011 mac mini lol)

New info:
If i unplug and reconnect the dac from usb (on the volumio-pc), the problem starts. If i open close the device config in roon, it works as expected

I can repeat this many times

Same happens if the USB Shanling UA2 ist used on a roon-bridge on a x64 using dietpi. Detach usb attach usb —- bad sound / open close endpoint in roon —- clear sound

Sorry for the many appends.
I also see this problem sometimes when the format changes. Like changing from 192/24 to 44.1/16. or vice versa

Deactivating/reactivating the endpoint also helps.

This was detectec on RoonBridge on DietPi

Like described in ref#JQ1JUK

So i think it is not an isolated problem.

Hey @Beat_Blum,

Thanks for writing in and for sharing your report!

Based on your observations across Volumio, DietPi, multiple Shanling DACs (UA2 / UA3), and the fact that:

  • 44.1/16 always works
  • Hi-res breaks after USB re-enumeration, reboot, or format change
  • Opening/closing Roon Device Setup or toggling the endpoint always fixes it
  • The issue does not occur on RoPieee + SMSL SU-9
This points to a USB audio device initialization/format negotiation issue between:
  • RoonBridge (RAAT)
  • ALSA
  • USB DAC firmware (Shanling UAC2)
Most likely, the DAC is left in an incorrect ALSA state (channel mapping or sample format) after re-enumeration, and Roon only re-pushes the correct parameters when the device setup dialog is opened.

This is consistent with:

  • One-channel distortion (“rustling on left channel”)
  • Fix by forcing a re-init (endpoint toggle, device setup open/close)
Let’s first test In Roon → Device Setup:
  • Set Max Sample Rate to 44.1 or 96 temporarily
  • Disable MQA / DSD
  • Disable “Exclusive Mode” briefly as a test
If the issue disappears → confirms format renegotiation error. We’ll be on standby for your reply and results. Thank you! 🙌

Hi benjamin

here is what i tested now.

  • restrict endpoint to 48/32 max
    Dietpi coldboot with usb plugged in.
  • 44.1/16 no sound
  • Settings deactivated/activated no sound
  • Unplug/plug in no sound
  • Settings deactivated/activated 44.1 works
  • play 192/24 converting 192 to 48 plays nice
  • warboot dietpi (usb still plugged in)
  • play 192/24 converting 192 to 48 no sound
  • Settings deactivate/activated no sound
  • Settings openend/closed no sound
  • Unplug/plug 44.1 nice sound
  • play 192/24 converting 192 to 48 plays nice
  • remove restriction to 48/32
  • play 192/24 plays nice
  • play 44.1/16 plays nice
  • play 88.2/24 plays nice
    Dietpi shutdown / coldboot
  • play 88.2/24 or 44.1 no sound
  • Unplug/plug in 44.1 no sound
  • deactivate/activate 44.1 plays nice

wondering why i never had a rustling sound
but then i remembered i changed device-volume to dsp yesterday
so i change it back

-change dsp volume to device volume

  • play 192/24 plays nice
  • play 88.2/24 plays nice
  • play 44.1/16 rustling bad sound
  • open/close dialog nice sound
  • play 88.2/24 rustling bad sound
  • deactivate/activate 88.2/24 plays nice
  • play 192/24 plays nice
  • play 44.1/16 rustling bad sound

i think it has to do with uninitialized device (no sound-issue)

but the rustling-problem only appears when the volume is set on device-volume. (maybe this explains why i never had a problem with my smsl su-9 which uses fixed-volume (because i use the volume on the tube-amp).. and there i use a upscaling… so we have no format changes on the dac.

Kind regards
Beat

Hey @Beat_Blum,

Thanks so much for the follow-up! It sounds like there are two distinct failure modes. They look related but are not identical:

A. “No sound at all”

  • Happens after:
    • Cold boot
    • USB re-enumeration
    • Format restriction (48k max)
  • Fixed by:
    • Deactivate/activate endpoint
    • Sometimes unplug/replug
B. “Rustling / distorted left channel”
  • Only happens when:
    • Roon volume = Device Volume
  • Triggered by:
    • Sample-rate changes (44.1 88.2 192)
    • Cold boot
  • Fixed by:
    • Open/close Device Setup
    • Endpoint toggle
  • Never happens with:
    • DSP volume
    • Fixed-volume DAC (SMSL SU-9)
[quote="Beat_Blum, post:8, topic:313496"] but the rustling-problem only appears when the volume is set on device-volume. [/quote]

This is a great observation. When Roon uses Device Volume:

  • RAAT must send UAC2 feature-unit commands, and if those controls are:
  • Not initialized
  • Applied before the stream is fully configured
  • Lost after USB re-enumeration
You could get channel imbalance, noise, or partial corruption.

Overall, it sounds like the Hardware volume state is not being re-applied correctly:

  • After boot
  • After USB re-enumeration
  • After sample-rate change

As a first step, lets setup a stable workaround:

Set in Roon:

  • Volume Control: DSP Volume
  • OR Fixed Volume (if acceptable)
This should eliminate rustling entirely and confirm this is likely hardware volume-related. You’ve already proven this, this step is just to stabilize.

Then, if possible, let’s verify ALSA hardware volume behavior directly.

On DietPi / Volumio shell:

amixer -c 

Look for:

  • Playback volume controls
  • Per-channel volume (L/R mismatch is common here)
Then try:
amixer set 'PCM' 100%
amixer set 'Master' 100%

Reboot and test again. If the rustling disappears until the next re-enumeration, that confirms the hardware mixer state is lost and not restored.

After that, see if you can force ALSA to re-init the device cleanly.

Test adding a udev or startup reinit:

alsa force-reload

After boot, before playing anything. If this fixes both no-sound and rustling:

  • The root cause is confirmed as incomplete ALSA init
Lastly, if Volumio/DietPi allows it:
  • Force software volume in ALSA
  • Or disable UAC2 feature unit if configurable

We’ll be on standby for your reply and results, thank you!

1 Like

Hi benjamin

Sorry, i was unable to get it all running.

On my dietpi … found no alsa command and no amixer. Instead of it i played around (i’m far away of beeing an linux expert… not even a good linux user :frowning: ))

the roon - endpoint is still on DSP-volume

Whatever i do, after a boot i need to unplug / plug the usb… otherwise i never have any sound or noise. did not find a way to get rid of this step

After plugin, i get the rustling.
But here the new part:
-press pause
-invoke a ‘alsactl init’ (seems to be similar to your alsa force-reload / and to open/close the endpoint-dialog / activate/deactivate)
-press play
-now the sound is nice

so i think there is the part with the missing init

hope this helps anyway

@Beat_Blum ,

That is excellent news! The fact that alsactl init resolves the issue immediately confirms that the device just needs a little “nudge” to initialize the mixer state correctly.

To save you from having to type that command manually every time you reboot or reconnect the USB, we can set up an automatic udev rule on your DietPi. This will trigger the command automatically whenever a sound device is detected.

Here is how to set it up:

  1. SSH into your DietPi.
  2. Create a new rule file:

    Bash

    sudo nano /etc/udev/rules.d/99-fix-audio-init.rules
    
  3. Paste the following line (this is a generic rule that triggers on any sound card connection):

    Bash

    ACTION=="add", SUBSYSTEM=="sound", KERNEL=="card*", RUN+="/usr/sbin/alsactl init"
    
  4. Save and Exit: Press Ctrl+O, then Enter to save, and Ctrl+X to exit.
  5. Reload the rules (or reboot your DietPi):

    Bash

    sudo udevadm control --reload-rules
    
This rule works for both cold boots and hot-plugging. Let us know if this automates the fix for you.
1 Like

It is almost perfect.

After a cold boot, i still have no sound.
If i unplug/plug the device and wait a few seconds, i can start playing. And it works :+1:

If you have an idea what i can do to fix the plugin-problem, then it is perfect

But to be fair, the solution already is very good even if it is not perfect

Thank you so much

Hi

The no-sound problem was a USB 1.1 Problem and is specific to the very old mac mid 2011. The dac was put in 1.1 Mode with 12M instead of 2.0 with 480 during boot

Now using a intel nuc instead of the mac

It now seems to work (will do more tests in the next days). But i think it is solved.

Thanks a lot

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.