Squeezelite issues on RPi 3B+

I’ve been using squeezelite + Lyrion music server but something broke it. I thought it was probably an update on the server side. My Dietpi version was old so I attempted to update it along with the current version of squeezelite.

The process failed, so I created and sent a bug report. Dietpi updated as far as 9.1 but for some reason squeezelite kept killing the update process, and errors originated at the time of stopping services, plus later. I tried purging squeezelite and that also fails.

Suggestions for next steps much appreciated!

Frank

filling the troubleshooting template and share some error logs

Troubleshooting template:

Details:

  • Date | 2025-03-02 17:12:12
  • Program name | DietPi-Update
  • Command | apt-get -y --with-new-pkgs upgrade
  • Exit code | 100
  • DietPi version | v9.1.0 (MichaIng/master)
  • Distro version | bullseye (ID=6,RASPBIAN=0)
  • Kernel version | Linux DietPi 6.1.21-v7+ #1642 SMP Mon Apr 3 17:20:52 BST 2023 armv7l GNU/Linux
  • Architecture | armhf
  • Hardware model | RPi 3 Model B+ (armv7l) (ID=3)
  • Power supply | (EG: RAVPower 5V 1A)
  • SD card | (EG: SanDisk Ultra 16 GB)

Steps to reproduce:

  1. Tried to update from a version 8 distro and the process hung at 9.1
  2. Tried to update again beginning from 9.1

Expected behaviour:

  • 9.11 should be running

Actual behaviour:

  • upgrade hangs
  • Squeezelite in version 9.1 will not run as a service

Extra details:

Additional logs:

Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up squeezelite (2.0.0-1517-dietpi1) ...
Configuring Squeezelite service user ...
Configuring Squeezelite systemd service ...
Failed to start squeezelite.service: Unit squeezelite.service has a bad unit file setting.
See system logs and 'systemctl status squeezelite.service' for details.

Result of: 'systemctl status squeezelite.service'

root@DietPi:~# systemctl status squeezelite.service
Warning: The unit file, source configuration file or drop-ins of squeezelite.service changed on disk. Run 'systemctl daemon-reload' to reload units.
‚óè squeezelite.service - Squeezelite (DietPi)
     Loaded: bad-setting (Reason: Unit squeezelite.service has a bad unit file setting.)
    Drop-In: /etc/systemd/system/squeezelite.service.d
             └─dietpi-process_tool.conf, dietpi-services_edit.conf
     Active: inactive (dead)
       Docs: man:squeezelite(1)
             https://ralph-irving.github.io/squeezelite.html
             man:squeezelite(1)
             https://ralph-irving.github.io/squeezelite.html

Feb 11 15:03:51 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 11 15:03:52 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 11 15:03:53 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 11 15:03:53 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 11 15:03:55 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Mar 02 16:55:48 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Mar 02 17:10:38 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Mar 02 17:10:40 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Mar 02 17:11:43 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Mar 02 17:11:44 DietPi systemd[1]: squeezelite.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
root@DietPi:~# 

dpkg: error processing package squeezelite (--configure):
 installed squeezelite package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 squeezelite
E: Sub-process /usr/bin/dpkg returned an error code (1)

I also tried updating from 9.10 to 9.11 on a different RPi - this one a 5B - with squeezelite loaded and again the update failed.

Details:

  • Date | 2025-03-02 23:15:10
  • Program name | DietPi-Software
  • Command | apt-get -y -eany update
  • Exit code | 100
  • DietPi version | v9.10.0 (MichaIng/master)
  • Distro version | bookworm (ID=7,RASPBIAN=0)
  • Kernel version | Linux DietPi 6.6.74+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.74-1+rpt1 (2025-01-27) aarch64 GNU/Linux
  • Architecture | arm64
  • Hardware model | RPi 5 Model B (aarch64) (ID=5)
  • Power supply | (EG: RAVPower 5V 1A)
  • SD card | (EG: SanDisk Ultra 16 GB)

Steps to reproduce:

Expected behaviour:

Actual behaviour:

Extra details:

Additional logs:

Hit:1 https://deb.debian.org/debian bookworm InRelease
Hit:2 https://deb.debian.org/debian bookworm-updates InRelease
Hit:3 https://deb.debian.org/debian-security bookworm-security InRelease
Hit:4 https://deb.debian.org/debian bookworm-backports InRelease
Hit:5 https://archive.raspberrypi.com/debian bookworm InRelease
Hit:6 https://dietpi.com/apt bookworm InRelease
Get:7 https://download.opensuse.org/repositories/home:/jcorporation/Debian_12  InRelease [1532 B]
Hit:8 https://dietpi.com/apt all InRelease
Err:7 https://download.opensuse.org/repositories/home:/jcorporation/Debian_12  InRelease
  The following signatures were invalid: EXPKEYSIG AA09B8CCE895BD7D home:jcorporation OBS Project <home:jcorporation@build.opensuse.org>
Fetched 1532 B in 1s (2038 B/s)
Reading package lists...
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://download.opensuse.org/repositories/home:/jcorporation/Debian_12  InRelease: The following signatures were invalid: EXPKEYSIG AA09B8CCE895BD7D home:jcorporation OBS Project <home:jcorporation@build.opensuse.org>
E: Failed to fetch https://download.opensuse.org/repositories/home:/jcorporation/Debian_12/InRelease  The following signatures were invalid: EXPKEYSIG AA09B8CCE895BD7D home:jcorporation OBS Project <home:jcorporation@build.opensuse.org>
E: Some index files failed to download. They have been ignored, or old ones used instead.

basically 2 different issues

The key for myMPD experied last week and would need to be renewed PGP Key not valid anymore · Issue #1411 · jcorporation/myMPD · GitHub

Can you try following

eval curl -sSfL 'https://download.opensuse.org/repositories/home:/jcorporation/Debian_12/Release.key' | gpg --dearmor -o /etc/apt/trusted.gpg.d/dietpi-mympd.gpg --yes
apt update

the other issues seems to be related to a service misconfiguration

can you check following. This should show service config

systemctl cat squeezelite.service

Excellent that the RPi 5B is now on 9.11.2! Thanks for the hint to fix that.

Regarding the problem getting Squeezelite working on the RPi 3B+ - still under DietPi v9.1.0 - note the following…

root@DietPi:~# systemctl cat squeezelite.service
**# Warning: squeezelite.service changed on disk, the version systemd has loaded is outdated.**
**# This output shows the current version of the unit's original fragment and drop-in files.**
**# If fragments or drop-ins were added or removed, they are not properly reflected in this output.**
**# Run 'systemctl daemon-reload' to reload units.**
**# /lib/systemd/system/squeezelite.service**

[Unit]
Description=Squeezelite (DietPi)
Documentation=man:squeezelite(1) https://ralph-irving.github.io/squeezelite.html
Wants=network-online.target
After=network-online.target sound.target

[Service]
User=squeezelite
EnvironmentFile=/etc/default/squeezelite
ExecStart=/usr/bin/squeezelite $ARGS
[Install]
WantedBy=multi-user.target
**# /etc/systemd/system/squeezelite.service.d/dietpi-process_tool.conf**
# WARNING: Do not manually edit this file, use "dietpi-services" to adjust values!
[Service]
CPUSchedulingPolicy=fifo
IOSchedulingClass=realtime
CPUSchedulingPriority=60
**# /etc/systemd/system/squeezelite.service.d/dietpi-services_edit.conf**
[Unit]
Description=Squeezelite (DietPi)
Documentation=man:squeezelite(1) https://ralph-irving.github.io/squeezelite.html
After=sound.target
[Service]
#User=squeezelite
EnvironmentFile=/etc/default/squeezelite
ExecStart=/usr/bin/squeezelite -W -C 5 -r 196000:1000 -a 4096:1024::0:0 -n Largo_Brass
[Install]
WantedBy=multi-user. Target

The following line worked flawlessly before updating from DietPi v8.x.x - though the new start command adds a zero to the end of the -a parameters:

ExecStart=/usr/bin/squeezelite -W -C 5 -r 196000:1000 -a 4096:1024::0:0 -n Largo_Brass

I also tried editing the squeezelite.service script to exactly match the default script and no difference in the behavior.

I almost wonder if there is something wonky with the Squeezelite version DietPi is choosing to load. On this page the versions listed for each Debian system seem ‘earlier’:

Many thanks for your help with these issues!

Frank

Ok, you now have at least 2 configuration files in which the command ExecStart= appears. This is not allowed and will be flagged as an error by the system. However, this has nothing to do with DietPi, but is an intentional behavior of systemd.

Unfortunately, you have now removed too many # when editing the service. Normally it is sufficient to only edit the line with ExecStart=.

Here in the example of mjpg-streamer and you can see how it should look. So you need 2 lines with ExecStart=. One empty and one with your command. This will overwrite the start command in the original configuration. Camera and Surveillance Software Options - DietPi.com Docs

ExecStart=
ExecStart=/usr/bin/squeezelite -W -C 5 -r 196000:1000 -a 4096:1024::0:0 -n Largo_Brass

I’m not 100% sure, but we might build the package ourselves. Therefore it is installed from our own package server and not from the global Debian site. As you can see, the package is a DietPi tag.

I appreciate your thoughts and will re-edit the start command in the v9.1.0 installation.

Meanwhile, I purged squeezelite from the v 9.11.2 system in the RPi 5B. I then re-installed Squeezelite and made no edits. No errors were reported during reinstallation of Squeezelite. Note the following result:


squeezelite.service - Squeezelite (DietPi) 
Loaded: loaded (/lib/systemd/system/squeezelite.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Mon 2025-03-03 14:28:37 GMT; 59s ago
Duration: 47ms                                                                                                    
Docs: man:squeezelite(1)                                                                                      
https://ralph-irving.github.io/squeezelite.html                                                         
Process: 16532 ExecStart=/usr/bin/squeezelite $ARGS (code=exited, status=1/FAILURE)
Main PID: 16532 (code=exited, status=1/FAILURE)                                                                 
CPU: 47ms                                                                                                    

Mar 03 14:28:37 DietPi systemd[1]: Started squeezelite.service - Squeezelite (DietPi).
Mar 03 14:28:37 DietPi squeezelite[16532]: [14:28:37.386393] test_open:281 playback open error: No such file or directory   
Mar 03 14:28:37 DietPi squeezelite[16532]: [14:28:37.386442] output_init_common:401 unable to open output device:  default
Mar 03 14:28:37 DietPi systemd[1]: squeezelite.service: Main process exited, code=exited, status=1/FAILURE  
Mar 03 14:28:37 DietPi systemd[1]: Keine Vorschläge: Failed with result 'exit-code'.

looks like no audio device available

Some progress - Squeezelite is now running in both v9.11.2 and v9.1.0. Yay!

This then should have completed the circle of updates that were triggered when Lyrion Music Server on my M4 Macmini server was updated to version 9.0.1. Unfortunately, the Debian Squeezelite versions now running in the two versions of DietPi are not being recognized as ‘players’ by that LMS v9.0.1 server. Hardware-wise, everything was running fine until that LMS upgrade broke the system. It appears that DietPi is currently loading Squeezelite version 2.0.0. The version of Squeezelite being distributed on Lyrion’s site is version 1.9.9-1414+git20221121.dbe69eb-1. Of course, DietPi’s software management system is super deluxe compared to earlier load & compile methods and I would much rather stay within the DietPi software management system.

Any suggestions will be much appreciated. I’ll be happy to be a tester for Debian squeezelite 1.9.9, on LMS 9.0.1, but my time is fairly tight ATM so it wouldn’t happen immediately…

Best,

Frank

Edit 1: The LMS version 9.0.1 is working normally to supply a stream to iOS devices via wifi. The iOS app iPeng can access audio files without problem.

Edit 2: I completed the RPi 3B+ update to DietPi 9.11.2, with its auto update of squeezelite to 2.0.0-1517-dietpi1. This version of squeezelite remains undetected by LMS v9.0.1.

OK - problem solved!

After confirming that port 3483 was listening for UDP and TCP on the server running Lyrion Music Server, I tried incorporating the -s variable to the squeezelite start script. After restart the RPi was immediately recognized by the music server and all should now be working fine. I have no idea why such a change occurred, since all the hardware, ports and permissions were working well before LMS updated to v9.0.1. …just have to roll with it…

Use the -s [IP Address] in the squeezelite service script.

https://forums.lyrion.org/forum/user-forums/logitech-media-server/1757740-v9-0-1-and-squeezelite-what-s-happened