46 lines
2.3 KiB
Bash
Executable File
46 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Starts whichever Spotify Connect backend actually got installed on this image —
|
|
# librespot or spotifyd. Installed to /usr/local/bin/spotify-connect-start,
|
|
# invoked by spotify-connect.service. Exactly one of these binaries exists on any
|
|
# given image (see the apt-first/documented-fallback install logic in both build
|
|
# pipelines' hooks, mirroring hosts/thin-client's own
|
|
# 0500-spotify-connect.hook.chroot); this wrapper is what lets the systemd unit
|
|
# stay one static file regardless of which one it turned out to be.
|
|
#
|
|
# DEVICE NAME: always $(hostname), read fresh at every start, never baked in.
|
|
# Per-room identity is set differently on each variant — Raspberry Pi Imager's OS
|
|
# Customisation (arm64, per-flash) or IMAGE_HOSTNAME at build time (amd64,
|
|
# per-build) — see hosts/audio-endpoint/README.md's "Per-room identity" sections.
|
|
# Reading the hostname here rather than a baked-in name is what lets one shared
|
|
# unit/wrapper work correctly either way.
|
|
#
|
|
# ALSA DEVICE: ${ALSA_DEVICE:-default}. The arm64 image sets this to a fixed
|
|
# `hw:0` via a systemd drop-in (safe once onboard audio is disabled and the
|
|
# HiFiBerry is the only card left — see the hifiberry-amp2 config.txt fragment).
|
|
# The amd64 image ships with no override at all — a generic mini PC's USB DAC
|
|
# enumeration index isn't something this repo can know in advance (it may also
|
|
# have onboard audio competing for card 0, and which one wins varies by board),
|
|
# so guessing one would be exactly the kind of "build against a guess" this
|
|
# project avoids elsewhere (gesture-config.json's camera_device, the ESP32
|
|
# firmware's weather_entity_id). See hosts/audio-endpoint/README.md's amd64
|
|
# section for the one-time `aplay -l` + systemd drop-in step this leaves for
|
|
# whoever sets up that specific box.
|
|
set -eu
|
|
|
|
NAME="$(hostname)"
|
|
DEVICE="${ALSA_DEVICE:-default}"
|
|
|
|
if command -v librespot >/dev/null 2>&1; then
|
|
exec librespot --name "$NAME" --backend alsa --device "$DEVICE" \
|
|
--bitrate 320 --initial-volume 100 --device-type speaker
|
|
fi
|
|
|
|
if command -v spotifyd >/dev/null 2>&1; then
|
|
exec spotifyd --no-daemon --device-name "$NAME" --backend alsa \
|
|
--device "$DEVICE" --bitrate 320 --initial-volume 100
|
|
fi
|
|
|
|
echo "spotify-connect-start: neither librespot nor spotifyd is installed on this" >&2
|
|
echo " image — see hosts/audio-endpoint/README.md's Spotify Connect install section." >&2
|
|
exit 1
|