127 lines
2.7 KiB
Org Mode
127 lines
2.7 KiB
Org Mode
#+title: Squeezelite
|
|
|
|
* Installation
|
|
|
|
Install OS: Raspberry Pi OS Lite (Debian GNU/Linux 12: bookworm)
|
|
|
|
Setup SSH Authentication
|
|
#+begin_src bash :eval no
|
|
# On Raspberry Pi
|
|
ssh-keygen -t ed25519 -f ~/.ssh/lms_tunnel -N ""
|
|
cat ~/.ssh/lms_tunnel.pub
|
|
#+end_src
|
|
|
|
Copy the public key on =homelab=
|
|
|
|
Change =.ssh/config=
|
|
#+begin_src conf
|
|
Host homelab
|
|
hostname 82.66.44.13
|
|
Port 22
|
|
user thomas
|
|
IdentityFile ~/.ssh/lms_tunnel
|
|
#+end_src
|
|
|
|
Test the SSH connection:
|
|
#+begin_src bash :eval no
|
|
ssh homelab
|
|
#+end_src
|
|
|
|
Install packages:
|
|
#+begin_src bash :eval no
|
|
sudo apt update
|
|
sudo apt install autossh avahi-daemon
|
|
#+end_src
|
|
|
|
Create service: =/etc/systemd/system/lms-tunnel.service=
|
|
#+begin_src conf
|
|
[Unit]
|
|
Description=LMS SSH Tunnel
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=pi
|
|
ExecStart=/usr/bin/autossh -M 0 -N \
|
|
-o "ServerAliveInterval 30" \
|
|
-o "ServerAliveCountMax 3" \
|
|
-o "ExitOnForwardFailure yes" \
|
|
-o "IdentitiesOnly yes" \
|
|
-o "TCPKeepAlive yes" \
|
|
-o "Compression yes" \
|
|
-i /home/pi/.ssh/lms_tunnel \
|
|
-L 0.0.0.0:9000:localhost:9000 \
|
|
-L 0.0.0.0:3483:localhost:3483 \
|
|
-L 0.0.0.0:9090:localhost:9090 \
|
|
thomas@82.66.44.13
|
|
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
#+end_src
|
|
|
|
Enable the service: =sudo systemctl enable --now lms-tunnel.service=
|
|
|
|
Set Up Avahi for LMS Service Discovery: =/etc/avahi/services/squeezebox.service=
|
|
#+begin_src conf
|
|
<?xml version="1.0" standalone='no'?>
|
|
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
|
<service-group>
|
|
<name>Logitech Media Server</name>
|
|
<service>
|
|
<type>_slimdevices._tcp</type>
|
|
<port>3483</port>
|
|
</service>
|
|
</service-group>
|
|
#+end_src
|
|
|
|
Restart Avahi: =sudo systemctl restart avahi-daemon=.
|
|
|
|
#+begin_src bash :eval no
|
|
# Check tunnel status
|
|
sudo systemctl status lms-tunnel.service
|
|
|
|
# Check if ports are being forwarded
|
|
sudo netstat -tulpn | grep -E '9000|3483|9090'
|
|
#+end_src
|
|
|
|
Troubleshooting: =sudo systemctl status lms-tunnel.service=
|
|
|
|
Create the service for Holo Player service: =/etc/systemd/system/holo-audio-player.service=
|
|
#+begin_src yaml
|
|
[Unit]
|
|
Description=Holo Audio DAC Squeezebox Player
|
|
After=network-online.target sound.target lms-tunnel.service
|
|
Wants=network-online.target
|
|
Requires=lms-tunnel.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
ExecStart=/usr/bin/squeezelite \
|
|
-o plughw:CARD=Enhanc,DEV=0 \
|
|
-s localhost \
|
|
-n HoloAudioDAC \
|
|
-a 2000:4:24:1 \
|
|
-b 4096:8192 \
|
|
-r 44100,48000,96000,192000 \
|
|
-p 55 \
|
|
-C 5 \
|
|
-d all=info \
|
|
-f /var/log/squeezelite.log
|
|
|
|
Restart=always
|
|
RestartSec=10
|
|
Nice=-10
|
|
LimitRTPRIO=99
|
|
LimitMEMLOCK=infinity
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
#+end_src
|
|
|
|
=sudo systemctl enable --now holo-audio-player.service=
|
|
|
|
To see the logs in real time: =tail -f /var/log/squeezelite.log=
|