☰
Current Page
Main Menu
Home
Home
Editing MultiRoomAudio
Edit
Preview
H1
H2
H3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
Markdown
Plain Text
Pod
RDoc
reStructuredText
Rendering unavailable for
AsciiDoc
BibTeX
Creole
MediaWiki
Org-mode
Textile
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
--- title: MultiRoomAudio --- [[_TOC_]] # Requirements * Multi-room audio distribution * 3+ zone * Reliable (wired) audio rendering * Allow ipod/mp3 player input * Remote power trigger for Amplifier ## Options * Bidirectional streaming? (ipod in bedroom streams to whole house?) * Synchronization (it's hard!) * Logitech Media Server * Snapcast * [Home Automation][20] integration - see [Network Receivers][21] * Remote volume control # Solutions | Amp | Speakers | Renderer Controller | Notes | | ---------------------------- | -------------------------- | ----------------------------- | -------------- | | [Clever Acoustics CPA40][22] | [Wharfedale Diamond 9][23] | [Kindle Fire 7][24] | Power trigger! | | [Medialabs FC330][25] | Raspberry Pi + Kodi | USB-OTG eth, no power trigger | | Squeezebox Duet | no power trigger | | Squeezebox Radio | Mono only | # Components * Server (1) * Amp & Speakers (1 set per zone) * Renderer (1 per zone) - ethernet, audio decoding * Controller (1 per zone + mobile controllers) - user interface ## Server * mpd, icecast2, streamTranscode * [Mediatomb][26] * minidlnad * Muse * [XBMC Multiroom Audio][27] * Only works with other XBMC clients? * [Logitech Media Server][28] * Plex Media Server * [mopidy + snapcast][29] * spotify * snapcast ## Renderer * mmpc * media streamer (from Nokia) * [Kodi][30] ## Renderer-Controllers * [Kodi][30] ## Amplifiers and Speakers * Logitech [Z5500][31] (5.1) * Onkyo [TX-NR636][32] (7.2) * * * # Research ## Amplifiers ## Onkyo Automation : [HA Onkyo][33] (power, volume, source) * [NR-609][34] (2011, HDMI problems?) * [NR-515][35](2012) * [NR-626][36] (2013) * [NR-636][37] (2014, Atmos upgrade) * [NR-545][38] (2015, Atmos, 100W) * [NR-646][37] (2015, Atmos, 160W) ### Yamaha Automation : [OpenHAB Yamaha][39] (power, volume, mute, source) * Yamaha RXV-475 * [RXV-379][40] (2015, 5.1 only) ### Denon Automation : [OpenHAB Denon][41] * [AVR-X2200W][42] (2015) ## Renderer-Controllers * [Kodi][30] * [Kodi XSqueeze][43] * [Multicast Streaming scripts][44] * [O2 Joggler][45] ~£50-75 * [O2 Joggler][45] ~£50-75 * [Roku Soundbridge][46] * [Logitech Squeezebox Touch][47] * * * # Software Components: * mopidy * snapcast * shairport-sync * upmpdcli ## mopidy ## snapcast Install snapclient on all media player nodes: Releases : <https://github.com/badaix/snapcast/releases> Server : [amd64 deb][48] Clients : [Android][49], [RPi][50] No iOS equivalent? Note that snapclient on volumio is symlinked to `/usr/sbin/snapclient`. The default snapclient is very old (~0.2) and won't work with recent snapservers (0.11+). ### Snapserver config * Don't daemonize. systemd does it for you. * Use the same or separate streams for mopidy and airport? * Depends on `librespot@.service` templates for multiple instances of librespot service `/etc/defaults/snapserver`: USER_OPTS="--user snapserver:snapserver" SNAPSERVER_OPTS=" \ -s 'pipe:///tmp/snapfifo0?name=Mopidy&sampleformat=44100:16:2&codec=flac' \ -s 'pipe:///tmp/snapfifo1?name=Airport&sampleformat=44100:16:2&codec=flac' \ -s 'pipe:///tmp/librespot1?name=Spotify-1&sampleformat=44100:16:2&codec=flac' \ -s 'pipe:///tmp/librespot2?name=Spotify-2&sampleformat=44100:16:2&codec=flac' \ -s 'pipe:///tmp/librespot3?name=Spotify-3&sampleformat=44100:16:2&codec=flac' \ " ### Multi-instance snapclient systemd service `/etc/systemd/system/snapclient@.service`: # Multi-instance snapclient service file [Unit] Description=Snapcast client After=network-online.target sound.target Requires=network-online.target Wants=avahi-daemon.service [Service] # Uses a per-instance defaults file to specify the soundcard device EnvironmentFile=-/etc/default/snapclient-%i Type=forking ExecStart=/usr/bin/snapclient -d $USER_OPTS -i %i $SNAPCLIENT_OPTS PIDFile=/var/run/snapclient/pid-%i Restart=always [Install] WantedBy=multi-user.target `/etc/default/snapclient-x`: # Legacy? START_SNAPCLIENT=true USER_OPTS="--user snapclient:audio" SNAPSERVER_HOSTNAME=media # Don't specify -i here, it's added by the systemd service # RPi HDMI soundcard SNAPCLIENT_OPTS="-h $SNAPSERVER_HOSTNAME -s CARD=ALSA,DEV=1" Install with: sudo systemctl enable snapclient@1 sudo systemctl enable snapclient@2 ...etc.. ## librespot Spotify daemon. ### Multi-instance librespot systemd service Depends on snapserver. Using TCP ports 22120-22129. `/etc/systemd/system/librespot@.service`: [Unit] Description=Librespot Requires=snapserver.service After=network.target storage.target snapserver.service [Service] #EnvironmentFile=/etc/default/librespot User=snapserver Group=audio Restart=always RestartSec=10 PermissionsStartOnly=true Environment="CACHE_DIR=/path/to/librespot-cache" ExecStartPre=/bin/mkdir -m 1755 -p ${CACHE_DIR}/%i ExecStartPre=-/bin/chown snapserver:audio ${CACHE_DIR}/%i # Create the fifo for snapserver to read ExecStartPre=-/usr/bin/mkfifo /tmp/librespot%i ExecStartPre=-/bin/chown snapserver:audio /tmp/librespot%i Environment="DEVICE_NAME=Spotify-%I" Environment="BITRATE=96" Environment="CACHE_ARGS=--cache ${CACHE_DIR}/%i" Environment="VOLUME_ARGS=--enable-volume-normalisation --linear-volume --initial-volume=100" Environment="BACKEND_ARGS=--backend pipe --device /tmp/librespot%i" ## Abuse the instance ID to open a known port (for firewalling) Environment="ZEROCONF_ARGS=--zeroconf-port 2212%i" ExecStart=/usr/local/bin/librespot --name ${DEVICE_NAME} $BACKEND_ARGS --bitrate ${BITRATE} $CACHE_ARGS $VOLUME_ARGS $ZEROCONF_ARGS $OPTIONS [Install] WantedBy=multi-user.target snapserver.service Install with: sudo systemctl enable librespot@1 sudo systemctl enable librespot@2 ...etc.. ## shairport-sync ## upmpdcli Available for armhf Jessie-based Volumio but not for Stretch-based OSMC. Packages available from: <https://www.lesbonscomptes.com/upmpdcli/downloads.html#debian> ### Install # Depends on libjsoncpp0: echo "deb http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi" >> /etc/apt/sources.list.d/raspbian.list apt-key adv --keyserver pool.sks-keyservers.net --recv-keys F8E3347256922A8AE767605B7808CE96D38B9201 echo "deb http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian/ stretch main" > /etc/apt/sources.list.d/upmpdcli.list apt-get update apt-get install upmpdcli ### Configure Edit `/etc/upmpdcli.conf` (and for Volumio, copy it to /tmp/upmpdcli.conf): Two settings needed: friendlyname = my-hostname upnpiface = eth0 # or wlan0, or whatever [20]: /HomeAutomation/HomeAutomation [21]: NetworkReceivers [22]: CleverAcousticsCPA40 [23]: WharfedaleDiamond9 [24]: KindleFire7 [25]: MedialabsFC330 [26]: http://mediatomb.cc/ [27]: http://code.google.com/p/xbmc-multiroom-audio-plugin/ [28]: http://www.mysqueezebox.com/download [29]: https://home-assistant.io/blog/2016/02/18/multi-room-audio-with-snapcast [30]: Kodi [31]: Z5500 [32]: TX-NR636 [33]: https://home-assistant.io/components/media_player.onkyo/ [34]: http://www.whathifi.com/onkyo/tx-nr609/review [35]: http://www.whathifi.com/onkyo/tx-nr515/review [36]: http://www.whathifi.com/onkyo/tx-nr626/review [37]: http://www.whathifi.com/onkyo/tx-nr636/review [38]: http://www.whathifi.com/onkyo/tx-nr545/review [39]: https://github.com/openhab/openhab/wiki/Yamahareceiver-Binding [40]: http://www.whathifi.com/yamaha/rx-v379/review [41]: https://github.com/openhab/openhab/wiki/Denon-Binding [42]: http://www.whathifi.com/denon/avr-x2200w/review [43]: http://kodi.wiki/view/Add-on:XSqueeze [44]: https://github.com/NapoleonWils0n/kodi-playercorefactory/tree/master/docs/multicast-streaming [45]: http://yourfamily.o2.co.uk/o2familyjoggler/ [46]: http://soundbridge.roku.com/ [47]: http://www.logitech.com/speakers-audio/wireless-music-systems/devices/5745 [48]: https://github.com/badaix/snapcast/releases/download/v0.11.1/snapserver_0.11.1_amd64.deb [49]: https://github.com/badaix/snapcast/releases/download/v0.11.1/Snapcast_0.11.1.apk [50]: https://github.com/badaix/snapcast/releases/download/v0.11.1/snapclient_0.11.1_armhf.deb [51]: MultiRoomAudio?action=sourceblock&num=1 [52]: MultiRoomAudio?action=sourceblock&num=2 [53]: MultiRoomAudio?action=sourceblock&num=3 <!-- vim: filetype=markdown -->
Uploading file...
Sidebar
# SideBar * [Home][1] * [Projects][2] * * * <!-- --> * [Code][3] * [Tech][4] * [Network][5] * [MediaCentre][6] * [UAV][7] * * * <!-- --> * [Travel][8] * [Music][9] * [Horse Riding][10] * [Study][11] * [Games][12] * [Other Activities][13] * * * <!-- --> * [Car][14] * [House][15] * [Watch][16] * [Clothing][17] * [Miscellany][18] * * * [1]: /Home [2]: /Projects [3]: /Code/Code [4]: /Tech/Tech [5]: /Network/Network [6]: /MediaCentre/MediaCentre [7]: /UAV/UAV [8]: /Travel/Travel [9]: /Music/Music [10]: /HorseRiding/HorseRiding [11]: /Study/Study [12]: /Games/Games [13]: /Do/Do [14]: /Car/Car [15]: /House/House [16]: /Watch/Watch [17]: /Clothing/Clothing [18]: /Miscellany/Miscellany <!-- vim: filetype=markdown -->
Edit message:
Cancel