The problem: older car, no Bluetooth that works reliably, and the Spotify Jam feature is genuinely useful on longer trips with passengers. The solution: a Raspberry Pi tucked somewhere in the car, permanently connected to the stereo via a regular 3.5mm cable, running Spotifyd as a Spotify Connect target.

What you will need

  • Raspberry Pi 3 or 4 with a proper audio-out jack (RPi 3 works fine)
  • A microSD card of at least 4 GB
  • USB power adapter suitable for your car
  • A 3.5mm audio cable
  • A computer with Raspberry Pi Imager installed
  • A monitor and keyboard for initial setup

Flashing and first boot

With Raspberry Pi Imager, flash Bookworm Lite 32-bit to your microSD card. Before the flash starts, configure the built-in options to set your Wi-Fi to your smartphone hotspot credentials and enable SSH. This saves you from needing a screen later.

Insert the card into the Pi and give it 5 to 10 minutes on first boot to expand the filesystem. Once it is up, log in with the credentials you set in Imager and run:

sudo apt update && sudo apt full-upgrade
reboot

Installing Spotifyd

Download the latest release from the Spotifyd releases page:

You want the armhf full build, which is ARMv7 32-bit. Use wget to pull it directly to the Pi, then extract it:

tar zxvf spotifyd-linux-armhf-full.tar.gz

This gives you a single executable called spotifyd with the executable bit already set. Test it:

./spotifyd --no-daemon

If it starts without errors, kill it with Ctrl+C and move on.

Configuration

Create the config directory and edit the config file:

mkdir -p ~/.config/spotifyd/
nano ~/.config/spotifyd/spotifyd.conf

Paste the following, adjusting device_name to something recognizable in the Spotify app:

[global]
#username = "USER"
#password = "PASS"
backend = "alsa"
device = "alsa_audio_device"
control = "alsa_audio_device"
mixer = "PCM"
volume_controller = "alsa"
device_name = "Your_Car_Name"  # No spaces
bitrate = 160                  # 96 or 320 also available
cache_path = "/tmp/spotifyd"
max_cache_size = 100000000
initial_volume = "100"
volume_normalisation = true
normalisation_pregain = -10
autoplay = true
device_type = "speaker"

Autostart via systemd

Create the systemd user directory and service file:

mkdir -p ~/.config/systemd/user/
nano ~/.config/systemd/user/spotifyd.service
[Unit]
Description=A spotify playing daemon
Wants=sound.target network-online.target
After=sound.target network-online.target

[Service]
ExecStart=/home/pi/spotifyd --no-daemon
Restart=always
RestartSec=12

[Install]
WantedBy=default.target

Update the ExecStart path if you placed the binary somewhere other than the home directory. Then allow the service to run when the user is not logged in, and enable it:

sudo loginctl enable-linger pi
systemctl --user enable spotifyd.service

Reboot with your phone hotspot active. The Pi should connect automatically and Spotifyd should appear as a Spotify Connect device in the Spotify app.

Optional: read-only filesystem

If you want to be able to cut power to the Pi without any risk of SD card corruption, enable the overlay filesystem via sudo raspi-config under Performance Options. Also mark the boot partition as non-writable. The tradeoff is that the Spotify cache gets wiped on every boot, but for a car setup that is perfectly acceptable.