Issue with Raspiaudio Ultra+ to keep headset volume after reboot [resolved]

I recently bought a Raspiaudio Ultra+ soundcard and installed it on Pi4.

After installing the drivers, everything seems to work as expected. Only issue is that my volume levels aren’t saved and reset on reboot.
I’m using alsamixer to configure volume levels. Card has onboard speakers+mic and jacks for headphones and external mic.
I reduce the speakers volume to 0 and max out headphones, in order to use my cars AUX.
Despite using

sudo alsactl store
sudo alsactl --file=/etc/wm8960-soundcard/wm8960_asound.state store

as described on the GIT page

The headphone volume still resets to 0 and speakers set to 30.
I’ve tried creating a bash script on boot to set the headphones to 100.

amixer -c 0 sset "Headphones" 100%

But same result.
Any suggestions? Thanks.

Hi MonsKiller and welcome!
Something might be setting the headphone at a different level after you run your script. First just to check that the volume is changing with this command, after the boot open a terminal and type:

amixer sset “Headphone” 100

if the volume does change, try to put it in a script that runs at the the boot in rc.local here is a tutorial

Let me know f it does not work,


Thanks for the reply, unfortunately it didn’t work.

The command
amixer sset “Headphone” 100
Doesn’t work, but instead I have to use
amixer -c 0 sset “Headphone” 100
Regardless, adding the line in rc.local still won’t preserve the volume. On every boot I find Headphone at 0 and Speaker at 30. Everything else persists.

If it’s of any help I’m using the Ultra++ alongside an OpenAuto Pro build. Tho according to them, OAP is just Raspberry Pi OS with their software ontop with no further alterations.

You have 2 possible root cause at that point:
1- what you put in rc.local does not really runs for some permission issues, it’s quite a classic. check


2- Another process set the Headphone after you do overwriting your settings.
The idea will be to delay your command to be the last one to set the volume
try in your script at startup :
(sleep 5; amixer -c 0 sset “Headphone” 100) &

Tries both options. Neither of them work.
I’ve no idea what could possibly overwrite the settings. Or at which point it happens even since with a delay Headphone is still at 0

let me try here, stay tuned

We’ve been able to reproduce the issue and someone of the team is working on it. thx

Thank you. I’ll stay tuned.

Edit .bashrc (/home/pi/.bashrc)

sudo nano /home/pi/.bashrc

at the last line add this:
/usr/bin/amixer -c 2 sset "Headphone" 100%

then reboot, it works for me here

Oddly enough, still didn’t work for me.
/usr/bin/amixer -c 0 sset "Headphone" 100%
0 instead of 2 since the card is set as default, does alter Headphone volume.
But doesn’t seem to run in any startup script whatsoever.
Wondering of OpenAuto itself stops any boot scripts, but it wouldn’t make sense since I’m using a RTC module and it’s commands do fire on boot within rc.local

I’m still wondering what could possibly alter that slider on boot, and not affect anything else.

try it also in the rc.local just remember to put the full path for amixer as we don’t know if the environement variable will be ready when executed

/usr/bin/amixer -c 0 sset “Headphone” 100%

Okay, it might just be OpenAuto itself messing something. Or a parameter somewhere else since their patch outright disables onboard audio.

I just tried a fresh install on Raspian OS and volume levels persists across reboots.