Raspberry Pi i system multi-room oparty na Logitech Media Server

Niedawno przyszła pocztą kolejna Malinka (pierwszą miałem v1 B+, teraz wskoczyła 3 z promocji na Banggood), mogłem więc w nocy dokończyć kolejny projekt.

Zawsze chciałem mieć dźwięk multi-room. Nigdy jednak nie kupiłem głośników które by go obsługiwały (Denon Heos, Sonos, Samsung M) – między innymi ze względu na cenę – aż tak często nie słucham żeby wydać na nie 6-8k PLN. Wolę wydać na coś innego.

Od momentu kiedy kupiłem pierwszą Malinę, chciałem z niej zrobić coś w stylu małego centrum muzycznego. Volumio, Runeaudio czy Moodeaudio są fajne, piękne, ale nie obsługują multiroom (tutaj chyba się to zmieniło w kontekście Volumio i da się to zrobić).

Założenie projektu było następujące:
– multiroom który obsługuje radia internetowe, moją muzykę, spotify, deezer
– możliwe tanio, ale z możliwością zrobienia Hi-Fi gdzie będę uważał za stosowne

Udało mi się (no, nie był to wielki wyczyn w sumie) postawić Logitech Media Server na Raspberry Pi. Produkt co prawda już oficjalnie nie jest rozwijany przez Logitech (szkoda wielka), ale udostępnili kod, dlatego produkt nie dość, że żyje to jeszcze jest rozwijany.

Lista potrzebnych elementów:
– Raspberry Pi. Działa dobrze i na v1 B+, ale postawiłem go finalnie na nowo zakupionej wersji 3 – większa moc i więcej RAM
– karta muzyczna. Jakość standardowego jacka w Pi3 jest podła, trzeba go więc czymś zastąpić. Zacząłem od czegoś bardzo prostego i taniego – http://allegro.pl/karta-muzyczna-dzwiekowa-na-usb-7-1-hurt-f-vat-i6453599436.html
– głośniki – podpiąłem na szybko głośnik przenośny jaki miałem w domu

Instalacja LMS jest prosta: http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-stand-alone-squeezebox-server-and-player-for-bbq/, system wstaje sam, poniżej opis komend.

Serwer:
sudo apt-get install -y libsox-fmt-all libflac-dev libfaad2 libmad0
wget -O logitechmediaserver_all.deb $(wget -q -O – „http://www.mysqueezebox.com/update/?version=7.9.0&revision=1&geturl=1&os=deb”)
sudo dpkg -i logitechmediaserver_all.deb
sudo chown -R squeezeboxserver:nogroup /usr/share/squeezeboxserver/

Do odtwarzania na tym samym sprzęcie użyłem Squeezelite.

sudo alsamixer – tutaj możemy sprawdzić naszą kartę muzyczną po naciśnięciu F6, wybrać poziom dźwięku, etc.

Instalacja bibliotek:
sudo apt-get install -y libflac-dev libfaad2 libmad0

Katalog tymczasowy i ściągnięcie squeezelite:
mkdir squeezelite
cd squeezelite
wget -O squeezelite-armv6hf.tar.gz http://www.gerrelt.nl/RaspberryPi/squeezelite_ralph/squeezelite-armv6hf.tar.gz
tar -xvzf squeezelite-armv6hf.tar.gz
sudo mv squeezelite squeezelite-armv6hf

sudo mv squeezelite-armv6hf /usr/bin

sudo chmod a+x /usr/bin/squeezelite-armv6hf
sudo /usr/bin/squeezelite-armv6hf -l

Poniżej kilka przykładów wywołania i sprawdzenia czy działa karta muzyczna, którą wybraliśmy.

sudo /usr/bin/squeezelite-armv6hf -o default:CARD=ALSA -s 192.168.1.200

W przypadku karty USB możemy podać:
sudo /usr/bin/squeezelite-armv6hf -o front:CARD=Device,DEV=0 -s 192.168.1.200

Dla HDMI:
sudo /usr/bin/squeezelite-armv6hf -o hw:CARD=ALSA,DEV=1

Teraz konfiguracja uruchomienia squeezelite przy starcie systemu:
cd /home/pi/squeezelite
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite_settings.sh
sudo mv squeezelite_settings.sh /usr/local/bin
sudo chmod a+x /usr/local/bin/squeezelite_settings.sh

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
sudo chmod a+x /etc/init.d/squeezelite

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite.service
sudo mv squeezelite.service /etc/systemd/system
sudo systemctl enable squeezelite.service

cd /home/pi

Ważna sprawa. Musimy zmienić w ustawieniach naszą kartę muzyczną na taką, jakiej będziemy używać.

sudo nano /usr/local/bin/squeezelite_settings.sh

Szukamy:
SL_SOUNDCARD=”sysdefault:CARD=ALSA”
Zmieniamy na wybraną przez nas
SL_SOUNDCARD=”hw:CARD=ALSA,DEV=1″

Można jeszcze zmienić wyświetlaną nazwę:
SL_NAME=”Denon”

Co ciekawe, u mnie wysyłanie na HDMI działa tylko w momencie jeżeli przy starcie systemu odbiornik (u mnie amplituner) był włączony. Później chodzi tygodniami, ale przy restarcie musi go widocznie wykryć.

I na koniec
sudo /etc/init.d/squeezelite start

Sprawdzić wszystko możemy wchodząc na adres raspberry z portem 9000, dla przykładu 192.168.1.200:9000

Konieczne będzie założenie konta na http://mysqueezebox.com/ i podanie danych logowania na naszym serwerze.

Teraz clue! Mądrzy ludzie opracowali PiCorePlayer (https://sites.google.com/site/picoreplayer/home), który jest udostępniony w formie image zajmującego kilkadziesiąt megabajtów. Zgrywasz na kartę, wkładasz, działa. Jeżeli chcesz – ustawiasz połączenie po WiFi i voila – standalone player (jeżeli ktoś chce to może go nawet użyć w samochodzie, bo Malinę zasilisz po USB przecież). Można sobie każdą z instalacji nazwać jak chcesz – Łazienka góra, Łazienka dół, Salon, Sypialnia…

Dostęp do playera czy serwera możemy mieć (oprócz strony internetowej) również przez aplikację Squeezer na Android czy też iPhone (na który jest jeszcze iPeng). Można włączać, wyłączać odtwarzacze, grupować je, decydować czy muzyka gra na jednym czy na wszystkich, dla każdego z playerów można ustawić osobny alarm.

Poszło wszystko 'od strzału'. Radio 3, Antyradio, setki (jeśli nie tysiące) innych stacji dostępnych za kliknięciem. Na deezer posłuchałem Death-metalu, z Tune-in Radio stacji EBM, z mojej kolekcji bajek dla dzieci, z listy pluginów LMS pobrałem ważny dla mnie Bandcamp. Aplikacja Spotify też jest, ale tego nie zdążyłem jeszcze sprawdzić. Można dodawać do ulubionych, tworzyć własne listy odtwarzania, itp, itd. Możliwości konfiguracyjne są bardzo duże.

Minimalny koszt to jakieś 80 PLN za Rpi1 B+ (na serwer) + zapewne 70 PLN za Rp1 B + karta muzyczna + głośniki. Powiedzmy, że 200 PLN za możliwość odtwarzania na dwóch sprzętach.

Dalej poszło już z górki:
– zakup dwóch Rpi B na PiCorePlayery – około 160 PLN
– do salonu gdzie mam porządny sprzęt grający – połączenie ze wzmacniaczem Denon po HDMI – instalacja Squeezelite
– do sypialni tania karta muzyczna + głośniki komputerowe (mogą być i zasilane po USB)
– do łazienki i sauny BlitzWolf (http://www.banggood.com/BlitzWolf-BW-AP1-20W-Mini-12V-Hi-Fi-Audio-Stereo-Power-Digital-Car-Amplifier-FM-MP3-p-1053566.html?rmmds=search) + głośniki łazienkowe. Widzę komplety za 60-80 PLN – nie potrzebuję tam Mozarta w HiFi

Każdemu tutaj oczywiście wedle potrzeb – są i sprzęty DAC (HiFiBerry) za kilkaset złotych które dają świetną jakość dźwięku.

W domoticz jest obsługa Logitech Media Server, w związku z tym:
– jako że nie lubię, gdy sprzęt chodzi i pobiera energię bez potrzeby – każdy player wraz z głośnikiem (jeżeli aktywny) podpięty pod gniazdko 433MHz i zrobione sceny, które: włączą player, ustawią ulubioną stację (oczywiście z możliwością zmiany telefonem), zaczną grać na przykład w łazience o 6:45 gdy wstajemy i idziemy się kąpać a wyłączą o 7:30 gdy wychodzimy z domu
– obsługa pasywnych nie ma sensu pod włącznikiem, bo tutaj Malina pobiera bardzo mało prądu w stanie spoczynku

W Domoticz możemy dodać serwer z poziomu Hardware, gdzie podajemy adres i port. System automatycznie wykryje nasze odtwarzacze.

Jak dla mnie combo Logitech Media Server + piCorePlayer jest fantastycznym systemem dla moich potrzeb.

Życzę miłego słuchania i zapraszam do kontaktu.