Z hľadiska náučného,je táto forma DVB príjmu zaujímavým a pestrým doplnkom.Stačí si zadovážiť nejakú DVB kartu a môžme doslova na vlastné oči sledovať,ako veci fungujú.Možnosti sú naozaj široké,priam neobmedzené.
DVB PC.
VYUŽITIE MIKROČIPOV(PIC) PRI MANIPULÁCIÍ S PRÍSTUPOVÝMI KARTAMI.Použitie PIC_iek v sat. technike je síce stará, ale stále účinná technika na ovládanie komunikácie reader(CAM) <-> prístupová karta. Dobrých inf. k tejto téme je ako šafránu, niečo je na cssf, no najmä http://gsmobil.net/navody/blocker/ mne osobne veľmi pomohol a aj touto cestou sa chcem chalanom poďakovať za cenné informácie. "Dnes" sa naskytla príležitosť oprášiť staré, už skoro zabudnuté vedomosti, a spraviť niečo, čo by sa mohlo pridať. Nastal taký zaujímavý úkaz - pre stb zn. Amiko bol vydaný firmware so softcamom mcas, ktorý vie pracovať s tzv. M7 kartami. De facto sa týmto stali tieto príjimače niečo ako skylink ready stb. Samozrejme je možné, že zásahom providera tomu tak v budúcnosti nebude, no nateraz to platí. Ďalším takým zvláštnym javom je ale to, že tento mcas nevie spolupracovať s ICE kartami v režime irdeto. Isteže, ICE karty komunikujú veľmi dobre (aj so spomínaným mcas_om) v cryptoworks(crw) móde, ale provider už dlhšiu dobu avízuje vypnutie tohto systému kódovania. Je tak trochu záhadou, prečo tieto boxy nezvládajú (aj keď ju deklarujú) funkciu force_irdeto. Týmto sa naskytla takpovediac príležitosť premietnúť teóriu do praxe. Ak sa v tejto súvislosti hojne používal pojem blocker, tak pre tento prípad som zvolil pracovný názov "menič". Naprogramovaním mikročipu je možné ICE kartu "prihlásiť" ako "čistú" irdeto kartu. O tom, či je to karta crw, irdeto, nagra a pod., vypovedá v zásadnej miere tzv. ATR karty - odpoveď po resete. Takže celá finta spočíva v tom, že na reset odpovie PIC a nie karta. Potom môžu nasledovať dva scenáre: 1. Systém sa prepne do režimu reader<->karta (s vyradeným PIC). Testoval som to tým spôsobom, že som na menič prirobil prepínač, ktorým som "v pravý čas" vyradil pic. Bolo to aj o šťastí, ale karta sa takto dala "prepnúť" do irdeta. Určite by to šlo spraviť aj sofistikovanejšie, no týmto by som to nateraz uzavrel. 2. Systém komunikuje v režime reader<->pic<->karta. Budeme sa teda baviť o prípade č. 2. V princípe sa nejedná o nič zložité, je potrebné zabezpečiť preposielanie dát cez pic. Priznám sa bez mučenia, že ak by som to mal napísať takpovediac od podlahy, tak neviem neviem. Podkladom mi boli náplne z gsmobilu, robené pre crw systém. Vcelku to nebol problém upraviť a v irdeto module, alebo v oscame mi to šlapalo hneď. No Amiko mcas mi dal zabrať. Čo sa týka inštrukčného mechanizmu, tak crw a irdeto sú si veľmi podobné. Zjednodušene povedané - INS > ACK > DATA. Pre irdeto(T0) platí táto schéma:
> Dx xx xx xx LEN (5B)
< ACK (1B)
<> DATA (LENB)
< STATUS (2B)
kde:
> data pre kartu < data pre CAM <> data pre kartu alebo CAMNajjednoduchšie bude, keď si to popíšeme na hotovom programe:
; RB2-karta MCLR, RB4-karta I/O, RB7-CAM I/O
LIST P=16F84, F=INHX8M
include "P16F84.inc"
ORG 0x0000
CALL Label_0001
MOVLW 0x0F
OPTION
MOVLW 0x7E ; časovače pre TMR - save ins. label_0040
MOVWF 0x12 ; pre mcas Amiko toto bolo podstatné, spraviť rôzne časovače
MOVLW 0xB0
MOVWF 0x13
MOVLW 0x7E ; časovače pre TMR - label_0005 a label_0011
MOVWF 0x0E
MOVLW 0xAB
MOVWF 0x0F
CALL Label_0004 ; RESET karty
MOVLW 0x3B ; fake(irdeto) ATR
CALL Label_000D
MOVLW 0x9F
CALL Label_000D
MOVLW 0x11
CALL Label_000D
MOVLW 0x40
CALL Label_000D
MOVLW 0x60
CALL Label_000D
MOVLW 0x49
CALL Label_000D
MOVLW 0x52
CALL Label_000D
MOVLW 0x44
CALL Label_000D
MOVLW 0x45
CALL Label_000D
MOVLW 0x54
CALL Label_000D
MOVLW 0x4F
CALL Label_000D
MOVLW 0x20
CALL Label_000D
MOVLW 0x41
CALL Label_000D
MOVLW 0x43
CALL Label_000D
MOVLW 0x53
CALL Label_000D
MOVLW 0x20
CALL Label_000D
MOVLW 0x56
CALL Label_000D
MOVLW 0x36
CALL Label_000D
MOVLW 0x2E
CALL Label_000D
MOVLW 0x30
CALL Label_000D
Label_0007 CALL Label_0006
GOTO Label_0007
Label_0006 MOVLW 0x05 ; načítať 5B
MOVWF 0x11
MOVLW 0x17 ; so zápisom do reg. 0x17-0x1B
MOVWF 0x10
Label_0048 BTFSC PORTB , 07 ; test portu cam na start bit
GOTO Label_0048
MOVF 0x12 , W ; TMR
MOVWF TMR0
CALL Label_0040 ; INS. cam->karta, +uloženie do reg.
MOVLW 0x01
MOVWF 0x11
CALL Label_0005 ; ACK
MOVF 0x1B , W ; LEN do reg. 0x11
MOVWF 0x11
Label_000F BTFSS PORTB , 07 ; test portov
GOTO Label_000E
BTFSC PORTB , 04
GOTO Label_000F
MOVLW 0x02 ; ak odpovedá karta, tak +2B (STATUS)
ADDWF 0x11 , f
CALL Label_0005 ; DATA karta->cam
RETURN
Label_000E MOVF 0x0E , W ; TMR
MOVWF TMR0
CALL Label_0011 ; DATA cam->karta
MOVLW 0x02
MOVWF 0x11
CALL Label_0005 ; STATUS karta->cam
RETURN
Label_0040 BCF INTCON , T0IF ; cam->karta + save
BSF STATUS , RP0
BCF TRISB , 04
BSF TRISB , 07
BCF STATUS , RP0
BCF PORTB , 04
GOTO Label_0041
Label_0042 BTFSC PORTB , 07
GOTO Label_0042
BCF PORTB , 04
MOVF 0x12 , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
Label_0041 MOVLW 0x09
MOVWF 0x14
Label_0043 BTFSC PORTB , 07
GOTO Label_0045
BCF PORTB , 04
GOTO Label_0044
Label_0045 BSF PORTB , 04
Label_0044 BTFSS INTCON , T0IF
GOTO Label_0043
MOVF 0x13 , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
BCF STATUS , C
BTFSC PORTB , 07
BSF STATUS , C
RRF 0x16 , f
DECFSZ 0x14 , f
GOTO Label_0043
RLF 0x16 , f
MOVF 0x10 , W
MOVWF FSR
MOVF 0x16 , W
MOVWF 0x00
INCF 0x10
Label_0046 BTFSS PORTB , 07
GOTO Label_0046
BSF PORTB , 04
DECFSZ 0x11 , f
GOTO Label_0042
BSF PORTB , 04
BSF STATUS , RP0
BSF TRISB , 04
BCF STATUS , RP0
RETURN
Label_0005 BSF PORTB , 07 ; karta->cam
BSF STATUS , RP0
BSF TRISB , 04
BCF TRISB , 07
BCF STATUS , RP0
Label_0016 BTFSC PORTB , 04
GOTO Label_0016
MOVF 0x0E , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
BCF PORTB , 07
Label_0015 MOVLW 0x09
MOVWF 0x14
Label_0019 BTFSC PORTB , 04
GOTO Label_0017
BCF PORTB , 07
GOTO Label_0018
Label_0017 BSF PORTB , 07
Label_0018 BTFSS INTCON , T0IF
GOTO Label_0019
MOVF 0x0F , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
; BCF STATUS , C ; toto bolo v pôvodných zdr. - ukladanie preposlaného bytu - nie je potrebné
; BTFSC PORTB , 04 ; pre Amiko mcas to bol zásadný problém
; BSF STATUS , C
; RRF 0x16 , f
DECFSZ 0x14 , f
GOTO Label_0019
; RLF 0x16 , f
Label_001A BTFSS PORTB , 04
GOTO Label_001A
BSF PORTB , 07
DECFSZ 0x11 , f
GOTO Label_0016
BSF PORTB , 07
BSF STATUS , RP0
BSF TRISB , 07
BCF STATUS , RP0
; MOVF 0x16 , W ;
RETURN
Label_0011 BCF INTCON , T0IF ; cam->karta
BSF STATUS , RP0
BCF TRISB , 04
BSF TRISB , 07
BCF STATUS , RP0
BCF PORTB , 04
GOTO Label_001B
Label_001C BTFSC PORTB , 07
GOTO Label_001C
BCF PORTB , 04
MOVF 0x0E , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
Label_001B MOVLW 0x09
MOVWF 0x14
Label_001F BTFSC PORTB , 07
GOTO Label_001D
BCF PORTB , 04
GOTO Label_001E
Label_001D BSF PORTB , 04
Label_001E BTFSS INTCON , T0IF
GOTO Label_001F
MOVF 0x0F , W ; TMR
MOVWF TMR0
BCF INTCON , T0IF
DECFSZ 0x14 , f
GOTO Label_001F
Label_0020 BTFSS PORTB , 07
GOTO Label_0020
BSF PORTB , 04
DECFSZ 0x11 , f
GOTO Label_001C
BSF PORTB , 04
BSF STATUS , RP0
BSF TRISB , 04
BCF STATUS , RP0
RETURN
Label_000D MOVWF 0x16 ; odošlem na cam čo chcem
MOVLW 0x32 ; time
CALL Label_0021
BSF STATUS , RP0
BCF TRISB , 07
BCF STATUS , RP0
CLRF 0x17
BCF PORTB , 07
MOVLW 0x08
MOVWF 0x14
Label_0024 CALL Label_0002 ; time
MOVF 0x16 , W
XORWF 0x17 , f
BTFSC 0x16 , 00
GOTO Label_0022
BCF PORTB , 07
GOTO Label_0023
Label_0022 BSF PORTB , 07
Label_0023 RRF 0x16 , f
DECFSZ 0x14 , f
GOTO Label_0024
CALL Label_0002 ; time
BCF PORTB , 07
BTFSC 0x17 , 00
BSF PORTB , 07
CALL Label_0002 ; time
BSF STATUS , RP0
BSF TRISB , 07
BCF STATUS , RP0
MOVLW 0x4F ; time
GOTO Label_0021
RETURN
Label_0002 MOVLW 0x1A ; slučka 0x1A
Label_0021 MOVWF EEDATA ; slučka s nastavením v podprogramoch
Label_0030 DECFSZ EEDATA , f
GOTO Label_0030
RETURN
Label_0001 MOVLW 0xFF ; nastavenie portov
MOVWF PORTB
BSF STATUS , RP0
MOVLW 0xFB
MOVWF TRISB
BCF STATUS , RP0
RETURN
Label_0004 BCF PORTB , 02 ; reset karty
MOVLW 0x01
MOVWF 0x10
Label_0032 MOVLW 0xFF
CALL Label_0021
DECFSZ 0x10 , f
GOTO Label_0032
BSF PORTB , 02
RETURN
END
Tento program stačí skompilovať napr. v MPLAB_e, cez IC-Prog a JDM programátor napáliť PIC a ICE kartička sa nám cez hw menič v amiku hlási ako IRDETO V6.0.
Edit: zdá sa, že hodnoty pre TMR si vyžadujú individuálny prístup. Zatialčo testované Amiko_8155 bolo funkčné, na 8265(iné cpu) sa tá istá náplň nechytala.
Aj aby som nezabudol,popíšem nejaké veci okolo DVB...teda v Linuxe...najmä úskalia,s ktorými som sa stretol.
Keďže je toho strašne veľa,ani neviem kde začať.
Ovládače vynechám,pretože sa to proste nedá obsiahnúť.Isté je,že DVB zariadenia majú v Linuxe celkom slušnú podporu.
Aj v ďalšom budem popisovať len nástroje,ktoré sa mi zdajú najaktuálnejšie,keďže alternatív je mnoho.
Začneme ladením.Popíšeme si najmä s(t)zap,pre jednoduchosť sa budeme baviť len o delivery_systém_s,aj keď pre ostatné systémy to bude takmer totožné(isté odchýlky sú ale možné).
Szap-s2:stiahneme a skompilujeme.Možno bude pre jednotlivé distra aj v repozitároch,no lepšie je to takto.Szap naladí tuner na stanovené parametre,ktoré hľadá v konfiguračnom súbore.Napr.:
channels.conf:
STV1:11836:h:0:27500:0:0:0
TA3:11836:h:0:27500:::
CT1HD:12363:v:0:29500:0:0:0
~$ szap-s2 -c channels.conf stv1
reading channels from file 'channels.conf'
zapping to 1 'STV1':
delivery DVB-S, modulation QPSK
sat 0, frequency 11836 MHz H, symbolrate 27500000, coderate auto, rolloff 0.35
vpid 0x1fff, apid 0x1fff, sid 0x0000
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 00 | signal 0000 | snr 0076 | ber 00000000 | unc fffffffe |
status 1f | signal 018c | snr 0075 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
status 1f | signal 018c | snr 0075 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
STV1:11836:h:0:27500:1015:1025:5105
TA3:11836:h:0:27500:1017:1027:5107
CT1HD:12363:v:0:29500:5011:5021:4901
~$ szap-s2 -c channels.conf -n 2 -r -p
~$ vlc /dev/dvb/adapter0/dvr0
~$ szap-s2 -c channels.conf -n 3 -M 5 -S 1
reading channels from file 'channels.conf'
zapping to 3 'CT1HD':
delivery DVB-S2, modulation 8PSK
sat 0, frequency 12363 MHz V, symbolrate 29500000, coderate auto, rolloff 0.35
vpid 0x1393, apid 0x139d, sid 0x1325
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 1a | signal 022e | snr 001e | ber 00000000 | unc fffffffe | FE_HAS_LOCK
status 1a | signal 022d | snr 001f | ber 00000000 | unc fffffffe | FE_HAS_LOCK
W_scan,scan.
Napr.:
~$ w_scan -fs -s S23E5 -X > wscan.conf
wscan.conf:
Prima;M7 Group:12525:vC34M2O0S0:S23.5E:27500:161=2:84=cze@4:37:D96,624,666:8002:3:3014:0
CT 1;M7 Group:12525:vC34M2O0S0:S23.5E:27500:162=2:88=cze@4,91=qaa,98=cze:40:D96,624,666:8003:3:3014:0
CT 2;M7 Group:12525:vC34M2O0S0:S23.5E:27500:163=2:92=cze@4,96=qaa,99=cze:43:D96,624,666:8004:3:3014:0
CT 1 SM;M7 Group:12525:vC34M2O0S0:S23.5E:27500:162=2:88=cze@3,98=cze:40:D96,624,666:8005:3:3014:0
CT 24;M7 Group:12525:vC34M2O0S0:S23.5E:27500:165=2:100=cze@4,104=cze:52:0:8006:3:3014:0
CT sport;M7 Group:12525:vC34M2O0S0:S23.5E:27500:166=2:102=cze@4,105=cze:32:D96,624,666:8007:3:3014:0
Noe TV;M7 Group:12525:vC34M2O0S0:S23.5E:27500:167=2:106=cze@4:0:0:8008:3:3014:0
CT D / CT art;M7 Group:12525:vC34M2O0S0:S23.5E:27500:168=2:114=cze@4,115=cze:42:624,D96:8009:3:3014:0
CRo RADIOZURNAL;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:177=cze@3;209:0:0:8018:3:3014:0
CRo DVOJKA;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:178=cze@3;210:0:0:8019:3:3014:0
CRo VLTAVA;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:179=cze@3;211:0:0:8020:3:3014:0
Proglas;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:180=cze@4:0:0:8021:3:3014:0
CRo DVOJKA / PLUS;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:181=cze@3:0:0:8022:3:3014:0
CRo REGION;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:182=cze@3;212:0:0:8023:3:3014:0
CRo JAZZ;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:183=cze@3:0:0:8024:3:3014:0
CRo D-DUR;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:184=cze@3:0:0:8025:3:3014:0
CRo RADIO JUNIOR;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:185=cze@3:0:0:8026:3:3014:0
CRo PLUS;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:186=cze@3:0:0:8027:3:3014:0
CRo RADIO WAVE;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:187=cze@3:0:0:8028:3:3014:0
CRo RADIO PRAHA;M7 Group:12525:vC34M2O0S0:S23.5E:27500:0:188=cze@3:0:0:8029:3:3014:0
Disney CZ;M7 Group:11797:hC34M5O20S1:S23.5E:29500:2010=27:2020=cze@3,2030=eng,2040=hun:0:D96,624:5030:3:3205:0
Film+;M7 Group:11797:hC34M5O20S1:S23.5E:29500:2011=27:2021=cze@3:0:D96,624:5031:3:3205:0
Discovery CZ;M7 Group:11797:hC34M5O20S1:S23.5E:29500:2012=27:2022=cze@3,2032=eng:0:D96,624:5032:3:3205:0
Filmbox Extra HD;M7 Group:11797:hC34M5O20S1:S23.5E:29500:2014=27:2044=hun@3;2024,2034:0:D96,624:5034:3:3205:0
...
~$ w_scan -ft -c SK -X > wscan_t.conf
No pre moju kartu(technisat cablestar combo hdci) sa mi najviac osvedčila(aj pri slabšom signále,takpovediac na hrane) utilita scan:
krizava.txt:
~$ scan krizava.txt -o zap > scan_t.conf
# 1.st multiplex (dajto_senzi) - on channel 35
T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
# 2.st multiplex (joj_mark) - on channel 52
T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
# 3.st multiplex (verejno_pravny) - on channel 32
T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
# 4.st multiplex (plustelka) - on channel 39
T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
scan_t.conf:
DAJTO:586000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1022:1032:1002
tv8:586000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1023:1033:1003
SENZI:586000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1024:1034:1004
TVLux:586000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1025:1035:1005
Infokanal:586000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1029:1039:1009
TVJOJ:722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2102:2111:2001
JOJPlus:722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2202:2211:2002
Markiza:722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2302:2311:2003
Doma:722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2402:2411:2004
TA3:722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2502:2511:2005
STV1:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3102:3111:3001
STV2:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3202:3211:3002
STVHD:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3302:3311:3003
Slovensko:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4112:3011
ReginaBA:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4122:3012
ReginaBB:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4132:3013
ReginaKE:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4142:3014
Devin:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4152:3015
Radio_FM:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4162:3016
Klasika:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4172:3017
Litera:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4182:3018
Junior:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4192:3019
PatriaFM:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4202:3020
PatriaRD:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4212:3021
Slovakia:562000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4222:3022
CT1:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4021:4031:4001
CT2:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4022:4032:4002
Eurosport:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4024:4034:4004
Eurosport 2:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4025:4035:4005
Film+:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4026:110:4006
Viasat Explore/Spice:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4027:4037:4007
Viasat Nature:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4028:4038:4008
Viasat History:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4029:4039:4009
Nickelodeon:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4030:4040:4010
VH1:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4521:410:4011
JOJCinema:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4522:4532:4012
Sport2:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4523:4533:4013
OTA02-SMIT:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:4092
TVLux:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:4003
OTA01-ZIRCON:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:4091
Tuner môžme naladiť szap_om a scan-s2 spúšťať s parametrom -c.Inak potrebujeme súbor,z ktorého scan-s2 číta,napr.:
astra-23.5E:
S 11836000 H 27500000 3/4
S2 12363000 V 29500000 3/4
~$ scan-s2 astra-23.5E -o zap > scan-s2.conf
poznámka:pre vdr output(default) pozor na parameter -x,pre kódované kanály.
scan-s2.conf:
JOJ PLUS:11836:h:0:27500:1012:1022:5102:5
Markiza:11836:h:0:27500:1013:1023:5103:5
DOMA:11836:h:0:27500:1014:1024:5104:5
STV1:11836:h:0:27500:1015:1025:5105:5
STV2:11836:h:0:27500:1016:1026:5106:5
TA3:11836:h:0:27500:1017:1027:5107:5
...
CT 1 HD:12363:v:0:29500:5011:5021:4901:6
CT 2 HD:12363:v:0:29500:5012:5022:4902:6
CT sport HD:12363:v:0:29500:5014:5024:4904:6
STV1 HD:12363:v:0:29500:5015:5025:4905:6
STV2 HD:12363:v:0:29500:5016:5026:4906:6
...
Teraz môžme ladiť szap_om:
~$ szap-s2 -c scan-s2.conf "joj plus"
alebo
~$ szap-s2 -c scan-s2.conf "ct 1 hd" -M 5 -S 1
~$ dvblast -f 12070000 -v 18
poznámka:spomínal som kartu technisat dvb C/T,defaultne je v režime C a staršie dvblast_y s tým vôbec nepočítali.Novšie verzie majú na to prepínač:
~$ dvblast -f 562000000 -5 DVBT
Dvbsnoop-analýza streamu.
~$ szap-s2 -c scan-s2.conf stv1 -r
reading channels from file 'scan-s2.conf'
zapping to 5 'STV1':
delivery DVB-S, modulation QPSK
sat 0, frequency 11836 MHz H, symbolrate 27500000, coderate auto, rolloff 0.35
vpid 0x03f7, apid 0x0401, sid 0x13f1
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 1f | signal 01ae | snr 0093 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
status 1f | signal 01a7 | snr 0094 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
...
~$ dvbsnoop -s pidscan
---------------------------------------------------------
Transponder PID-Scan...
---------------------------------------------------------
PID found: 0 (0x0000) [SECTION: Program Association Table (PAT)]
PID found: 1 (0x0001) [SECTION: Conditional Access Table (CAT)]
PID found: 16 (0x0010) [SECTION: Network Information Table (NIT) - actual network]
PID found: 17 (0x0011) [SECTION: Service Description Table (SDT) - actual transport stream]
PID found: 18 (0x0012) [SECTION: Event Information Table (EIT) - actual transport stream, schedule]
PID found: 20 (0x0014) [SECTION: Time Offset Table (TOT)]
PID found: 100 (0x0064) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 101 (0x0065) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 103 (0x0067) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 104 (0x0068) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 105 (0x0069) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1001 (0x03e9) [SECTION: Program Map Table (PMT)]
PID found: 1002 (0x03ea) [SECTION: Program Map Table (PMT)]
PID found: 1003 (0x03eb) [SECTION: Program Map Table (PMT)]
PID found: 1004 (0x03ec) [SECTION: Program Map Table (PMT)]
PID found: 1005 (0x03ed) [SECTION: Program Map Table (PMT)]
PID found: 1006 (0x03ee) [SECTION: Program Map Table (PMT)]
PID found: 1007 (0x03ef) [SECTION: Program Map Table (PMT)]
PID found: 1008 (0x03f0) [SECTION: Program Map Table (PMT)]
PID found: 1011 (0x03f3) [scrambled]
PID found: 1012 (0x03f4) [scrambled]
PID found: 1013 (0x03f5) [scrambled]
PID found: 1014 (0x03f6) [scrambled]
PID found: 1015 (0x03f7) [scrambled]
PID found: 1016 (0x03f8) [scrambled]
PID found: 1017 (0x03f9) [PS/PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or ISO/IEC 11172-2 video stream]
PID found: 1018 (0x03fa) [scrambled]
PID found: 1021 (0x03fd) [scrambled]
PID found: 1022 (0x03fe) [scrambled]
PID found: 1023 (0x03ff) [scrambled]
PID found: 1024 (0x0400) [scrambled]
PID found: 1025 (0x0401) [scrambled]
PID found: 1026 (0x0402) [scrambled]
PID found: 1027 (0x0403) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1028 (0x0404) [scrambled]
PID found: 1033 (0x0409) [scrambled]
PID found: 1034 (0x040a) [scrambled]
PID found: 1035 (0x040b) [scrambled]
PID found: 1036 (0x040c) [scrambled]
PID found: 1038 (0x040e) [scrambled]
PID found: 1045 (0x0415) [scrambled]
PID found: 1046 (0x0416) [scrambled]
PID found: 1061 (0x0425) [PS/PES: private_stream_1]
PID found: 1062 (0x0426) [PS/PES: private_stream_1]
PID found: 1063 (0x0427) [PS/PES: private_stream_1]
PID found: 1064 (0x0428) [PS/PES: private_stream_1]
PID found: 1065 (0x0429) [PS/PES: private_stream_1]
PID found: 1066 (0x042a) [PS/PES: private_stream_1]
PID found: 1068 (0x042c) [PS/PES: private_stream_1]
PID found: 1071 (0x042f) [PS/PES: private_stream_1]
PID found: 1072 (0x0430) [PS/PES: private_stream_1]
PID found: 1073 (0x0431) [PS/PES: private_stream_1]
PID found: 1074 (0x0432) [PS/PES: private_stream_1]
PID found: 1075 (0x0433) [PS/PES: private_stream_1]
PID found: 1076 (0x0434) [PS/PES: private_stream_1]
PID found: 1078 (0x0436) [PS/PES: private_stream_1]
PID found: 1081 (0x0439) [scrambled]
PID found: 1082 (0x043a) [scrambled]
PID found: 1085 (0x043d) [scrambled]
PID found: 1086 (0x043e) [scrambled]
PID found: 1095 (0x0447) [SECTION: MHP- Application Information Table (AIT)]
PID found: 1096 (0x0448) [SECTION: MHP- Application Information Table (AIT)]
PID found: 1141 (0x0475) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1142 (0x0476) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1143 (0x0477) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1144 (0x0478) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1145 (0x0479) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1146 (0x047a) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1148 (0x047c) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1151 (0x047f) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1152 (0x0480) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1153 (0x0481) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1154 (0x0482) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1155 (0x0483) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1156 (0x0484) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1158 (0x0486) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1161 (0x0489) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1162 (0x048a) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1163 (0x048b) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1164 (0x048c) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1165 (0x048d) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1166 (0x048e) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1168 (0x0490) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1171 (0x0493) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1172 (0x0494) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1173 (0x0495) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1174 (0x0496) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1175 (0x0497) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1176 (0x0498) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1178 (0x049a) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1181 (0x049d) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1182 (0x049e) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1183 (0x049f) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1184 (0x04a0) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1185 (0x04a1) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1186 (0x04a2) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1188 (0x04a4) [SECTION: DVB CA message section (EMM/ECM)]
PID found: 1301 (0x0515) [SECTION: Program Map Table (PMT)]
PID found: 1302 (0x0516) [SECTION: Program Map Table (PMT)]
PID found: 1303 (0x0517) [SECTION: Program Map Table (PMT)]
PID found: 1304 (0x0518) [SECTION: Program Map Table (PMT)]
PID found: 1305 (0x0519) [SECTION: Program Map Table (PMT)]
PID found: 1306 (0x051a) [SECTION: Program Map Table (PMT)]
PID found: 1307 (0x051b) [SECTION: Program Map Table (PMT)]
PID found: 1308 (0x051c) [SECTION: Program Map Table (PMT)]
PID found: 1309 (0x051d) [SECTION: Program Map Table (PMT)]
PID found: 1311 (0x051f) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1312 (0x0520) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1313 (0x0521) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1314 (0x0522) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1315 (0x0523) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1316 (0x0524) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1317 (0x0525) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1318 (0x0526) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1319 (0x0527) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1600 (0x0640) [SECTION: Program Map Table (PMT)]
PID found: 1601 (0x0641) [SECTION: Program Map Table (PMT)]
PID found: 1602 (0x0642) [SECTION: Program Map Table (PMT)]
PID found: 1603 (0x0643) [SECTION: Program Map Table (PMT)]
PID found: 1604 (0x0644) [SECTION: Program Map Table (PMT)]
PID found: 1605 (0x0645) [SECTION: Program Map Table (PMT)]
PID found: 1606 (0x0646) [SECTION: Program Map Table (PMT)]
PID found: 1607 (0x0647) [SECTION: Program Map Table (PMT)]
PID found: 1608 (0x0648) [SECTION: Program Map Table (PMT)]
PID found: 1610 (0x064a) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1611 (0x064b) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1612 (0x064c) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1613 (0x064d) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1614 (0x064e) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1615 (0x064f) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1616 (0x0650) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1617 (0x0651) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1618 (0x0652) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1700 (0x06a4) [SECTION: Program Map Table (PMT)]
PID found: 1703 (0x06a7) [SECTION: Program Map Table (PMT)]
PID found: 1710 (0x06ae) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 1713 (0x06b1) [unknown]
PID found: 1723 (0x06bb) [PS/PES: ISO/IEC 13818-3 or ISO/IEC 11172-3 audio stream]
PID found: 8191 (0x1fff) [stuffing]
Napr.:
~$ dvbsnoop -n 1 17 | grep -i "stv1" -B 20
service_provider_name_length: 8 (0x08)
service_provider_name: "Towercom" -- Charset: Latin alphabet
service_name_length: 4 (0x04)
Service_name: "DOMA" -- Charset: Latin alphabet
Service_id: 5105 (0x13f1) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 17 (0x0011)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
descriptor_length: 15 (0x0f)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 8 (0x08)
service_provider_name: "Towercom" -- Charset: Latin alphabet
service_name_length: 4 (0x04)
Service_name: "STV1" -- Charset: Latin alphabet
~$ dvbsnoop -n 1 0 | grep 5105 -A 5
Program_number: 5105 (0x13f1)
reserved: 7 (0x07)
Program_map_PID: 1005 (0x03ed)
Program_number: 5106 (0x13f2)
reserved: 7 (0x07)
~$ dvbsnoop -n 1 1005
------------------------------------------------------------
SECT-Packet: 00000001 PID: 1005 (0x03ed), Length: 189 (0x00bd)
Time received: Mon 2015-11-02 17:29:27.995
------------------------------------------------------------
0000: 02 b0 ba 13 f1 db 00 00 e3 f7 f0 1e 09 04 0d 96 ................
0010: e4 79 09 04 06 24 e4 83 09 04 06 66 e4 8d 09 04 .y...$.....f....
0020: 06 68 e4 97 09 04 06 9a e4 a1 02 e3 f7 f0 05 02 .h..............
0030: 03 1a 48 5f 03 e4 01 f0 09 03 01 67 0a 04 73 6c ..H_.......g..sl
0040: 6f 00 03 e4 0b f0 09 03 01 67 0a 04 71 61 61 00 o........g..qaa.
0050: 06 e4 15 f0 0c 6a 04 e0 44 06 01 0a 04 6d 69 73 .....j..D....mis
0060: 00 06 e4 29 f0 07 56 05 73 6c 6f 09 00 06 e4 33 ...)..V.slo....3
0070: f0 2f 45 1e 01 16 c8 c9 ca cb cc cd ce cf d3 d4 ./E.............
0080: d5 e8 e9 ea eb ec ed ee ef f3 f4 f5 05 01 f7 04 ................
0090: 01 f0 46 05 73 6c 6f 09 00 c3 06 04 01 f0 05 01 ..F.slo.........
00a0: f7 03 e4 3d f0 09 03 01 67 0a 04 73 6c 6f 03 05 ...=....g..slo..
00b0: e4 47 f0 05 6f 03 00 10 e5 3a 06 fa 0d .G..o....:...
PID: 1005 (0x03ed)
Guess table from table id...
PMT-decoding....
Table_ID: 2 (0x02) [= Program Map Table (PMT)]
section_syntax_indicator: 1 (0x01)
(fixed '0'): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 186 (0x00ba)
Program_number: 5105 (0x13f1)
reserved_2: 3 (0x03)
Version_number: 13 (0x0d)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
reserved_3: 7 (0x07)
PCR PID: 1015 (0x03f7)
reserved_4: 15 (0x0f)
Program_info_length: 30 (0x001e)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
descriptor_length: 4 (0x04)
CA_system_ID: 3478 (0x0d96) [= Philips (Cryptoworks)]
reserved: 7 (0x07)
CA_PID: 1145 (0x0479)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
descriptor_length: 4 (0x04)
CA_system_ID: 1572 (0x0624) [= Irdeto]
reserved: 7 (0x07)
CA_PID: 1155 (0x0483)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
descriptor_length: 4 (0x04)
CA_system_ID: 1638 (0x0666) [= Irdeto]
reserved: 7 (0x07)
CA_PID: 1165 (0x048d)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
descriptor_length: 4 (0x04)
CA_system_ID: 1640 (0x0668) [= Irdeto]
reserved: 7 (0x07)
CA_PID: 1175 (0x0497)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
descriptor_length: 4 (0x04)
CA_system_ID: 1690 (0x069a) [= Irdeto]
reserved: 7 (0x07)
CA_PID: 1185 (0x04a1)
Stream_type loop:
Stream_type: 2 (0x02) [= ITU-T Rec. H.262 | ISO/IEC 13818-2 Video | ISO/IEC 11172-2 constr. parameter video stream]
reserved_1: 7 (0x07)
Elementary_PID: 1015 (0x03f7)
reserved_2: 15 (0x0f)
ES_info_length: 5 (0x0005)
MPEG-DescriptorTag: 2 (0x02) [= video_stream_descriptor]
descriptor_length: 3 (0x03)
multiple_frame_rate_flag: 0 (0x00)
frame_rate_code: 3 (0x0003)
MPEG_1_only_flag: 0 (0x00)
constrained_parameter_flag: 1 (0x01)
still_picture_flag: 0 (0x00)
Stream_type: 3 (0x03) [= ISO/IEC 11172 Audio]
reserved_1: 7 (0x07)
Elementary_PID: 1025 (0x0401)
reserved_2: 15 (0x0f)
ES_info_length: 9 (0x0009)
MPEG-DescriptorTag: 3 (0x03) [= audio_stream_descriptor]
descriptor_length: 1 (0x01)
free_format_flag: 0 (0x00)
ID: 1 (0x01)
layer: 2 (0x02)
variable_rate_audio_indicator: 0 (0x00)
reserved_1: 7 (0x07)
MPEG-DescriptorTag: 10 (0x0a) [= ISO_639_language_descriptor]
descriptor_length: 4 (0x04)
ISO639_language_code: slo
Audio_type: 0 (0x00) [= undefined]
Stream_type: 3 (0x03) [= ISO/IEC 11172 Audio]
reserved_1: 7 (0x07)
Elementary_PID: 1035 (0x040b)
reserved_2: 15 (0x0f)
ES_info_length: 9 (0x0009)
MPEG-DescriptorTag: 3 (0x03) [= audio_stream_descriptor]
descriptor_length: 1 (0x01)
free_format_flag: 0 (0x00)
ID: 1 (0x01)
layer: 2 (0x02)
variable_rate_audio_indicator: 0 (0x00)
reserved_1: 7 (0x07)
MPEG-DescriptorTag: 10 (0x0a) [= ISO_639_language_descriptor]
descriptor_length: 4 (0x04)
ISO639_language_code: qaa
Audio_type: 0 (0x00) [= undefined]
Stream_type: 6 (0x06) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data]
reserved_1: 7 (0x07)
Elementary_PID: 1045 (0x0415)
reserved_2: 15 (0x0f)
ES_info_length: 12 (0x000c)
DVB-DescriptorTag: 106 (0x6a) [= AC3_descriptor]
descriptor_length: 4 (0x04)
component_type_flag: 1 (0x01)
bsid_flag: 1 (0x01)
mainid_flag: 1 (0x01)
asvc_flag: 0 (0x00)
reserved: 0 (0x00)
component_type: 68 (0x44) [= TODO: $$$ - AC3 Component type]
bsid: 6 (0x06)
mainid: 1 (0x01)
MPEG-DescriptorTag: 10 (0x0a) [= ISO_639_language_descriptor]
descriptor_length: 4 (0x04)
ISO639_language_code: mis
Audio_type: 0 (0x00) [= undefined]
Stream_type: 6 (0x06) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data]
reserved_1: 7 (0x07)
Elementary_PID: 1065 (0x0429)
reserved_2: 15 (0x0f)
ES_info_length: 7 (0x0007)
DVB-DescriptorTag: 86 (0x56) [= teletext_descriptor]
descriptor_length: 5 (0x05)
ISO639_language_code: slo
Teletext_type: 1 (0x01) [= initial teletext page]
Teletext_magazine_number: 1 (0x01)
Teletext_page_number: 0 (0x00)
Stream_type: 6 (0x06) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data]
reserved_1: 7 (0x07)
Elementary_PID: 1075 (0x0433)
reserved_2: 15 (0x0f)
ES_info_length: 47 (0x002f)
DVB-DescriptorTag: 69 (0x45) [= VBI_data_descriptor]
descriptor_length: 30 (0x1e)
Data_service_id: 1 (0x01) [= EBU teletext]
Data_service_descriptor_length: 22 (0x16)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 8 (0x08)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 9 (0x09)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 10 (0x0a)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 11 (0x0b)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 12 (0x0c)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 13 (0x0d)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 14 (0x0e)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 15 (0x0f)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 19 (0x13)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 20 (0x14)
reserved_1: 3 (0x03)
field_parity: 0 (0x00)
line_offset: 21 (0x15)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 8 (0x08)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 9 (0x09)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 10 (0x0a)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 11 (0x0b)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 12 (0x0c)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 13 (0x0d)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 14 (0x0e)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 15 (0x0f)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 19 (0x13)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 20 (0x14)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 21 (0x15)
Data_service_id: 5 (0x05) [= WSS (Wide Screen Signalling)]
Data_service_descriptor_length: 1 (0x01)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 23 (0x17)
Data_service_id: 4 (0x04) [= VPS (Video Programming System)]
Data_service_descriptor_length: 1 (0x01)
reserved_1: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 16 (0x10)
DVB-DescriptorTag: 70 (0x46) [= VBI_teletext_descriptor]
descriptor_length: 5 (0x05)
ISO639_language_code: slo
Teletext_type: 1 (0x01) [= initial teletext page]
Teletext_magazine_number: 1 (0x01)
Teletext_page_number: 0 (0x00)
DVB-DescriptorTag: 195 (0xc3) [= User defined]
descriptor_length: 6 (0x06)
Descriptor-data:
0000: 04 01 f0 05 01 f7 ......
Stream_type: 3 (0x03) [= ISO/IEC 11172 Audio]
reserved_1: 7 (0x07)
Elementary_PID: 1085 (0x043d)
reserved_2: 15 (0x0f)
ES_info_length: 9 (0x0009)
MPEG-DescriptorTag: 3 (0x03) [= audio_stream_descriptor]
descriptor_length: 1 (0x01)
free_format_flag: 0 (0x00)
ID: 1 (0x01)
layer: 2 (0x02)
variable_rate_audio_indicator: 0 (0x00)
reserved_1: 7 (0x07)
MPEG-DescriptorTag: 10 (0x0a) [= ISO_639_language_descriptor]
descriptor_length: 4 (0x04)
ISO639_language_code: slo
Audio_type: 3 (0x03) [= visual impaired commentary]
Stream_type: 5 (0x05) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private sections]
reserved_1: 7 (0x07)
Elementary_PID: 1095 (0x0447)
reserved_2: 15 (0x0f)
ES_info_length: 5 (0x0005)
DVB-DescriptorTag: 111 (0x6f) [= application_signalling_descriptor]
descriptor_length: 3 (0x03)
Application type: 16 (0x0010)
reserved: 7 (0x07)
AIT version nr.: 5 (0x05)
CRC: 973535757 (0x3a06fa0d)
==========================================================
Nedalo mi to,a dal som svojej usb skystar ešte jednú šancu.Teda v linuxe.Viedla ma k tomu potreba nejakého dvb zariadenia bežiaceho pod linuxami,pretože som naďabil na extrémne zaujímavé utilitky,ale o tom neskôr.
Napokon,bol som si dosť istý,že to musí šlapať,čo sa aj potvrdilo.Ide mi na ubuntu 10.04(kernel_2.6.32-24).Nešlo na nej ladiť DVB-S2,ale po aplikovaní patchu facha aj to.Niečo o tom patchu je tu.
Táto karta,o ktorej som si pôvodne myslel,že je super,je zdá sa poriadna spatlanina.Ale keďže som jej vlastníkom(mám dokonca dve),tak je proste super.
Ale poďme k sľúbeným utilitám-dvblast,tsdecrypt.Dvblast naladí a streamuje.Tsdecrypt decryptuje(správne je descrambleruje) transport stream(ts).
Aby som to zjednodušil,tak príklad(skylink_23.5_ice_crw) :
dvblast.conf:
239.0.0.1:1234@127.0.0.1 1 8003 #ct1
239.0.0.2:1234@127.0.0.1 1 8004 #ct2
~$ dvblast -a 0 -f 12525000 -s 27500000 -c dvblast.conf -Y -U
~$ tsdecrypt -C 0x0D96 -A NEWCAMD -s IP_server:port -U user -P passwd -I 239.0.0.1:1234 -O 239.0.0.10:1234 -o 127.0.0.1
~$ tsdecrypt -C 0x0D96 -A NEWCAMD -s IP_server:port -U user -P passwd -I 239.0.0.2:1234 -O 239.0.0.11:1234 -o 127.0.0.1
~$ sudo route add -net 224.0.0.0/4 dev lo
Samozrejme newcamd server nie je nijako obmedzený,pričom des_key je na defaulte 010203....
Ak si teraz lokálne spustíte napr. vlc,tak na udp://@239.0.0.10:1234 pôjde čt1 a na udp://@239.0.0.11:1234 pôjde čt2.Rozkódovane.
Ďalej sa s tým dajú robiť neskutočné veci.Dvblast chodí napr. aj s CAM_om(mascom).Dokonca je možné ten modul ovládať(napr.vo windows som sa nijako nedostal do expert_menu).Na samotné dekódovanie je možné pravdepodobne použiť aj sasc-ng,čo môže byť tiež dobrá sranda.
Najväčšia zábava je ale s tsdecryptom.Vie newcamd a cs378x.Takto môžte zobrať celý transpondér a všetky ecm poslať na oscam,a nemusíte nič descramble,takže záťaž cpu minimálna.Oscam si to zapíše do cache a tú pošle JG do Ostravy,aby si Jardo mohol skontrolovať,či mu ide dobre kóder.
Edit :
-emm lepšie chodia cez cs378x(tsdecrypt)->dvblast spúšťať s parametrom -W.
-funkčný CAM TechniCrypt Irdeto CI+.
Edit :
takpovediac tretím do partie je utilita multicat :
~$ multicat -u @239.0.0.1:1234 test_ct1.ts
Edit :
ďalšou veľmi zaujímavou utilitkou k tejto téme je udpxy(multicast to unicast) :
~$ udpxy -p 4022
http://ip_stream_pc:4022/udp/239.0.0.10:1234
Edit :
no a keď sa vám nebude chcieť s tým takto drbkať,tak môžte použiť mumudvb,vdr,tvheadend...ale dvblast vyzerá ďaleko najstabilnejšie.
Poďme si bližšie ukázať možnosti tohto perfektného streamovacieho nástroja-DVBlast 3.0 (release).Ako vstup bude použitá dvb-s2 karta s CI slotom.
Ladiť môžme dvoma spôsobmi:
-priamo dvblast_om.
-pomocou szap(staršie verzie dvblastu takúto možnosť nemali):
~$ szap-s2 -c dvb/channels.conf stv1
reading channels from file 'dvb/channels.conf'
zapping to 5 'STV1':
delivery DVB-S, modulation QPSK
sat 0, frequency 11836 MHz H, symbolrate 27500000, coderate auto, rolloff 0.35
vpid 0x03f7, apid 0x0401, sid 0x13f1
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 1f | signal 0193 | snr 0079 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
status 1f | signal 0193 | snr 0077 | ber 00000000 | unc fffffffe | FE_HAS_LOCK
...
~$ dvblast -f - -c dvblast.conf
DVBlast 3.0 (release)
warning: restarting
debug: compiled with DVB API version 5.10
debug: CA interface with 1 slot
...
stv_H_11836.conf:
#239.0.0.1:1234@127.0.0.1    0    5105     #stv1
#239.0.0.2:1234@127.0.0.1    0    5106     #stv2
239.0.0.3:1234@127.0.0.1    0    5101     #joj
239.0.0.4:1234@127.0.0.1    0    5102     #joj_plus
239.0.0.5:1234@127.0.0.1    0    5108     #dajto
239.0.0.6:1234@127.0.0.1    0    5107     #ta3
#239.0.0.7:1234@127.0.0.1    0    5103     #markiza
239.0.0.8:1234@127.0.0.1    0    *     #spúšťať s parametrom -u !!!
~$ dvblast -f 11836000 -v 18 -u -c stv_H_11836.conf
...
Parameter (always on) je nastavený na "0",pretože napr. modul mascom sa s nastavením na "1" neustále reštartuje-teda napr. aj pri nepodstatnej chybe v dekódovaní.Nastavenie "1" by malo byť o tom,že ak modul prestane dekódovať,tak sa vždy reštartuje.
"Mocným" parametrom SID sa dá povedať takmer všetko.
Takže čo sa bude diať:
-tuner sa naladí na transp. 11836000H.
-na mcast adresách 3,4,5,6(pre jednoduchosť) budú samostatné programy podľa sid_ov,pokiaľ máme CAM s kartou,budú tieto programy dekódované.
-na mcast adrese 8 bude celý transpondér(aj s tými dekódovanými),prepínač -u vypne hw filtrovanie.
Čo sa týka CAM_u,dlho mi nebolo celkom jasné čo a ako.Aj keď je to samostatný kus hw,je to vlastne len súčasť dvb zariadenia.Nič iné sa s CAM_mom nedá robiť,teda že by sa napr. používal ako samostný hw. Začínajú sa objavovať technológie(vdr-cCamSlot::Decrypt,MTD),keď jeden modul môže obslúžiť viac zar.,no o tom-potom.
Takže práve nastavením v .conf otvoríme "kanály" pre dekódovanie v module.Ostatný stream akoby modul obtekal.Samozrejme modul "znesie" len istý počet programov,v závislosti na použitom hw(konkrétne descramble má na starosti nejaké fpga),alebo v závislosti na sw_om obmedzení. Mascom zvládne povedzme 6/sids(sd),ale technicrypt irdeto(výkonnejší hw) povedzme len 3,pretože sa dá sw_ovo ovládať(obmedziť).Bol som v tom,že irdeto certifikovaný technicrypt má natvrdo zadefinovaných 3/sids(z predchádzajúcich skúseností),no práve,keď píšem tieto riadky,dekóduje aj viac sid_ov,takže je možné,že to sw_ové obmedzenie sa dá ovládať aj na dialku(providerom).
Takže máme všetko(a to doslovne,nie je potrebné zapínať napr. ecm,emm passthrough) na jednej mcast 8 adrese.Potom napr.:
~$ vlc rtp://@239.0.0.3:1234........joj(nič iné)
~$ vlc rtp://@239.0.0.8:1234 --program 5101..........joj
~$ vlc rtp://@239.0.0.8:1234 --program 5107..........ta3
atdˇ.
~$ vlc rtp://@239.0.0.8:1234 --program 5105..........stv1_kódovane
následne:
~$ tsdecrypt -s 127.0.0.1 -I 239.0.0.8:1234 -O 239.0.0.10:1234 -o 127.0.0.1 -R -r -p -C 0x0668 -M 5105 -e
potom máme všetko na mcast 10:
~$ vlc rtp://@239.0.0.10:1234 --program 5107..........ta3
~$ vlc rtp://@239.0.0.10:1234 --program 5105..........stv1
~$ vlc rtp://@239.0.0.10:1234 --program 5108..........dajto
ale stv2 len na inej mcast adr.,a nič iné vypnutím -p:
~$ tsdecrypt -s 127.0.0.1 -I 239.0.0.8:1234 -O 239.0.0.11:1234 -o 127.0.0.1 -R -r -C 0x0668 -M 5106
Poznámka:pri použití kombinácie dvblast->tsdecrypt->udpxy máme k dispozícií http stream.Takýto stream vlc na PC v pohode prehrá.
No testovaný bol aj na set-to-boxe GMTriplex,pomocou pluginu WebTV.Je potrebné použiť prepínač -p(tsdecrypt),inak nábeh takéhoto streamu je neprimerane dlhý(aj minútu).
Unicable je technológia,ktorá umožňuje po jednom koaxiálnom kábli priviesť signál k 4(lnb,8/switch) príjimačom,pričom tieto budu na sebe nezávislé.Ideálne napr. pre použitie na stream serveri,kde sa na jednom mieste združuje viac tunerov.
Teraz,keď píšem tieto riadky,dvblast túto techn. nevie-čo je celkom dobré,pretože na nefungujúcich veciach sa človek celkom pekne učí.No autori avízujú podporu aj v tomto smere.
Aplikovať tento systém na terajších(teda aj na dvblast) zariadeniach nie je nijako zložité.Myslím,že tento faktor tvorcovia unicable určite brali na zreteľ.V základe vlastne stačí jeden diseqc príkaz:
E0 10 5A D1 D2
D1,D2 je 16 bitová(2B) informácia,v ktorej sú obsiahnuté parametre pre naladenie unicable lnb.Zatialčo bežné lnb sa vlastne neladí-len sa na výstup prepne požadované pásmo,unicable lnb je vlastne tuner+klasické lnb.Na výstupe unicable lnb sú 4 frekvenčné pásma,na ktorých sa prenášajú len zvolené transpondéry(frekvencie).Teda jedna unicable frekvencia => jeden transpondér.
D1 . D2 = 3a . b . c . d . 10e
0 1210MHz
1 1420MHz
2 1680MHz
3 2040MHz
c...polarizácia...V(0) alebo H(1)
d...tzv. high band...low(0) alebo high(1)
e...riadiace slovo pre ladenie...okrem iného do tohto výpočtu vstupuje frekv. požadovaného transp. a takisto frekv. zvoleného unicable pásma.
Pr.:
11836MHz=>unicable_pásmo 1,A(0),pol. H(1),high_band(1)
3a = 001
b = 0
c = 1
d = 1
10e = ((11836 - 10600) + 1420)/4 - 350 = 314 = 0x13A = 0100111010
D1 = 3a . b . c . d . 2e = 00101101 = 0x2D
D2 = 8e = 00111010 = 0x3A
E0 10 5A 2D 3A
Použijeme ešte jeden diseqc,tzv. power_off ID1:
E0 10 5A 20 00
E0 10 5A 00 00
dvb.c:
static int FrontendDoDiseqc(void)
.
.
if ( i_satnum > 0 && i_satnum < 5 )
{
struct dvb_diseqc_master_cmd cmd =
{ {0xe0, 0x10, 0x5a, 0x2d, 0x3a, 0x00}, 5};
if ( ioctl( i_frontend, FE_SET_TONE, SEC_TONE_OFF ) < 0 )
{
msg_Err( NULL, "FE_SET_TONE failed (%s)", strerror(errno) );
exit(1);
}
if ( ioctl( i_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18 ) < 0 )
{
msg_Err( NULL, "FE_SET_VOLTAGE failed (%s)", strerror(errno) );
exit(1);
}
msleep(100000);
if( ioctl( i_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd ) < 0 )
{
msg_Err( NULL, "ioctl FE_SEND_MASTER_CMD failed (%s)",
strerror(errno) );
exit(1);
}
msleep(100000);
ioctl( i_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13 );
}
else if ( i_satnum == 0xA || i_satnum == 0xB )
{
struct dvb_diseqc_master_cmd cmdr =
{ {0xe0, 0x10, 0x5a, 0x20, 0x00, 0x00}, 5};
if ( ioctl( i_frontend, FE_SET_TONE, SEC_TONE_OFF ) < 0 )
{
msg_Err( NULL, "FE_SET_TONE failed (%s)", strerror(errno) );
exit(1);
}
if ( ioctl( i_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18 ) < 0 )
{
msg_Err( NULL, "FE_SET_VOLTAGE failed (%s)", strerror(errno) );
exit(1);
}
msleep(100000);
if( ioctl( i_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmdr ) < 0 )
{
msg_Err( NULL, "ioctl FE_SEND_MASTER_CMD failed (%s)",
strerror(errno) );
exit(1);
}
msleep(100000);
ioctl( i_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13 );
}
if ( ioctl( i_frontend, FE_SET_TONE, fe_tone ) < 0 )
{
msg_Err( NULL, "FE_SET_TONE failed (%s)", strerror(errno) );
exit(1);
}
msleep(100000);
msg_Dbg( NULL, "configuring LNB to v=%d p=%d satnum=%x uncommitted=%x",
i_voltage, b_tone, i_satnum, i_uncommitted );
return bis_frequency;
}
~$ dvblast -f 12020000 -S 1
~$ dvbsnoop -s feinfo
Lnb ostáva v tejto pozícií až do-nový diseqc povel,alebo power_off povel:
~$ dvblast -f 12020000 -S A
Čo sa týka voltáže,pravdepodobne stačí lnb 13V a polaritu si prepína buď vlastním meničom 13/18,alebo inak.Aj keď tomu diseqc predchádza 18V.
Pozn.:
Pri výpočtoch D1 pre ID1 som sa náhodou dopracoval k hodnote 0x35 a záhadou je,že som s tým(D2=0x3A) naladil 11836H transp.,keďže hodnota 0x35 vypovedá o vertikálnej polarizácií.???
Čo sa týka klasických príjimačov,tak u serióznych stb-goldeny,amika...-unicable noproblem.Jeden postreh:na GMTriplex som mal nastavené unicable lnb a chcel som točiť motorom.Nedá sa,logicky-odstavím ostatných účastníkov.Stačí ale prepnúť(na dobu točenia motora) na univerzal lnb.
Čo sa týka napr. windows playerov,tak DVBViewer(a takisto jeho súčasť TransEdit) unicable zvláda.Napr. ProgDVB nateraz nie.
Tzv. dvbloopback(najčastejšie sa spomína v súvislosti so softcamom sasc-ng) bol pre mňa dlhé roky strašiakom.Sem tam som sa pokúsil o kompiláciu,no vždy s nie valným výsledkom.
Po spoznaní streamovacieho nástroja dvblast som znovu začal uvažovať o tom,že dvbloopback by sa pridal.Narozdiel od napr. mumudvb,vdr,tvheadend,ktoré využívajú moderného dvb-api klienta spojeného s oscamom,dvblast samotný vie dekódovať len pomocou hw CAM_ov.Vidím to tak,že je to zámer tvorcov dvblast_u,nepúšťať sa do tzv. alternatívnych spôsobov spracovania pay tv.
Pre softvérové dekódovanie je dobrý tsdecrypt,čo je vlastne "TCP/IP loopback".Kombinácia dvblast->tsdecrypt pracuje veľmi dobre,no lákalo ma použiť dvblast bez prídavnej utility v podobe tsdecrypt.
Pri skúmaní možností som narazil na ffdecsawrapper a bolo mi jasné,že to je práve to čo hľadám a čo by som mohol zvládnuť aplikovať.Chvíľu mi trvalo,kým som ako tak pochopil vocogo,ale ffdecsawrapper už šlape.Takže ako na to?
FFdecsawrapper je tvorcami veľmi dobre pomenovaný ako descrambler+dvbloopback,a v repozitároch GH rozdelený na dve vetvy.
Descrambler je jasný a ľahko kompilovateľný.Je to vlastne softcam(ffdecsa descramble)+cardserver klient(prípadne cardreader,prípadne emulátor).Po kompilácií je vytvorená binárka ffdecsawrapper,ktorá sa spúšťa napr.:
~$ ffdecsawrapper -j 0:1
Jan 3 14:58:26.716 INIT: Loading -Master
Jan 3 14:58:26.716 CAM: initializing FFdecsawrapper, A software emulated CAM
Jan 3 14:58:26.716 CAM(core.load): ** Key updates (AU) are enabled (active CAIDs) (no prestart)
Jan 3 14:58:26.716 CAM(core.load): ** Local systems DON'T take priority over cached remote
Jan 3 14:58:26.716 CAM(core.load): ** Force transfermode with digital audio
Jan 3 14:58:26.716 CAM(core.load): ** ECM cache is set to enabled
Jan 3 14:58:26.716 CAM(core.load): ** TsBufferSize is 32 MB
Jan 3 14:58:26.716 CAM(core.load): ** ScCaps are 1 2 0 0 0 0 0 0 0 0
Jan 3 14:58:26.716 CAM(general.error): failed open ./sc_files/override.conf: No such file or directory
Jan 3 14:58:26.716 CAM(general.error): failed open ./sc_files/smartcard.conf: No such file or directory
Jan 3 14:58:26.716 CAM(general.error): failed open ./sc_files/cardslot.conf: No such file or directory
Jan 3 14:58:26.717 CAM(general.error): failed open ./sc_files/SoftCam.Key: No such file or directory
Jan 3 14:58:26.717 CAM(general.info): loading cardclient config from ./sc_files/cardclient.conf
Jan 3 14:58:26.717 CAM(general.warn): no write permission on ./sc_files/cardclient.conf. Changes will not be saved!
Jan 3 14:58:26.726 CAM(cardclient.newcamd): now using protocol version 525 (cdLen=8)
Jan 3 14:58:26.726 CAM(cardclient.core): hostname=192.168.1.11 port=30000 emm=1 emmCaids 0d96/ffff
Jan 3 14:58:26.726 CAM(cardclient.core): client 'Newcamd' ready
Jan 3 14:58:26.741 CAM(core.net): connecting to 192.168.1.11:30000/tcp (192.168.1.11)
Jan 3 14:58:26.741 THREAD: Netwatcher thread started (pid=2530, tid=-1238748120)
Jan 3 14:58:26.757 CAM(cardclient.login): Newcamd: CaID=0d96 admin=1 srvUA=00000000135844AE provider 000010/0000000000000000 00000C/0000000000000000 000008/0000000000000000 000004/0000000000000000
Jan 3 14:58:26.757 CAM(general.info): no keys loaded for softcam
Jan 3 14:58:26.757 CAM(core.load): ** registered systems:
Jan 3 14:58:26.758 CAM(core.load): ** Viaccess (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** Seca (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** SC-VideoGuard2 (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Viaccess (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Seca (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Nagra (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Irdeto (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Cryptoworks (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** SC-Conax (pri -5)
Jan 3 14:58:26.758 CAM(core.load): ** Fake-NDS (pri -12)
Jan 3 14:58:26.758 CAM(core.load): ** Nagra2 (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** Nagra (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** Irdeto2 (pri -8)
Jan 3 14:58:26.758 CAM(core.load): ** Irdeto (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** Cryptoworks (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** ConstCW (pri -20)
Jan 3 14:58:26.758 CAM(core.load): ** Conax (pri -10)
Jan 3 14:58:26.758 CAM(core.load): ** Cardclient (pri -15)
Jan 3 14:58:26.771 THREAD: SC housekeeper thread started (pid=2530, tid=0)
Jan 3 14:58:27.773 frontend: Starting thread on /dev/dvb/adapter1/frontend1
The thread scheduling parameters indicate:
policy = 0
priority = 0
Jan 3 14:58:27.773 dvr: Starting thread on /dev/dvb/adapter1/dvr1
The thread scheduling parameters indicate:
policy = 0
priority = 0
Jan 3 14:58:27.773 demux: Starting thread on /dev/dvb/adapter1/demux1
The thread scheduling parameters indicate:
policy = 0
priority = 0
Jan 3 14:58:27.773 : Listening on port 5456
zdá sa vám to povedomé?Ale to vlastne predbieham.
Modul dvbloopback je virtuálny adaptér.Po korektnom zavedení modulu dvbloopback.ko nám v /dev/dvb pribudne(v závislosti na spôsobe zavedenia modulu) adapter_n so zdvojenými zariadeniami audio0-audio1...frontend0-frontend1...video0-video1.
Kompilácia nie je celkom triviálna.Modul kompilujeme so zdrojákmi ovládačov pre dvb zariadenia,teda napr. media_build,alebo linux_driver_tbs a pod.Teda najskôr je potrebné zvládnuť kompiláciu ovládačov.
Aplikovať dvbloopback do zdrojákoch ovládačov môžme takto:zložku /dvbloopback skopírujeme do napr. .../media_build/linux/drivers/media/pci,v závislosti na tzv. dvbloopback.patch:
--- linux/drivers/media/pci/Kconfig 2015-03-26 14:00:21.000000000 +0100
+++ linux/drivers/media/pci/Kconfig 2015-04-08 21:25:45.592661996 +0200
@@ -36,6 +36,7 @@
if MEDIA_DIGITAL_TV_SUPPORT
comment "Media digital TV PCI Adapters"
source "drivers/media/pci/ttpci/Kconfig"
+source "drivers/media/pci/dvbloopback/Kconfig"
source "drivers/media/pci/b2c2/Kconfig"
source "drivers/media/pci/pluto2/Kconfig"
source "drivers/media/pci/dm1105/Kconfig"
--- linux/drivers/media/pci/Makefile 2015-03-26 14:00:21.000000000 +0100
+++ linux/drivers/media/pci/Makefile 2015-04-08 21:26:34.223691236 +0200
@@ -17,6 +17,7 @@
obj-$(CONFIG_VIDEO_IVTV) += ivtv/
obj-$(CONFIG_VIDEO_ZORAN) += zoran/
obj-$(CONFIG_VIDEO_CX18) += cx18/
+obj-$(CONFIG_DVB_LOOPBACK_ADAPTER) += dvbloopback/
obj-$(CONFIG_VIDEO_CX23885) += cx23885/
obj-$(CONFIG_VIDEO_CX25821) += cx25821/
obj-$(CONFIG_VIDEO_CX88) += cx88/
Základom pre korektné fungovanie modulu je tzv. "mutex patch"(dvb-core),napr.:
--- drivers/media/dvb-core/dvbdev.c 2014-12-01 01:42:27.000000000 +0100
+++ drivers/media/dvb-core/dvbdev.c 2014-12-01 16:30:50.565898179 +0100
@@ -68,7 +68,7 @@
{
struct dvb_device *dvbdev;
- mutex_lock(&dvbdev_mutex);
+ //mutex_lock(&dvbdev_mutex);
down_read(&minor_rwsem);
dvbdev = dvb_minors[iminor(inode)];
@@ -84,12 +84,12 @@
if (file->f_op->open)
err = file->f_op->open(inode,file);
up_read(&minor_rwsem);
- mutex_unlock(&dvbdev_mutex);
+ //mutex_unlock(&dvbdev_mutex);
return err;
}
fail:
up_read(&minor_rwsem);
- mutex_unlock(&dvbdev_mutex);
+ //mutex_unlock(&dvbdev_mutex);
return -ENODEV;
}
--- v4l/Makefile 2015-09-23 08:34:02.256865000 +0200
+++ v4l/Makefile 2015-09-23 08:47:41.272879195 +0200
@@ -155,6 +155,7 @@
PWD := $(shell pwd)
DEST := /lib/modules/$(KERNELRELEASE)/v4l2
KDIR26 := /lib/modules/$(KERNELRELEASE)/kernel/drivers/media
+INSTDIR := $(DESTDIR)/lib/modules/$(KERNELRELEASE)/updates/media
#################################################
# Compiler fixup rules
@@ -203,9 +204,18 @@
#################################################
# installation invocation rules
-modules_install install:: media-install firmware_install mm-install
-
-remove rminstall:: media-rminstall
+modules_install install:: rminstall firmware_install
+ install -d -v $(INSTDIR)
+ @for i in *.ko; do \
+ echo "install $$i -> $(INSTDIR)/"; \
+ install -p -m 644 $$i $(INSTDIR); \
+ done;
+ strip --strip-debug $(INSTDIR)/*.ko
+ /sbin/depmod -a $(KERNELRELEASE) $(if $(DESTDIR),-b $(DESTDIR))
+
+remove rminstall::
+ @rm -Rfv $(INSTDIR)
+ /sbin/depmod -a $(KERNELRELEASE) $(if $(DESTDIR),-b $(DESTDIR))
firmware_install::
make -C firmware install
Takže môžme začať(jedna dvb-s karta,zavedená po štarte systému ako adapter0):
-zavedieme modul dvbloopback:
~$ sudo insmod /lib/modules/3.13.0-32-generic/updates/media/dvbloopback.ko
~$ lsmod
Module Size Used by
dvbloopback 23512 46
...
dvb_core 106138 3 dvb_usb,dvb_usb_az6027,dvbloopback
...
~$ ls /dev/dvb/
adapter0 adapter1
~$ ls /dev/dvb/adapter1/
audio0 demux0 dvr0 frontend0 osd0 video0
audio1 demux1 dvr1 frontend1 osd1 video1
newcamd:192.168.1.11:30000:1/0d96/ffff:acamd:acamd:0102030405060708091011121314
#cccam2:192.168.1.11:12200:1/0d96/ffff:acamd:acamd
~$ ffdecsawrapper -j 0:1
stv_V_12363.conf:
239.1.0.1:1234@127.0.0.1 0 4905 #stv1_hd
239.1.0.2:1234@127.0.0.1 0 4906 #stv2_hd
239.1.0.5:1234@127.0.0.1 0 4901 #ct1_hd
239.1.0.6:1234@127.0.0.1 0 4902 #ct2_hd
239.1.0.7:1234@127.0.0.1 0 4904 #ct4_hd
~$ ./dvblast_1_12363V -f 12021000 -s 29500000 -c stv_V_12363.conf -m psk_8 -S 1 -a 1
Na multicastových adresách máme rozkódované programy.
Na vzdialenú kartu,ktorú obsluhuje oscam,je cez newcamd prihlásený user "acamd" s hodnotou "casc_users 5/5".Na kartu(ICE 0d96) prechádzajú zápisy.
Robené so skystar usb 2 hd ci.Stabilita ok.
~$ lscpu
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 23
Stepping: 10
CPU MHz: 2000.000
BogoMIPS: 5999.25
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 6144K
~$ top
top - 19:10:42 up 4:14, 4 users, load average: 1,27, 1,08, 0,76
Tasks: 174 total, 1 running, 173 sleeping, 0 stopped, 0 zombie
%Cpu(s): 26,1 us, 23,9 sy, 0,2 ni, 49,7 id, 0,2 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem: 4132016 total, 2064344 used, 2067672 free, 161696 buffers
KiB Swap: 0 total, 0 used, 0 free. 943456 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19242 marian 20 0 135632 18596 1888 S 69,8 0,5 9:42.80 ffdecsawra+
19545 marian 20 0 7752 6048 960 S 23,3 0,1 3:14.60 dvblast_1_+
1754 marian 20 0 578180 217324 59520 S 6,0 5,3 7:53.99 gnome-shell
940 root 20 0 124292 68324 26944 S 2,7 1,7 5:22.15 Xorg
S TBS kartou 6928(first edition),ktorá celkovo v linuxe hnevá,to padá.Proste proprietárne ovládače "robia svoje",no netreba to brať všeobecne.
Pozn.:
-pokiaľ chceme pracovať s viacerými kartami,tak modul zavedieme napr.:
~$ sudo insmod /lib/modules/4.2.0-22-generic/updates/media/dvbloopback.ko num_adapters=2
k reálnym adapt. 0,1 pribudnú dva virtuálne adapt. 2,3.
~$ ls /dev/dvb/
adapter0 adapter1 adapter2 adapter3
~$ ffdecsawrapper -j 0:2 -j 1:3
s jadrom 3.13.0-32-generic mi to ale nefungovalo korektne(ffdecsawrapper padal pri spustení druhej inštancie dvblast_u).S jadrom 4.2.0-22-generic ok.
-pozor na parameter modulu "dvblb_debug".S dvblb_debug=9 mi blbol systemd-journald,ktorý príliš vyťažoval cpu.
-pokiaľ mám v .conf dvblastu sid,na ktorý nemá ffdecsawrapper oprávnenie,neprehrám pomocou vlc ani tie sid_s,na ktoré ffdecs. oprávnenie má(a tieto sa aj dekódujú)???
Sat->ip je relatívne nová technológia,ktorá je zameraná na distribúciu DVB cez LAN.Je to vlastne streaming v trochu inom poňatí.Možno zbytočnosť,ale určite zaujímavá.
Špičkovým sat->ip produktom je napr. 8_tunerový Triax SAT>IP LNB unit.Ktorý tiež nemám.Ancijáša.
Je to LNB,8xtuner(FBC) a mikroPC s LAN v jednom.Podobný systém sa dá takpovediac naemulovať,takže si poďme ukázať voco vlastne go.
Existuje skvelá utilitka s názvom minisatip.Kompilácia je triviálna,nevyžaduje žiadne "špeciality".Crosscompile už nie,ale o tom neskôr.
Takže máme minisatip,nejakú dvb kartu a nejaké PC s LAN.Úplne jednoducho spustíme minisatip(podpora unicable),napr.:
Tuneru(adapter0) som priradil unicable 0-1210,s timingom t80ms 18V..t..diseqc..t..13V,keďže v defaulte je 15ms a niekedy sa tuner(unicable lnb) nepreladil.
~$ minisatip -x 8090 -y 1025 -u 0:0-1210 -q 0:15-54-80-15-80-0 -o 127.0.0.1:4025 -f
[27/10 20:12:41.284 main]: Setting unicable adapter 0 slot 0 freq 1210
[27/10 20:12:41.284 main]: Setting diseqc timing for adapter 0 before cmd 15 after cmd 54 after repeated cmd 80 after switch 15 after burst 80 after tone 0
[27/10 20:12:41.285 main]: minisatip version 0.5.61, compiled with s2api version: 050A
[27/10 20:12:41.285 main]: Built with dvbcsa
[27/10 20:12:41.285 main]: Built with CI
[27/10 20:12:41.285 main]: Built with dvbapi
[27/10 20:12:41.285 main]: Built with AES (OpenSSL)
[27/10 20:12:41.285 main]: Built with tables processing
[27/10 20:12:41.285 main]: Built with satip client
[27/10 20:12:41.285 main]: Built with linux dvb client
[27/10 20:12:41.285 main]: Built with backtrace
[27/10 20:12:41.285 main]: Built without netceiver
[27/10 20:12:41.286 main]: Initializing with 1 devices
Na rtsp porte 1025 máme k dispozícií adapter0.V celej LAN sieti.Klient musí mať pre sat->ip podporu.Napr. dvbviewer ju má,ako inak(dvbviewer je zatial jediný sw,za ktorý som zaplatil a musím povedať,že to bola asi najlepšia kúpa v mojom živote).Takže niekde na inom PC spustím dvbviewer,jednoduchým spôsobom pridám sat->ip adaptér a fungujem presne tak,ako by bol ten adaptér na vlastnom PC.
Na http porte 8090 minisatip počúva na http požiadavky(je tam aj jednoduchý web server so statusom minisatip),napr.:
~$ vlc "http://192.168.1.16:8090/?msys=dvbs&freq=11836&pol=h&sr=27500&pids=1015,1025,0,1005"
Je otázne či poskytujú http stream aj origo sat->ip zariadenia.
Mňa zaujala najmä možnosť,týmto spôsobom získať tuner,nachádajúci sa v set-to-boxe.Mám GoldenMedia triplex s 2xdvbs2(1xdvbt2) tunermi.
Najskôr bolo treba vytvoriť binárku minisatip pre SH4 platformu.Asi by som sa do toho ani nepúšťal,keďže zháňať vývojové prostredie(toolchain) pre tú ktorú platformu a vedieť ho použiť,je zase iný level,ale vsadil som na toolchain,ktorý používa simplebuild pre crosscompile oscamu.A pošťastilo sa.
Robil som to takpovediac nadvakrát.Toolchain(bin,lib,libexec,sh4-streamboard-linux-gnu) som skopčil do minisatip-master zložky.Potom:
~/minisatip-master$ ./configure --host=sh4-streamboard-linux-gnu CC=/usr/src/ ./configure --host=sh4-streamboard-linux-gnu --enable-static CC=bin/sh4-streamboard-linux-gnu-gcc
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: ./configure
checking for sh4-streamboard-linux-gnu-gcc... bin/sh4-streamboard-linux-gnu-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether bin/sh4-streamboard-linux-gnu-gcc accepts -g... yes
checking for bin/sh4-streamboard-linux-gnu-gcc option to accept ISO C89... none needed
checking for main in -lrt... yes
checking how to run the C preprocessor... bin/sh4-streamboard-linux-gnu-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for int16_t... yes
checking for int64_t... yes
checking for int8_t... yes
checking for size_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... no
checking for bzero... yes
checking for clock_gettime... yes
checking for dup2... yes
checking for gethostbyname... yes
checking for gettimeofday... yes
checking for inet_ntoa... yes
checking for memset... yes
checking for munmap... yes
checking for socket... yes
checking for strchr... yes
checking for strerror... yes
checking for strncasecmp... yes
checking for strstr... yes
configure: == Checking LINUX DVB ==
checking linux/dvb/frontend.h usability... yes
checking linux/dvb/frontend.h presence... yes
checking for linux/dvb/frontend.h... yes
configure: == Checking DVBEN50221 ==
checking libdvben50221/en50221_app_dvb.h usability... no
checking libdvben50221/en50221_app_dvb.h presence... no
checking for libdvben50221/en50221_app_dvb.h... no
configure: == Checking OpenSSL ==
checking openssl/aes.h usability... yes
checking openssl/aes.h presence... yes
checking for openssl/aes.h... yes
configure: == Checking Embedded ==
checking for backtrace... yes
configure: == Checking DVBCSA ==
checking dvbcsa/dvbcsa.h usability... no
checking dvbcsa/dvbcsa.h presence... no
checking for dvbcsa/dvbcsa.h... no
configure: == Checking NETCVCLIENT ==
checking netceiver.h usability... no
checking netceiver.h presence... no
checking for netceiver.h... no
configure: creating ./config.status
config.status: creating Makefile
minisatip configuration
Linux DVB: enabled
Common Interface (needs DVBEN50221): disabled
OpenSSL (AES as part of DVBAPI): enabled
Embedded system: disabled
DVBCSA (needs libdvbcsa): disabled
Netceiver support: disabled
SatIP Client: enabled
Static: enabled
~/minisatip-master$ make
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c minisatip.c -o minisatip.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c socketworks.c -o socketworks.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c stream.c -o stream.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c adapter.c -o adapter.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c utils.c -o utils.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c aes.c -o aes.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c dvbapi.c -o dvbapi.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c tables.c -o tables.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c satipc.c -o satipc.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -c dvb.c -o dvb.o
bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -o minisatip minisatip.o socketworks.o stream.o adapter.o utils.o aes.o dvbapi.o tables.o satipc.o dvb.o -lpthread -lrt -l:libcrypto.a -l:libdvbcsa.a
/home/marian/minisatip-master/bin/../lib/gcc/sh4-streamboard-linux-gnu/4.6.3/../../../../sh4-streamboard-linux-gnu/bin/ld: cannot find libdvbcsa.a
collect2: ld returned 1 exit status
Makefile:94: recipe for target 'minisatip' failed
make: *** [minisatip] Error 1
~/minisatip-master$bin/sh4-streamboard-linux-gnu-gcc -ggdb -fPIC -DDISABLE_DVBCSA -DDISABLE_DVBCA -DDISABLE_NETCVCLIENT -o minisatip minisatip.o socketworks.o stream.o adapter.o utils.o aes.o dvbapi.o tables.o satipc.o dvb.o -lpthread -lrt -lcrypto
/home/marian/minisatip-master/bin/../lib/gcc/sh4-streamboard-linux-gnu/4.6.3/../../../../sh4-streamboard-linux-gnu/bin/ld: BFD (crosstool-NG 1.16.0) 2.21.1 assertion fail /opt/cross/sh4/.build/src/binutils-2.21.1a/bfd/elf32-sh.c:7405
Takto som získal binárku pre SH4,bez podpory dekódovania(dvbcsa,CI_slot).Nevadí,dekódovať môže klient.Napr. ním môže byť aj samotný minisatip na inom stroji,ktorý spustíme v režime klient-server s parametrom -s.
Postup pre podporu dvbcsa.
Stiahneme libdvbcsa:
svn co svn://svn.videolan.org/libdvbcsa/trunk libdvbcsa
~/minisatip-master/libdvbcsa$ ./bootstrap
~/minisatip-master/libdvbcsa$ ./configure --host=sh4-streamboard-linux-gnu CC=/home/marian/minisatip-master/bin/sh4-streamboard-linux-gnu-gcc
~/minisatip-master/libdvbcsa$ make
takto získame libdvbcsa.a(skryté súbory),skopčíme do minisatip-master.Do ~/minisatip-master/lib/gcc/sh4-streamboard-linux-gnu/4.6.3/include/ skopčíme /libdvbcsa/src/dvbcsa.
Configure(sh4) a make,malo by to prebehnúť bez chyby, a máme binárku s podporou dvbcsa(teda software descramble).
Musím poznamenať,že mi to na SH4 nie celkom funguje.FTA programy ok,no kódované nejdú-aj keď všetko vyzerá ok,napr. v oscame nabiehajú správne ecm-dcw,tak je tma.Ten stream sa niekde zasekne,pravdepodobne problém v samotnom minisatip.Tvorca o tom vie,možno to opraví,ktovie.
Pozn.:celé som to robil v enigme(openpli),aj keď normálne používam spark.No v sparku je problém sa dostať k tunerom.Beží tam nejaká zvláštne pomenovaná binárka ywapp.exe,tunery sú obsadené aj v standby a v /dev/dvb/adapter0 nefiguruje frontend.???
Pozn.:Aventuri/opencaster.
Zatial len toľko,no myslím,že táto téma môže byť ešte zaujímava.
Streamovať sa dá všeliako,no poďme si načrtnúť jeden zvláštny prípad-stream multicastu cez wifi,pričom klienti budú v monitor móde.
Znie to možno desivo,ale je to vlastne niečo ako DVB-T,teda vysielač -> príjimač -> tv.Žiadna spätná väzba.Možno sa pýtate "prečo monitor mód?"Proste chcem odbremeniť AP od "autentifikačného trafiku" a možno aj preto,že na AP môžem nasadiť kvalitný set rádio-anténa,ktorý "dostrelí" ďaleko,čo už nemusí platiť pre klienta.
Vysielač: je to stream_server+AP.Inak sa zatial rozpisovať nebudem,pretože nie je o čom.Mám nejaký TP_link za pár eur,na ktorý posielam multicast(dvblast):
dvblast.conf
239.0.0.1:1234@eth0 0 5107 #ta3
~$ dvblast -f 11836000 -v 18 -U -c dvblast.conf
Príjimač: wifi klient v monitor móde+player,alebo iný i/o interface.Tu to začína byť zložité.
Monitor mód:jednoducho povedané-rádiom "chytáme" všetko na danom kanáli(u drôtovej siete sa pre podobný prípad používa výraz "promiscuous mode").Použité zariadenie musí túto funkcionalitu podporovať,a takisto musí byť pre tento prípad podpora v op. systéme.
Čo viem z dávnych čias(keď som sa pokúšal "lámať" wifi siete),tak čipy atheros a realtek monitor_mode vedeli celkom dobre.Čo sa týka použitého distra,tak špecializované projekty ako napr. kali_linux(backtrack),by nemali mať problém.
Mne to beží na 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux + usb_edimax EW-7318USg.Na novšom jadre(4.2...??) som monitor mód nahodiť nedokázal.
Spôsobov,ako zaviesť wifi kartu do požadovaného stavu,je veľa.Napr.:
Po pripojení usb karty:
~$ ifconfig
...
wlan1 Link encap:Ethernet HWaddr 00:0e:2e:e3:8a:4b
inet6 addr: fe80::20e:2eff:fee3:8a4b/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:1771 errors:0 dropped:0 overruns:0 frame:0
TX packets:288 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2137692 (2.1 MB) TX bytes:46764 (46.7 KB)
~$ sudo ifconfig wlan1 down
~$ iwconfig
...
wlan1 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
~$ sudo airmon-ng start wlan1
Found 4 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!
PID Name
737 avahi-daemon
739 avahi-daemon
803 NetworkManager
2789 wpa_supplicant
Interface Chipset Driver
wlan1 Ralink 2573 USB rt73usb - [phy1]
(monitor mode enabled on mon0)
~$ iwconfig
...
mon0 IEEE 802.11bg Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
Edit:
aj s novšími jadrami monitor mode funguje-down wifi iface;airmon-ng start;mon0 down(pokiaľ sa neprepne do monitor modu);iwconfig mon0 mode monitor...alebo cez iwconfig nahodiť priamo do monitoru wifi iface.
Máme dva interfaces-"wlan1-mon0".Wlan1 prakticky nepotrebujeme(ako klienti),ale použijeme ho na "prebudenie" AP.Ak sa na AP neautentifikuje žiadny klient,tak proste nič nevysiela(pri auth. prebehne aj nejaký igmp "ťuk,ťuk")-určite sa to dá aj inak,napr. priamo na stream serveri pripojiť nejakého wifi klienta,alebo možno existuje nástroj,ktorý vie poslať igmp request na daný interface a tým ho "prebudí".
Teda s wlan1 sa pripojíme na AP a máme pripravené komplet testovacie prostredie.S "mon0" môžme snifovať všetok trafik vysielaný AP_čkom.Napr. rýchly test:
~$ sudo airodump-ng -i mon0 --channel 10
CH 10 ][ Elapsed: 0 s ][ 2016-05-29 18:25 ][ fixed channel mon0: -1
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
E8:94:F6:AA:93:98 -70 0 25 731 303 10 54e. OPN HLS
ak veľmi rýchlo nabiehajú data,tak niečo chytáme.
Problémom bude spracovať takto odchytený stream do prehrateľnej podoby.Po napr.:
~$ sudo tcpdump -i mon0 -s0 ip multicast -B 2048 -w test.ts
Edit:
~$ mkfifo pipeffplay
~$ sudo tcpdump -i mon0 -s0 -w - > pipeffplay
tcpdump: listening on mon0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 262144 bytes
~$ ffplay pipeffplay
Edit:
doteraz popisovaný spôsob-playeru podsunieme surové dáta-nie je celkom šťastné riešenie,aj keď napr. ffplay sa s tým dokáže vysporiadať celkom dobre.
Existuje aj iné riešenie-tcpreplay.No v mode_monitor mi to zatial nefacha(radiotap header problém).Pre ilustráciu uvediem príklad:
~$ sudo tcpdump -i wlx14cc2013f1ed -s0 -w - > pipeffplay
~$ sudo tcpreplay -i lo pipeffplay
~$ vlc udp://@239.0.0.1:1234 --miface lo
Edit:
aj keď som tomu venoval veľa času,zatial som sa nedopracoval k uspokojivému riešeniu.Alebo je to taká blbosť,že to nikto nerieši.Alebo si to programátori držia pre seba.
Jediným riešením pre mňa je nateraz len offline spracovanie:
-spraviť dump - tcpdump,tshark,dumpcap,scapy... - proste čímkoľvek.
-otvoriť vo wiresharku -> analyze -> "follow UDP stream" a máme klasický .ts - 188_bytove rámce s časovými pečiatkami,ľahko prehrateľné čímkoľvek.
Je to proste zložitejšie ako som predpokladal a bude potrebné naštudovať nástroje ako scapy,socat a pod.,prípadne to proste nejakým spôsobom naprogramovať.
Vízia je taká,že by sa vytvoril spôsob(nástroj),ktorý by bolo možné zapracovať do nejakého *wrt routra.
Pozn.:???
-zaťažiteľnosť servera,teda aký trafik dokáže vysielať,klientov môže byť neobmedzene.
-zabezpečenie -> možno cez biss_key.
-manažment zabezpečenia -> ???