RoonBridge RPi DAC+Pro I2S 44.1kHz playback and volume control issues [Workarounded]

Firstly, once again awesome job Roon with 1.2.

RPi3 -> HiFiBerry DAC+ Pro -> I2S -> Buffalo II ESS 9018 DAC

Got RoonBridge up and running easily using Jessie Lite and the install scripts. 96kHz/24bit & 192kHz/24bit play great. 44.1kHz/16bit (99% of my library and Tidal) result in awful noise with a bit of music in background on one channel only.

When I use piCorePlayer with a default install in the exact same setup Roon will play 44.1kHz/16bit perfectly.

After a bit of digging I’ve noticed that RoonBridge is outputting in S16_LE (16bit format) and piCorePlayer S32_LE. Not sure why they handle the same audio device differently. It appears that my DAC is not liking 16bit with 44.1kHz as output by RoonBridge.

Suggestions? e.g. perhaps there is a parameter than can be set in RoonBridge to set S32_LE parameter when it calls ALSA? Let me know if you need further info, screen shots etc.

Also the device volume control has no effect and appears to be the exact same problem as posted with the IQAudio board - my alsamixer looks exactly the same as in this post:

Looking forward to getting RoonBridge running fully with HiFiBerry I2S output!

RoonBridge
pi@raspberrypi:~ $ cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (352800/8)
period_size: 441
buffer_size: 1764

piCorePlayer
c@piCorePlayer:~$ cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (352800/8)
period_size: 882
buffer_size: 3528

Hi Bruce,

I think we should drop a flag for @brian to let us know what he thinks here.

Making a setting to encourage higher bit-depth output wouldn’t be difficult, but I’m not sure it is the right thing to do. This is a pretty confusing setting–the best thing for most devices is to minimize the transfer bandwidth whenever it’s possible to do so without losing resolution–which is our current behavior. But people see bigger numbers and think better, so there will be people using it unnecessarily or treating it like an “enhancement”. We’ll go there if we have to, but it would be good to exhaust other possibilities first.

This feels like something that could be configured/patched at the driver level. Maybe as an option for the driver (as I understand, using a DAC+ like this requires a hardware modification, so a change in driver behavior is not totally unreasonable to go along with it). Doing the “cheap hack” patch would be quite simple–go into the driver file and eradicate S16_LE’s :slight_smile:

The volume control thing is something we know about, and it’s on our list. We are trying to get access to HiFiBerry hardware to experiment with it directly. The volume layout on that device is vexing.

One thing that might resolve both of your issues, at least in the near term, is to turn on Roon’s “DSP Volume” option. This will get you a working volume control, and because our volume control expands the samples to the maximum supported by your device to maintain as much headroom as possible, it should get around the 16bit issue too, assuming that the driver is reporting its 32bit support to ALSA properly.

Assuming you are adjusting the volume digitally on the HiFiBerry prior to the I2S output, there is probably no benefit to using their volume control over ours–it’s not up-sampling, and we are already expanding bit-depth and dithering in our volume control, which is greater-than-or-equal-to what I expect the device is doing.

Hello Brian,

Many thanks for your prompt and considered reply - all makes good sense to me.

I tried using Roon’s “DSP Volume” and it worked! Output is now S32_LE and the DAC is playing like a champ! Sounds great too :slight_smile: This outcome is absolutely fine - I’m very happy.

Thanks again, I like where you’re going with Roon - great product.

Best regards,
Bruce

BTW, the next build of RoonBridge should use the right volume control on pcm512x devices (IQaudIO, HifiBerry DACs).

That doesn’t change your PCM_S32LE situation…but I thought I’d let you know anyways since it was one of your issues.

FYI build 142 does not appear to have fixed the volume control - still no effect. I have restarted both core and bridge.

I am new to Roon and am not a super technical guy. I am using a PS Audioslave Direct streams Dac.

I am only seeing a 44.1 sampling rate on my screen. I thought I was going to see 4 times this (or greater) with Roon / Tidal??? Can anyone help a non technical guy understand why?

Thanks in advance for any help I can get.

Just in Phoenix

Hi John,

You may need to set up your Roon Core Settings differently for the audio device in question.

  1. Pull down the menu at the top left of Roon’s user interface
  2. Select Settings
  3. Then select Audio
  4. Then select the gears next to your PS Audio endpoint
  5. Finally, select Device Setup and its Playback tab.

Here is a screenshot of how my stereo system is set up:

Then Save your new settings and you should be good.

Jon