Raspberry Pi & OpenELEC - ceneni media center
Čeprav je kot razlog šele drugi, pa je, zaradi mojega kroničnega pomanjkanja časa, prvi projekt z njim realizacija medijskega predvajalnika z XBMC.
Za namestitev XBMC na RPi obstaja več metod: OpenELEC, Raspbmc in še nekaj drugih, precej kompliciranih. Zaradi enostavnosti sem se odločil za prvo.
Najprej sem naložil paket iz OpenELEC in ga razpakiral.
tar -xjf OpenELEC-RPi.arm-2.95.5.tar.bz2
Čeprav je notri README, pa nikjer ne piše, kako pripraviti SD kartico zanj. Zato sem pobrskal po wiki strani in našel (precej škrbasta) navodila. Ker sam uporabljam mac sem seveda najprej prebral ta odsek, a kljub 3x branju, mi nekaj ni šlo skupaj. Zato sem se spravil še na Linux odsek, ki pa je bil še bolj kriptičen z ukazom ./create_sdcard.sh. Zato sem se zapodil v branje in dešifracijo skripte, ki pa je (hvala bogu) precej enostavna.
Iz nje sem ugotovil, da jepotrebno na SD kartici pripraviti dve (2) particiji: SYSTEM in STORAGE. Odprl sem Disk utility in ju kreiral, ter formatiral v FAT. Sledilo je kopiranje datotek iz paketa v particijo SYSTEM (ki mora biti prva!), na način, kot je opisano v create_sdcard.sh skripti.
echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 ssh quiet" > $MOUNTPOINT/cmdline.txt
cp target/KERNEL $MOUNTPOINT/kernel.img
cp target/SYSTEM $MOUNTPOINT
cp 3rdparty/bootloader/* $MOUNTPOINT
cp openelec.ico $MOUNTPOINT
cp README.md $MOUNTPOINT
sync
$MOUNTPOINT je v mojem primeru /Volumes/SYSTEM.
Sledil je prvi zagon RPija. Trajalo je kar precej časa, da se je na ekranu pokazal znani zaslon XBMCja. Z USB tipkovnico so delale čisto vse funkcije in kmalu je bil XBMC konfiguriran in pripravljen za uporabo.
Ker imam ostale XBMCje povezane na MySQL bazo, sem to želel tudi na RPi, kar pa dosežemo z advancedsettings.xml, ki ga moramo kreirati.
Ker se sistem dvigne direkno v XBMC na sami napravi tega ne moremo narediti dokler ne vklopimo ssh. In tu je nastopila prva težava. Kljub temu, da sem v System / OpenELEC nastavitvah vklopil ssh in rebootal, do konzole nisem prišel. Zato sem najprej pogledal ali je RPi sploh viden v mreži.
Izkaže se, da OpenELEC privzeto pošera (da v skupno rabo) precej map in med njimi je tudi userdata, kamor XBMC shranjuje svoje konfiguracijske datoteke. Tako sem svoj advancedsettings.xml enostavno skopiral v mapo in ponovno rebootal RPi. Po zagonu, ki je trajal precej časa (RPi verzija XBMCja je Frodo, ostale imam še Eden, zato je kreiral nove baze), se je XBMC zbudil s celotno knjižnico.
To je bilo torej opravljeno, vendar me je močno motilo, da ssh ni delal. Spravil sem se na Google in se lotil iskanja. Žal brez pametnih rezultatov. Še nekajkrat sem rebootal RPi in ob pozornem spremljanju zaslona opazil, da se ob prižiganju RPi upre, da varnostne nastavitve ključev za ssh niso pravilne. Takoj sem posumil, da bo vzrok v FAT formatu particije STORAGE (SYSTEM mora biti v FAT saj to eksplicitno zahteva namestitev). Takoj sem se spravil na Linux mašino in preformatiral particijo v ext4. Po ponovnem zagonu je ssh na OpenELEC sistemu deloval brezhibno.
Prednost OpenELEC sistema je, poleg enostavnosti namestitve, tudi ta, da zasede strašansko malo prostora. Vsega skupaj (brez thumbnailov slik fimov) je dobrih 100MB. Ker imam poleg MySQL baze na NAS tudi thumbnaile preusmerjene na NAS, imam tako dovolj že 256MB SD kartico za OpenELEC.
Edina težava, ki sem jo opazil je ta, da se občasno XBMC "zatakne" in v tistem času ni dosegljiv niti preko mreže, čeprav nemoteno predvaja glasbo ali video. Po kakšni minuti sicer spet pride k sebi in deluje naprej normalno.
MPEG2 in VC1 podpora
Zaradi patentov sta kodeka MPEG2 in VC1 privzeto nedelujoča, kar pomeni, da tudi XBMC ne predvaja vsebin kodiranih v teh formatih. K sreči omogoča fundacija Raspberry Pi nakup poceni licence za dekodiranje, žal pa je vsaka licenca omejena le na en procesor.
Za nakup licence moramo vpisati serijsko št. procesorja, ki jo najdemo v XBMC v meniju System / Settings / System information. Po epošti nato prejmemo ključ, ki odklene posamezen kodek, vse kar moramo storiti je, da ga dodamo v datoteko config.txt v obliki:
# MPEG 2 Hardware acceleration decode_MPG2=XXXXXXXXXX # VC1 Hardware acceleration decode_WVC1=XXXXXXXXXX
Ker pa datotek z omenjenima kodekoma nimam, sam zaenkrat licenc nisem še kupil.
Precej dobro kompilacijo navodil sem našel tule.