First, install Raspbian.
This configuration works with HiFiBerry DACs and the Sabre ES9023 chip.
Configure the device tree overlay by editing boot config.
sudo nano /boot/config.txtAdd the following line to the end of the file.
dtoverlay=hifiberry-dacReboot your Pi and make sure device shows up.
$ aplay -lLook for card 0: sndrpihifiberry. Your card ID may be different from 0.
Create /etc/asound.conf with the following content. Replace 0 with your card ID from above.
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}Reboot your Pi and make sure the ALSA settings have taken effect.
$ alsamixerYou should see Card: snd_rpi_hifiberry_dac displayed in the top left corner.
Install https://github.com/librespot-org/librespot using the commands below.
First, install Rust and Cargo using rustup.
curl https://sh.rustup.rs -sSf | shLog out of your account and log back in to add the cargo binary into your PATH.
Now, install git and build dependencies.
sudo apt-get install git build-essential portaudio19-devClone the repo and navigate to the directory.
git clone https://github.com/librespot-org/librespot.git
cd librespotOptional step: Change the number of volume steps from 64 to 16. I prefer this because it matches the iPhone's volume control. 🙂
sh nano connect/src/spirc.rs
Look for
repeated.push(64)and change it torepeated.push(16).
Build librespot. This step will take a very long time on a Raspberry Pi - most likely 30 minutes or more.
sh
cargo build --release
The following is taken from the install instructions located at https://github.com/mikebrady/shairport-sync/tree/development.
$ git clone https://github.com/mikebrady/shairport-sync.git
$ git checkout development
$ autoreconf -i -f
$ ./configure --sysconfdir=/etc --with-alsa --with-pa --with-avahi --with-ssl=openssl --with-soxr --with-systemd
$ make
$ sudo make install
$ sudo systemctl enable shairport-syncNow, edit this file:
sudo nano /etc/shairport-sync.confChange these values:
general = {
name = "whatever you want!";
};
alsa = {
output_device = "hw:1,0"; // (or whatever number card,device "sndrpihifiberry" is above)
interpolation = "soxr";
};If audio is underflowing, set audio_backend_buffer_desired_length to 22050.
Restart Shairport-sync to apply the new settings.
$ sudo service shairport-sync restart