No sound from ROON: Raspberry Pi, DietPi, MusicStreamer II async. USB DAC [Solved]

With Roon playing on my WIN 10 PC, the RPi set up and selected as output in Roon:

No sound. Efter 5 hours tinkering with settings. Not so fun.

What made me suspicious was that the playback was reported to be running by Alsa:
I used this command to get the status of the bitstream being pushed to my USB dac:
cat /proc/asound/card1/stream0

Result from the RPi:

Status: Running
Interface = 1
Altset = 1
Packet Size = 402
Momentary freq = 44101 Hz (0x2c.19e8)
Feedback Format = 10.14
Interface 1
Altset 1
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 96000, 88200, 48000, 44100, 32000
Bits: 24

Status is running, and if I stop Roon from my iPhone, status reverts to “Stopped”. But no sound even if bit-rates are within my Musicstreamer II’s specs.

Then I found this:
which suggests to verify alsamixer is not muted.

How to tell ALSA to unmute using alsamixer:
alsamixer --card 1

Alsamixer’s not so intuitive GUI is now shown on the screen.

Secret: Press m key to toggle the mute-state, 00 for unmute , mm for mute. (You can toggle it off and on to see that it really changes state).

Voilá! Music from my Musicstreamer II fed by the RPi - Finally!!!

Storing alsamixer settings (don’t skip this one)
Don’t forget to store the unmute setting for alsamixer. Use command:
Sudo shutdown

Yes, that’s it: As far as I can understand, settings are not stored until alsamixer shuts down gracefully - e.g. when processes are terminated by a shutdown command. If you pull the plug on or reboot the Pi, settings are not stored. Also, if you edit alsamixer’s auto-generated config file and reboot the Rpi, the updated config is overwritten during boot, using the old settings (which mutes alsamixer again).

I wold be happy to be wrong, if there is another solution. If someone can verify my unqualified ranting - please do.

Hope someone is helped by this condensed writing from 5+ hours of googling and issuing terminal commands in DietPi :slight_smile:

(EDIT: This example is not complete, you’ll have to dig out some details yourself to use it:
Others have reported that the mute state will persist also after a proper shutdown and reboot. Likely adding an unmute command to your boot-script or as a cron job run at boot.

First check your device name:


The result reported in my case is:

Simple mixer control ‘PCM’,0
Capabilities: pswitch pswitch-joined
Playback channels: Mono

You are looking for the device name, in my case “PCM”.

The unmute command in DietPi is then:
amixer sset PCM unmute

and to mute (Duh):
amixer sset PCM mute

I’ll add the unmute command to a boot script just-in-case, just not sure which one…)