[Plugin] Spotify Soloist Connect for Volumio (incl. LossLess)

Hi Nerd (and everyone),

After getting Lossless playback working perfectly through Soloist Connect all day yesterday, I’ve run into a strange issue. If I use Volumio to play anything else (radio, etc) and then switch back to Soloist Connect, it stops working. Volumio still shows up, and I can select it, but the moment I try to play anything from my PC or phone, the connection drops instantly.

Pi 5
Fiio K13

NERD: - Log URL removed.

P.S. I should say it’s the same if I reboot both the Pi and PC

Hey @Steve1,

The drop is not Connect “forgetting” the speaker. Soloist is crashing on DAC open (pcm_params assert → ABRT). systemd brings it back, so Volumio still appears; play dies again. Crashpad is Spotify’s crash reporter firing after that abort.

The key was visible in that logsubmit ps line. Please revoke it on the Spotify for Developers dashboard and save a new one. Sorry - that should not have been in the log.

This capture was a boot, then three crashes on play. It does not include the radio → Spotify step. Need one clean run with Verbose logging on, after a full power off (wall power, not only a reboot), so the Fiio is cold as well.

  1. Plugin settings → Verbose logging on → Save & Restart Soloist.
  2. Power off the Pi and the K13 (unplug). Wait ~10 s. Power on. Wait until Volumio is up.
  3. Confirm Spotify → this device plays once (so we know the cold start is good).
  4. Play radio (or whatever breaks it) for 20–30 s, stop.
  5. Switch back to Soloist, play from the phone/PC until it drops.
  6. Do not reboot. Send a new log immediately.

Kind Regards,

1 Like

Hey @Steve1,

Before the next log, please install 0.7.6.

The previous logsubmit included the Soloist API key on the ps line. Revoke that key on the Spotify dashboard, save a new one, then update. 0.7.6 overwrites the key on argv so a later ps should show nice-try-logsubmit, not the secret.

Then the same capture as before: Verbose logging on, full power off (Pi and K13), radio, back to Soloist, drop, send the log without rebooting. Still redact if you see a spak_ string.

Kind Regards,

1 Like

Dear Volumionauts,

Spotify Soloist Connect 0.8.0 is the first beta.

It turns a Volumio 4 device (Pi or x86) into a Spotify Connect speaker using Spotify Soloist. Audio goes through pcm.volumio, so Volumio volume, DSP and the rest of the chain still apply. There is no PulseAudio or PipeWire on the device.

This is our community plugin. It is not affiliated with Spotify AB.

Install (beta): Plugins → Music Services, once the store listing is accepted.

Between those releases: GitHub is the cutting-edge line

You need a Spotify Premium account to generate a Soloist API key. Treat that key as a secret.

Thread and changelog stay in this topic. Expect remaining rough edges; please report them here.

Thanks to everyone who tested the alphas.

Kind Regards,

3 Likes

this is in the readme

cd /home/volumio
mkdir -p soloist_connect && miniunzip soloist_connect.zip -d soloist_connect
cd soloist_connect
volumio plugin install

but it doesn’t work. this does:
ssh volumio@ip_address
git clone --depth 1 --filter=blob:none --sparse GitHub - foonerd/alsa_soloist_connect: Spotify Connect for Volumio 4 via Spotify Soloist, playing through pcm.volumio over ALSA. No PulseAudio, no PipeWire. · GitHub
cd alsa_soloist_connect
git sparse-checkout set soloist_connect
cd soloist_connect
volumio plugin install

Hey @jocoman,

Yes - the steps are in the first post, and again in several replies in this thread.

To avoid further confusion, the outdated README lines have been replaced with the ones that were tested.

Kind Regards,

How to install 0.8.0 on Rivo+? There’s no plugin in the store. Plugins Test Mode is set.

Hey!
Retry, I just added it :wink:

Yes, it is. Thanks balbuze :slight_smile:

This is really great and exactly why I like Volumio: the support from the developers/community and the unique possibility to create mixed playlists. Thank you for all the work.

One issue I can reproduce:
Mixer Type: Software → Soloist stops after a couple of seconds
Mixer Type: Hardware → no issue

Setup: Raspberry Pi 3B + USB DAC Douk Audio ST-01 (but happens with every output)

Relevant Soloist log:
playing spotify:track:39IapCnTyKESV043FsJwIg “Nathalie” …
soloist: pcm_params.c:170: snd1_pcm_hw_param_get_min: Assertion `!snd_interval_empty(i)’ failed.
soloist.service: Main process exited, code=killed, status=6/ABRT

After restart:
SoloistConnect: userspace=armhf device=plug:volumio …

The issue is reproducible consistently after switching to Software Mixer and restarting Volumio.

Hey @maroen,

That line is the wreckage, not the cause. Soloist died; it does not say why the interval was empty.

This thread has already asked for Verbose logging more than once. Without those soloist-shim: lines just before the assert, there is nothing to work with here. You are on your own unless another tester has already walked that Software Mixer path and can compare notes.

Kind Regards,

Attached the log with Verbose Logging enabled. The issue was reproduced with Mixer Type set to Software. Hope this contains the information you need.
log.txt (18.1 KB)

Hey @maroen,

The journal you posted is the abort. It is not the device, the mixer, or the ALSA chain. Without those, this stays a Software-mixer guess.

Verbose stays on. Do the broken capture first (Software mixer), then switch to Hardware, restart Volumio, and repeat the entire list. Label every paste SOFTWARE or HARDWARE. One command omitted = start over.

A. Identity

cat /etc/os-release
cat /etc/volumio_current_os
uname -a
cat /proc/device-tree/model
cat /data/plugins/music_service/soloist_connect/package.json

B. Playback options as Volumio stored them

cat /data/configuration/audio_interface/alsa_controller/config.json

C. The whole ALSA config (the file, not a slice)

cat /etc/asound.conf
ls -la /etc/asound.conf /etc/asound.conf.d
cat /etc/asound.conf.d/*

D. Cards and PCM names

cat /proc/asound/cards
cat /proc/asound/devices
cat /proc/asound/pcm
ls -la /proc/asound
aplay -l
aplay -L

E. USB / I2S / HDMI (all of it, even if you think it is “every output”)

lsusb
lsusb -t
lsusb -v
dmesg | grep -i -e usb -e snd -e dac -e audio
cat /proc/asound/card0/stream0
cat /proc/asound/card1/stream0
cat /proc/asound/card2/stream0
cat /proc/asound/card0/usbid
cat /proc/asound/card1/usbid
cat /boot/userconfig.txt
cat /boot/config.txt

F. Mixer controls on the live card

amixer
amixer scontrols
amixer scontents
amixer -c 0 scontents
amixer -c 1 scontents
amixer -D plug:volumio scontents

G. What plug:volumio actually accepts (this is the open we die in)

aplay -D plug:volumio -v -d 2 /dev/zero
aplay -D volumio -v -d 2 /dev/zero
aplay -D softvolume -v -d 2 /dev/zero
aplay -D plug:softvolume -v -d 2 /dev/zero
aplay -D volumioLocalPlayback -v -d 2 /dev/zero

If a name does not exist, paste the error. Do not skip it.

H. Hardware params while something else holds the device

Play a local file from Volumio (not Spotify). Leave it running. Then:

cat /proc/asound/card0/pcm0p/sub0/hw_params
cat /proc/asound/card0/pcm0p/sub0/sw_params
cat /proc/asound/card0/pcm0p/sub0/status
cat /proc/asound/card1/pcm0p/sub0/hw_params
cat /proc/asound/card1/pcm0p/sub0/sw_params
cat /proc/asound/card1/pcm0p/sub0/status
lsof | grep -e pcm -e asound
fuser -v /dev/snd/*

Stop playback. Repeat the same hw_params / status cats (idle).

I. Plugin / daemon settings (no env file)

systemctl cat soloist.service
systemctl status soloist.service --no-pager -l
ls -la /data/plugins/music_service/soloist_connect
ls -la /data/plugins/music_service/soloist_connect/alsa-lib

In the plugin UI, write down: buffer ms, align volume, queue playback, Peppy metering, output trim. Do not export soloist.env.

J. Other AAMPP plugins

ls /data/plugins/audio_interface
ls /data/plugins/music_service
ls /data/plugins/miscellanea
cat /data/configuration/audio_interface/*/config.json
cat /data/configuration/miscellanea/*/config.json

FusionDSP, PeppyMeter, equalizer, Camilla: on or off for each capture.

K. MPD’s output (it uses the same graph)

cat /etc/mpd.conf

L. Crash journal for that mixer only

Verbose on. Play from the phone until it dies (Software) or until 30 s of music (Hardware). Then:

journalctl -b -u soloist.service --no-pager -n 400

The Hardware paste must include soloist-shim: pcm open plug:volumio period=. If that line is missing, the capture is unused.

M. “Every output”

You wrote that this happens on every output. Repeat A to L for each output you claim: USB DAC, HDMI, I2S, analogue. One zip per output, named.

N. Screenshots

Playback Options (output device, mixer type, mixer control, volume options) for each capture. Spotify quality setting.


Two complete kits. Full text. No slices, no “same as before,” no “I use a Douk.” Until both mixer graphs are in the thread, there is nothing to change.

Or simply forward log link url with replicated steps. Your choice.

Kind Regards,

HDMI_SOFTWARE_20260826-135455.zip (479.4 KB)
USB-DAC_HARDWARE_20260826-141455.zip (491.8 KB)
USB-DAC_SOFTWARE_20260826-134021.zip (46.4 KB)
Hi Nerd, I did my best.
One thing I was wrong: I am using a Trends Audio (16 bit) DAC.
Hope this covers what you need.
Thank you!

Hey @maroen,

Trends Audio 16-bit is the chip. The first capture already had it: PCM2704 (08bb:2704), full-speed. The Douk name does not matter.

I cannot reproduce the abort on other Software-mixer boxes. I need your DAC, Software mixer, and Soloist stopped. Pause and Volumio Stop are not enough. If Soloist has ever played, it keeps the DAC and every aplay will say Device or resource busy.

A. Free the DAC

Playback Options: output = that USB DAC, mixer = Software. Then on the Pi, as volumio:

sudo systemctl stop soloist

Wait 5 seconds.

cat /proc/asound/cards

The USB DAC line starts with N (on the last kit, 5).

cat /proc/asound/card5/pcm0p/sub0/status

Use card5 only if N is 5. You must see closed. If you see RUNNING or owner_pid, something else still has the card (MPD, radio). Stop that in the UI, wait, run status again. Do not continue until it is closed.

B. What the chip speaks

USB only. HDMI and Headphones have no stream0.

cat /proc/asound/card5/stream0

Paste the USB Audio / Playback block. If that file is missing, try card0 card1 card2 the same way.

C. The three opens (only after status is closed)

aplay -D softvolume -f FLOAT_LE -r 44100 -c 2 -d 1 -v /dev/zero
aplay -D softvolume -f S16_LE -r 44100 -c 2 --period-size=882 --buffer-size=22050 -d 1 -v /dev/zero
aplay -D softvolume -f FLOAT_LE -r 44100 -c 2 --period-size=882 --buffer-size=22050 -d 1 -v /dev/zero

Paste each output in full.

  • Long Playing raw data dump - it played.
  • pcm_params.c:170 / Assertion / Aborted - that is the fuse. You can stop.
  • Device or resource busy - Soloist or MPD is still on the DAC. Go back to A.
  • Unknown PCM softvolume - you are not on Software. Set Software, save, start at A.

D. Put Soloist back

sudo systemctl start soloist

Do not change mixer for this. Do not start Spotify until D is done. Do not run C on Hardware.

Hardware mixer remains the workaround.

Kind Regards,

Hi Nerd, output attached.
All three softvolume opens play. So it looks the abort only appears through plug:volumio, which is the device the shim opens.

FYI: Hardware mixer is not a workaround for me: the DAC’s PCM control doesn’t change the output level on this unit.

Thank you!
20260826_4020_log.txt (8.4 KB)

Hey @maroen,

That log is what we needed. softvolume can do FLOAT32 and period 882 on your PCM2704. The abort is not the DAC and not SoftMaster.

The shim opens plug:volumio, not softvolume. On your machine that is an extra plug and empty in front of the chain that just played.

Hardware mixer: understood. On this chip PCM does not change the level. SoftMaster is the fader. We will not ask you to stay on Hardware.

One more open, Soloist still stopped, status closed:

aplay -D plug:volumio -f FLOAT_LE -r 44100 -c 2 --period-size=882 --buffer-size=22050 -d 1 -v /dev/zero

Paste the full output, including Assertion / busy if it dies. Then sudo systemctl start soloist. That is the last command.

Kind Regards,

Hi Nerd, here you go (Soloist was stopped and the DAC status was confirmed closed):

aplay -D plug:volumio -f FLOAT_LE -r 44100 -c 2 --period-size=882 --buffer-size=22050 -d 1 -v /dev/zero
Playing raw data ‘/dev/zero’ : Float 32 bit Little Endian, Rate 44100 Hz, Stereo
aplay: pcm_params.c:170: snd1_pcm_hw_param_get_min: Assertion `!snd_interval_empty(i)’ failed.
Aborted by signal Aborted…

Thank you.

Hey @maroen,

0.8.1 is on GitHub only. The store is still 0.8.0.

Uninstall the plugin, then install from current main (same git steps as the first post). Stay on Software mixer and the Trends DAC.

After start, the log must say device=softvolume. Play from the phone. It must not abort. The volume knob must still work.

If the line still says plug:volumio, it is not this build. We will not ask you to use Hardware mixer; on this DAC that control does not change the level.

Kind Regards,

Hi Nerd,

This solves the issue! Tested from phone, single track, changed volume, all good.
Just updated all my mixed playlists and all plays fine now!

Many thanks for this!
Kind regards,

Aug 27 09:18:54 volumio systemd[1]: Starting soloist.service - Spotify Soloist daemon (Volumio 4 ALSA)...
Aug 27 09:18:54 volumio systemd[1]: Started soloist.service - Spotify Soloist daemon (Volumio 4 ALSA).
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: SoloistConnect: plugin=0.8.1 shim=0.2.9 rev=0b2770b3574d7a75263157c53224f6fb19f2badf userspace=armhf device=softvolume tlength_cap=500ms external_volume=true trim=0dB diag=off uname=armv7l
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: SoloistConnect: interpreter=/data/soloist/sysroot/usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.358: soloist 1.3.7.497 build 1787810501 (20260827) (gb24005ef46) (linux/arm)
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.358: client expires in 89 days
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.437: api: websocket server listening on 127.0.0.1:9878
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.437: ready, device_name=Volumio device_id=57e1d6d1-ff8e-4faf-af5d-8d62adaa6c8d
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.438: waiting for login — connect to "Volumio" from your Spotify app
Aug 27 09:18:54 volumio launch-soloist.sh[25602]: 2026-08-27 09:18:54.438: running
Aug 27 09:19:16 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:16.928: logged in as maroen99
Aug 27 09:19:18 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:18.893: became active device
Aug 27 09:19:18 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:18.893: paused spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:00 / 2:43]
Aug 27 09:19:19 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:19.034: paused spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:00 / 2:43]
Aug 27 09:19:19 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:19.042: no longer active device
Aug 27 09:19:19 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:19.569: became active device
Aug 27 09:19:19 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:19.570: paused spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:00 / 2:43]
Aug 27 09:19:22 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:22.885: playing spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:00 / 2:43]
Aug 27 09:19:25 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:25.045: volume changed to 56%
Aug 27 09:19:25 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:25.242: volume changed to 62%
Aug 27 09:19:25 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:25.645: volume changed to 100%
Aug 27 09:19:33 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:33.492: playing spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:11 / 2:43]
Aug 27 09:19:43 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:43.491: playing spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:21 / 2:43]
Aug 27 09:19:50 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:50.978: volume changed to 88%
Aug 27 09:19:52 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:52.293: volume changed to 67%
Aug 27 09:19:53 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:53.491: playing spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:31 / 2:43]
Aug 27 09:19:53 volumio launch-soloist.sh[25602]: 2026-08-27 09:19:53.698: volume changed to 93%
Aug 27 09:20:00 volumio launch-soloist.sh[25602]: 2026-08-27 09:20:00.733: paused spotify:track:2SpEHTbUuebeLkgs9QB7Ue "Jolene" by "Dolly Parton" [0:39 / 2:43]
Aug 27 09:20:01 volumio launch-soloist.sh[25602]: 2026-08-27 09:20:01.116: playing spotify:track:1Xi84slp6FryDSCbzq4UCD "Arcade" by "Duncan Laurence" [0:00 / 3:04]
Aug 27 09:20:11 volumio launch-soloist.sh[25602]: 2026-08-27 09:20:11.492: playing spotify:track:1Xi84slp6FryDSCbzq4UCD "Arcade" by "Duncan Laurence" [0:11 / 3:03]
Aug 27 09:20:12 volumio launch-soloist.sh[25602]: 2026-08-27 09:20:12.610: volume changed to 76%
Aug 27 09:20:16 volumio launch-soloist.sh[25602]: 2026-08-27 09:20:16.768: paused spotify:track:1Xi84slp6FryDSCbzq4UCD "Arcade" by "Duncan Laurence" [0:16 / 3:03]