Set‑top box i serwer jednocześnie? Takie rzeczy tylko na Raspberry Pi!
01.03.2017 | aktual.: 01.03.2017 01:26
Historia zaczyna się kiedy postawiłem w swoim pokoju kolejną inkarnację mojego serwera plików na Raspberry Pi. Został on postawiony na regale, bo oryginalnie miał działać jako mały system CCTV. Serwer od początku miał dwa dyski SATA (odpowiednio 500 i 320 GB z firmy Western Digital) podłączone przez (niestety) dwa adaptery USB -> SATA, oraz kamerę, z której później zrezygnowałem. W pewnym momencie używania serwera stwierdziłem, że śmiesznie byłoby postawić sobie monitor na regale i używać Raspberry Pi oprócz urządzenia do przechowywania i streamowania danych także jako set‑top box'a, do oglądania filmów na łóżku piętrowym, co też wykonałem. Założenia projektu były proste: miałem mieć możliwość oglądania filmików na monitorze, które odpalane byłyby po ssh z użyciem jakiegoś playera(tak, wiem że można użyć systemów odtwarzania multimediów w stylu Kodi czy XBMC, ale żaden z nich nie przypadł mi do gustu).
Setup!
Po wstawieniu monitora na regał i podłączeniu go do Raspberry Pi przez HDMI oraz wstępnych testach odtwarzania omxplayerem doszedłem do wniosku że projekt istotnie może wypalić. Pewnym problemem był dźwięk - moje ostatnie głośniki komputerowe odeszły do krainy wiecznego ping timeoutu już pare lat temu, a nie chciałem wydawać stówki na zestaw "super hi‑fi 600W stereo" firmy "made in china". Wygrzebałem więc dwa głośniki firmy Tonsil z okolic końca ubiegłego wieku, które okazały się działać bez szwanku. Oferują one czysty dźwięk i dobre basy, niestety średnio odtwarzają bardzo wysokie soprany; Mimo to nadają się bardzo dobrze zarówno jako samodzielny zestaw do słuchania muzyki jak i jako głośniki używane z monitorem. Wzmacniacz który został użyty jest prostą konstrukcją opartą o chip z serii TDA wyjętą z niesprawnych głośników komputerowych (uszkodzony zasilacz z niestandardową wtyczką).
Testujemy!
Po podłączeniu wszystkiego zacząłem testować cały setup. Wszystko działało bardzo dobrze - z wyjątkiem głośników. Podczas odtwarzania filmików w omxplayerze przy wyższych głośnościach było słychać różne zakłócenia, których o dziwo nie było słychać przy odtwarzaniu audio przykładowo w vlc. Winowajcą okazał się być sam omxplayer, który nie ma najlepszej implementacji dekodowania i wypuszczania sygnału audio na chip. Z pomocą przyszedł specjalnie skompilowany mpv (z przełącznikiem w gcc umożliwiającym akceleracje sprzętową odtwarzania video), w którym ten problem w ogóle nie występuje(mpv używa ALSA'y, a omxplayer przekazuje dźwięk prosto do chipa). Dodatkowo, mpv ma wbudowaną obsługę youtube dzięki czemu mogę po prostu użyć URL filmu zamiast nazwy pliku - jest to na prawdę bardzo przydatny dodatek.
Nie tylko odtwarzanie video
Oprócz samego odtwarzania audio i video, stwierdziłem że odkurzę swojego sixaxisa i zainstaluje oprogramowanie RetroPie, które jest ogromnym pakietem zawierającym emulatory popularnych retrokonsol. Pobrałem z oficjalnej strony skrypt instalujący dla raspbiana, który odpaliłem na swoim Pi3. Obawiałem się o support bluetooth, ale o dziwo mój pad działał całkiem nieźle. Jedyny problem jaki napotkałem to częste problemy ze znalezieniem pada przez Pi jeśli retropie nie zostało uruchomione lokalnie, a przykładowo przz ssh. W takim przypadku zobaczymy ekran proszący o podłączenie kontrolera. Drugim problemem jest emulacja Nintendo 64. Planowałem przejść nareszcie The Legend of Zelda - Majora's Mask, ale niestety nie będę w stanie zrobić tego na rpi przez zbyt niski framerate nawet biorąc pod uwagę overclock jaki zafundowałem mojej malince. Problem sprawiła też emulacja Amigi - ani Uae4All, ani Uae4Arm nie odpalił się, ta sama sytuacja miała miejsce w przypadku paru przykładowych tytułów z kategorii Ports. Na plus za to jest stan emulacji NESa czy SNESa - emulacja obu konsolek działała perfekcyjnie.
Cały projekt mogę uznać za udany - okazjonalnie mogę pooglądać youtube, pograć w moje ulubione konsolowe retrogry lub posłuchać muzyki na dobrze brzmiących głośnikach. Muszę uciekać się do paru kompromisów(np. trzmanie podpiętej pod raspberry pi klawiatury USB aby ewentualnie załadować środowisko retropie nie używając SSH), ale nie mam z tym żadnego problemu.