Repository navigation
Description
If I start sendspin with sendspin daemon --audio-device 0 --hardware-volume true --log-level DEBUG, then pipewire and pipewire-pulse services are started too. Pipewire seems to create its own soundcard, it appears under alsamixer. And now sendspin controls the volume of the pipewire soundcard and not the volume of audio device 0, which is a hifiberry amp 2. Maybe this is because the mixer of the hifiberry sound card would have to be specified (at least this was the case with snapcast hardware volume control, see snapcast issue #318 )?
Here is the log from sendspin:
INFO:sendspin.cli:Using audio device 0: snd_rpi_hifiberry_dacplus: HiFiBerry DAC+ HiFi pcm512x-hifi-0 (hw:0,0)
INFO:sendspin.daemon.daemon:Starting Sendspin daemon: sendspin-raspi-stern
INFO:sendspin.daemon.daemon:Listening for server connections on port 8928 (mDNS: _sendspin._tcp.local.)
INFO:aiosendspin.client.listener:ClientListener started on port 8928, path /sendspin
INFO:aiosendspin.client.listener:mDNS advertising client 'sendspin-raspi-stern' on port 8928 with path /sendspin
DEBUG:aiosendspin.client.listener:Incoming server connection from 192.168.0.15
INFO:sendspin.daemon.daemon:Server connected
INFO:sendspin.audio:Detected 32 supported audio formats (FLAC + PCM)
INFO:mpris_api:PatchedMprisService started.
DEBUG:aiosendspin_mpris.mpris:Attached MPRIS listeners to SendspinClient
DEBUG:asyncio:Using selector: EpollSelector
INFO:aiosendspin_mpris.mpris:MPRIS interface started
INFO:aiosendspin.client.client:Connected to server 'Music Assistant' (5a990cbadc754cd4894148b49eb6f143) version 1
INFO:aiosendspin.client.client:Handshake with server complete
INFO:sendspin.daemon.daemon:Server set player volume: 58%
DEBUG:sendspin.hardware_volume:Hardware volume changed externally: (32, False) -> (58, False)
^CDEBUG:sendspin.daemon.daemon:Received interrupt signal, shutting down...
DEBUG:sendspin.daemon.daemon:Daemon cancelled
INFO:mpris_api:PatchedMprisService stopped.
INFO:aiosendspin_mpris.mpris:MPRIS interface stopped
INFO:sendspin.daemon.daemon:Server disconnected
INFO:aiohttp.access:192.168.0.15 [04/Mar/2026:11:30:56 +0100] "GET /sendspin HTTP/1.1" 101 0 "-" "Music Assistant/2.7.10 aiohttp/3.13.3 Python/3.13"
INFO:aiosendspin.client.listener:ClientListener stopped
INFO:sendspin.daemon.daemon:Daemon stopped
This are the available audio devices:
Available audio output devices:
[0] snd_rpi_hifiberry_dacplus: HiFiBerry DAC+ HiFi pcm512x-hifi-0 (hw:0,0)
Channels: 2, Sample rate: 44100.0 Hz
[1] sysdefault
Channels: 128, Sample rate: 44100.0 Hz
[2] lavrate
Channels: 128, Sample rate: 44100.0 Hz
[3] samplerate
Channels: 128, Sample rate: 44100.0 Hz
[4] speexrate
Channels: 128, Sample rate: 44100.0 Hz
[5] pipewire
Channels: 64, Sample rate: 44100.0 Hz
[6] pulse
Channels: 32, Sample rate: 44100.0 Hz
[7] speex
Channels: 1, Sample rate: 44100.0 Hz
[8] upmix
Channels: 8, Sample rate: 44100.0 Hz
[9] vdownmix
Channels: 6, Sample rate: 44100.0 Hz
[10] dmix
Channels: 2, Sample rate: 48000.0 Hz
[11] default (default)
Channels: 64, Sample rate: 44100.0 Hz
To select an audio device:
sendspin --audio-device 0
Screenshot of alsamixer for new soundcard pipewire
Screenshot of alsamixer for hifiberry amp 2
Edit: sendspin version 5.2.0
Metadata
Metadata
Assignees
Labels
No labels
Activity
abmantis commentedon Mar 9, 2026
Can you try #173 please? It should now use the device you specify for hardware volume control.
joopdo commentedon Mar 9, 2026
I'm experiencing a related issue. When using
--hardware-volume false, sendspin still changes the PipeWire sink volume.Setup:
Systemd service config:
Expected behavior:
--hardware-volume false should use software-only volume and not touch any system/PipeWire volumes.
Actual behavior:
The PipeWire sink volume still changes when Music Assistant adjusts volume, even with --hardware-volume false:
Logs confirm it's receiving and applying volume changes to the sink:
INFO:sendspin.daemon.daemon:Server set player volume: 20%
INFO:sendspin.daemon.daemon:Server set player volume: 76%
Use case:
I need sendspin and snapclient to have independent volumes. Sendspin is for music, snapclient is for house announcements. When sendspin lowers the sink volume, it also lowers my announcements.
Workaround:
Rolling back to sendspin 1.2.4 + aiosendspin 1.2.0 fixes the issue:
With v1.2.4, the sink volume stays at 100% and sendspin uses software volume internally:
dflvunoooooo commentedon Mar 9, 2026
I did try it. sendspin now starts as a daemon and as a cli program with option hardware volume control. But I noticed two problems. The first does olny affect the cli program, where (
sendspin --audio-device 0 --hardware-volume true) starts sendspin and tells me it is connected to Music Assistant, but it does not appear in Music Assistant. The second problem affects both daemon and cli program. Sendspin does report a volume which volume level is neither the pipewire volume nor the hifiberry amp volume. Changing the sendspin volume does not change any volume I can see with alsamixer. Here is the log, I muted and unmuted the client in the cli program and changed volume level up and down:The daemon has the second problem too, where a virtual volume level is reported wich does not represent the volume levels on that system. Here is the log from the daemon
sendspin daemon --audio-device 0 --hardware-volume true --log-level DEBUG, where I muted and unmuted and changed volume level up and down via Music Assistant:Match selected device for hardware volume (#173)
abmantis commentedon Mar 9, 2026
@dflvunoooooo the only pulseaudio sink is
auto_null. It seems that pulsadio (or pipewire-pulse) is not properly set up.dflvunoooooo commentedon Mar 10, 2026
I wasn't aware that any configuration would be necessary. I was using hardware volume control from snapcast for years and that does not even require pipewire. So for sendspin I installed pipewire and pipewire-pulse and thats it. What configuration is needed for this to work?
dflvunoooooo commentedon Mar 10, 2026
I am sand to say, this is not completed. With version 5.3.3 sendspin still changes a non existing volume level.
I had disabled a few overlays in
/boot/firmware/config.txt(namelydtparam=audio=onanddtoverlay=vc4-kms-v3d) for snapclient. I enabled them again and now theauto_nullerror disappeared. Sendspin seems to check existing sinks very often, I don't know why. But the problem that the volume I can change with sendspin cli or Music Assistant is not any of the existing levels of alsamixer and still not the hardware volume of the hifiberry amp.Available audio devices:
Log from
sendspin --audio-device 1 --hardware-volume true --log-level DEBUGAnd from
sendspin daemon --audio-device 1 --hardware-volume true --log-level DEBUGdflvunoooooo commentedon Mar 10, 2026
This is unchanged with 5.4.
trisweb commentedon Mar 14, 2026
After installing PulseAudio to test #113, I am having this issue as well. Hardware volume control appears to be activated, however the volume is not changed when changing volume on my device. Also a Raspberry Pi 4b with HiFiBerry DAC Hat.
The issue still occurs in 5.4, and I believe this ticket should be reopened.
abmantis commentedon Mar 14, 2026
There are some situations where it is currently not possible to make it work.
Can you list the devices and which one you've selected?
Also, try using pulsemixer or pavuctl and set the default device on it, so that pipewire uses it. Then, run sendspin without the
--audio-deviceargument, so that it uses the default one. Does that work?dflvunoooooo commentedon Mar 17, 2026
This is still a problem with version
5.5.1. Now there is a new soundcard calledbcm2835 Headphones. But if one specifies the desired soundcard,sendspin.alsa_volumedoes choos the correct sound card but not the correct mixer of this card. It chooses the first mixer, calledAnalogue,but that one is useless for the Hifiberry Amp 2 as stated in the hifiberry documentation.I think, what we need is a second option to choose the mixer of the chosen soundcard (at least this was the case with snapcast hardware volume control, see snapcast issue snapcast/snapcast#318 ).
Does the implementation of ALSA now mean, that pipewire / pulseaudio is no longer necessary?
Here are my logs:
And the available audio devices:
maximmaxim345 commentedon Mar 17, 2026
Thanks for testing @dflvunoooooo !
Yes, hardware volume control should now also work without pipewire / pulseaudio in most cases.
Can you check if #187 works for you?
dflvunoooooo commentedon Mar 17, 2026
Thank you for your hard work and fast response! I can happily confirm that #187 is indeed working! :) It does change the proper digital mixer and the media player gets set to the correct volume level of the mixer at sendspin-cli startup.
And I can confirm, that it is working without pipewire. Great!
Prefer well-known ALSA mixer element names (#187)