USB audio to Arylic BP50 - device lost when BP50 input changed

I have an audio device (RPi3 with moOde Audio) which detects the BP50 in DAC mode perfectly fine.
However, if I switch to HDMI ARC input for some movie entertainment, then later back to DAC for music, the RPi/moOde plays no sound.

To be fair, I think it’s the RPi or moOde that should detect USB out/in events and refresh its audio output, but before I start DIY’ing solutions there, I want to ask if this is familiar and easily solvable on the BP50 side, say with an update or setting.

Thanks for your input!

After a lot of web searches I managed to narrow the scope toward mpd and alsa, and finally figured out that the device mappings work just fine - but the RPi ALSA mixer volume is set to zero when the device is added.

This is not a BP50 issue, but I’ll leave this here in case others run into the same. The solution was to add an entry on the RPi host which runs a tiny script that uses amixer to set volume to 100%.

Finding the USB device identifier: use udevadm to locate the correct device under /dev/snd/ and examine:

> udevadm info -q path -n /dev/snd/pcmC2D0p
...
/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/sound/card2
...

> udevadm info -a -p /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/sound/card2/pcmC2D0p >dev_info.txt

In the output, locate the first idProduct/idVendor in the chain:

...
 ATTRS{idProduct}=="1717"                                                                                                                             
 ATTRS{idVendor}=="8888"
...

Create an udev entry that triggers when this device appears. In /etc/udev/rules.d/99-fix-bp50-volume.rules enter:

ATTRS{idVendor}=="8888", ATTRS{idProduct}=="1717", RUN+="/var/local/arylic/volup.sh"

In the script, fix the volume:

#!/bin/bash
echo "Fixing audio device volume..."
sleep 1
/usr/bin/amixer -c 2 set PCM 100%
/usr/bin/amixer -c 2 set PCM unmute

Restart udev, sudo systemctl restart udev.

1 Like