Linux/Debian RoonBridge plays loud 'static'

Hi -

I have an interesting problem where I get loud ‘static’ noise when trying to play any audio back through RoonBridge. I don’t know if that’s the right word to describe it - the noise is like it is getting the raw digital stream instead of analogue, so a bit pink noisy, square-y - that kind of noise. It’s always at full volume.

Weirdly though infrequently it has worked fine - maybe once in every 20 or so times. Also once or twice it also played the correct audio in the background behind the noise!

RoonBridge is running on a base Debian 11.5 net-install with just ALSA and RoonBridge installed as per dependencies. check.sh says it has everything it needs, and obviously it loads fine.

The DAC/soundcard is a Mixars Quattro. A DJ mixer with 2 x USB soundcards in at 24/48 and 16 channels.

Playing any audio from Debian itself is perfect (via ALSA) - there is no static noise at all. I can run other software like shairport-sync and that works fine also - which also uses ALSA.

If I switch to Windows or macOS with the soundcard it all works perfectly also. Even Windows on this specific machine works perfectly. So it is a specific issue with Linux RoonBridge and this soundcard.

I suspect that it is because, as I understand it, RoonBridge is bypassing ALSA config in some fashion and addressing the device directly - so ALSA at the OS level is negotiating capability with the card properly and working, whereas whatever RoonBridge is doing is not.

The card itself is listed as class-compliant. There are no drivers. It has 16 outputs and no volume control (digitally).

I’ve tried a lot of things, especially obvious things - but I am now at a bit of a loss - so posting here to see if anyone can advise on other things to try? I feel a bit hamstrung as if RoonBridge is bypassing the ALSA settings of the host (and specifically the asound.conf) then I am limited in what I can do by what is configurable in Roon itself.

  • Reducing / changing the max bits per sample rate does not change.
  • Max sample rate is not exposed as it only support 48 khz.
  • Changing the Volume Control does not fix it - and interestingly even with DSP volume set the noise is always at 100%.
  • Setting to max volume does not fix it. (I saw somewhere that this might occur on volume change, but that is not the case here.)

I am fairly competent with Linux/Debian so happy to take any tips!

Please help as for now I have gone to shairport-sync but still using Roon to send audio.

Cheers
Greg

Hi Greg,

Roon Bridge is not bypassing ALSA. Roon Bridge on Linux interfaces with audio devices using ALSA.

“Roon Bridge” is a wrapper for the RAATServer process.

The Roon Core decodes all audio formats to raw PCM samples before sending it to a RAAT client, RAATServer in this case.

RAATServer takes these raw PCM samples and uses an “output plugin” that is appropriate for the host platform. On Linux, it uses the “ALSA output plugin”.

I would look at the Roon Bridge logs (in the /var/roon/RoonBridge/Logs directory for standard install) and try to find a pattern in the bit-depth or sample rate switching that is causing the card to misbehave.

I would also try the following steps:
A) Open “Device Setup” for the zone. Set the max bit-depth option to 16-bit.
B) Open DSP for the zone, then open the Sample Rate Conversion options.
C) Set the “Sample Rate Conversion” to “Custom”, and then set each sample rate to 44.1 kHz.

If this doesn’t work, I would then try setting the max bit-depth to 24-bit or 32-bit and then enabling headroom management in DSP. This will force all audio to be expanded to 24-bit or 32-bit.

-John

Thanks for the quick reply @john .

I meant that it was bypassing the system ALSA config rather than ALSA itself - in that RoonBridge does not appear to read /etc/asound.conf? Is that right?

I tried your tips but no change directly, though the Logs did help get a bit further.

There was this line here:

Error: [RAAT::Mixars Quattro] error in failed to snd_pcm_hw_params_set_channels exactly. trying to set max channels instead: Invalid argument (-22)

And as above I had already noticed once that I had heard the correct audio behind the noise.

Well, the card is actually a mixer so I can monitor each channel, and sure enough the noise only appears to be present on the unused channels.

So the correct audio, undistorted, is on channels 1+2, but then 3 thru 16 all have the noise on it.

If I set the card to 8 channels in Device Setup (7.1) and then use the Procedural EQ > Mix filter to divert 1+2 to 3+4, 5+6 and 7+8, then sure enough channels 1 thru 8 are OK, but the noise is still present on 9 thru 16.

In Roon I can’t redirect any more channels as it only goes up to 8.

But on the mixer, channels 9 thru 16 aren’t actually ‘wired up’ so to speak - they exist on the soundcard but no physical controls. But they are routed through the master out directly.

So possibly this error is causing Roon to send something on the unused channels which it shouldn’t - if that error had not occurred?

Is there a way to get more than 8 channels in Device Setup / Mix filter?

Or is there another way to troubleshoot this area?

As another point, I don’t actually get a Sample Rate Conversion option but I think that is purely because the card only supports 48khz. The Logs don’t suggest this is a problem though.

Thanks
Greg

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