A multiroom audio/music playback, with spotify connect, airplay and bluetooth support, using snapcast for the 'multiroom synchornization' part.
note: even if it is a multiroom solution, you can use it as unique room playback device, with no problems.
This project uses raspotify, shairport-sync, BlueALSA and snapcast. Without them this project wouldn't be possible.
-
Airplay: this project build shairport-sync from source, so to enable airplay support the following depencies requirements should be met:
$ apt install autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev libssl-dev avahi-daemon libavahi-client-dev libsndfile1-dev
-
Bluetooth: for bluetooth support, some alsa and bluez packages are required, you can obtain them with:
$ apt install -y --no-install-recommends bluealsa alsa-base alsa-utils bluez-tools
there are no dependencies needed for client nodes.
To install the server node, run the serverInstall.sh
script with sudo permissions from the device you wish to be the server.
In your setup, you can have only one Server node, since it will be an interface beetween the user and the other nodes, acting as a music playback device for the user (spotify, airplay or bluetooth) and a syncrhonized audio stream source for the client nodes.
flag | description |
---|---|
--no-spotify |
disable spotify support |
--no-shairport |
disable airplay support |
--no-bluetooth |
disable bluetooth support |
A Server Node can also be a Client Node
The client nodes will be the ones to play the audio.
To install a client node, run the clientInstall.sh
script with sudo permissions from the device.
In your home setup you can have as many client nodes as you want (1,2,3,...maybe 20?).
flag | description |
---|---|
--force-headphones |
set headphone as output device |
You can force the client node to use the headphone 3.5mm jack output with --force-headphones
optional flag, instead of using system default device.:
$ sudo ./clientInstall.sh --force-headphones
note: you should check if you have the 'Headphones' playback device listed in alsa devices (with $ aplay -l
)
You can also connect to a client's bluetooth (instead of beeing limited to only the servernode's bluetooth).
To enable this feature, from the client only machine run enable-client-bluetooth.sh
script at scripts/
folder:
$ cd scripts && sudo ./enable-client-bluetooth.sh
Do not install 'client's bluetooth' (enable-client-bluetooth.sh
script) on a machine that has 'server bluetooth' installed. They probably will conflict and cause unknow behavior.
You can still install 'client's bluetooth' on a server machine if it was installed with ./serverInstall.sh --no-bluetooth
, but i've never tested it (if you've tried, tell me how it went).
To uninstall, run the uninstall.sh
script with sudo permissions.
Works for both client and server.
check the spotifypiHome Developing page