Enigma2 z pohľadu linuxáka
Už je to nejaký rok, čo mám Linuxový Set-top box s DVB GUI Enigma2. V tomto blogu sa budem snažiť podeliť o svoje skúsenosti s dlhodobým používaním, administráciou a komunitou užívateľov okolo STB s Enigmou 2.
Pár slov k hardvéru
Na trhu je pomerne široký výber prístrojov so softvérom Enigma2. Väčšina blogu sa bude vzťahovať k ľubovoľnému hardvéru. Špecifické časti však budú len pre hardvér, ktorý mám, teda VU+ Uno 4k SE. Prístroj má SoC Broadcom 7252s, dvojjadrový ARMv7 taktovaný na 1.7GHz, 2GB RAM, 4GB flash, 2 x USB3, SATA a dvojvstupový tuner podporujúci 8 streamov.
Čo je Enigma2
Pri názve Enigma2 sa stretávame s rovnakým problémom, ako pri názve Linux. Na jednej strane sa takto označuje konkrétny softvér (v tomto prípade DVB GUI), ale zároveň sa takto označuje aj linuxová distribúcia obsahujúca DVB GUI Enigma2. V blogu budem používať označenie Enigma2 výlučne pre GUI, aby nedochádzalo z zámene.
GUI
Pôvodne bolo GUI vyvinuté firmou Dream Multimedia GmbH pre prijímače Dreambox. Firma vyvíjala softvér ako open source so zdrojovými kódmi zverejnenými pod licenciou GPLv2. V súčasnosti už firma nezverejňuje úplné zdrojové kódy a tá časť, ktorá je zverejnená je dostupná pod proprietárnou licenciou. Po uzavretí zdrojových kódov pokračuje komunita vo vývoji vlastného (vlastných) forkov.
Samotné GUI je napísané v jazykoch C++ a Python. Časti, ktoré vyžadujú vysoký výkon sú napísané v C++. Patrí tam ovládanie tunerov, displaya, vykresľovanie GUI atď. Skoro všetky objekty sú z C++ exportované do Pythonu cez SWIG wrapper. Bez Python kódu Enigma2 nerobí nič. Správanie GUI je napísané v pythone. Python určuje kedy zapnúť tuner, kam naladiť tuner, čo vykresliť na obrazovke, ako reagovať na tlačidlá …
Distribúcia
Podobne, ako distribúcia linuxu určuje výber softvéru a prostredia, tak aj distribúcia enigmy2 určuje výber softvéru, balíčkovacieho systému a skinu enigma2. Najčastejšie sa stretneme s výberom softvéru typickým pre embedded zariadenia. V systéme tak namiesto klasického openssh nájdeme skôr dropbear ssh, namiesto bashu busybox atď. Najčastejšie sa ako balíčkovací systém používa opkg
(pôvodne vyvinutý pre OpenWrt).
Medzi populárne distribúcie patria OpenATV, OpenPLI, BlackHole, OpenViX, VTi, Open Droid, Open Vision, OpenHDF … Spolu existuje minimálne niekoľko desiatok distribúcií.
Okrem výberu balíkov má skoro každá distribúcia vlastný fork pôvodnej enigmy2. Namiesto jedného spoločného stromu komunita udržiava desiatky trochu rozdielnych stromov, každý s pár zmenami a vlastnými bugmi. Veľmi veľa zmien sa implementuje duplicitne. Neexistuje žiaden spoločný roadmap a vývoj (ak vôbec) napreduje len veľmi pomaly.
Inštalácia
Prístroje sa predávajú v zásade s nainštalovaným firmvérom. Niekedy je to priamo firmvér od výrobcu (napr. VTi pri VU+), inokedy sa dá priamo v obchode kúpiť prístroj s inou distribúciou (napr. VU+ sa u nás dajú kúpiť aj s distribúciou OpenATV).
Nainštalovať si inú distribúciu nebýva zložité. Konkrétny postup sa líši podľa výrobcu. Pre VU+ stačí naformátovať USB kľúč na FAT32, skopírovať image do príslušného adresára, odpojiť napájanie napájanie prístroja, zapnúť prístroj s vloženým USB a pri výzve na inštaláciu potvrdiť inštaláciu tlačidlom power na prednom paneli. Potom už len stačí počkať cca 5 minút.
Po prvom zapnutí sa zobrazí jednoduchý wizard, v ktorom stačí vybrať jazyk, nastaviť pripojenie na internet, odkliknúť automatickú konfiguráciu tunera a automatické ladenie.
Používanie
Okrem STB s enigmou mám aj blbý televízor s Linuxom (LG, MIPS architektúra bez FP, minimalistický GUI server Nano-X), niekoľko STB s androidom a xbox s kodi.
V porovnaní s androidom je enigma2 neskutočne rýchla. Celé GUI je tak svižné, že niekedy mám pocit, že sa prvky zobrazujú skôr než stlačím tlačidlo na ovládači. GUI je jednoducho rýchle a bez animácií.
Porovnajme si však GUI s kodi:
Zvyčajne som voči kodi dosť kritický. Jednoducho nemám rád kodi, pretože rozhranie je také … programátorské. V porovnaní s enigmou2 je však výrazne jednoduchšie.
Najskôr sa pozrime na hlavné menu. Štandardné menu enigmy obsahuje dosť divné a skoro duplicitné položky (Panel Info, Informácia), ďalej je tu YoutubeTV (ktorý tak v 50% prípadov zhodí kernel) a 4 ako-tak užitočné položky (časovač, pluginy, nastavenia a vypnúť).
Položky sa našťastie dajú vymeniť, takže nemusí byť až taká katastrofa, ale určite by som default zvolil inak.
Po stlačení tlačidla TV sa zobrazí zoznam staníc. Teda presnejšie povedané v defaultnom nastavení sa zobrazí zoznam zoznamov staníc. Vždy. Vždy keď som chcel prepnúť kanál na iný zo zoznamu musel som stlačiť TV, potom Ok (pretože chcem vybrať stanicu z aktuálneho zoznamu) a potom som sa až dostal k výberu stanice. Nerozumiem prečo je defaultná akcia zobrazenie zoznamu zoznamov.
Potom som dlho googlil kým som našiel nastavenie, ktoré by toto správanie malo zmeniť. No našiel, ale nefungovalo. Presnejšie povedané vyplo to zoznamy zoznamov, takže existoval jediný zoznam a nedalo sa prepnúť na iný zoznam.
Takže som googlil usilovne ďalej a potom som po pár dňoch niekde tu našiel to správne nastavenie (tlačidlo menu pri zobrazení zoznamu staníc):
Položky menu sú zoradené náhodne, s náhodne zobrazenými veľkými / malými počiatočnými znakmi. V menu sa nachádzajú také divné položky ako vycentrovanie titulkov, alebo skrytie VBI (???).
Nastavenia vyzerajú takto:
Nastavenia sú nahádzané do jedného veľkého zoznamu bez logiky. Niekde tu sa dá nastaviť predvolené zobrazenie zoznamu a kopec ďalších vecí, ktoré ani netuším čo robia. To hádam dokonale vystihuje vývoj enigma2. Pritom sú to drobnosti, ktoré by poriadny UX expert dokázal upratať za pár dní, ak by tušil, čo tie položky robia.
K zoznamu by som mal ešte jednu výhradu - v defaultnom stave názov stanice a aktuálna relácia extrémne splývajú do jedného celku. V kodi je názov stanice a relácie odlíšený iným písmom a zarovnaný do stĺpcov. Samozrejme nastaviť sa to dá aj v enigme2, ale už si vôbec nepamätám, v ktorom menu.
Nakoniec sa pozrime ešte na EPG. V zásade tu mám skôr výhrady k dizajnu než k samotnému fungovaniu. Výhrady mám hlavne ku kontrastným ohraničeniam relácií, čo celé rozhranie zneprehľadňuje. Taktiež voľba jediného fontu takmer rovnakej veľkosti a farby nie je úplne najšťastnejšia.
Aby som to zhrnul, prístroj síce funguje super, ale ovládanie je v defaultnom nastavení šialené. Menu sú navrhnuté strašne, našťastie to človek raz nastaví a už tam nelezie. Defaultný vzhľad MymetrixHD z OpenATV je niekedy dosť neprehľadný, pritom by stačilo trochu vyladiť kontrast farieb a písma a bol by super.
Vzhľad
Neprehľadnosť niektorých častí GUI by sa dala celkom ľahko vyriešiť použitím nejakého elegantnejšieho skinu. Tak sa pozrime, čo si typický užívateľ enigmy predstavuje pod elegantným štýlom.
Vo fórach som najčastejšie našiel odporúčanie skinu HD glass. Tak sa naň pozrieme.
Už zo zobrazenia OSD môžme uhádnuť, že tento skin sa zasekol niekde v roku 1995. Najdôležitejšie informácie na OSD sú stanica a aktuálna relácia. Tu sa názov stanice a aktuálna relácia totálne strácajú v úplne zbytočných informáciách a neprebernom množstve ikon. Pre porovnanie takto vyzerá OSD z MymetrixHD:
Bude na tom zoznam programov lepšie? No nie som si istý ;)
Pre istotu prikladám screenshot z webu projektu:
Možno si teraz hovoríte, prečo píšem o nejakom náhodne zvolenom skine. Žiaľ toto je najčastejšie odporúčaný skin, ktorý som našiel. Žiaľ takto vyzerá 98% skinov. Žiaľ oficiálny web mojej distribúcie vyzerá takto:
KiddaC-ove skiny
Okrem MymetrixHD som našiel jedinú sadu skinov, ktorá vyzerala použiteľne. Ide skiny používateľa KiddaC.
Pluginy
Enigma2 sa dá rozšíriť o nové funkcie pomocou pluginov napísaných v programovacom jazyku python. Vývoj pluginov budem rozoberať v blogu venovanom črevám enigmy2 (ak sa k tomu v rozumnej dobe dostanem). Tento blog sa snažím písať z pohľadu užívateľa, takže zatiaľ žiadne programovanie.
Pluginy je možné vyhľadať a nainštalovať buď z terminálu pomocou príkazu opkg, alebo cez menu pluginy, alebo cez webové rozhranie. Pluginy majú väčšinou prefix enigma2, takže v termináli ich vieme vypísať jednoducho príkazom opkg find "enigma2*"
:
# opkg find "enigma2*" enigma2-oe-alliance-plugins - 6.4+git2743+4290a22-r1 enigma2-oe-alliance-plugins - 6.4+git2737+cb9971c-r1 enigma2-oe-alliance-plugins-meta - 6.4+git2743+4290a22-r1 enigma2-plugin-display-oe-a-lcdskin-1 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-10 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-11 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-12 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-13 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-2 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-3 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-4 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-5 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-6 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-7 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-8 - git256+10a7dfa-r0 enigma2-plugin-display-oe-a-lcdskin-9 - git256+10a7dfa-r0 enigma2-plugin-drivers-atsc-950q-usb-hauppauge - 1.0-r0 enigma2-plugin-drivers-atsc-955q-usb-hauppauge - 1.0-r0 enigma2-plugin-drivers-atsc-usb-hauppauge - 1.1-r0 enigma2-plugin-drivers-ct2-dvb-usb-dualhd - 1.0-r0 …
Pluginov je na výber dostatok, ale ich kvalitu by som väčšinou označil slovíčkom „meh“. GUI som síce kritizoval kvôli zložitému a nekonzistentnému ovládaniu, ale pluginy sú na tom ešte o niekoľko úrovní horšie. Ako príklad použijem plugin na sťahovanie ikon programov. Toto je jeho nastavenie:
V celom systéme sa dialógy potvrdzujú buď zeleným tlačidlom, alebo tlačidlom OK. Červené tlačidlo slúži na zatvorenie nastavení.
Tu sa stačí pomýliť a použiť červené tlačidlo na zatvorenie dialógu a človek si úplne omylom vymaže nastavenia. Zeleným tlačidlom sa naopak uzatvára dialóg. Aby sa zobrazili samotné nastavenia musí sa kurzor presunúť na "Povoliť spracovanie profilu" a potom je potrebné stlačiť tlačidlo vpravo. Normálne som toto googlil 20 minút. Vážne ma nenapadlo, že nastavenia sa môže skrývať pod touto položkou. Toto prosím pekne patrí medzi najpoužívanejšie a najjednoduchšie nastaviteľné pluginy. Pozrime sa na iný bizar - nastaveniue skin HD glass:
Ani neviem, či je možné vyjadriť slovami, čo všetko je zle na tomto okne. Čo by som mal vyzdvihnúť ako najväčšiu GUI blbosť? Absolútne nezrozumiteľné menu vpravo? Druhé menu vľavo dole? Pohyb v menu modrým tlačidlom? Aktivácia submenu oranžovým tlačidlom (ktoré malo byť asi žlté?)? Náhodne rozmiestnené farebné tlačidlá? Položka číslo 29 vpravo dole?
Systém a ovládače
Teraz budem trochu viacej hovoriť o konkrétnom hardvéri.
Drvivá väčšina STB používa niekoľko rokov starý kernel. VU+ nie je výnimkou. Môj stroj má kernel 4.1.20-1.9. Kernel sa nedá upgradnúť, pretože závisí na binárnych ovládačoch od broadcomu. Broadcom pri STB SoC používa filozofiu jeden zastaralý kernel na večné časy a nikdy inak.
SoC 7252s je prekvapujúco výkonný a má GPU s podporou OpenGL ES. Na kolená ho však zrážajú drivery katastrofálnej kvality od Broadcomu. Binárne drivery obsahujú všetko od IR prijímača cez drivery GPU/DVB až po správcu okien v kerneli. Áno, správa okien je v kerneli. Prepnutie okna trvá luxusných 300ms a s 50% pravdepodobnosťou pri neštandardnom rozlíšení zhodí kernel. Pritom správa okien by sa dala krásne riešiť v userspace cez EGL. Jednoducho celé zle.
Všetko v distribúcii OpenATV okrem kernelu je plne open source a dá sa bez problémov skompilovať. Po inštalácii sa dá do systému prihlásiť cez telnet / ssh a človek má v základe plné práva roota.
Ako init systém je použitý busybox init. GUI beží v runleveli 3. Naopak textový režim je runlevel 4. Napísať si vlastný init skript sa v zásade nelíši od písania init skriptov pre Debian pred prechodom na systemd.
Komunita
Nakoniec sa pozrime, ako je na tom komunita.
Skoro každá distribúcia má vlastné PhpBB fórum, ktoré je viac-či menej uzavreté. Nie je možné ani prezrieť si screenshoty, či stiahnuť súbor bez registrácie. Niekde nie je možné prehliadať ani len text príspevkov bez registrácie.
Na fórach sa často objavujú vlastné upravené binárne verzie rôznych balíkov bez dostupných zdrojových kódov. Nie je neobvyklá žiadať nemalé peniaze za binárku programu pôvodne pod GPL licenciou. Porušovanie licencie je úplne bežná prax.
Hlavne české/slovenské fóra sú plné mudrlantov, ktorí absolútne nechápu problematike, ale pokojne vysypú na človeka kopec nepodložených tvrdení a budú sa tváriť, že je to pravda. Príklad za všetky uvediem, keď niekto chcel stavať STB založené na raspberry pi. Jednoducho musel prísť nejaký „expert“ a vysvetliť, aký má raspberry pi 4 hrozne nízky výkon, že je to ako porovnávať ferrari a traktor a podobné kraviny.
Pre pridávanie komentárov sa musíte prihlásiť.
ARM, yuck. Enough said.
A ktory je ten vykonny, ferrari alebo traktor? :D
Poniektorí si myslia, že raspberry je dosť podradné železo. Pritom práve raspberry by malo docela slušný potenciál, keby tomu niekto venoval dostatok človekohodín. Hlavne nové raspberry má PCIE, takže môže mať veľmi veľmi slušný tuner, IR remote nie je problém, stavový display nie je problém (kľudne by som dal nejaký grafický s rozlíšením 800x480), hardvérové dekódovanie / enkódovanie videa to má, GPU nie je úplne najhoršie. Mimo investovaného času si viem predstaviť, že do 200€ by sa dal postaviť stroj konkurujúci STB za 400+€. Nuž ale niektorí "múdri" ľudia radšej odradia človeka tak, že sa do toho ani nechce pustiť.
pouzivam raspberry pi 2b (ma 1GB ram a 4c 900MHz CPU) uz dlhu dobu, kedysi Rpi B+ a je to podla mna s OSMC podstatne lepsie riesenie, kedze tam idu aj emulatory,
mam napojenu klavesnicu wifi + FRACTAL Shape HTPC remote control (ir dialkove ovladanie s virtualnou mysou) pokial pouzivam len na filmy je ta flymouse podstatne pohodlnejsia.
Inak dostal som pred cca rokom/rokom a pol Motorola STB. flash na OpenATV 6.1. dopadlo to na h.... Ale mam k dispozicii MIPS na hranie s odpalenym transpoderom.
Jó tie weby sú luxusné, nepomýliš sa ani po dvadsiatich rokoch, že si správne :)
Tak zas ťa čaká robota, si to dorobiť :)
Robota ani nie. Na ovládanie som si celkom zvykol keď nemusím liezť do menu. Akože fakt skvele sa to ovláda a je to rýchle, nie je čo riešiť. Skin pre stavový display mám vlastný, GUI skin nerobím ani keby ma niekto k tomu chcel dokopať (hádam aj napíšem blog prečo). Okrem toho mám nakonfigurovanú sambu, STB funguje u mňa tak trochu ako NAS + streamovací server + proxy server a pár ďalších služieb mi tu beží. Jednoducho pohoda.
Prosim Vas, ako je to s prehravanim media obsahu, ktory ma zvukovu stopu s LPCM pripadne DTS (typicky nejaky BluRay image) pod Enigmou ? Skusal som uz nainstalovat rozne addons/plugins/codecs ale stale nic, zvuk neprehrava. Vdaka.
To je skôr otázka do fóra, vytvor tému a šupni to tam
Asi by som to skúsil cez ffmpeg, namiesto defaultného gstreameru. Tuším k tomu treba nainštalovať exteplayer3 a serviceapp.
Pekné čítanie, kedy bude pokračovanie ?