☰
Current Page
Main Menu
Home
Home
Editing
MultiRoomAudio
Edit
Preview
h1
h2
h3
Keybinding
default
vim
emacs
Markup
Markdown
Plain Text
Pod
RDoc
reStructuredText
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