Na Installfest2021 mal o prijme DVB-T2 prednasku Ondrej Caletka, mozno tam najdes odpovede ktore hladas.
https://www.installfest.cz/if21/program.html
https://youtu.be/Kp5ZpgyKl-M
Stream od 8:27:00
Děkuji Váňovi za odkaz a panu Caletkovi za bezvadnou přednášku - možná trochu subjektivní, ale každopádně technicky hodně fundovanou, našel jsem si tam spoustu šťavnatých podrobností, které jsem neznal :-) Do záznamu, přednáška pana Caletky začíná představením a historickým ohlédnutím už v čase 8:00:00, uvítací banner asi o minutu a půl dřív.
Troufnu si tvrdit, že některé zajímavé a relevantní oblasti (kde jsem třeba zase já prošlapával slepé uličky, na pozadí svých subjektivních motivací) jinak skvělý přednes pana Caletky pomíjí :-) a dovolil bych si trochu doplnit. Zároveň si v témže duchu troufnu tvrdit, že v přednášce pana Caletky nenalézám odpovědi na některé otázky tazatele v tomto vezdejším vlákně :-) a nabídnu svou odpověď.
Poslouchal jsem místy na půl ucha (když se mluvilo o věcech, které cca znám) ale mám pocit, že pan Caletka zcela pominul VDR, až na jednoslovnou zmínku v seznamu. Podle mého zajímavý software, a ačkoli je interně taky rozdělený na client/server (zobrazovací front-end je oddělený proces), tak je to podle mého asi nejblíž stylu, na který se ptal Marty: spustím, přepínám programy, chová se to jako televize, můžu si i něco nahrát na HDD, nějaký ten timeshift apod. Základ VDR je živý projekt, který dostává pravidelné aktualizace. Toto bohužel nelze tvrdit o mnohých jeho 3rd-party pluginech, ale to je asi přirozený života běh...
Protože jsem asi předloni, podobně jako Marty, nenašel rozumný návod,
napsal jsem si svůj... [/self-promotion] - link ukazuje naschvál na kapitolu o použitém softwaru. Můj text popisuje stav z roku 2019/2020. Od té doby vyšlo pár nových verzí různých SW věcí, bohužel možná nikoli intelových firmwarových blobů pro Gemini Lake IGP :-/ což se ale Martyho patrně netýká.
Osobně jsem asi před rokem dojel na nějaké nedodělky v zobrazovacích frontendech VDR pro VAAPI na hardwaru Intel Gemini Lake (jde o HW akceleraci H.265 - nebylo to v té době stabilní), měl bych se na to znova podívat :-)
Osobně jsem kompiloval skoro všecko ze zdrojáků, v té době VDR 2.4.0 a řetízek grafických závislostí (a kernel kvůli driverům pro dongle). Vývoj VDR i distribucí od té doby pokročil, nové kernely mají drivery pro více donglů, DVB-T2 se jistě taky v distribucích obecně stabilizovalo - zejména v čerstvém Ubuntu už bych čekal, že nebude potřeba tolik ručních rekompilací.
Mě osobně úplně míjí klasický balík command-line utilit dvb-tools. Párkrát jsem některé tooly použil, když jsem se učil ladit (= skenovat pásmo), nebo jsem něco debugoval, chtěl jsem si v příkazovém řádku naladit tuner a pustit si nějaký ukecaný výpis co se děje pod kapotou... ale reálně pro naladění a přehrávání TV tyto tooly nejsou potřeba. Což jsem samozřejmě zjistil až poté, co jsem si je všechny podle dávných zaprášených návodů dost důkladně osahal a odložil.
Marty se ptal konkrétně na w_scan, v Debianu samostatný balík, mimo "mini-ekosystém" dvb-tools. Kromě toho, že w_scan tuším nějak závisí na "seed souboru" vytvořeném pomocí dvb-tools (nebo naopak? už nevím) je w_scan zastaralý, neudržovaný a obsahuje bugy resp. "features", které mohou dávat smysl při brodění se milionem DVB-S transpondérů, ale jsou zcela padlé na hlavu při skenování pásma DVB-T2 (detekce a přeskakování duplicitních frekvenčních kanálů). Prvním pokusem o nápravu byl fork w_scan2, který ovšem také nedopadl stoprocentně. Osobně pro DVB-T2 vřele doporučuji další fork/work-alike zvaný
t2scan, který konečně dělá to, co v DVB-T2 dělat má.
Konkrétně je t2scan velice užitečný pro pořízení počátečního seznamu kanálů pro VDR. Jedná se o textový soubor, který lze ručně přetřídit a promazat nejsnáz asi v textovém editoru (co řádek, to kanál). VDR má následně plugin zvaný tuším Wirbelscan, který si takto vytvořený seznam umí už sám dále spravovat / aktualizovat, jednak proskenovat na vyžádání celé pásmo, jednak tuším jede kontinuálně a reaguje průběžně na změny v obsahu sledovaných muxů.
Jestli máte někdo osobní kontakty na relevantní package maintainery Debianu a Ubuntu, zkuste je prosím inspirovat, že w_scan je už vážně ostuda, a že době odpovídá daleko spíš t2scan.
Na tohle se Marty neptal, ale když už jsem se tady rozjel: pan Caletka v dotazech na závěr přednášky zmiňuje, že si kdysi koupil z Číny dongle Mygica T230C, který ho nepřesvědčil svou nevalnou citlivostí a provozními výsledky. A doporučuje RPI DVB-T hat. No a já osobně to mám obráceně :-) RPI mi přijde jako podivná platforma, která na to jak málo je vybavená periferními porty, tak se dost přehřívá a má další nectnosti. Osobně se držím x86 a tam je mi samozřejmě RPi/Arduino header k ničemu. A pokud se týče USB DVB-T donglů, tak jako jednu konkrétní dlouhodobě dostupnou variantu bych zmínil Abacusem dovezenou Evolveo Sigma T2 alias
Mygica T230C-v2, které mám dva kusy, a při té bídě, která u nás doma panuje v příjmu na STA, se drží myslím docela statečně. Mimochodem tuner a demodulátor této aktuální revize jsou od Silicon Labs. Konkurenční dongly s front-endem Sony jsou hůře dostupné a vůbec vypátratelné :-(
Mám vypozorováno, jaká je zhruba minimální úroveň CNR (a méně podstatná RSSI), při které je příjem bezvýpadkový. Tyto statistiky lze zjistit z command-line toolů, ale také (pro mě především) přímo z VDR, nejlépe s pluginem femon, který umí zobrazit fůru statistik ve svém vlastním menu. Tuším některé front-end pluginy VDR umí CNR zobrazit jako součást svého ladícího výpisu jako overlay nad běžícím obrazem. "Práh použitelnosti signálu" se podle empirických pozorování vcelku shoduje s reálným chování různých televizí, které jsem měl tu čest v baráku potkat - všelijaké Samsung, LG apod. Tzn pokud se týče T230C2, doporučuji neškaredit se na dongle, ale především si udělat v rámci možností pořádek v anténní soustavě, a také si zanadávat na QAM256 (DVB-T2), shůry nám danou vezdejší. Bohužel mám pocit, že výpadky MPEG paketů způsobují "pixelsalat" v HW akcelerovaném přehrávání H.265 na hardwaru Gemini Lake - ale to se taky možná pletu :-) Měl bych se na to znova podívat.
A ještě k poznámkám pana Caletky o grabování MPEG streamu z UDP do souboru na disk, vs. bloková a VM vrstva linuxu... klíčové slovo v přednášce bylo tuším dirty_expire_centisecs. Před lety
jsem se v tom taky trochu nimral a ta problematika je myslím mírně složitější. Laditelných sysctl proměnných je tam víc, a kromě VM se do chování storage promítá také použitý scheduler, jeho specifické demence a jeho konfigurace = štelovatelná kroutítka. Jsou tam dohromady snad tři patra frontování a mezi nimi dvě patra expirací, jenom v rámci blokové vrstvy a IO scheduleru (tzn. nepočítaje FS). Těmito prostředky se dá writeback hodně poladit a popotáhnout k obrazu svému. Za těch pár let od mého ublognutí nějaká kroutítka přibyla a tuším došlo k prořezu dostupné množiny schedulerů, ale ledacos zůstává při starém - třeba deadline scheduler je tuším nadále k dispozici. Všiml jsem si, že třeba instalaci Linuxu nebo kompilaci kernelu, na stroji s pár GB RAM, lze dodnes výrazně zrychlit, pokud blokové vrstvě dovolíte využívat víc RAM a delší expiraci writebacku. A pak je otázka, zda by zmiňovaný user-space tool, použitý ke sběru paketů ze sítě a pro zápis na disk, nezasloužil "důkladnou předělávku". Což pokud se jedná o pár relevantních řádek v céčku, nemusí být zase tolik práce. Rozvláknit a zvětšit buffer. Pokud je ten tool ve stávající podobě natolik dementní, že v jednom vlákně střídavě přijímá pakety a provádí blokující zápis na disky, nejlíp s nějakým flagem který působí jako bariérová operace v řetízku front na disk IO, tak je dementní především ten user-space tool, spíš než linuxový VM/IO subsystém a jeho writeback (jakkoli IMO dodnes i pro tuto oblast platí, že je škoda rány, která padne vedle). Abych tolik nekřivdil blokové vrstvě a scheduleru, on filesystém má svoje vlastní potřeby, kvůli udržení konzistence, jak řadit zápisové operace a vkládat tu a tam povinně bariéru. Takže ve výsledku nejlepší postup je: psát aplikace tak, aby si bufferovaly podle své potřeby, a mohly nechat těch několik storage vrstev, ať se snaží jak nejlíp umí, za podmínek spletitého kompromisu různých požadavků na průchodnost a spolehlivost.