Enigma2 z pohľadu linuxáka

23.05 | 18:15 | Mirecove dristy | Miroslav Bendík

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:

Kodi - hlavné menu
Obrázok 1: Kodi - hlavné menu
Enigma2 - hlavné menu
Obrázok 2: Enigma2 - hlavné menu
Kodi - zoznam staníc
Obrázok 3: Kodi - zoznam staníc
Enigma2 - Zoznam programov
Obrázok 4: Enigma2 - Zoznam programov
Kodi - EPG
Obrázok 5: Kodi - EPG
Enigma2 - EPG
Obrázok 6: Enigma2 - EPG

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):

Menu …
Obrázok 7: Menu …

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
Obrázok 8: Nastavenia
Ďalšie nastavenia
Obrázok 9: Ďalšie nastavenia

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.

Skin HD glass - OSD
Obrázok 10: Skin HD glass - OSD

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:

MymetrixHD - OSD
Obrázok 11: MymetrixHD - OSD

Bude na tom zoznam programov lepšie? No nie som si istý ;)

Skin HD glass - Zoznam staníc
Obrázok 12: Skin HD glass - Zoznam staníc

Pre istotu prikladám screenshot z webu projektu:

Skin HD glass - Web
Obrázok 13: Skin HD glass - Web

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:

OpenATV web
Obrázok 14: OpenATV web

KiddaC-ove skiny

Okrem MymetrixHD som našiel jedinú sadu skinov, ktorá vyzerala použiteľne. Ide skiny používateľa KiddaC.

Onyx - OSD
Obrázok 15: Onyx - OSD
Onyx - Menu
Obrázok 16: Onyx - Menu
Onyx - EPG
Obrázok 17: Onyx - EPG
Onyx - Zoznam staníc
Obrázok 18: Onyx - Zoznam staníc

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:

Nastavenie pluginu
Obrázok 19: Nastavenie pluginu

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:

Nastavenie HD glass
Obrázok 20: Nastavenie 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.

Prílohy

    • RE: Enigma2 z pohľadu linuxáka 24.05 | 09:50
      Avatar uid0 Debian  Používateľ

      ARM, yuck. Enough said.

      A ktory je ten vykonny, ferrari alebo traktor? :D

      Debian. apt-get into it…
      • RE: Enigma2 z pohľadu linuxáka 24.05 | 12:58
        Avatar Miroslav Bendík Gentoo  Administrátor

        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ť.

        • RE: Enigma2 z pohľadu linuxáka 24.05 | 16:17
          Avatar redhawk75 Devuan, mx, antiX, Ka:sen, TCL  Používateľ

          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,

          IR remote nie je problém

          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.

    • RE: Enigma2 z pohľadu linuxáka 24.05 | 11:02
      Avatar bedňa LegacyIce-antiX  Administrátor

      Jó tie weby sú luxusné, nepomýliš sa ani po dvadsiatich rokoch, že si správne :)

      Tak zas ťa čaká robota, si to dorobiť :)

      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • RE: Enigma2 z pohľadu linuxáka 24.05 | 13:02
        Avatar Miroslav Bendík Gentoo  Administrátor

        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.

    • RE: Enigma2 z pohľadu linuxáka 03.06 | 15:09
      Avatar Jan87   Návštevník

      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.

      • RE: Enigma2 z pohľadu linuxáka 04.06 | 08:44
        Avatar vxmery Mint 19.3 Cinnamon  Administrátor

        To je skôr otázka do fóra, vytvor tému a šupni to tam

      • RE: Enigma2 z pohľadu linuxáka 05.06 | 06:17
        Avatar Miroslav Bendík Gentoo  Administrátor

        Asi by som to skúsil cez ffmpeg, namiesto defaultného gstreameru. Tuším k tomu treba nainštalovať exteplayer3 a serviceapp.