Capitolo 1 - AIRT Lab - Università Politecnica delle Marche

Transcript

Capitolo 1 - AIRT Lab - Università Politecnica delle Marche
UNIVERSITÀ POLITECNICA DELLE MARCHE
FACOLTÀ DI INGEGNERIA
Corso di Laurea in
Ingegneria Informatica e dell’Automazione
DIGITAL VIDEO BROADCASTING E LINUX:
INSTALLAZIONE E SPERIMENTAZIONE DI UNA
SCHEDA DVB-T SU UN SISTEMA LINUX
MINIMALE
Relatore:
Prof. Aldo Franco Dragoni
Tesi di Laurea di:
Matteo Pandolfi
Anno Accademico 2006/2007
Indice
Indice ................................................................................................................................. i Elenco delle figure........................................................................................................... v Elenco dei listati ............................................................................................................. vi Capitolo 1: Lo standard DVB .......................................................................................... 1 1.1 Introduzione ....................................................................................................... 1 1.2 Il consorzio DVB Project ................................................................................... 2 1.3 Le specifiche ...................................................................................................... 3 1.4 Il DVB-T: lo standard per la televisione digitale terrestre ................................. 3 1.4.1 La codifica MPEG-2 ................................................................................... 5 1.4.2 Il flusso di trasporto .................................................................................... 8 1.4.3 Le informazioni di servizio ....................................................................... 10 1.4.4 Ricerca e decodifica di un programma ..................................................... 12 1.4.5 Accesso Condizionato e Cifratura ............................................................ 12 1.4.6 Le specifiche di livello fisico .................................................................... 13 1.4.7 Bit rate e configurazioni tipiche................................................................ 16 1.4.8 La trasmissione gerarchica........................................................................ 16 1.4.9 Schema del sistema di trasmissione .......................................................... 17 1.5 Il DVB-T in Italia ............................................................................................. 18 1.6 MHP: lo standard per la TV interattiva ............................................................ 19 1.6.1 Architettura ............................................................................................... 20 1.6.2 I profili ...................................................................................................... 21 1.6.3 Il protocollo di trasporto ........................................................................... 21 Capitolo 2: LinuxTV...................................................................................................... 23 2.1 Introduzione ..................................................................................................... 23 i
Indice
2.2 Storia del progetto ............................................................................................ 23 2.3 Le Linux DVB API .......................................................................................... 24 2.3.1 La struttura delle API ................................................................................ 25 2.3.2 Il riconoscimento dei dispositivi DVB ..................................................... 25 2.3.3 Frontend API............................................................................................. 26 2.3.4 Dispositivi di demux ................................................................................. 28 2.3.5 Decoder video ed audio ............................................................................ 29 2.3.6 Dispositivi per l’accesso condizionato ..................................................... 30 2.3.7 La quarta versione delle API .................................................................... 30 2.4 Le Video4Linux API ........................................................................................ 30 2.5 Utilities per il DVB .......................................................................................... 31 2.5.1 Scan ........................................................................................................... 32 2.5.2 Zap ............................................................................................................ 33 2.5.3 Dvbsnoop .................................................................................................. 36 Capitolo 3: Le schede per la TV digitale ....................................................................... 39 3.1 Introduzione ..................................................................................................... 39 3.2 Classificazione ................................................................................................. 39 3.2.1 Interfaccia di collegamento ....................................................................... 40 3.2.2 Tipo di segnale .......................................................................................... 40 3.2.3 Standard di trasmissione ........................................................................... 41 3.2.4 Caratteristiche hardware ........................................................................... 41 3.3 Anatomia di una scheda DVB .......................................................................... 42 3.4 La differenza tra le schede Budget e Premium ................................................ 43 3.5 La scheda ASUS My Cinema-P7131 Hybrid................................................... 44 3.5.1 Il chip TDA10046A .................................................................................. 45 3.5.2 Il chip SAA7131E ..................................................................................... 46 ii
Indice
Capitolo 4: Installazione e gestione della scheda DVB-T ............................................. 47 4.1 Le scelte progettuali ......................................................................................... 47 4.2 Ubuntu 6.06 LTS .............................................................................................. 48 4.2.1 Edizioni ..................................................................................................... 48 4.2.2 Installazione della versione desktop ......................................................... 49 4.2.3 Software indispensabile ............................................................................ 52 4.3 Installazione della scheda ................................................................................. 53 4.3.1 Firmware ................................................................................................... 53 4.3.2 Requisiti .................................................................................................... 54 4.3.3 Procedura di installazione ......................................................................... 55 4.3.4 Il telecomando........................................................................................... 56 4.4 Fase di test ........................................................................................................ 57 4.4.1 Scan ........................................................................................................... 58 4.4.2 Zap ............................................................................................................ 67 4.4.3 Prove di sintonizzazione dei canali ........................................................... 68 4.5 Visualizzazione della TV ................................................................................. 70 4.5.1 Impostazione di Gxine .............................................................................. 70 4.5.2 Uso del telecomando ................................................................................. 71 4.5.3 Registrazione della TV ............................................................................. 72 4.6 Analisi delle DVB-SI con Dvbsnoop ............................................................... 73 4.6.1 Program Association Table ....................................................................... 75 4.6.2 Network Information Table ...................................................................... 76 4.6.3 Service Description Table ......................................................................... 76 4.6.4 Event Information Table ........................................................................... 76 4.6.5 Time and Date Table................................................................................. 77 4.6.6 Program Map Table .................................................................................. 77 iii
Indice
4.6.7 Private stream ........................................................................................... 77 4.6.8 Application Information Table ................................................................. 78 4.6.9 Conditional Access Table ......................................................................... 78 4.7 Cenni di interattività ......................................................................................... 79 Capitolo 5: Conclusioni ................................................................................................. 82 5.1 Requisiti minimi ............................................................................................... 82 5.2 Vantaggi e limiti della tecnologia .................................................................... 84 Appendice ...................................................................................................................... 89 PAT ............................................................................................................................. 89 NIT .............................................................................................................................. 90 SDT ............................................................................................................................. 92 EIT .............................................................................................................................. 94 TDT ............................................................................................................................. 95 PMT 258 ..................................................................................................................... 96 AIT .............................................................................................................................. 98 Televideo .................................................................................................................. 100 CAT .......................................................................................................................... 102 Bibliografia .................................................................................................................. 103 iv
Elenco delle figure
Figura 1.1: Logo del DVB ................................................................................................ 1 Figura 1.2: Struttura organizzativa del DVB Project ........................................................ 2 Figura 1.3: Mappa mondiale di diffusione del DVB-T .................................................... 4 Figura 1.4: Schema standard del GOP di tipo MPEG-2 ................................................... 7 Figura 1.5: Costellazione di tipo QPSK.......................................................................... 14 Figura 1.6: Costellazione di tipo 16-QAM ..................................................................... 15 Figura 1.7: Bit rate utile (in Mbit/s) per tutte le configurazioni possibili ....................... 16 Figura 1.8: Diagramma a blocchi del sistema di trasmissione ....................................... 17 Figura 1.9: Area di copertura della rete Dfree ................................................................ 19 Figura 2.1: Logo del LinuxTV project............................................................................ 23 Figura 2.2: Struttura delle Linux DVB API .................................................................... 25 Figura 2.3: Logo del programma Dvbsnoop ................................................................... 36 Figura 3.1: Quattro tipi diversi di schede DVB-T .......................................................... 39 Figura 3.2: Schema dei componenti di una scheda DVB ............................................... 42 Figura 3.3: Schema del chip TDA10046 ........................................................................ 45 Figura 3.4: Schema del chip SAA7134 .......................................................................... 46 Figura 4.1:Schermata di scelta della lingua .................................................................... 49 Figura 4.2: Schermata del fuso orario ............................................................................. 50 Figura 4.3: Schermata scelta tastiera .............................................................................. 50 Figura 4.4: Schermata del partizionamento .................................................................... 51 Figura 4.5: Il sito DGTVi ............................................................................................... 59 Figura 4.6: Rete4 e Repubblica TV ................................................................................ 68 Figura 4.7: Finestra di Gxine con relativa Playlist ......................................................... 70 Figura 4.8: Menu in sovraimpressione di Gxine............................................................. 72 Figura 4.9: Pagina del televideo ..................................................................................... 78 Figura 4.10: Finestra di XleTView ................................................................................. 81 v
Elenco dei listati
Listato 2.1: Funzione di settaggio del frontend .............................................................. 34 Listato 2.2: Help di Dvbsnoop ........................................................................................ 38 Listato 4.1: Subroutine per ottenere il firmware della scheda ........................................ 54 Listato 4.2: Output di Mercurial ..................................................................................... 55 Listato 4.3: Lista delle periferiche PCI installate ........................................................... 56 Listato 4.4: Riconoscimento del telecomando ................................................................ 57 Listato 4.5: File delle frequenze iniziali per lo scan ....................................................... 60 Listato 4.6: Output del programma Scan ........................................................................ 64 Listato 4.7: File channels.conf ........................................................................................ 67 Listato 4.8: Confronto tra i canali Rete4 e Repubblica TV ............................................ 69 Listato 4.9: Parametri del segnale ricevuto con antenna portatile .................................. 69 Listato 4.10: Scansione dei PID con Dvbsnoop ............................................................. 74 Listato 4.11: Output del programma Dvbdata ................................................................ 80 vi
Capitolo 1: Lo standard DVB
Figura 1.1: Logo del DVB
1.1 Introduzione
Il DVB (Digital Video Broadcasting) rappresenta un insieme di standard europei per il
broadcasting della TV digitale, le cui specifiche vengono ratificate dall’ETSI, l’Istituto
Europeo per gli standard di Telecomunicazione. Esso è nato nel 1991 quando alcuni
broadcaster, produttori ed altri enti competenti in Europa si riunirono per discutere sulla
formazione di un gruppo che sorvegliasse l’introduzione della TV digitale. Tale gruppo,
conosciuto come ELG (European Launching Group, Gruppo di Lancio Europeo), puntò
su una struttura basata sul consenso, dove ogni attore coinvolto poteva essere d’accordo
riguardo alle tecnologie più adatte da utilizzare. Fu quindi elaborato un Memorandum
d’intesa (MoU) in cui i soggetti interessati s’impegnavano a mettere in disparte le
strategie competitive di mercato per perseguire un percorso basato sulla fiducia
reciproca. Tale atto venne firmato nel Settembre del 1993 da tutti i partecipanti
dell’ELG che in quella stessa data cambiarono il nome del gruppo da ELG a DVB
Project. Attualmente il consorzio è composto da più di 260 partner sparsi in
trentacinque paesi differenti.
Il gruppo si concentrò per primo sull’introduzione del digitale nella TV satellitare,
poiché aveva compreso che lo standard MAC (Multiplexed Analogue Components), nel
quale erano multiplexati audio digitale e video analogico, avrebbe presto lasciato spazio
ad una tecnologia completamente digitale. Così, nel Dicembre del 1993, vennero
formalizzate le specifiche dello standard DVB-S a cui fecero seguito, solamente tre
mesi dopo, quelle del DVB-C, lo standard per la televisione via cavo. Introdurre questi
primi due standard fu relativamente facile, in quanto non esistevano delle grandi
1
Capitolo 1: Lo standard DVB
difficoltà tecnologiche da superare ed inoltre il quadro regolamentatorio non era
alquanto rigido.
Quando vennero raggiunti gli obiettivi prefissati inizialmente, forte della diffusione
degli standard DVB-S e DVB-C su scala ormai mondiale, il gruppo concentrò maggiori
sforzi sulla produzione delle specifiche per altri metodi di trasmissione. Così, accanto ai
primi due, nacque nel 1997 il DVB-T, lo standard per la TV digitale terrestre, che fu
seguito dal DVB-H, per i dispositivi mobili, e recentemente dal DVB-S2, per la
televisione satellitare di seconda generazione.
1.2 Il consorzio DVB Project
Il DVB Project è strutturato in quattro moduli coordinati dallo Steering Board.
Quest’ultimo agisce sotto la sorveglianza dell’Assemblea Generale. L’Assemblea
Generale è la massima autorità del consorzio; essa, rappresentata da tutti i membri che
hanno firmato il MoU, ha il compito di eleggere lo Steering Board e di ratificare tutte
decisioni prese dai gruppi sottostanti. Presidente dell’Assemblea, dal 1996, è Theo
Pheek (Philips). Lo Steering Board è l’organo operativo del progetto. Si occupa
principalmente di coordinare i gruppi sottostanti, decidendo la politica, le priorità ed il
budget. I moduli operativi sono invece quattro e sono suddivisi a seconda della
problematica affrontata: i primi due, quello Commerciale e quello Tecnico, sono il
motore del progetto e vengono divisi in ulteriori gruppi di lavoro, ognuno incaricato di
uno specifico compito. Gli altri due invece si occupano rispettivamente della gestione
dei brevetti e della promozione del lavoro del consorzio nel mondo.
Figura 1.2: Struttura organizzativa del DVB Project
La creazione di ognuno degli standard DVB parte dal Modulo Commerciale. Questo,
infatti, dopo aver ultimato uno studio accurato delle esigenze di mercato, stila un elenco
2
Capitolo 1: Lo standard DVB
di requisiti commerciali che tengono conto fra l’altro di modalità di accesso ai servizi,
tempistiche e costi. Solo quando il Modulo Commerciale raggiunge un accordo su
questi ultimi, il progetto della specifica viene passato al Modulo Tecnico. Così, vengono
individuate varie soluzioni tecniche idonee e, sempre sulla base del consenso, viene
scelta ed implementata la migliore. Alla fine del processo la specifica viene presentata
di nuovo al modulo Commerciale che la invia allo Steering Board per la definitiva
approvazione. Per la ratificazione infine, il progetto viene mandato ad un organo di
standardizzazione competente come l’EBU (European Broadcasting Union, Ente
Radiotelevisivo Europeo) o l’ETSI. Secondo il consorzio il successo del DVB è dovuto
proprio a questi principi base di organizzazione e di progettazione orientata al mercato.
1.3 Le specifiche
Nel complesso, tutti gli standard ratificati dal DVB Project, definiscono una serie di
specifiche che riguardano tutti gli aspetti caratteristici di un sistema per la trasmissione
televisiva digitale. Queste possono essere suddivise in due categorie principali:
•
Livello logico:
- Formato di compressione Audio/Video
- Aggregazione di servizi
- Formato dei pacchetti
- Segnalazione dei servizi
- Incapsulamento di dati generici non A/V e di protocolli non DVB
- Realizzazione e distribuzione di applicazioni interattive
•
Livello fisico
- Specifiche sul segnale fisico nei vari mezzi trasmissivi (cavo, satellite,
terrestre)
1.4 Il DVB-T: lo standard per la televisione digitale terrestre
Questo standard tecnico, descritto da un documento dell’ETSI intitolato “EN 300 744
V1.5.1”, specifica la struttura, la codifica di canale e la modulazione per la trasmissione
della televisione digitale terrestre.
Il processo di realizzazione di questo formato è stato abbastanza lungo se lo si confronta
con gli altri realizzati precedentemente dal consorzio. Questo perché, la diffusione delle
trasmissioni in ambito terrestre comporta una complessità tecnica maggiore e numerosi
3
Capitolo 1: Lo standard DVB
ostacoli da superare, rispetto al satellite o al cavo. Infatti, nelle bande di trasmissione
terrestri, quelle VHF (Very High Frequency, da 30 a 300 MHz) ed UHF (Ultra High
Frequency, da 300 MHz a 3 GHz), dato che l’aria non è né un mezzo isotropo né
omogeneo, la propagazione delle onde elettromagnetiche è soggetta ad elevato rumore
dovuto a fenomeni di attenuazione, riflessione e fading. Ulteriori difficoltà sono dovute
alla regolamentazione dello spettro di frequenze utilizzabili che risultava quasi
completamente congestionato dalle trasmissioni analogiche attive in tutto il territorio
europeo. Grazie a tutto questo, per il consorzio, il DVB-T non risultava una priorità.
Solo in seguito, grazie a progetti europei sull’alta definizione in ambito terrestre
(HDTV-T), vennero raggiunti i requisiti definiti dal Modulo Commerciale del DVB
Project e si procedette quindi alla realizzazione dello standard.
Figura 1.3: Mappa mondiale di diffusione del DVB-T
Dal 1997, quando fu pubblicato, ad oggi, questo sistema è diventato il più adottato al
mondo, contando più di 40 milioni di ricevitori distribuiti in 30 paesi diversi. Queste
specifiche hanno assunto una particolare importanza anche nel nostro paese da quando
nel 2003, data di lancio ufficiale del DVB-T in Italia, è iniziata la transizione dalla
televisione analogica a quella digitale. Tale processo, a causa della non ancora completa
copertura del segnale e della scarsa diffusione dei dispositivi di ricezione, è ancora
molto lento ma si concluderà probabilmente nel 2012, anno previsto per lo switch-off,
quando verranno definitivamente interrotte le trasmissioni analogiche.
4
Capitolo 1: Lo standard DVB
Per quanto riguarda l’aspetto tecnico, il sistema DVB-T adotta, a livello logico, lo
standard MPEG-2 per il flusso video e l’MPEG-1 layer II per l’audio. Recentemente è
stato aggiunto il supporto per altri formati come il DTS o l’AC3 per l’audio multicanale
e il formato H.264 per il video in alta definizione. La scelta iniziale è stata determinata
dal fatto che, al momento della costituzione del DVB Project, l’MPEG-2 era il formato
più diffuso a livello mondiale. Oltretutto, accanto alle notevoli qualità di compressione,
l’MPEG-2 ha come pregio principale quello della flessibilità. Infatti è possibile adattare
il tipo di compressione e quindi la qualità delle immagini, a seconda delle condizioni di
trasmissione. A livello fisico è stata adottata la modulazione multi portante CODFM
(Coded Orthogonal Frequency Division Multiplexing), una tecnica molto robusta,
pensata appositamente per le trasmissioni terrestri.
1.4.1 La codifica MPEG-2
L’MPEG-2 è uno standard introdotto nel 1994 dal Moving Pictures Expert Group.
Oltre alla codifica di sorgente audio e video, esso è responsabile anche del formato di
multiplazione e del trasporto, che viene utilizzato per servizi multimediali di diffusione.
La caratteristica di scalabilità e flessibilità, che ha motivato la scelta di questo standard
come supporto per il broadcast televisivo, è originata dal fatto che l’MPEG-2 è
costituito da profili e livelli la cui combinazione consente di spaziare dalla più bassa
risoluzione fino all’alta definizione. I livelli determinano la risoluzione dell’immagine
ed il suo bit rate massimo. Ne sono definiti 4:
•
low level:
risoluzione uguale a quella dell’MPEG-1 con 352x288 pixel,
raggiunge una qualità non superiore a quella di un VCR domestico;
•
main level: formato 720x576 pixel, la qualità è simile a quella dei sistemi PAL e
NTSC ed è anche il livello adottato per la codifica dei DVD
•
high 1440: livello dedicato per il video ad alta definizione HDTV, la risoluzione
è 1440x1152;
•
high level: formato ad alta definizione detto Full HD, ottimizzato per schermi a
16:9, adotta la risoluzione 1920x1152.
I profili riguardano invece la modalità di compressione utilizzata e quindi definiscono il
tasso di compressione e la complessità del decodificatore. Ne sono presenti 5. Ognuno
contiene un set di tool per la compressione specifico del livello più tutti i tool del profilo
precedente, in modo da mantenere la compatibilità verso l’alto:
5
Capitolo 1: Lo standard DVB
•
simple profile: contiene solamente i tool di base consentendo una notevole
semplificazione del codificatore/decodificatore. Per la predizione temporale, che
verrà spiegata in seguito, utilizza soltanto i frame I (Intra-frame) e P (Predictedframe);
•
main profile: è il formato con il miglior compromesso tra qualità e tasso di
compressione. Per la predizione utilizza oltre ai precedenti anche il frame di tipo
B (Bidirectional Frame);
•
4:2:2 profile: definito per applicazioni professionali, questo profilo, con bit rate
massimo di 50 Mbit/s, consente una qualità molto elevata delle immagini anche
dopo molte codifiche e decodifiche;
•
SNR profile: profilo con una qualità scalabile a seconda dell’SNR, il rapporto
segnale rumore;
•
spatial profile: costituisce un sistema scalabile spazialmente. Il flusso è
costituito da due strati, il primo con una definizione convenzionale e il secondo
contenente informazione aggiuntiva che consente una definizione più elevata;
•
high profile: utilizzato principalmente per l’alta definizione, quando il bit rate
del flusso video non risulta un problema.
La combinazione che viene convenzionalmente adottata dal DVB-T è costituita da Main
Level e Main Profile (ML@MP), raggiungendo circa 15 Mbit/s.
Per la compressione del video, l’MPEG-2 utilizza una tecnica lossy basata sulla
rimozione della ridondanza spaziale e temporale, tramite una codifica detta Intra-frame
e Inter-frame. La prima tecnica è simile a quella che viene utilizzata per il formato
JPEG. Ogni frame del video è considerato come una singola immagine, che viene divisa
in blocchi di 8x8 pixel a cui viene applicata la DCT (Trasformata Discreta Coseno), in
modo da ottenere una matrice composta da 64 elementi per blocco. Questa trasformata
prende in ingresso una matrice contenente i valori dei pixel e produce in uscita una
matrice contenente i coefficienti di frequenza spaziale, ordinati in modo crescente dal
primo in alto a sinistra fino all’ultimo in basso a destra. In pratica questa tecnica
analizza, partendo da un punto e spostandosi verso altri punti adiacenti, la variazione del
valore dei pixel. Quando questo valore cambia lentamente si ha una frequenza spaziale
bassa, che descrive l’immagine nelle sue linee principali, mentre quando cambia
rapidamente si è di fronte ad una frequenza spaziale alta, che rappresenta i dettagli. Il
6
Capitolo 1: Lo standard DVB
motivo di questa trasformazione risiede nel passo successivo, quando alla matrice
ottenuta si applica una matrice di quantizzazione che elimina le componenti ad alta
frequenza dell’immagine. In questo passaggio avviene una irreversibile perdita di
informazione ma la qualità rimane pressoché inalterata all’occhio umano, perché non è
in grado di percepire le alte frequenze. In seguito il processo continua operando a zigzag, in modo da mettere in fila più valori uguali a 0 possibile. Lungo questo percorso
viene prima applicata una codifica RLE (Run Length Encoding) e poi un codice di
Huffman. La tecnica Inter-frame si basa invece sul fatto che ogni frame trasmesso
risulta essere molto simile al frame precedente e a quello successivo. Si può pensare
perciò di trasmettere minori informazioni ricavando ogni frame dal precedente.
Vengono definiti quindi, tre tipi di frame: I-frame è quello originale, codificato con la
tecnica illustrata precedentemente, P-frame
è un’immagine contenente soltanto le
differenze con l’I-frame precedente e B-frame è invece bidirezionale, può cioè essere
confrontato sia con il frame precedente che con quello successivo. Per rispettare le
specifiche di non propagazione degli errori e di scorrimento del filmato, è impensabile
costruire un flusso video contenente un solo I-frame. Le immagini vengono invece
organizzate in GOP (Group Of Pictures) contenenti ognuno un solo I-frame e un
numero variabile di P e B frame. Il pattern tipico è quello descritto in Figura 1.4.
Figura 1.4: Schema standard del GOP di tipo MPEG-2
Per quanto riguarda la codifica del segnale audio, lo standard MPEG Layer II (MP2)
utilizza le conoscenze derivate dalla psicoacustica, cercando di sfruttare al meglio i
limiti dell’orecchio umano, in modo da ottenere una buona compressione senza
7
Capitolo 1: Lo standard DVB
degradare la qualità. Il range di udibilità del nostro orecchio è compreso tra 20 e 20000
Hz. La soglia di udibilità invece, è molto variabile a seconda della frequenza ed è
massima tra 2 e 4 kHz; si può quindi pensare di codificare con meno bit le frequenze
dove l’orecchio è meno sensibile. Un’altra analisi che viene effettuata è quella del
mascheramento, che può essere di due tipi. Il mascheramento in frequenza consiste nel
fatto che un suono con intensità elevata nasconde all’udito tutti gli altri suoni con
intensità minore che si trovano nello stesso range di frequenza. Il mascheramento
temporale invece si basa sul fatto che quando un tono di intensità elevata cessa,
l’orecchio impiega alcuni millisecondi di tempo prima di sentire i toni successivi,
periodo variabile a seconda della differenza di intensità dei suoni. Fatta questa
premessa, è possibile illustrare il metodo di codifica vero e proprio. In pratica l’MP2
divide il segnale originale in 32 sottobande di frequenza differenti e le analizza; se la
differenza tra bande contigue è superiore ad una certa quantità, la banda con intensità
più bassa non viene codificata. Non viene utilizzato invece il mascheramento temporale
che sarà poi adottato da tecniche di codifica più avanzate come l’MP3.
1.4.2 Il flusso di trasporto
Il risultato della codifica audio e video da origine a due flussi separati di dati binari, che
vengono chiamati Elementary Streams (ES). Oltre a questi si possono aggiungere anche
ES contenenti dati di controllo o dati aggiuntivi come sottotitoli, guide ai programmi
ecc. Va detto però che ogni stream contiene soltanto un tipo di dati e non include
nessuna informazione riguardo la temporizzazione e il sincronismo. Questi flussi
vengono poi trattati e codificati singolarmente. Il primo passo è quello di suddividere
questa struttura continua di dati in pacchetti di dimensione variabile formando il
Packetized Elementary Stream (PES). Ognuno di questi pacchetti è formato da un
campo intestazione ed un campo dati. Il primo contiene varie informazioni come lo
stream_id, diverso per ogni ES, il PTS (Presentation Time Stamp) e il DTS (Decoding
Time Stamp) per la ricostruzione temporale dei flussi. Inoltre, possono essere presenti
anche altre informazioni aggiuntive non obbligatorie. Il campo dati contiene invece i
vari segmenti dell’ES.
A questo punto del processo i vari PES confluiscono in un multiplex dove vengono
ricampionati e rimpacchettati all’interno di un unico stream finale di uscita. Per questa
operazione lo standard MPEG definisce due tipi di tecniche per lo stream:
8
Capitolo 1: Lo standard DVB
•
Program Stream (PS): simile al flusso dell’MPEG-1, con cui mantiene la
compatibilità, esso può contenere un solo programma TV multiplexando uno o
più ES che devono però avere la stessa base temporale. Il PS è stato studiato
solo per applicazioni con basso tasso di errore dato che è formato da pacchetti di
lunghezza elevata e variabile. Viene utilizzato nello standard DVD.
•
Transport Stream (TS): composto da vari Elementary Streams, anche di più
programmi TV, per i quali non è necessaria una base temporale comune. In
questo caso i PES vengono suddivisi in pacchetti di dimensione fissa, pari a 188
byte, che vengono chiamati Transport Packets. Questo tipo di stream è quello
utilizzato per il broadcasting televisivo.
Ciò che si vuole ottenere, alla fine di tutto il procedimento, è un flusso di dati multi programma, cioè composto da più canali televisivi e da dati di vario tipo, che dovrà poi
essere trasmesso in una specifica banda di frequenza. Per fare questo, si utilizza come
prima cosa un encoder MPEG per ogni canale, in modo da creare vari stream diversi
chiamati Single Program Transport Stream o SPTS. Questi vengono poi aggregati da
dispositivi chiamati multiplexer e vanno a formare il Multiple Program Transport
Stream (MPTS), un flusso unico di dati che contiene però separati tutti i flussi
elementari di ogni programma più le informazioni per identificarli e ricostruirli
correttamente.
Alla base di tutto il meccanismo c’è il Transport Packet. Come già detto esso è
costituito da 188 byte di cui 4 vanno a formare l’header e il resto il payload, cioè i dati
veri e propri. A volte è presente anche un ulteriore campo detto Adaption Field che
serve soltanto a mantenere fissa la dimensione dei pacchetti. L’intestazione è formata da
8 campi diversi che vengono utilizzati dal decodificatore per garantire il sincronismo, la
gestione degli errori e il riconoscimento dei vari flussi diversi. Questi sono:
•
Sync byte: permette di sincronizzare la trasmissione definendo l’inizio di un TP;
è costituito da 8 byte fissi con il valore 0x47.
•
Transport error ind: indica se il pacchetto è danneggiato.
•
Payload Unit Start ind: settato a 1 quando il pacchetto contiene l’inizio di un
PES.
•
Transport Priority: serve a dare priorità ad alcuni pacchetti.
9
Capitolo 1: Lo standard DVB
•
Transport Scrambling Control: indica il tipo di cifratura del pacchetto, 00 se non
è presente.
•
Adaption Field Control: indica la presenza del campo opzionale Adaption Field.
•
Continuity Counter: contatore che viene incrementato per ogni Transport Packet
dello stesso Elementary Stream; è utile per rilevare la perdita di pacchetti.
•
PID (Packet Identifier): identificativo unico dei pacchetti; con questo campo si
crea una mappatura utile per identificare i vari servizi: tutti i Tranport Packets
che contengono il medesimo PID trasportano lo stesso flusso di dati elementare,
come per esempio il video o l’audio di un certo programma televisivo oppure
dati di servizio.
Per quanto riguarda la trasmissione di flussi di dati, il multiplexer non fa differenza, li
incapsula all’interno dei pacchetti e gli assegna un PID allo stesso modo di qualunque
altro stream audio o video. Sarà poi compito del decoder, riconoscere i vari tipi di
pacchetti e ricostruire i dati in maniera opportuna.
1.4.3 Le informazioni di servizio
Per aiutare il ricevitore ad identificare e ricostruire gli stream elementari, il Transport
Stream, descritto nel paragrafo precedente, viene ampliato con una serie di informazioni
di servizio che ne descrive la struttura. Tali informazioni, suddivise in un set di tabelle,
vengono specificate dallo standard DVB-SI (Service Information) con la pubblicazione
da parte dell’ETSI del documento “EN 300 468 v1.7.1”, la cui ultima versione risale al
2006. Alcune di queste informazioni però vengono solo citate dal DVB-SI, perché
fanno già parte dell’MPEG-2, contenute nella Program Specific Information (PSI).
Questa struttura gerarchica è costituita da 4 tabelle che vengono suddivise in sezioni e
pacchettizzate nel Transport Stream. Esse sono:
•
Program Association Table (PAT): al livello più alto della gerarchia, elenca il
numero di programmi TV e servizi presenti nel TS multiplexato. Per ognuno di
questi fornisce il riferimento (tramite indicazione del PID) con cui recuperare la
tabella dettagliata di ogni singolo canale, la PMT. Inoltre, il programma numero
0 indica sempre il PID della tabella NIT, la quale verrà spiegata in seguito. La
PAT è la prima informazione letta dal ricevitore ed ha PID fisso pari a 0.
•
Program Map Table (PMT): trasmessa su un PID arbitrario, solitamente il
numero 16, rintracciabile dalla PAT. Questa tabella contiene la lista degli stream
10
Capitolo 1: Lo standard DVB
elementari che compongono un singolo canale o servizio come ad esempio
audio, video, sottotitoli e la PCR (Program Clock Reference), utilizzata per la
sincronizzazione.
•
Network Information Table (NIT): contiene informazioni sulla rete che sta
trasmettendo il TS come nome del network, lista dei transponder, parametri di
modulazione ecc. La sintassi adottata da questa tabella non è quella standard
MPEG-2 ma viene modificata dalle direttive DVB-SI.
•
Conditional Access Table (CAT): è presente in caso di stream criptati e fornisce
dettagli sul tipo di scrambling utilizzato, indicando altri PID dove sono
contenute ulteriori informazioni per la decodifica. Il formato di queste ultime è
però proprietario, per ovvi motivi.
Accanto al PSI, le specifiche DVB-SI definiscono ulteriori tabelle in cui sono inserite
informazioni aggiuntive riguardo ai canali ed ai servizi, consentendo, ad esempio, di
generare anche una guida elettronica dei programmi detta EPG. La differenza
sostanziale tra PSI e DVB-SI sta nel fatto che, mentre il primo contiene informazioni
riguardanti soltanto il multiplexer in cui esso è trasmesso, quest’ultimo invece può
comprendere dati di multiplex e perfino di network differenti. La struttura delle Service
Information è composta da 9 tabelle, più la Network Information Table che viene
rivisitata. Qui di seguito se ne elencano le più importanti e significative:
•
Bouquet Association Table (BAT): contiene informazioni sul bouquet, cioè un
insieme di servizi raggruppati seguendo uno schema logico.
•
Service Description Table (SDT): elenca le informazioni riguardanti i singoli
servizi trasmessi dal TS come ad esempio il nome del canale ed il fornitore.
•
Event Information Table (EIT): contiene la programmazione, in ordine
cronologico, degli eventi di ogni singolo canale. Viene indicato l’evento
corrente, il prossimo ed altri eventi programmati, tutti comprensivi di nome ora
di inizio durata ecc.
•
Running Status Table (RST): è responsabile del corretto timing degli eventi
programmati e contiene i flag che indicano se un evento è iniziato o no.
•
Time and Date Table (TDT): indica la data e l’ora corrente nel fuso orario di
riferimento.
11
Capitolo 1: Lo standard DVB
Tutte queste tabelle appena descritte devono essere iniettate nel Transport Stream a
cadenza ciclica, per far si che in ricezione vengano riconosciute rapidamente ed in
qualsiasi momento. Inoltre data l’importanza di queste informazioni spesso le tabelle
vengono protette da CRC (Cyclic Redundancy Check), un metodo utile per il controllo
dell’integrità di stringhe di dati. Completato dal DVB-SI, il flusso digitale MPEG-2 TS
è pronto per la trasmissione.
1.4.4 Ricerca e decodifica di un programma
La procedura con cui viene sintonizzato un canale TV è piuttosto semplice e consiste di
pochi passi. Per prima cosa il sintonizzatore deve agganciare la frequenza del Transport
Stream. Poi si estraggono da esso tutti i pacchetti con PID uguale a zero, in modo da
ricostruire la PAT. A questo punto, a seconda di che canale si vuole sintonizzare, si va a
cercare il record della PAT contenente il riferimento PID necessario per riuscire ad
estrarre la relativa PMT. Quest’ultima, come già spiegato precedentemente, presenta
una lista di PID su cui vengono trasmessi il flusso ES audio e video. Questi PID
vengono poi filtrati in parallelo ed inizia il processo di decodifica sincronizzata. Per
completare le informazioni sui flussi, vengono anche lette tutte le altre tabelle, come la
SDT e la EIT.
1.4.5 Accesso Condizionato e Cifratura
L’Accesso Condizionato, in inglese Conditional Access (CA), è un sistema di
protezione dei contenuti che viene specificato dal DVB tramite tre documenti, DVBCA, DVB-CSA e DVB-CI, che definiscono rispettivamente l’accesso condizionato,
l’algoritmo di cifratura e l’interfaccia comune. Secondo questo sistema, l’utente, per
poter accedere al segnale televisivo che viene trasmesso in forma criptata, deve
rispondere a dei criteri prefissati. Questi ultimi sono definiti nella tabella di servizio
CAT, dove viene indicata l’associazione tra programmi ed i requisiti necessari alla loro
visione. Un sistema ad accesso condizionato si basa su una combinazione di scrambling
e crittografia; il primo si occupa del rimescolamento dei dati per renderli intellegibili
mentre il secondo gestisce lo scambio delle chiavi segrete che consentono di decriptare i
dati.
Lo standard DVB permette due tecniche distinte per la cifratura: simulcrypt e multicript.
Il primo consiste nel trasmettere i programmi criptati con differenti sistemi d’accesso
12
Capitolo 1: Lo standard DVB
condizionato. In questo modo, tramite un accordo tra i fornitori, l’utente può accedere a
più servizi differenti utilizzando la stessa smart card. La seconda tecnica invece lascia
l’onere della decifratura del segnale a moduli esterni, detti Conditional Acces Module
(CAM). In questo modo però, è necessario uno slot ad interfaccia comune per ogni
sistema ad accesso condizionato che si vuole decodificare.
1.4.6 Le specifiche di livello fisico
Il DVB ha definito uno specifico standard per ognuno dei canali fisici di trasmissione,
adattandolo ogni volta alle specifiche caratteristiche del mezzo in cui il flusso digitale
viene irradiato. Per quanto riguarda il DVB-T, esso consente di trasmettere il TS con
tecnica digitale utilizzando lo stesso spettro di frequenze utilizzate dalla TV analogica
(VHF e UHF), suddiviso in canali da 6, 7 o 8 MHz. In questo modo è possibile
impiegare, per la ricezione, le normali antenne della TV analogica. A differenza del
segnale satellitare, quello terrestre viene ricevuto anche in assenza di cammino ottico tra
la stazione e il ricevitore, sfruttando la propagazione multi - cammino dovuta a
riflessioni e rifrazioni. Purtroppo, anche se da un lato questa ultima caratteristica è
vantaggiosa per l’efficienza di propagazione, dall’altro può portare ad un degrado
elevato del segnale ricevuto. Lo stesso segnale, infatti, percorrendo cammini differenti,
può giungere a destinazione in istanti successivi generando disturbo, che in questo caso
viene detto interferenza di simbolo.
Per questi motivi, dopo accurate valutazioni tecniche, è stato scelto per la modulazione,
lo schema CODFM (Coded Orthogonal Frequency Division Multiplexing), una tecnica
molto complessa ma che consente un uso efficiente della banda di trasmissione con una
elevata protezione agli errori. Con questa tecnica il flusso di trasporto, anziché essere
direttamente modulato con una singola portante, viene suddiviso in moltissime portanti
ortogonali equispaziate in frequenza. Ognuna di queste trasmette quindi un flusso con
bit rate pari ad un n-esimo del totale (se n è il numero di portanti), generando un segnale
a bassa velocità di trasmissione che consente un margine maggiore contro l’interferenza
di simbolo: gli echi del segnale appena ricevuto hanno più tempo per attenuarsi, prima
che interferiscano con il campione successivo. Il processo viene effettuato tramite una
IFFT (Inverse Fast Fourier Transform, trasformata veloce inversa di Fourier), che
consente due modalità operative: 2k caratterizzata da 1705 portanti, in caso di canale da
8 MHz, e 8k con ben 6817 portanti. Ciascuna singola portante viene poi modulata
13
Capitolo 1: Lo standard DVB
utilizzando uno dei tre schemi diversi definiti dallo standard: QPSK, 16QAM o
64QAM. Nella modulazione di tipo digitale, la portante si sposta continuamente,
assumendo diverse posizioni predefinite di fase ed ampiezza chiamate simboli. Ogni
simbolo rappresenta una diversa sequenza di bit che viene trasmessa. Per descrivere la
modulazione si utilizza uno schema chiamato costellazione, nel quale vengono
rappresentate tutte le possibili configurazioni della portante tramite un diagramma
fase/ampiezza, dove la fase è data dall’angolo con l’asse delle ascisse e l’ampiezza dalla
distanza dal centro. La differenza principale, che esiste tra le tre modulazioni digitali
utilizzate, è proprio la costellazione. La QPSK (Quadrature Phase Shift Keying) è una
modulazione di fase estremamente robusta. Come si può notare in Figura 1.5, essa è
caratterizzata da quattro posizioni possibili nella costellazione e quindi possiede una
capacità di 2 bit per simbolo. Questa è la configurazione utilizzata dal DVB-S ma va
ricordato che mentre in quel caso è solo una portante ad essere modulata, nella
trasmissione terrestre sono le sottoportanti ad essere modulate in modalità QPSK. Lo
schema QAM (Quadrature amplitude modulation) utilizza invece, rispetto al
precedente, sia una modulazione di fase che di ampiezza, raggiungendo quindi un
numero più elevato di configurazioni nella costellazione e quindi un più alto bit rate
possibile. Più precisamente, come si nota in Figura 1.6, è costituita da 16 posizioni per il
16QAM con 4 bit per simbolo e 64 posizioni nell’altro caso, con 6 bit. Questo tipo di
modulazione ha però lo svantaggio di una maggiore vulnerabilità agli errori.
Figura 1.5: Costellazione di tipo QPSK
14
Capitolo 1: Lo standard DVB
Figura 1.6: Costellazione di tipo 16-QAM
Per migliorare ulteriormente la resistenza del sistema contro gli echi multi cammino,
viene introdotto un intervallo di guardia temporale tra simboli successivi. Il
trasmettitore in questo spazio non produce segnale utile e il ricevitore, dopo aver
ricevuto un simbolo, attende un periodo di tempo pari all’intervallo di guardia e solo
dopo campiona il simbolo successivo. In questo lasso di tempo tutti gli echi da cammini
multipli che raggiungono il ricevitore vengono scartati e non generano quindi
interferenza. Nello standard DVB-T l’intervallo di guardia può assumere il valore di
1/4, 1/8, 1/16 ed 1/32 della durata del simbolo utile. Un valore alto consente una
maggiore robustezza al rumore di questo tipo ma di conseguenza non permette il
raggiungimento di un elevato bit rate mentre, al contrario, un valore basso fa
raggiungere un ottimo bit rate ma con un segnale molto vulnerabile.
Infine, un ulteriore livello di protezione è garantito da un potente schema di correzione
degli errori, che viene realizzato utilizzando una codifica di tipo FEC (Forward Error
Correction). Accanto al flusso di dati utili vengono aggiunti dei bit addizionali, che
consentono di rilevare se i dati sono stati ricevuti correttamente. In caso contrario, si
cerca di utilizzare questi bit anche per correggere gli errori. La quantità di errori che
possono essere corretti è limitata e dipende dal rapporto tra il numero di bit di controllo
e di dati. Nel DVB-T questo tasso può essere: 1/2, 2/3, 3/4, 5/6 e 7/8. Come al solito un
valore più elevato migliora la resistenza agli errori ma riduce drasticamente il bit rate
utile di trasmissione.
15
Capitolo 1: Lo standard DVB
1.4.7 Bit rate e configurazioni tipiche
Figura 1.7: Bit rate utile (in Mbit/s) per tutte le configurazioni possibili
La configurazione più robusta possibile ai disturbi, quella in cui è richiesto un rapporto
portante/rumore (C/N) di soli 3,1 dB, è quella con modulazione QPSK, un code rate 1/2
(1 bit di protezione su 2 trasmessi) ed un intervallo di guardia di 1/4. In questo caso
però, come si vede anche in Figura 1.7, il bit rate massimo consentito è di 4,98 Mbit/s
utilizzabile soltanto per la trasmissione di un solo canale televisivo. Invece, il massimo
bit rate possibile, 31,67 Mbit/s, si ottiene con una modulazione 64QAM, FEC 7/8 ed
intervallo di guardia pari ad 1/32. Il segnale è però molto vulnerabile e richiede un
rapporto C/N di circa 26 dB per la corretta ricezione. La scelta della corretta
configurazione comunque, deve essere fatta valutando attentamente tutte le variabili e
facendo un compromesso tra capacità trasmissiva e robustezza agli errori del segnale. In
Italia per esempio si utilizza la modalità 8k con sottoportanti modulate 64QAM, un
intervallo di guardia di 1/32 ed un tasso di codifica 2/3; viene quindi trasmesso con un
bit rate di circa 24 Mbit/s che consente di trasmettere da 4 a 6 canali televisivi in qualità
normale.
1.4.8 La trasmissione gerarchica
Il DVB-T consente anche una tecnica di trasmissione detta gerarchica. Lo scopo di
questa tecnica è quello di trasmettere contemporaneamente, utilizzando lo stesso
trasmettitore e lo stesso canale, due Transport Stream con programmi differenti. Il
primo TS è detto ad alta priorità ed è caratterizzato da un bit rate basso ed una
robustezza elevata, anche in condizioni di segnale disturbato. Il secondo è invece detto a
16
Capitolo 1: Lo
L standard DVB
baassa prioritàà e, al contrrario del priimo, ha un alto bit ratee ma è ricevvibile solo in
i ottime
coondizioni. Un
U esempioo è quello di trasmetttere contem
mporaneam
mente un seegnale a
deefinizione video
v
standaard ed uno in
i alta defin
nizione, in modo
m
che siia possibile ricevere
coomunque laa trasmissioone, anche con
c scarsa copertura. La trasmisssione geraarchica è
baasata sulla tecnica di
d modulazzione 16QA
AM o 64Q
QAM. Nell diagramm
ma della
coostellazionee, il flusso primario
p
deffinisce il qu
uadrante deel simbolo, ccome se si trattasse
dii una moduulazione QP
PSK, con tuutti i vantag
ggi che ne derivano,
d
m
mentre il seccondario
deefinisce la posizione
p
essatta del sim
mbolo all’in
nterno del quuadrante inddicato dal primario.
p
Peer facilitare ulteriormennte la decoddifica del seegnale ad alta priorità ssi possono utilizzare
u
deelle costellaazioni non uniformi.
u
Inn pratica i siimboli venggono distanzziati dagli assi
a della
coostellazionee in modo più
p o menoo accentuato
o a secondaa del gradoo di uniform
mità, che
viiene indicatto con la lettera α e puuò assumeree i valori 1, 2 e 4. Talle pratica va
v però a
diiscapito del flusso secoondario che necessiterà sempre di più
p di un seegnale ottim
mo.
1..4.9 Schem
ma del sisteema di trassmissione
Figura 1.8: Diagram
mma a blocchii del sistema di trasmissioone
Laa proceduraa di trasmisssione dellaa televisionee digitale teerrestre inizzia dalla codifica di
soorgente MPE
EG-2. I varri flussi, viddeo, audio e di dati, venngono codifficati separaatamente
peer poi conflluire in un multiplexerr MPEG, ch
he produce in uscita ill Transport Stream.
N caso si vogliano
Nel
v
traasmettere duue flussi con
ntemporaneeamente, il TS passa atttraverso
unn divisore (vedi Paraggrafo 1.4.8)). Nel blocco successiivo, il flusso viene sccorrelato
uttilizzando una
u tecnica di dispersioone di energ
gia. In seguuito, i bloccchi definiti in
i figura
17
Capitolo 1: Lo standard DVB
con il nome di external encoder ed external interleaver forniscono una prima protezione
agli errori grazie ad una codifica Reed-Solomon RS (204, 188, t = 8) ed a una tecnica di
interleaving di tipo convoluzionale. L’output di quest’ultimo passa al blocco
codificatore interno che fornisce un’ulteriore protezione dei dati grazie alla tecnica FEC,
già descritta in precedenza. A questo punto i flussi della trasmissione gerarchica
confluiscono nell’interleaver interno, dove subiscono un ulteriore processo di
riadattamento contro errori di tipo burst. Il flusso di bit risultanti viene poi mappato in
banda base, con una delle tre tecniche di modulazione possibile e i simboli risultanti da
questo processo vengono raggruppati in blocchi di lunghezza costante. Questi, vengono
ulteriormente raccolti in gruppi da 64 andando a formare un frame. A questi vengono
anche aggiunti dei segnali pilota e informazioni aggiuntive per semplificare la ricezione,
poi si esegue la modulazione con la tecnica COFDM. Soltanto dopo questo passaggio, si
inserisce l’intervallo di guardia. Infine il segnale viene trasformato in analogico e
modulato a frequenze radio VHF o UHF.
1.5 Il DVB-T in Italia
Attualmente l’Italia sta affrontando la fase di transizione dalla televisione analogica
tradizionale a quella digitale terrestre, dello standard DVB-T, per adeguarsi alle norme
comunitarie che impongono, per tutti i paesi membri, questo tipo di passaggio. Questa
fase è iniziata in via sperimentale a Torino, nel 2001 ma il lancio ufficiale avviene nel
2003, con la legge Gasparri del riordino del Sistema Televisivo Italiano. In quella data
era stato anche deciso che il termine ultimo per la conversione da analogico a digitale, il
cosiddetto switch-off, doveva essere il 31 Dicembre 2006. Questa scadenza si è rivelata
però poco realistica ed è quindi stata posticipata, prima al 2008 e poi al 2012. Soltanto
per la Sardegna e la Valle d’Aosta il termine è rimasto quello del 2008, a Marzo per la
prima regione e ad Ottobre per la seconda. Tuttavia, anche se queste date sono ormai
relativamente vicine, la diffusione del digitale terrestre in Italia non è ancora sufficiente
per sopportare lo switch-off. Molte zone, infatti, soprattutto quelle alpine e
appenniniche, non sono ancora coperte dal segnale DVB-T. Inoltre, nelle zone coperte,
non tutti hanno provveduto all’acquisto del set-top box o dispositivi analoghi, quindi
anche essi non sono in grado di sfruttare questa nuova tecnologia. La mancata
diffusione deriva probabilmente proprio dalla riluttanza delle persone ad acquistare un
18
Capitolo 1: Lo standard DVB
nuovo dispositivo che, all’atto pratico, non fornisce la sensazione di un valore aggiunto.
Per agevolare l’acquisto dei STB (Set-Top Box) nel 2004 erano stati anche stanziati
degli incentivi ma recentemente questi sono stati sanzionati perché non rispettavano le
leggi sulla concorrenza.
Figura 1.9: Area di copertura della rete Dfree
Ciò che probabilmente invece riuscirà a diffondere la TV digitale, oltre alla data di
switch-off, sono tutti quei servizi aggiuntivi che stanno recentemente prendendo parte al
panorama televisivo nazionale. Questi servizi sono ad esempio la pay-per-view per le
partite di calcio e le applicazioni interattive dello standard MHP che permettono
all’utente di interagire tramite il canale di ritorno.
1.6 MHP: lo standard per la TV interattiva
Il DVB-MHP (Digital Video Broadcasting - Multimedia Home Platform), detto anche
più brevemente MHP, è una piattaforma software completa che permette di poter
19
Capitolo 1: Lo standard DVB
usufruire di servizi ed applicazioni per la TV interattiva. In termini tecnici l’MHP è uno
strato software, situato al di sopra del sistema operativo, che fornisce un’interfaccia tra
l’applicazione da eseguire e l’hardware della macchina su cui è situato. Un software di
questo tipo viene più propriamente detto Middleware. Questo standard è abbastanza
recente, creato dal DVB Project e ratificato dall’ETSI nel Maggio del 2000 con il
documento intitolato “ES 201 812”. Lo scopo del progetto è stato fin dal principio
quello di creare uno standard aperto con cui poter accedere a tutte le applicazioni scritte
da qualsiasi produttore di software e fornite da qualsiasi broadcaster al mondo senza
problemi di compatibilità. Nei primi anni di diffusione della TV digitale, infatti, alcune
aziende avevano sviluppato alcuni applicativi per la TV interattiva ma questi si
basavano su una tecnologia proprietaria. Quindi, per poterne usufruire, era necessario
possedere un dispositivo hardware sviluppato con quella stessa tecnologia, che spesso
veniva fornito dallo stesso broadcaster che offriva i servizi. Con gli anni, soprattutto
nell’ambito della TV satellitare, erano state prodotte varie piattaforme proprietarie,
quasi tutte incompatibili tra loro; era quindi giunto il momento di sviluppare un’unica
architettura completa che funzionasse con tutti gli standard televisivi digitali e con tutti i
dispositivi di ricezione.
1.6.1 Architettura
L’architettura di base dell’MHP è costituita da tre livelli:
•
Resources: rappresenta le risorse hardware e software del ricevitore (Set-top
box). Queste vengono fornite, dall’MHP, in maniera trasparente alle
applicazioni.
•
System software: il software di sistema fornisce alle applicazioni una visione
astratta delle risorse. In questa maniera, separando l’applicazione dall’hardware,
si garantisce la portabilità dell’applicazione stessa. Questo livello comprende un
Application manager, chiamato anche navigatore, che è responsabile della
gestione di tutte le applicazioni. Di questo strato fa parte anche la JVM 1.1
(Java Virtual Machine) nella versione Personal Java che serve per eseguire le
applicazioni e rappresenta quindi il nucleo dell’MHP. Infine fanno parte del
System software, le API definite dallo standard ed il protocollo di trasporto.
•
Applications: le applicazioni sono tutti quei software che implementano i servizi
interattivi come ad esempio la guida ai programmi EPG, giochi ed altri servizi.
20
Capitolo 1: Lo standard DVB
1.6.2 I profili
Per semplificare l’implementazione dello standard MHP è stato introdotto il concetto di
profilo. Ognuno di questi è riferito ad una certa area di applicazioni e ad uno specifico
tipo di hardware necessario a farle funzionare. Attualmente i profili specificati finora
sono tre, raccolti in due diverse versioni dello standard, la prima chiamata MHP 1.0 e la
seconda MHP 1.1:
•
Enhanced Broadcast Profile: definito nell’MHP 1.0, è il profilo di base che
permette soltanto l’interazione con informazioni ed immagini, senza il canale di
ritorno. Esso è stato creato per mantenere la compatibilità con i sistemi esistenti
e non richiede particolari prestazioni hardware.
•
Interactive TV Profile: definito sempre nell’MHP 1.0, è il profilo intermedio che
consente l’esecuzione di servizi con interattività superiore rispetto al precedente.
In questo caso, infatti, è previsto l’utilizzo del canale di ritorno (rete PSTN,
ISDN, ADL ecc.), che può essere utilizzato anche per caricare le applicazioni.
Nel precedente invece si potevano utilizzare soltanto applicazioni provenienti
dal canale di broadcast. Questo profilo necessita di caratteristiche prestazionali
superiori.
•
Internet Access Profile: definito questa volta nell’MHP 1.1, è il profilo più
elevato e contiene i due definiti precedentemente. Esso contiene un componente
aggiuntivo, chiamato DVB-HTML, che consente un’interattività totale
permettendo l’accesso ai contenuti internet. Questo profilo necessità però di un
hardware che consenta prestazioni di alto livello, in grado di poter eseguire un
browser web.
1.6.3 Il protocollo di trasporto
Una rete broadcast è per sua natura monodirezionale. Questo significa che il server, in
questo caso interpretato dal trasmettitore, decide i dati da inviare ed il client,
rappresentato dal ricevitore, non può ne rispondere ne effettuare richieste. In questa
situazione un client di una rete broadcast non potrà mai accedere ad uno specifico file
del server, come invece avviene in una rete tra computer. Per ovviare a questo problema
si utilizza una tecnica simile a quella adottata per la trasmissione del teletext. In pratica
il server trasmette ciclicamente tutti i file del suo file system ed il ricevitore deve
21
Capitolo 1: Lo standard DVB
attendere i file a cui è interessato. Questo tipo di soluzione viene comunemente
chiamato carosello.
Il protocollo utilizzato per inviare il carosello è il DSM-CC (Digital Storage Media Command and Control), uno standard per la trasmissione di dati basato sullo stream
MPEG. Questo protocollo era nato per il collegamento tra VTR (Video Tape Recorder),
ma si è successivamente sviluppato fino a supportare il controllo in rete dei server video
e la trasmissione dei dati. Il DSM-CC supporta due tipi di carosello: data carousel e
object carousel. Il data carousel è il più semplice tra i due, ma è anche quello che offre
minori servizi. I dati vengono divisi in moduli e poi trasmessi a rotazione senza nessuna
informazione aggiuntiva sul contenuto di quello che viene inviato. Per applicazioni più
complesse, come quelle MHP, questo non è sufficiente perciò viene adottato l’object
carousel. Questo protocollo si pone al di sopra del data carousel, fornendo funzionalità
analoghe a quelle di un file system tradizionale. In pratica il carosello è costituito da un
albero di directory suddiviso in vari moduli, dove ognuno di questi può contenere più
file o directory. La dimensione totale di ogni modulo non può superare i 64 kb ed inoltre
non è permesso suddividere un file in più moduli diversi. Questo implica che un file da
trasmettere non può essere più grande di quella dimensione. Tutti questi moduli,
disposti uno dopo l’altro, vanno poi a formare il carosello. Il ricevitore, per poter
accedere ad un singolo file deve attendere la trasmissione di tutto il flusso di dati fino al
modulo contenente il file desiderato.
Questo metodo di trasmissione, con l’aumentare della mole di dati da trasmettere,
diventa alquanto svantaggioso poiché il tempo di attesa può essere elevato ed inoltre
non è prevedibile. La ricezione, infatti, può essere quasi immediata se al momento della
richiesta viene trasmesso il modulo precedente a quello necessario, ma molto lunga se,
al contrario, il modulo ricercato è stato appena trasmesso. Per velocizzare le operazioni
di scaricamento, spesso i ricevitori memorizzano nella cache parte dei dati necessari.
Inoltre, a volte, i moduli più importanti vengono ripetuti più volte all’interno del singolo
carosello, cosicché il loro accesso sia più veloce.
22
Capitolo 2: LinuxTV
Figura 2.1: Logo del LinuxTV project
2.1 Introduzione
Il progetto LinuxTV è costituito da un gruppo informale di volontari che sviluppano
software per la televisione digitale compatibile con il sistema operativo Linux. Questa
comunità, reperibile al sito internet http://www.linuxtv.org, sviluppa e mantiene tutto il
sottosistema dei driver del DVB che è contenuto attualmente nella versione 2.6.x del
kernel di Linux. I dispositivi supportati da LinuxTV, non sono però solo quelli per la
televisione digitale terrestre, ma sono compresi anche i sistemi per il satellitare, per la tv
via cavo e perfino i moduli per l’accesso condizionato, in modo da poter usufruire anche
dei contenuti protetti. I driver disponibili, al momento, sono compatibili con un notevole
numero di periferiche DVB per PC, del tipo PCI, PCI Express, PCMCA ed USB. Essi
sono però in costante sviluppo, in modo da migliorare sempre di più l’efficienza e il
supporto per le schede TV di nuova fattura che vengono messe sul mercato dai maggiori
produttori di elettronica di tipo consumer. Dato che praticamente, quasi la totalità delle
imprese operanti sul mercato, fornisce, incluso nel pacchetto di acquisto dell’hardware,
soltanto software compatibile con sistemi operativi proprietari, è soltanto grazie a
questa comunità che è possibile l’utilizzo della Tv digitale in sistemi open source come
Linux.
2.2 Storia del progetto
Il progetto LinuxTV è nato a Berlino, nel 1998, fondato dall’azienda tedesca
Convergence Integrated Media GmbH. Inizialmente esso aveva lo scopo di distribuire
software open source gratuito per la produzione, la fornitura e la ricezione della
televisione digitale. Secondo i membri dell’azienda, infatti, soltanto l’accesso al codice
sorgente della televisione futura poteva garantire l’indipendenza dei contenuti e della
23
Capitolo 2: LinuxTV
tecnologia. Nel 2002, dopo alcuni problemi finanziari la società venne acquisita dalla
Galaxis AG, un’azienda tedesca produttrice di set-top box, e cambiò nome in Galaxis
GmbH. Infine, nel 2005, sia la Convergence che la Galaxis AG dichiararono bancarotta
ed abbandonarono il progetto. Da questo momento in poi il LinuxTV project vive
indipendentemente, supportato solamente da una vasta comunità di sviluppatori che si
era riunita nel corso degli anni attorno al progetto.
2.3 Le Linux DVB API
Il codice dei driver sviluppati da LinuxTV si appoggia a delle API, acronimo di
Application Program Interface. Una API è un insieme di routine, disponibili al
programmatore, in modo che esso non debba ogni volta scrivere codice dal nulla, ma si
possa appoggiare a procedure ben definite. Di per se una API è una astrazione che
permette di creare una interfaccia tra hardware e codice sorgente o tra software di alto e
basso livello. In questo caso le API a cui si appoggia il sorgente di questi driver sono
chiamate Linux DVB API ed attualmente sono disponibili nella versione 3. È però in
sviluppo una quarta versione anche se, al momento, il progetto è quasi completo, ma
non è più attivo. Le Linux DVB API, insieme ai driver e ad altre applicazioni utili, sono
sempre mantenute e supportate dal LinuxTV project.
La prima API scritta per una scheda DVB fu utilizzata dalla Convergence, alla fine del
1999, per pilotare una scheda PCI. A quel tempo quella era soltanto una estensione del
codice Video4Linux, delle API utilizzate per il supporto delle schede di acquisizione
video e dispositivi analoghi. Esse quindi non erano molto adatte all’utilizzo con le
schede DVB poiché non veniva supportato ad esempio, il filtraggio contemporaneo dei
vari flussi, MPEG e dati. Successivamente, nel 2000, la Nokia si interessò al progetto di
queste API, con il fine di sviluppare dei terminali basati su questo standard aperto.
Nello stesso anno venne sviluppata da C. Theiss e dai fratelli Metzler, per conto della
Convergence, la prima versione del codice. Questa fu resa subito disponibile, pubblicata
attraverso il sito attuale del progetto, a tutti gli sviluppatori di Linux. La prima
implementazione delle Linux DVB API fu invece realizzata attraverso la creazione dei
driver per la scheda DVB PCI Siemens/Hauppauge. Dopo un lavoro di sviluppo di un
anno si arrivò finalmente alla terza versione che fu inclusa per la prima volta nel kernel
ufficiale di Linux, a partire dal numero 2.5.44 del 2002. Nel frattempo vennero anche
24
Capitolo 2: LinuxTV
aggiunti, ai repository di LinuxTV, molti nuovi driver, creati da sviluppatori di codice
di tutto il mondo, in modo da supportare un numero sempre più elevato di schede DVB.
2.3.1 La struttura delle API
Le Linux DVB API sono strutturate attraverso un certo numero di parti diverse,
seguendo lo schema generale dei componenti di una scheda DVB (di questo se ne
discuterà successivamente, al Paragrafo 3.3). Ogni sezione contiene le procedure
riguardanti ognuno dei tipi di dispositivi che è possibile incontrare in una scheda, come
ad esempio il frontend, il decodificatore ecc. Per ogni dispositivo inoltre vengono
elencati i tipi di dati e le procedure dettagliate, complete di parametri, delle chiamate di
funzioni. La struttura generale delle API è quella indicata in Figura 2.2.
Figura 2.2: Struttura delle Linux DVB API
2.3.2 Il riconoscimento dei dispositivi DVB
Nel sistema operativo Linux, ogni dispositivo hardware di Input/Output collegato viene
visto come un file. Così facendo si può trattare ogni operazione di input/output come
una richiesta di lettura o scrittura da file. Questi file speciali sono generalmente
contenuti nel file system all’interno della directory /dev.
Nelle prime API, quelle sviluppate dalla Nokia, i dispositivi DVB venivano collocati
nella directory /dev/ost/, dove OST sta per Open Standards Terminal, e non venivano
numerati. Ci si accorse però che in quel caso si garantiva il supporto per soltanto una
scheda. Inoltre, con l’avanzare della tecnologia, i nuovi dispositivi hardware erano in
grado di contenere, in un solo chip, più componenti, quindi era necessario che ognuno
di essi fosse riconosciuto singolarmente. Per esaudire queste richieste si cambiò tecnica
25
Capitolo 2: LinuxTV
ed ora i dispositivi sono accessibili attraverso un insieme strutturato di directory simile
alla seguente:
•
/dev/dvb/adapterX/frontendY
•
/dev/dvb/adapterX/demuxY
•
/dev/dvb/adapterX/videoY
•
/dev/dvb/adapterX/audioY
•
/dev/dvb/adapterX/caY
•
ecc.
In questa struttura, le lettere X e Y rappresentano rispettivamente la numerazione,
partendo sempre da zero, delle schede installate nel sistema e dei dispositivi per ogni
tipo della stessa scheda. Attualmente in commercio è disponibile una enorme varietà di
schede per il DVB, ognuna con caratteristiche e con chip hardware diversi. Questo per
dire che nel file system di Linux appariranno, per ogni adapter, soltanto i file
corrispondenti ad un dispositivo presente nella scheda e verranno omessi tutti gli altri.
Ad esempio, se non è presente il modulo per l’accesso condizionato, non esisterà il file
caY, oppure, se la scheda non ha il decodificatore MPEG, non appariranno i file videoY
e audioY.
2.3.3 Frontend API
Vengono supportati attualmente tre tipi di frontend: DVB-S, DVB-C e DVB-T. Tra i
tipi di dati e le strutture che vengono definite sono presenti numerose informazioni che
caratterizzano il dispositivo, alcune di esse sono comuni altre variano da dispositivo in
dispositivo e non sono supportate da tutti. Le più significative sono:
•
il tipo di frontend, che viene indicato, per ragioni storiche, attraverso il tipo di
modulazione, cioè FE_QPSK per il satellite, FE_QAM per il cavo e FE_ODFM
per il terrestre;
•
le potenzialità del dispositivo, che descrive quello che il sistema supporta, come
ad esempio il tipo di modulazione. In questo caso le capacità differiscono molto
a seconda del metodo di trasmissione adottato;
•
le informazioni del SEC, sono presenti soltanto nelle schede satellitari, vengono
utilizzate per gestire il dispositivo situato nella parabola chiamato LNB;
26
Capitolo 2: LinuxTV
•
lo stato del frontend, utile per gestire al meglio la scheda. Questo dato è quello
che viene letto da tutte le utility di gestione del DVB. I valori che possono essere
assunti, ed i relativi codici in esadecimale sono: FE_HAS_SIGNAL (0x01), se
viene trovato un segnale che supera la soglia del rumore, FE_HAS_CARRIER
(0x02),
se
viene
riconosciuto
un
segnale
dello
standard
DVB,
FE_HAS_VITERBI (0x04) se il FEC è stabile, FE_HAS_SYNC (0x08) se
vengono trovati i byte di sincronizzazione, FE_HAS_LOCK (0x10), se tutto
funziona correttamente e il segnale è sintonizzato, FE_TIMEOUT (0x20), se il
dispositivo non assume lo stato di lock in un numero di secondi prefissato, e
FE_REINIT (0x40), se il frontend viene re inizializzato;
•
i parametri di modulazione, diversi a seconda del tipo di hardware. Per la tecnica
CODFM i valori dei parametri sono divisi per tecnica di trasmissione, larghezza
di banda, tipo di costellazione tasso di codifica FEC (sia in alta che in bassa
priorità), intervallo di guardia e tipo di gerarchia (vedi Paragrafo 1.4.6).
Le chiamate di funzioni sono per la maggior parte delle richieste di informazioni sullo
stato del frontend, più le procedure per la sintonizzazione. Le funzioni indicate in
carattere minuscolo sono delle chiamate di sistema standard di Linux. Invece, le
funzioni indicate tutto in maiuscolo rappresentano il parametro che viene assegnato
utilizzando la funzione di Linux ioctl. Dato che nel sistema operativo Linux tutti i
dispositivi vengono individuati tramite un file specifico, non è sempre possibile riuscire
a gestirli tramite le funzioni usate per i file normali; per questo motivo è stata prevista
dal sistema l’esistenza di una funzione apposita, la ioctl, con cui poter eseguire le
operazioni specifiche di ogni particolare dispositivo. Tale funzione prende come
parametro il file descriptor, ottenuto di solito all’atto dell’apertura del dispositivo, e il
parametro request, cioè i vari parametri che vengono in seguito definiti con il carattere
maiuscolo. Le chiamate principali sono:
•
open(): con questa system call si apre il dispositivo, indicandone il nome
attraverso il percorso (es. /dev/dvb/adapter0/frontend0). Un frontend può essere
attivato in due modalità diverse: in sola lettura, che permette solo attività di
monitoraggio e statistiche, oppure in lettura/scrittura, che consente ogni tipo di
operazione. In sistemi con più di un frontend installato, generalmente, non è
possibile aprire contemporaneamente due dispositivi in scrittura. Questa
27
Capitolo 2: LinuxTV
chiamata ritorna il valore del file descriptor, parametro che verrà in seguito
utilizzato per gestire tutte le altre chiamate;
•
close(): con questa chiamata si chiude un dispositivo precedentemente aperto.
All’atto della chiusura è previsto anche lo spegnimento automatico
dell’hardware;
•
FE_READ_STATUS: con questa si ottengono le informazioni sullo stato del
dispositivo. I dati che si ricevono in seguito a questa chiamata sono quelli
descritti precedentemente;
•
FE_READ_BER,
FE_READ_SNR,
FE_READ_SIGNAL_STRENGTH
e
FE_READ_UNCORRECTED_BLOCKS: queste chiamate ritornano varie
informazioni riguardo al segnale appena ricevuto, come il tasso di errore, il
rapporto segnale/rumore, la forza del segnale e il numero di blocchi non corretti.
Queste funzioni, come anche la precedente, possono essere eseguite in modalità
di sola lettura;
•
FE_SET_FRONTEND: con questa chiamata si iniziano le operazioni di
sintonizzazione del frontend. Per farlo, si inviano con la chiamata tutti i
parametri di modulazione definiti precedentemente. Se questi ultimi sono validi,
la funzione avrà successo ed inizierà la procedura di tuning. Questa operazione
può essere effettuata solo in modalità scrittura ed è asincrona, cioè se viene
iniziata una nuova operazione di sintonizzazione, la precedente viene abortita.
Questa sezione delle Linux DVB API è quella fondamentale per il corretto
funzionamento della scheda. Il frontend, infatti, è l’unico componente che non può mai
mancare in una scheda TV digitale. Tutti gli altri dispositivi invece possono anche
essere emulati via software dalla CPU.
2.3.4 Dispositivi di demux
Il dispositivo di demultiplex è quello che controlla il filtraggio, dal Transport Stream,
dei vari flussi elementari. A questo componente può anche essere associato un
dispositivo logico, chiamato dvrY, e contrassegnato con lo stesso numero del file
demuxY. Il dvr viene utilizzato per la ricezione del flusso di trasporto che verrà poi
registrato digitalmente.
Tra i vari tipi di dati che vengono dichiarati, riguardo questa parte delle API, viene
definito l’output del dispositivo e il tipo di PES (Packetized Elementary Stream, v.
28
Capitolo 2: LinuxTV
Paragrafo 1.4.2). Il primo consente di ridirigere l’output verso tre differenti direzioni,
verso il decoder MPEG (DMX_OUT_DECODER), verso il dispositivo logico DVR
(DMX_OUT_TS_TAP) oppure verso una direzione qualunque, che viene definita dalla
chiamata ioctl (DMX_OUT_TAP). I tipi di PES invece possono essere tutti quelli visti
finora, cioè video, audio, sottotitoli ecc. Per quanto riguarda le chiamate di sistema,
oltre alle classiche open() e close(), che sostanzialmente hanno la stessa funzione di
quelle definite precedentemente, ne sono definite alcune più specifiche per leggere i dati
e pilotare il filtro dei pacchetti. Ad esempio, per iniziare le operazioni di filtraggio si
utilizza
la
chiamata
DMX_START,
che
viene
seguita
dalle
chiamate
DMX_SET_FILTER e DMX_SET_PES_FILTER. Queste impostano il filtro tramite
vari parametri come il PID e il tempo di timeout per la prima, mentre per la seconda
deve essere indicato anche il tipo di PES e la direzione dell’output.
2.3.5 Decoder video ed audio
Le API per i dispositivi video ed audio controllano il decodificatore MPEG-2 presente
nella scheda TV. Se quest’ultimo non è presente i file videoY e audioY non
compariranno nell’albero del file system. Questa sezione controlla soltanto la decodifica
MPEG del flusso, mentre non si interessa affatto di come viene gestita la
visualizzazione in uno schermo televisivo o in un monitor. In un PC, di solito, questo
compito è infatti affidato ad altri dispositivi, che lavorano con le API di video4linux.
Per quanto riguarda il video, le informazioni necessarie per la codifica che vengono
definite sono tutti quei parametri standard di un filmato, come l’aspect ratio (4:3 o
16:9), il formato di visualizzazione (Pan scan, letterbox ecc.), il sistema video dello
schermo (PAL o NTSC) ed altri parametri che indicano lo stato del video e che
gestiscono la riproduzione dei filmati. Anche per quanto riguarda l’audio vengono
forniti dei parametri caratteristici del flusso audio, come ad esempio il numero di canali
(mono o stereo) ed il volume. Il decoder può processare separatamente i flussi audio e
video provenienti dal dispositivo di demux oppure può anche ricevere i dati da
applicazioni software, tramite la chiamata write(). Sia il decoder audio che quello video
possono supportare vari formati, a seconda dell’hardware inserito nella scheda; oltre
all’MPEG-2, infatti, può essere decodificato anche l’MPEG-1 o l’H264 per il video
mentre per l’audio oltre all’MPEG Layer II anche il DTS, l’AAC o l’AC3.
29
Capitolo 2: LinuxTV
2.3.6 Dispositivi per l’accesso condizionato
Una sezione delle API è destinata al controllo dell’hardware per la gestione dell’accesso
condizionato. In realtà però questa parte delle API non è molto sviluppata poiché le
uniche operazioni definite sono quelle di apertura e di chiusura del dispositivo. Oltre a
queste chiamate esistono poi dei parametri che descrivono il tipo di dispositivo,
l’interfaccia e l’algoritmo di descrambling. Queste però hanno soltanto una funzione
informativa e non operativa.
2.3.7 La quarta versione delle API
Nel 2003, la Convergence e la Toshiba Electronic Europe iniziarono lo sviluppo della
quarta versione delle Linux DVB API. La terza versione, infatti, presentava alcuni
problemi e, anche se era molto diffusa tra le applicazioni e conosciuta dai
programmatori, era inevitabile che ne venisse creata un’altra per risolvere i bug
principali. Il principale svantaggio della terza versione delle API riguarda il fatto che
tutti i trasferimenti di dati avvengono attraverso i buffer della memoria e non esiste
nessun supporto per il DMA (Direct Memory Access) che, tramite l’accesso diretto alla
memoria, ridurrebbe di molto il carico della CPU. Inoltre, molti degli hardware moderni
non vengono gestiti correttamente poiché non è definito un supporto esplicito per
frontend o decodificatori multipli. Infine, dato che la prima API era basata sulla scheda
PCI della Siemens, sono rimaste alcune inconsistenze nei namespace ed alcuni errori di
programmazione. Per risolvere questo tipo di problemi, non era sufficiente creare una
estensione delle API esistenti ma era necessario crearne altre completamente da capo.
Queste ultime però dovevano mantenere pressoché inalterate le caratteristiche principali
in modo che venisse garantita la portabilità. Al giorno d’oggi il progetto non è più
attivo, non è stato scartato ma è rimasto in una sorta di stand-by.
2.4 Le Video4Linux API
Le API Video4Linux sono state create inizialmente per l’utilizzo con i dispositivi di
video cattura. In seguito, nel 2002, è stata rilasciata una seconda versione (v4l2) per
ampliare le capacità della precedente e correggere i bug. Da quel momento le
Video4Linux API sono entrate a far parte stabilmente del kernel di Linux.
Queste API hanno la funzione di creare una interfaccia tra il kernel e i dispositivi video.
La loro struttura deve essere ben nota a qualsiasi programmatore di driver ed
30
Capitolo 2: LinuxTV
applicazioni per il sistema operativo Linux. Le Video4Linux API infatti supportano una
notevole varietà di dispositivi che non sono necessariamente di tipo video. Tra questi
possiamo trovare:
•
video capture interface: sono i comuni dispositivi di video cattura, comprese ad
esempio le schede per la TV, sia analogiche che digitali. Le schede di tipo DVB,
come è stato detto precedentemente, vengono governate dalle DVB API, ma
queste controllano soltanto i dispositivi specifici che solo una scheda DVB
possiede. La parte che riguarda invece l’interfacciamento, ad esempio, tra la
scheda ed il bus PCI, è gestita dalle API Video4Linux;
•
video output interface: rappresentano tutti i dispositivi in grado di codificare
sequenze di immagini in un segnale video analogico;
•
video overlay interface: sono quei dispositivi che consentono la visualizzazione
diretta di ciò che viene acquisito dalle periferiche di video cattura. In pratica i
dati vengono spostati dal dispositivo di acquisizione a quello di output, ad
esempio una scheda video, senza gravare sulla CPU;
•
radio interface: rappresentano i ricevitori della radio analogica, AM e FM.
I dispositivi appena indicati, tranne quelli radio, vengono individuati dai file speciali
chiamati /dev/videoX, dove la X rappresenta il solito numero progressivo che parte da 0.
I dispositivi radiofonici invece vengono indicati dal file /dev/radioX.
2.5 Utilities per il DVB
Il pacchetto LinuxTV dvb-apps contiene una serie di applicazioni utili per il setup
iniziale e per il monitoraggio di una scheda TV. Riguardo questo pacchetto, c’è stato nel
tempo un po’ di confusione, poiché mentre il pacchetto del codice sorgente, scaricabile
dal sito della comunità, viene chiamato linuxtv-dvb-apps, non tutte le distribuzioni di
Linux si riferiscono a questo con lo stesso nome. Ad esempio, nelle distribuzioni
Debian e derivate, quindi anche su Ubuntu, il pacchetto viene rinominato dvb-utils,
mentre in altri sistemi si fa ancora più confusione poiché viene chiamato dvbtools,
confondendolo con un altro insieme di applicazioni, esterne al LinuxTV Project.
Le utilities vengono suddivise in due gruppi principali, a cui corrispondono le due
directory /test e /util. I programmi contenuti nella prima directory servono, come dice
anche il nome, per testare il dispositivo. Di questi, alcuni sono relativi soltanto alle
31
Capitolo 2: LinuxTV
schede satellitari poiché lavorano soltanto con il dispositivo SEC del frontend. Gli altri
invece sono piccole applicazioni generali che testano il demultiplexer ed il decoder
audio e video. Nella seconda directory invece, sono contenute delle applicazioni
fondamentali per far funzionare la scheda DVB dopo l’installazione. L’elenco completo
delle applicazioni è questo:
•
loadkeys: una utility per definire la mappatura del telecomando a infrarossi, se
presente;
•
dvbdate: un programma per settare la data e l’ora di sistema che viene letta dalla
scheda Digitale Terrestre;
•
dvbnet: uno script che gestisce il dispositivo /dev/dvb/adapter0/net0;
•
dvbtraffic: un programma che analizza il traffico della scheda DVB;
•
scan: una utility per effettuare la scansione dei canali;
•
zap: un’applicazione che testa il segnale DVB.
Questi programmi sono stati tutti scritti da sviluppatori del progetto LinuxTV, nel
linguaggio di programmazione C. Tra tutte queste applicazioni, quelle fondamentali
sono le ultime due, che vengono trattate dettagliatamente nei prossimi due paragrafi.
2.5.1 Scan
Il programma scan è una utility, eseguibile da linea di comando, che effettua la
scansione dei canali. Questa applicazione però non effettua una scansione automatica
dei canali che possono essere ricevuti, come avviene ad esempio quando si vuole
sintonizzare un set-top box per la TV digitale terrestre oppure un comune televisore.
Esso necessita invece di un file delle frequenze di base contenente la lista dei MUX
disponibili. Come descritto precedentemente, lo standard del digitale terrestre consente
di combinare, tramite un multiplexer, più flussi audio e video derivati da canali
televisivi diversi, in un flusso di trasporto (TS).Questo viene poi trasmesso utilizzando
una sola banda di frequenze di 8 MHz. Ogni multiplex (MUX) che viene diffuso da una
stazione quindi, contiene una serie di canali, sia televisivi che radiofonici, e differisce
da tutti gli altri soltanto per la frequenza. Per questo motivo, il file necessario alla
corretta riuscita del comando è formato da una serie di righe con alcuni parametri in
comune. Il formato è il seguente:
T “frequenza in Hz” 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
32
Capitolo 2: LinuxTV
Gli attributi che seguono il valore della frequenza riguardano i parametri di
modulazione e servono per settare correttamente il frontend della scheda. Inoltre il
programma supporta anche delle righe di commento, individuabili dal fatto che
presentano ad inizio riga il carattere “#”. I commenti servono solo per creare un file più
comprensibile per un essere umano, mentre vengono ignorati dall’applicazione. Essi
possono essere utili ad esempio per indicare quali canali contiene ogni MUX.
Il programma si basa completamente sulle Linux DVB API, utilizzando tutte le strutture
e le chiamate definite nella parte che riguarda il frontend e in particolare la funzione
FE_SET_FRONTEND, che serve proprio per la sintonizzazione. Lo scan inizia
leggendo riga per riga il file delle frequenze iniziali e utilizzando quelle informazioni
imposta il frontend. Se viene individuato un segnale buono, cioè se viene ritornato il
valore FE_HAS_LOCK dopo la chiamata ioctl del tipo FE_READ_STATUS, il
programma inizia a filtrare e a decodificare le tabelle di servizio del DVB-SI, ottenendo
così un elenco di programmi televisivi. Ciò che si ottiene alla fine della scansione è un
file chiamato channels.conf. Questo file contiene l’elenco di tutti i canali disponibili
nell’area di ricezione dell’antenna, comprensivi di tutte le informazioni utili per la
successiva visualizzazione, come ad esempio il valore del PID del flusso audio e video.
Il formato di questo file è molto semplice: ogni riga contiene i parametri di un solo
canale ed inizia proprio con il nome del canale. Ogni successiva informazione è
separata dalle altre tramite il carattere “:”, creando così una specie di tabella. Dopo il
nome viene indicato, in ordine, la frequenza del MUX, il modo di inversione, la banda
occupata, il tasso del FEC in alta e bassa priorità, la costellazione, il modo di
trasmissione, l’intervallo di guardia, le informazioni sulla gerarchia, il PID video e
audio ed infine l’ID di servizio del canale. Tra tutte queste informazioni, di solito,
quelle che variano di canale in canale sono soltanto la frequenza, i valori dei PID dei
flussi e l’identificativo di servizio. Il file channels.conf, nel formato appena descritto,
viene riconosciuto dalla maggior parte delle applicazioni che funzionano sotto il sistema
operativo Linux.
2.5.2 Zap
Il programma zap, eseguibile da linea di comando, è quello che effettua il tuning dei
canali televisivi analizzandone il segnale. L’applicazione deriva proprio il suo nome
33
Capitolo 2: LinuxTV
dall’operazione di sintonizzazione di un canale che viene comunemente detta
“zapping”. Esso supporta tutti gli standard del DVB, per ciascun mezzo trasmissivo, ed
ha un comando specifico per ognuno: tzap per il digitale terrestre, szap per il satellitare,
czap per la TV via cavo e azap per l’ATSC, lo standard digitale terrestre utilizzato negli
Stati Uniti e in America Centrale.
Per funzionare con successo, il programma necessita del file di configurazione dei
canali (channels.conf), da cui estrae le informazioni utili per la sintonizzazione. Il
comando tzap inoltre, prende come argomento il nome del canale da sintonizzare che, in
caso contenesse spazi, deve essere scritto tra virgolette singole o doppie. Esso in pratica
esegue una ricerca indicizzata, utilizzando come parola chiave il nome del canale che
deve essere sintonizzato, all’interno del file channels.conf. Se tale ricerca ha successo,
vengono estratte le informazioni relative alla frequenza ed ai parametri di modulazione.
Poi ha inizio il tuning. Questa utility, come anche la precedente, è fortemente collegata
con le DVB API. Questo fatto lo si può notare facilmente se si analizza il codice
sorgente del programma ed in particolare la funzione check_frontend(…) che è la
subroutines principale:
static
int check_frontend (int fe_fd)
{
fe_status_t status;
uint16_t snr, signal;
uint32_t ber, uncorrected_blocks;
do {
ioctl(fe_fd,
ioctl(fe_fd,
ioctl(fe_fd,
ioctl(fe_fd,
ioctl(fe_fd,
&uncorrected_blocks);
FE_READ_STATUS, &status);
FE_READ_SIGNAL_STRENGTH, &signal);
FE_READ_SNR, &snr);
FE_READ_BER, &ber);
FE_READ_UNCORRECTED_BLOCKS,
printf ("status %02x | signal %04x | snr %04x | "
"ber %08x | unc %08x | ",
status, signal, snr, ber, uncorrected_blocks);
if (status & FE_HAS_LOCK)
printf("FE_HAS_LOCK");
usleep(1000000);
printf("\n");
} while (1);
return 0;
}
Listato 2.1: Funzione di settaggio del frontend
34
Capitolo 2: LinuxTV
Una volta analizzato il programma, si può dire che il tuning consiste nel settare il
frontend, ricevere informazioni sul suo stato, utilizzando le chiamate standard definite
nelle LinuxTV DVB API, e stampare sul terminale i parametri ottenuti. Una volta
avviato, le prime tre righe di output del comando indicano quello che tzap sta facendo.
Viene cioè indicato quale dispositivo si sta sintonizzando e con quali parametri (sono
quelli corrispondenti al file channels.conf). A partire dalla quarta riga vengono poi
mostrate le informazioni sul segnale. Tutte le successive righe invece rappresentano
solamente l’aggiornamento delle informazioni precedenti. Questo processo si ripete
continuamente generando una riga aggiornata ogni secondo. Per interrompere questo
task è necessario premere Ctrl+C, la combinazione di tasti standard della shell di Linux
per uccidere il programma in esecuzione.
Questi sono i sei campi, in formato esadecimale, che appaiono nel rapporto stampato dal
tzap:
•
status: stato attuale del ricevitore. Il valore 0x00 indica che la scheda è stata
inizializzata ma nessun segnale è stato ancora decodificato. Il valore 0x1f invece
significa che il canale è sintonizzato e tutto funziona correttamente. Per altri
valori ci si può riferire al Paragrafo 2.3.3 che descrive le API del frontend;
•
signal: forza del segnale. Un valore alto sta ad indicare un buon segnale in
ricezione. In realtà questo parametro non è molto indicativo e può essere
fuorviante poiché ogni scheda TV fornisce valori differenti. Esso è utile soltanto
nel confronto tra i vari canali utilizzando lo stesso supporto hardware. Per voler
dare una soglia di qualità si può definire buono un segnale che supera il valore di
0x8000;
•
snr: (signal/noise ratio) rapporto segnale rumore. Questo è il più importante
indicatore del corretto funzionamento della scheda, e della corretta ricezione di
un canale. Il valore non deve essere necessariamente il più alto possibile, è
importante invece che non abbia fluttuazioni. Anche in questo caso, i valori che
superano 0x8000 si possono considerare validi;
•
ber: (bit error rate) tasso di errore. Questo valore deve essere il più basso
possibile, preferibilmente uguale a zero. Esso va comunque valutato prendendo
anche in considerazione il tasso di codifica del segnale, poiché se quest’ultimo è
abbastanza robusto, può sopportare anche un tasso di errore elevato;
35
Capitolo 2: LinuxTV
•
unc: (uncorrected block error) errori dei blocchi non corretti. Anche in questo
caso il valore dovrebbe essere il più possibile uguale a 0. In caso contrario i
pacchetti errati non verranno codificati correttamente dal decoder MPEG-2 e si
presenteranno dei disturbi sul segnale in output;
•
FE_HAS_LOCK: indica che il canale è stato sintonizzato correttamente.
Il programma tzap, oltre per la fase di test, può essere utilizzato anche per registrare un
programma TV nell’hard disk. Questo avviene perché l’applicazione tzap, grazie
all’opzione “-r”, rende disponibile il flusso di trasporto MPEG-2 come output della
periferica virtuale dvr. Da questa si può poi registrare lo stream nel disco rigido. Questa
redirezione dell’output viene effettuata al momento del settaggio del dispositivo di
demux, tramite una linea di codice in cui viene definito il valore dell’output del
demuxer.
pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER
Anche con questa opzione attivata, tzap fornisce in output tutte le informazioni
riguardanti il segnale; quindi se non si è interessati la si può disattivare attraverso
l’opzione “-S”.
2.5.3 Dvbsnoop
Figura 2.3: Logo del programma Dvbsnoop
Dvbsnoop è un analizzatore del flusso DVB che serve per monitorare, o fare il dump del
flusso digitale proveniente dalla scheda DVB. Esso fa parte di un progetto esterno alla
comunità LinuxTV ma si basa anche esso sulle Linux DVB API. Il programma inoltre è
un software libero che viene rilasciato sotto la licenza GNU General Public License.
Questa applicazione consente di analizzare tutti i flussi digitali standard del DVB come
il Transport Stream e il PES, fornendo anche alcuni parametri statistici sul segnale
ricevuto. Inoltre, Dvbsnoop è in grado di decodificare tutte le tabelle di servizio che
vengono iniettate dai broadcaster nel TS, sia quelle PSI dello standard MPEG-2 che
36
Capitolo 2: LinuxTV
quelle definite dal DVB-SI. Il programma, durante il suo funzionamento, non si occupa
però del settaggio del frontend della scheda, quindi deve essere obbligatoriamente
eseguito in contemporanea con un software per la sintonia, come tzap. In questo modo,
mentre tzap si sintonizza sulla frequenza desiderata, Dvbsnoop può analizzare il flusso
uscente dalla scheda. Per visualizzare il contenuto di un PID, utilizzando tutte le
impostazioni di default, basta digitare:
$ dvbsnoop <PID>
In alternativa è possibile vedere tutte le impostazioni accettate, come visualizzato nel
Listato 2.2, utilizzando il comando
$ dvbsnoop -help
dvbsnoop - a dvb/mpeg2 stream analyzer tool
Version: 1.4.00/api-3 (Oct 25 2005 15:48:51)
http://dvbsnoop.sourceforge.net/
(c) 2001-2005 Rainer Scherg (rasc)
Usage:
dvbsnoop [opts] pid
Options:
-s type:
snoop type or mode <type> [-s sec]
stream type: sec, pes, ps or ts
or special scan type:
pidscan = transponder pid scan,
bandwidth = data rate statistics for pid
signal = signal rate statistics
feinfo = frontend information
stream type or pidscan
-demux device: demux device [/dev/dvb/adapter0/demux0]
-dvr device:
dvr device [/dev/dvb/adapter0/dvr0]
-frontend device: frontend
device [/dev/dvb/adapter0/frontend0]
-adapter n:
select dvb adapter/card no. <n> using default path
-devnr n:
select device no. <n> using default dvb adapter/card
-if file:
input file, reads from binary <file> instead of demux
device
<file>="-" = /dev/stdin
-timeout ms: section/signal read timeout in <ms> msec. [-timeout
0]
-maxdmx n:
max demux filters <n> to use in pidscan mode (0=max)
[-maxdmx 0]
-buffersize kb: read buffersize in KBytes [-buffersize 0]
(0 = use default read buffer size)
-f filter:
filtervalue for 'sec' demux [-f 0]
multibyte filter syntax: 0x1A.34.56.7F.01
-m mask:
maskvalue for 'sec' demux [-m 0]
multibyte mask syntax: 0x1A.00.F6.55
37
Capitolo 2: LinuxTV
-crc:
-nocrc:
-softcrc:
nosoftcrc]
-nosoftcrc:
nosoftcrc]
-sync:
[-snyc]
-nosync:
-n count:
-N count:
CRC check when reading 'sec' [-nocrc]
no CRC check when reading 'sec' [-nocrc]
internal soft CRC check when reading 'sec' [no internal soft CRC check when reading 'sec' [simple packet header sync when reading 'ts' or 'pes'
no header sync when reading 'ts' or 'pes' [-snyc]
receive/read max. <count> packets (0=no limit) [-n 0]
decode max. <count> packets (0=no limit) [-N 0]
this will limit -n, e.g. when using soft filters.
-spiderpid:
snoop referenced section pids (sets -n 1)
-tssubdecode: sub-decode sections or pes from ts stream decoding
-tsraw:
read raw/full TS in TS snoop mode
-b:
binary output of packets (disables other output)
-ph mode:
data hex dump mode, modes: [-ph 4]
0=none, 1=hexdump, 2=hex line 3=ascii line
4=hexdump2
-hexdumpbuffer:
print hex dump of read buffer [-hexdumpbuffer]
-nohexdumpbuffer: don't print hex dump of read buffer [hexdumpbuffer]
-nph:
don't print hex dump of buffer [= -nohexdumpbuffer]
-pd verbose: print stream decode (verbose level 0..9) [-pd 7]
-npd:
don't print decoded stream (= -pd 0)
-t[n|d|f]:
print timestamp (no, delta, full) [-tf]
-privateprovider id: set provider <id> string for decoding private
tables and descriptors
-hideproginfo: hide copyright and program info header at program
start
-help:
this usage info...
Listato 2.2: Help di Dvbsnoop
38
Capitolo 3: Le schede per la TV digitale
3.1 Introduzione
Una scheda TV è un componente hardware che permette di vedere la televisione tramite
un normale computer. Queste periferiche hanno cominciato a diffondersi sul mercato
consumer a partire dall’anno 2000 circa, quando raggiunsero un prezzo accettabile per
l’acquisto. Una volta installata, la scheda prende in ingresso il segnale proveniente dal
cavo coassiale, che a seconda del tipo di trasmissione ricevuta può avere origine da
un’antenna o da una parabola, e produce in uscita un segnale digitale. Questo viene poi
inviato, tramite interfacce diverse, al computer, che lo gestisce per la visualizzazione.
Figura 3.1: Quattro tipi diversi di schede DVB-T
3.2 Classificazione
Le schede TV attualmente disponibili sul mercato sono molte ed hanno caratteristiche
molto diverse tra loro. Per permettere una maggiore comprensione, che consenta di
districarsi più facilmente tra i vari prodotti che le aziende offrono, queste si possono
classificare secondo alcuni parametri significativi. Tra i vari termini di raffronto si
possono citare: l’interfaccia di collegamento, il tipo di segnale ricevibile, lo standard di
trasmissione e le caratteristiche hardware.
39
Capitolo 3: Le schede per la TV digitale
3.2.1 Interfaccia di collegamento
Tra i vari tipi di schede che esistono in commercio, sono disponibili quelle con
interfaccia PCI (Peripheral Component Interconnect), PCI Express ed ExpressCard. La
differenza sta tutta nel tipo di bus di connessione. Il primo è il comune standard di
connessione in un PC fisso, con transfer rate di 133 MB/s di picco per la versione a 32
bit. Il secondo è più veloce (raggiunge 266 MB/s per la versione a singolo canale) e
presto andrà a sostituire il precedente standard PCI. Il terzo invece è il formato
progettato per i laptop, con interfaccia PCI Express e possibilità di collegamento a
caldo; ciò vuol dire che il sistema è in grado di riconoscere la periferica senza che sia
necessario il riavvio. Inoltre, ultimamente, sul mercato sono apparsi nuovi dispositivi,
con collegamento USB ed una dimensione paragonabile a quella delle comuni chiavette
per la memorizzazione dei dati. Questo tipo di schede sta ultimamente avendo molto
successo a causa della trasportabilità e della facilità di installazione. Questa tecnologia
presenta comunque dei limiti, in quanto necessita di una connessione veloce (deve
essere supportato lo standard USB 2.0 che consente di raggiungere i 60 MB/s) per non
far perdere fluidità al flusso video, ed inoltre molti modelli non sono compatibili con il
sistema operativo Linux.
3.2.2 Tipo di segnale
A seconda del tipo di segnale ricevibile dal sintonizzatore, le schede si possono
raggruppare in quattro categorie: analogiche, digitali, ibride e combinate. Le prime,
consentono di ricevere la normale TV analogica e sono costituite da un convertitore
analogico/digitale e a volte anche da un encoder MPEG. Di solito questo tipo di schede
viene utilizzato soprattutto per l’acquisizione video da sorgenti analogiche come SVideo o video composito. Le schede digitali sono quelle che possono ricevere la TV
digitale, codificata con lo standard DVB. Queste svolgono lo stesso compito dei set-top
box che si collegano nei normali televisori. I sintonizzatori ibridi poi, sono quelli che
possono gestire sia il segnale analogico che quello digitale, a seconda di come vengono
configurati. Il passaggio tra i due tipi non può però essere effettuato al volo. Le schede
combinate invece, hanno sia un sintonizzatore analogico che uno digitale. La differenza
con le precedenti sta nel fatto che, in questo caso, sono presenti due sintonizzatori
anziché uno solo; quindi questi consentono di gestire contemporaneamente i due tipi di
segnale, mentre nel caso delle schede ibride questo non poteva accadere. Questi ultimi
40
Capitolo 3: Le schede per la TV digitale
due tipi di schede stanno diventando molto popolari in tutti quei paesi, come l’Italia,
dove si sta effettuando il passaggio dalla TV analogica a quella digitale. Entrambi i
formati, infatti, permettono di usufruire del segnale digitale ma consentono di guardare
anche in analogico quei canali che non hanno ancora una buona copertura.
3.2.3 Standard di trasmissione
Le schede DVB si possono ulteriormente classificare in tre categorie diverse, a seconda
dello standard di trasmissione che viene adottato: DVB-S per la TV satellitare, DVB-T
per la televisione digitale terrestre e DVB-C per quella via cavo. Fondamentalmente, ciò
che distingue questi tipi di trasmissione, è la modulazione del segnale, che viene ogni
volta adattata alle caratteristiche di propagazione del mezzo trasmissivo utilizzato. Per il
DVB-S, caratterizzato da un segnale a larga banda e limitato in potenza, risulta idonea
la tecnica QPSK a singola portante. La trasmissione via cavo è invece soggetta a
distorsioni lineari e limitazioni di banda, quindi viene utilizzata la modulazione QAM,
che risulta più adatta allo scopo. Per la modulazione del segnale terrestre infine viene
adottata la tecnica COFDM (vedi Paragrafo 1.4.6). Data questa differenza, viene
montato un decodificatore DVB diverso a seconda di quale segnale la scheda è adibita a
ricevere.
3.2.4 Caratteristiche hardware
Ogni scheda infine, a seconda del costo e della qualità, può avere più o meno
componenti hardware installati. Ad esempio, esistono schede caratterizzate da più di un
sintonizzatore e decodificatore. Queste sono quindi in grado di ricevere tutti i tipi di
trasmissione descritti precedentemente. Un termine comune di distinzione inoltre
riguarda la presenza o meno del decodificatore del flusso MPEG-2. Le schede che ne
sono provviste vengono dette Full Featured mentre le altre vengono dette Budget. Una
trattazione
più
dettagliata
su
queste tipologie
di
schede viene sviluppata
successivamente, al Paragrafo 3.4, dove vengono analizzati i vantaggi e gli svantaggi di
entrambe.
41
Capitolo 3: Le schede per la TV digitale
3.3 Anatomia di una scheda DVB
Figura 3.2: Schema dei componenti di una scheda DVB
Generalmente, una scheda DVB PCI è costituita dai seguenti componenti hardware
principali: Frontend, Conditional Access, Demuxer e Decoder Mpeg-2 audio e video.
Inoltre, soltanto nel Frontend delle schede DVB satellitari, è presente un dispositivo
SEC (Satellite Equipment Control) che serve per controllare lo LNB, un convertitore,
posizionato nel punto di fuoco della parabola, che amplifica il segnale e lo trasla di
banda. In Figura 3.2 è rappresentato lo schema di un generico ricevitore DVB.
Il Frontend è formato dal sintonizzatore e dal demodulatore DVB. Questo è il primo
componente hardware del ricevitore che è raggiunto dal segnale proveniente
dall’antenna. Il Frontend converte il segnale ricevuto verso frequenze più basse,
riportandolo in banda base. Poi lo trasforma in un segnale digitale, tramite un
convertitore A/D, ed infine lo demodula effettuando tutti i passi descritti nel paragrafo
1.4.6, ma all’inverso. Ciò che si ottiene, in uscita dal dispositivo, dopo questo processo,
è un Transport Stream (TS) MPEG-2.
Il CA (Conditional Access) è il dispositivo utile per la decodifica dei canali criptati.
Tale hardware è costituito anche da un adattatore CI (Conditional Interface) ed uno o
più slot per le smart card. In questo passo del processo, vengono identificati, tramite la
smart card, quali sono i programmi a cui l’utente può avere accesso. Questi vengono
decodificati in real time e vengono reinseriti di nuovo nel Transport Stream originario.
Il Demuxer (o Demultiplexer) filtra gli stream DVB che devono essere visualizzati.
Esso divide il Transport Stream nelle componenti Audio e Video che poi verranno
inviate separatamente al decodificatore. In questo passo vengono anche individuati e
separati i flussi contenenti le informazioni di servizio.
42
Capitolo 3: Le schede per la TV digitale
Il decodificatore MPEG-2 riceve i flussi audio e video provenienti dal Demuxer e li
elabora separatamente. Dopo la codifica, i flussi non compressi sono pronti per
raggiungere lo schermo del computer ed essere visualizzati. Alcuni ricevitori sono
costituiti anche di un encoder PAL/NTSC per poter collegare il dispositivo direttamente
ad uno schermo televisivo.
3.4 La differenza tra le schede Budget e Premium
Il flusso di dati MPEG (il Transport Stream), proveniente dal decodificatore DVB-T che
lo ha demodulato, per poter essere visualizzato necessita di una fase di decodifica.
Questa può essere effettuata via hardware, mediante un chip dedicato, o via software,
attraverso un algoritmo di decodifica installato nel PC. Nelle schede TV di tipo
Premium, dette anche Full Featured Card, il Transport Stream MPEG-2 viene gestito
direttamente dalla stessa, attraverso un chip di decodifica MPEG. Nelle schede invece
di tipo Budget, dove il nome sta per Low Budged Card, cioè schede a basso costo,
l’hardware di decodifica non è presente quindi il TS deve essere gestito via software
attraverso la CPU. Considerando lo schema in Figura 3.2, una scheda FF (abbr. Full
Featured) ha installati tutti i dispositivi descritti, eccetto il modulo CA che spesso deve
essere acquistato separatamente. La scheda quindi acquisisce il segnale DVB
proveniente dall’antenna, lo elabora e rende disponibile il video e l’audio decodificati,
attraverso una o più uscite collegabili direttamente alla TV o ad un monitor. In questo
caso essa funge sia da periferica di input che di output. La scheda Budget invece,
integra soltanto il frontend. Il flusso di trasporto quindi passa, attraverso il bus PCI,
dalla scheda alla memoria di sistema, dove viene prima decodificato tramite la CPU e
poi inviato alla scheda video che ne gestisce l’output.
La differenza hardware che esiste tra i due tipi di periferiche, in termini di complessità e
numero di componenti installati, si riflette anche nel prezzo. Una scheda di tipo Full
Featured, infatti, viene venduta ad un prezzo che si aggira da 150 a 200 euro, a seconda
delle caratteristiche, mentre una di tipo Budget si può acquistare a circa 50 euro. Questa
spesa superiore non è però ricompensata dalle prestazioni finali del sistema, in quanto le
macchine moderne sono in grado di decodificare agilmente un flusso MPEG-2,
rendendo inutile la presenza del decoder hardware. Le schede Premium, sono state le
prime ad essere apparse sul mercato, quando ancora i computer non erano abbastanza
43
Capitolo 3: Le schede per la TV digitale
performanti da gestire una codifica software in tempo reale. Ad esempio, le schede
DVB della Siemens e TechnoTrend che venivano supportate dalla prima versione delle
API di LinuxTV, erano di questo tipo, poiché comprendevano al loro interno il chip
AV711x che funzionava da decodificatore MPEG-2. Al giorno d’oggi però, con
l’avanzare della tecnologia, le prime periferiche Full Featured sono ormai fuori
produzione e, per i motivi descritti precedentemente, non ne vengono quasi più
commercializzate di nuove.
3.5 La scheda ASUS My Cinema-P7131 Hybrid
La Asus My Cinema-P7131 Hybrid è una scheda TV PCI di tipo budget adatta per
vedere la televisione digitale terrestre (DVB-T) tramite il PC di casa. La periferica è
compatibile con tutte le motherboard dotate di connettore standard PCI versione 2.2 o
superiore ed è riconosciuta dai sistemi operativi Windows, con driver forniti
all’acquisto. Per Linux invece, devono essere utilizzati i driver sviluppati dalla comunità
LinuxTV. La scheda, grazie al suo sintonizzatore ibrido, permette la ricezione della TV
digitale, della TV analogica e della radio FM. Inoltre, tramite un ingresso audio/video
(composto da un cavo con collegamento audio, video composito e S-Video), è possibile
anche catturare fonti video esterne. Con l’acquisto della scheda è compreso anche il
telecomando, con sensore IR (Infra-red) collegabile direttamente ad un ingresso della
periferica, un’antenna TV portatile unidirezionale, un’antenna per la radio FM e un
bundle di software, compatibile però solo con sistema operativo Windows. Per quanto
riguarda l’hardware vero e proprio, la ASUS My Cinema-P7131 Hybrid è composta da
un sintonizzatore in silicio con due ingressi, uno per il digitale terrestre ed uno per la
TV analogica, un decodificatore di canale DVB-T (Philips TDA10046A) ed un decoder
audio e video (Philips SAA7131E). Quest’ultimo è utilizzato per l’acquisizione del
segnale della televisione analogica e per la gestione del flusso di trasporto del DVB che
deve essere inviato al bus PCI. Oltre a questi, è presente anche un oscillatore a basso
costo a 4 MHz, come sorgente del segnale di clock. Dato che è una scheda budget, non
è integrato né il demultiplexer, né il chip per la decodifica MPEG.
44
Capitolo 3: Le schede per la TV digitale
3.5.1 Il chip TDA10046A
Figura 3.3: Schema del chip TDA10046
Il componente hardware Philips TDA10046A è un decodificatore del segnale DVB-T.
Tra le sue caratteristiche annovera, in un singolo chip: un demodulatore COFDM
conforme allo standard “ETSI EN 300 744” (quello del DVB-T), che opera sia in
modalità 2K che 8K, un convertitore A/D (da analogico a digitale) a 10 bit, un
algoritmo detto “Pulse Killer” per ridurre i disturbi impulsivi provocati dagli
elettrodomestici, un dispositivo di scansione veloce delle bande UHF e VHF ed un
basso consumo (450 mW). Come si può notare in Figura 3.3, il dispositivo prende in
ingresso il segnale a media frequenza proveniente dal tuner e produce in uscita un
Transport Stream MPEG-2, attraverso un processo composto da alcuni passi
fondamentali che verranno adesso descritti. Prima il segnale giunge ad un convertitore
analogico/digitale che lo campiona a 10 bit, poi viene convertito in banda base. A
questo punto il segnale passa attraverso il demodulatore FFT (Fast Fourier Transform)
che lo trasforma. La risposta in frequenza del canale viene poi valutata e filtrata sia nel
dominio del tempo che della frequenza, per poi venire utilizzata per equalizzare il
segnale. Inoltre viene anche effettuata una correzione dell’errore di fase prodotta dal
sintonizzatore. Infine viene applicato l’algoritmo di correzione FEC, producendo alla
porta di uscita del dispositivo il Transport Stream MPEG-2 decodificato.
45
Capitolo 3: Le schede per la TV digitale
3.5.2 Il chip SAA7131E
Figura 3.4: Schema del chip SAA7134
Il dispositivo Philips SAA7131E è un decodificatore audio e video PCI, altamente
integrato ed a basso costo, che consente l’acquisizione della televisione in un PC, sia
quella analogica che quella digitale (DTV e DVB). I dati multimediali che vengono
acquisiti sono trasportati attraverso il bus PCI con una operazione di master - write, in
modo da sfruttare in maniera ottimale le capacità di streaming dei moderni sistemi. Per
il trattamento dei segnali analogici, provenienti dal sintonizzatore o dall’ingresso video,
il dispositivo ha incorporati due convertitori A/D e tutta la circuiteria necessaria alla
codifica di qualsiasi segnale analogico, anche non standard. Il dispositivo permette
anche che l’immagine video venga ritagliata, diminuita o ingrandita in entrambe le
direzioni (verticale e orizzontale) prima di passare attraverso un filtro adattativo che
previene il fenomeno di aliasing. Circuiti dedicati sono presenti anche per la codifica
del segnale audio stereo della TV e della radio FM che viene inviato anche ad una uscita
audio interna. Tutti i dati decodificati, compreso il Transport Stream proveniente da un
decodificatore DVB, vengono inviati, attraverso l’interfaccia della periferica, al bus per
poi essere catturati dalla memoria di sistema.
46
Capitolo 4: Installazione e gestione della
scheda DVB-T
4.1 Le scelte progettuali
Lo scopo del progetto è stato quello di realizzare un sistema minimale, basato sul
sistema operativo Linux, che consenta di ricevere il segnale televisivo digitale terrestre
dello standard DVB-T. La prima scelta che è stata compiuta, riguarda le caratteristiche
hardware della macchina adibita allo scopo. Per realizzare un sistema economico si è
pensato di non servirsi di hardware dedicato. Viene utilizzato infatti un normale sistema
host domestico con componenti a basse prestazioni e quindi anche a basso costo. Il PC
scelto è caratterizzato da un processore Pentium III a 600 MHz, una memoria RAM pari
a 360 Mbyte e una scheda video nVidia Vanta con 16 Mbyte di RAM dedicati.
Per quanto riguarda il sistema operativo si è pensato di utilizzare Ubuntu 6.06 LTS, una
distribuzione di GNU/Linux basata su Debian. La scelta di utilizzare Linux, invece che
un sistema della Microsoft come Windows, è dettata principalmente da due fattori.
Prima di tutto Ubuntu risponde alla caratteristica di economicità perché è un software
libero al cento per cento e quindi completamente gratuito. Poi Linux offre molte
possibilità di sviluppo, attraverso i vari moduli e pacchetti che è possibile installare.
Inoltre esso riesce a funzionare in modo abbastanza efficace anche su sistemi datati e
non altamente performanti.
La scheda TV utilizzata invece è la ASUS My Cinema-P7131 Hybrid, descritta al
Paragrafo 3.5, che consente la ricezione della televisione digitale terrestre. La
valutazione in questo caso è stata piuttosto difficile perché, acquistare un prodotto
destinato ad un sistema operativo come Linux, dove spesso la compatibilità ed il
supporto sono un problema, risulta sempre una spesa rischiosa. La scelta finale si è
basata soprattutto sul fatto che quella adottata è una periferica a basso costo, che viene
indicata tra le schede supportate dai driver sviluppati dalla comunità LinuxTV. Questo
fatto non consente una completa sicurezza poiché è sempre possibile che una scheda
47
Capitolo 4: Installazione e gestione della scheda DVB-T
prima supportata non venga più riconosciuta a causa, ad esempio, di bug nel kernel o
modifiche hardware non dichiarate dal produttore. Per questo motivo sono stati anche
analizzati i componenti hardware della scheda, che risultavano però anch’essi
compatibili. Più precisamente, il chip della Philips SAA7131E viene supportato dal
modulo del kernel chiamato saa713x.
4.2 Ubuntu 6.06 LTS
Ubuntu è un sistema operativo basato su GNU/Linux, nato nel 2004 dalla distribuzione
Debian. Questi due sistemi sono strettamente connessi ma Ubuntu si differenzia da
Debian per lo spiccato orientamento verso configurazioni desktop e per la maggiore
facilità di utilizzo; caratteristiche studiate per cercare di attirare utenti provenienti da
sistemi Microsoft. Di Ubuntu viene rilasciata regolarmente una versione nuova ogni sei
mesi e, per ognuna di queste, ne vengono realizzate due edizioni, una desktop ed una
server, e diverse varianti, ufficiali e non, che si diversificano soprattutto per l’ambiente
desktop. La versione che è stata scelta per il progetto è la 6.06 LTS (Long Time
Support), detta anche Dapper Drake. Questa è basata sul kernel Linux 2.6.15. La
Dapper non è una versione nuova, è stata rilasciata a Giugno del 2006, ma viene
garantito un supporto a lungo termine, fino al 2009. La 6.06 LTS è stata preferita alla
nuova versione, la 7.04 rilasciata il 19 Aprile 2007, perché con l’ultima versione del
kernel, la numero 2.6.20, sussistevano dei problemi di compatibilità con i driver e le
API create da LinuxTV.
4.2.1 Edizioni
L’edizione desktop è basata sull’interfaccia grafica GNOME (GNU Network Object
Model Environment). Questo ambiente desktop è completamente libero ed è
caratterizzato da una struttura semplice ed intuitiva ma anche altamente flessibile e
personalizzabile. Questa versione ha già con sé la maggior parte dei driver necessari al
funzionamento del sistema; inoltre è corredata da una selezione di applicazioni utili sia
per l’ufficio che per l’intrattenimento e la navigazione in internet, come Firefox,
OpenOffice, Evolution, Totem ecc.
L’edizione Server è caratterizzata invece da un’ottima robustezza e da eccellenti
prestazioni, date anche dal fatto che questa versione non installa alcun ambiente grafico.
Un altro aspetto chiave è la sicurezza; una volta installato, infatti, il sistema contiene
48
Capitolo 4: Innstallazionee e gestione della sched
da DVB-T
soolamente il software necessario
n
a
all’utilizzo
server, senzza nessuna porta aperrta verso
l’eesterno. Quuesta edizionne fornisce una valida piattaforma per lo sviiluppo di seerver per
innternet graziie ad Apachhe, MySQL e PHP.
4..2.2 Installlazione della versionee desktop
Trra le ediziioni del siistema operrativo adotttato è stata scelta lla desktop. Questa
prreferenza deeriva dal faatto che unn sistema ad
dibito alla ricezione
r
edd alla visio
one della
teelevisione digitale
d
ha bisogno
b
di un
u ambientee grafico addeguato. Inooltre Ubunttu ha dei
reequisiti minnimi, dichiaarati dalla comunità, che non soono troppoo esigenti poiché
p
è
neecessario sooltanto una CPU a 4000 MHz e 256 MB di RAM.
R
I componenti hardware
h
uttilizzati, inffatti, riescoono a soppoortare efficacemente il carico di lavoro e non
n si è
obbbligati ad installare
i
la versione seerver.
U
Ubuntu
6.06 LTS edizione desktopp viene forrnita tramitee un LiveC
CD, che con
nsente di
prrovare il sistema operattivo senza averlo
a
primaa installato,, in modo chhe si possan
no anche
teestare le fuunzionalità ed il correetto riconosscimento dii tutte le pperiferiche. Tramite
quuesto LiveC
CD è poi possibile intraprendeere la proccedura d’innstallazione,, che si
prresenta in modalità
m
grafica.
Figura 4.1: Schermata di
d scelta della lingua
49
Capitolo 4: Innstallazionee e gestione della sched
da DVB-T
Figura 4..2: Schermata del fuso oraario
Figura 4.3:
4 Schermatta scelta tastiera
50
Capitolo 4: Innstallazionee e gestione della sched
da DVB-T
Figura 4.4: Schermata del
d partizionaamento
Peer iniziare a lavorare con
c Ubuntuu 6.06 LTS è sufficiennte inserire iil CD e riav
vviare il
sistema, assiccurandosi che
c il BIOS sia configu
urato per l’avvio da CD-ROM. Al
A reboot
apppare la prrima scherm
mata del siistema opeerativo, dovve, premenddo F2, è possibile
p
sccegliere la liingua. Da qui
q ha inizioo l’avvio di Ubuntu livve. Finito il caricamento
o, si è di
fronte ad un sistema com
mpleto funzzionante da CD. Per laanciare l’insstallazione basta un
dooppio clickk sull’iconaa installa. In seguito
o, durante la proceduura d’installlazione,
veengono pressentate variie schermatte dove, una volta effeettuata la sccelta, basta cliccare
suul pulsante avanti perr confermaare. La priima scherm
mata (Figurra 4.1) rigu
uarda la
seelezione deella lingua. L’italiano è presentee nel CD ma per installare i pacchetti
p
coompleti è neecessaria unna connessiione interneet attiva. Neella secondaa schermataa (Figura
4.2) va seleziionato il fusso orario inndicando la città di rifeerimento dellla zona geo
ografica.
Inn alternativaa è possibilee anche imppostare l’orra manualm
mente. La suuccessiva scchermata
(F
Figura 4.3) chiede la mappaturaa della tastiiera; la corrretta sceltaa va poi verificata
v
diigitando alccuni caratterri in una texxt-box a fon
ndo finestraa. A questo punto va effettuata
e
l’ooperazione più critica: il partizionnamento del disco rigido (Figura 4.4).
L’installazionne di base prevede
p
la creazione di due partiziooni:
51
Capitolo 4: Installazione e gestione della scheda DVB-T
•
il file system, detto root, ed indicato con il simbolo “/”, è la partizione dove
viene installato il SO;
•
l’area di swap è quella necessaria per la memoria virtuale. La dimensione di
questa è in funzione dell’uso e della memoria installata nel computer: è
consigliata l’allocazione di uno spazio che va da uno a due volte la RAM.
A queste si possono aggiungere altre partizioni per contenere, ad esempio, ulteriori
sistemi operativi installati. La procedura da eseguire consiste nel selezionare la
partizione esistente, ridimensionarla e, con lo spazio ricavato, creare le due partizioni
necessarie. In seguito deve essere indicata nella tabella dei punti di mount, in quale
partizione deve essere installata la partizione di root e in quale quella di swap. Infine
cliccando su continua le modifiche vengono applicate irreversibilmente e la procedura
d’installazione ha inizio. Da qui in poi è tutto automatico; verrà solo chiesto, alla fine
del processo, se si vuole riavviare il sistema o continuare con il LiveCD.
4.2.3 Software indispensabile
Una volta che il sistema è stato installato correttamente, al riavvio è necessario
installare alcuni software indispensabili per la corretta visualizzazione del flusso DVBT. Questi sono:
•
i driver per la scheda video: per la Vanta si devono utilizzare i nvidia-glx-legacy,
che sono dei driver creati per mantenere la compatibilità con le schede video più
obsolete;
•
il player multimediale: viene utilizzato Gxine, corredato con i relativi codec per
il video MPEG-2 e l’audio. GXine è un frontend grafico, basato su Gnome, del
software xine, un riproduttore multimediale per Linux, rilasciato sotto la licenza
GNU General Public Licence. Tramite questo player è possibile utilizzare la
scheda DVB-T per visualizzare i vari canali;
•
lirc: il demone per la gestione del telecomando.
Questi possono essere installati sia utilizzando il gestore standard dei pacchetti, APT,
che tramite i sorgenti reperibili nei siti ufficiali. Dato che alcuni di questi programmi
non sono supportati ufficialmente da Ubuntu, è necessario anche abilitare i repository
Universe e Multiverse. Un repository è un archivio di software, dove sono conservati
tutti i programmi installabili tramite il gestore dei pacchetti. Ubuntu utilizza quattro
categorie di repository: Main, per il software ufficiale, Restricted, per quello non
52
Capitolo 4: Installazione e gestione della scheda DVB-T
completamente libero, Universe, per quello supportato dalla comunità e Multiverse che
contiene software non gratuito. All’atto dell’installazione del sistema sono abilitati
soltanto i primi due, quindi è necessario abilitare anche i restanti per poter installare i
codec e i driver della scheda video.
Inoltre, dato che il sistema utilizzato è stato rilasciato circa un anno fa, è preferibile
aggiornarlo in modo che tutti i pacchetti siano i più recenti possibili. Per farlo si
utilizzano i seguenti comandi da shell:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
Il primo di questi aggiorna la lista dei pacchetti mentre il secondo e il terzo installano
tutti i pacchetti nuovi che sono stati trovati. In questo modo si ottiene un sistema
corretto da tutti i bug riguardanti la sicurezza scoperti finora.
4.3 Installazione della scheda
L’installazione di una scheda DVB inizialmente risulta piuttosto complessa. Questo
perché spesso non tutte le periferiche risultano pienamente supportate, a fronte, per la
maggior parte delle volte, di modifiche hardware delle schede più nuove rispetto alle
precedenti. È quindi necessario adattare la procedura di installazione ad ognuna di esse.
Dopo alcune prove, è stato formulato un metodo di installazione che sembra il più
corretto; quello che può essere utilizzato per la maggior parte delle schede in
commercio. Questo metodo viene descritto nei paragrafi seguenti.
4.3.1 Firmware
Questa scheda necessita del firmware per il demodulatore DVB-T, un file che va
copiato nella directory dei firmware del sistema. Questo file è di fondamentale
importanza per la buona riuscita dell’installazione quindi è necessario trovare quello
giusto. Il chip utilizzato dalla scheda ASUS My Cinema-P7131 Hybrid è, come già
indicato in precedenza (Paragrafo 3.5.1), il Philips TDA10046A. Il firmware giusto è
quindi quello chiamato dvb-fe-tda10046.fw. Per ottenerlo, dato che il produttore non ne
distribuisce una versione per linux, si utilizza uno script Perl, chiamato
get_dvb_firmware, che è incluso nei sorgenti del kernel. La subroutine a cui siamo
interessati è quella nel Listato 4.1. In realtà questo script prende i driver per windows di
53
Capitolo 4: Installazione e gestione della scheda DVB-T
un’altra scheda, la LifeWiew FlyDVB-T Hybrid, ma, dato che il chip è lo stesso, il
firmware risulta compatibile con la scheda utilizzata nel progetto.
sub tda10046lifeview {
my $sourcefile = "Drv_2.11.02.zip";
my $url = "http://www.lifeview.com.tw/drivers/pci_card/FlyDVBT/$sourcefile";
my $hash = "1ea24dee4eea8fe971686981f34fd2e0";
my $outfile = "dvb-fe-tda10046.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
checkstandard();
wgetfile($sourcefile, $url);
unzip($sourcefile, $tmpdir);
extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp");
verify("$tmpdir/fwtmp", $hash);
copy("$tmpdir/fwtmp", $outfile);
$outfile;
}
Listato 4.1: Subroutine per ottenere il firmware della scheda
Il percorso di sistema dove sono contenuti tutti i firmware non è uguale per tutte le
distribuzioni di Linux. Quello standard è /lib/firmware/ mentre in questo caso il
percorso è leggermente diverso. Per copiare il file desiderato nella giusta directory, si
può utilizzare il comando:
$ sudo cp dvb-fe-tda10046.fw /lib/firmware/2.6.15-28-386
4.3.2 Requisiti
Prima di iniziare l’installazione vera e propria, per poter scaricare e compilare i driver
necessari al funzionamento della scheda, sono indispensabili i seguenti software:
•
Mercurial: un sistema di controllo di revisione simile a CVS e Subversion. La
differenza rispetto questi ultimi due è che Mercurial è un sistema distribuito,
senza nessun repository centrale, ma con un database diverso per ogni
sviluppatore. Esso è necessario per ottenere i sorgenti aggiornati dei driver della
scheda DVB-T;
•
kernel-headers: sono i file header che servono per compilare i moduli esterni al
kernel;
•
build-esential: un pacchetto che contiene tutti i compilatori, come make e gcc,
che sono necessari per installare qualsiasi software dal codice sorgente.
54
Capitolo 4: Installazione e gestione della scheda DVB-T
Su Ubuntu, e comunque su tutte le altre distribuzioni basate su Debian, i pacchetti
necessari possono essere installati con il gestore dei pacchetti tramite il comando
$ sudo apt-get install mercurial linux-headers-$(uname –r)
build-essential
4.3.3 Procedura di installazione
Installati tutti i software richiesti, è possibile scaricare, dal sito LinuxTV, il codice
sorgente più recente dei driver v4l-dvb. Per farlo si deve utilizzare il programma appena
installato, Mercurial. Tramite il seguente comando, in pratica, si crea, nel file system
locale, un clone del repository di LinuxTV situato all’URL indicato:
$ hg clone http://linuxtv.org/hg/v4l-dvb
requesting all changes
adding changesets
adding manifests
adding file changes
added 6221 changesets with 16904 changes to 1238 files
Listato 4.2: Output di Mercurial
Dopo l’esecuzione del comando, che produrrà l’output descritto nel Listato 4.2, se tutto
è andato a buon fine verrà creata, nel percorso corrente, una directory chiamata v4l-dvb
con all’interno i sorgenti dei driver desiderati. Fatto questo bisogna entrare nella
directory appena creata e compilarli:
$ cd v4l-dvb
$
make
Infine vanno installati i driver, tramite il seguente comando e poi va riavviato il sistema:
$ sudo make install
Riavviata la macchina, per confermare che la scheda venga riconosciuta correttamente,
deve essere presente la directory /dev/dvb/adapter0 che deve contenere i file speciali
demux0, dvr0, frontend0, e net0, così come è definito nelle Linux DVB API (Paragrafo
2.3.2). Da notare che se sono state installate altre schede, la cifra finale della directory e
dei file non sarà 0 ma un altro numero consecutivo. La verifica può essere fatta
velocemente utilizzando il comando:
$ ls –l /dev/dvb/adapter*
55
Capitolo 4: Installazione e gestione della scheda DVB-T
Invece, per visualizzare un elenco delle periferiche hardware, con bus PCI, che sono
installate nel sistema, si utilizza il comando:
$ lspci –w
Con la macchina del laboratorio l’output è il seguente (Listato 4.3):
0000:00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX 82443BX/ZX/DX Host bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX
AGP bridge (rev 03)
0000:00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA
(rev 02)
0000:00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE
(rev 01)
0000:00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB
(rev 01)
0000:00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev
02)
0000:00:08.0 SCSI storage controller: Advanced System Products, Inc
ABP940-U / ABP960-U (rev 03)
0000:00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8139/8139C/8139C+ (rev 10)
0000:00:0b.0 Multimedia controller: Philips Semiconductors SAA7133
Video Broadcast Decoder (rev d1)
0000:00:0c.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97]
(rev 08)
0000:01:00.0 VGA compatible controller: nVidia Corporation NV6
[Vanta/Vanta LT] (rev 15)
Listato 4.3: Lista delle periferiche PCI installate
Nell’elenco appare il decoder Philips SAA7133. In realtà questo non è proprio quello
della scheda Asus installata, ma viene dichiarato come un chip compatibile, dotato delle
stesse funzionalità del SAA7131E.
4.3.4 Il telecomando
Il segnale del telecomando della scheda in questione, viene ricevuto da un sensore
Infra-red che si collega direttamente ad essa, attraverso un connettore esterno. Per
questo motivo, una volta installata la periferica, il telecomando viene identificato
automaticamente. Per verificare il corretto riconoscimento si digita il comando:
$ dmesg | grep input
Durante l’avvio del sistema, il kernel annota, in un file di log, tutta una serie di
messaggi relativi alle operazioni effettuate ed alle periferiche riconosciute. Tramite il
comando dmesg vengono richiamati tutti questi messaggi prodotti dal kernel che sono
56
Capitolo 4: Installazione e gestione della scheda DVB-T
stati salvati in questo file di log. Dato che spesso dmesg produce una mole di dati molto
ampia, quando si cerca un’informazione specifica, si usa filtrarlo con il comando grep
seguito dalla parola chiave cercata. Questa operazione si effettua utilizzando il
metacarattere “|” (pipe), che ridirige lo standard output del comando a sinistra nello
standard input del comando a destra. Se tutto è corretto quindi, questi comandi in
cascata dovrebbero produrre il seguente output:
[17179597.008000] input: saa7134 IR (ASUSTek P7131 Hybri as
/class/input/input4
Questa stringa conferma che il telecomando è stato riconosciuto all’avvio del sistema.
Per un ulteriore conferma si può ricorrere al comando riportato nel Listato 4.4, che
analizza il contenuto del file dove vengono elencate tutte le periferiche di input del
sistema. Il comando deve produrre l’output indicato.
linuxbox@linuxbox-desktop:~$ cat /proc/bus/input/devices
[…]
I: Bus=0001 Vendor=1043 Product=4876 Version=0001
N: Name="saa7134 IR (ASUSTeK P7131 Hybri"
P: Phys=pci-0000:02:0b.0/ir0
S: Sysfs=/class/input/input4
H: Handlers=kbd event4
B: EV=100003
B: KEY=108c0322 2104000 0 0 0 0 10000 4180 801 9f16c0 0 0 10000ffc
Listato 4.4: Riconoscimento del telecomando
4.4 Fase di test
Installata correttamente la scheda, si procede con una fase di test, nella quale si effettua
anche la scansione dei canali che si possono ricevere. Questi saranno diversi a seconda
della copertura presente in zona.
Alcuni dei programmi utili per questa fase sono quelli già descritti precedentemente:
•
scan: per effettuare la scansione dei canali;
•
tzap: per effettuare il tuning e visualizzare alcune proprietà di ogni canale.
Dato che su Ubuntu, come già detto, i due sono mantenuti nel repository Universe, in
un pacchetto denominato dvb-utils, essi devono essere installati tramite il seguente
comando:
$ sudo apt-get install dvb-utils
57
Capitolo 4: Installazione e gestione della scheda DVB-T
4.4.1 Scan
L’utility scan, così come già descritto al Paragrafo 2.5.1, non effettua una scansione
automatica dei canali che possono essere ricevuti ma necessita di un file delle frequenze
di base, contenente la lista dei MUX disponibili. Questi file iniziali sono specifici a
seconda della locazione geografica in cui ci si trova perché contengono le informazioni
sulle stazioni più vicine che trasmettono il segnale DVB-T. Essi, per molte località del
mondo, vengono forniti con il pacchetto dvb-apps ma la posizione esatta dove questi
vengono installati può variare a seconda della versione del pacchetto e della
distribuzione di Linux utilizzata. In questo caso, con Ubuntu 6.06 LTS, il percorso è il
seguente:
/usr/share/doc/dvb-utils/examples/scan/dvb-t
Il nome di questi file ha un formato standard, del tipo xx-Yyyyy. In questa stringa, i
primi due caratteri rappresentano un’abbreviazione, di due lettere, del paese a cui si
riferisce il file, mentre Yyyyyy è il nome della località dove è collocato il trasmettitore.
Va detto però, visto che sono presenti file per tutto il mondo, che molto probabilmente
quello per la località desiderata o non esisterà per niente o comunque risulterà
incompleto. I file già presenti infatti costituiscono soltanto un esempio di come
strutturare il file. Per la città di Ancona, il file delle frequenze iniziali esiste, con il nome
di it-Conero. Questo però, contiene soltanto poche righe e dovrà quindi essere ampliato
e corretto, in caso risultassero dati errati.
Per creare un file per lo scanning, si possono utilizzare le informazioni riguardanti la
copertura del digitale terrestre, contenute nel sito http://www.dgtvi.it. L’associazione
DGTVi è costituita da aziende come Rai, Mediaset e Telecom Italia Media, al fine di
cooperare per promuovere tutte le iniziative che riguardano il digitale in Italia. Nel loro
sito, come si vede in Figura 4.5, si può trovare una lista, divisa per province e comuni,
delle frequenze in MHz dei principali canali televisivi. Inoltre viene indicata anche la
copertura ed il sito di trasmissione.
58
Capitolo 4: Installazione e gestione della scheda DVB-T
Figura 4.5: Il sito DGTVi
Attraverso il file già esistente e le informazioni prese da questo sito, è stato creato il file
relativo al comune di Ancona. Il contenuto di questo file, chiamato it-Ancona, è il
seguente (Listato 4.5):
#
T
T
T
MUX DFREE
674000000
722000000
842000000
(Rete 4,Italia1,SportItalia,LCI,RadioItalia Tv)
8MHz 2/3 1/2 QAM64 8k 1/32 NONE
8MHz 2/3 1/2 QAM64 8k 1/32 NONE
8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX LA7/MTV (La 7,MTV ITALIA,Canale D,Music Box)
T 802000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 226500000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX MEDIASET1 (Canale 5,Class News,Sole 24 Ore TV,BBC
World,Boing,Mediashopping)
T 522000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 490000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX MEDIASET2 (Canale 5,Class News,24 Ore TV,Coming Soon,BBC World)
T 554000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
59
Capitolo 4: Installazione e gestione della scheda DVB-T
# MUX-A RAI (Rai uno, Rai due, Rai tre, Rai utile)
T 706000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX-B RAI (Rai Doc,RaiSportSAT,RaiNews24,Rai EDU1)
T 219500000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 474000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX QOOB (Qoob,La 7,MTV)
T 666000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX RTV38 (Rtv38,38 news,Rtl102.5)
T 177500000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 194500000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX ALLMUSIC (AllMusic,RepubblicaTv,RadioDeejay)
T 618000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
# MUX TV LOCALI
T 698000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 770000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 786000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
Listato 4.5: File delle frequenze iniziali per lo scan
Va subito notato che ogni MUX di canali può avere più di una frequenza. Questo
perché, nel comune in cui ci si trova, si possono captare segnali che provengono da siti
di trasmissione diversi oppure perché vengono utilizzate dallo stesso multiplex due tipi
di bande: UHF e VHF.
Ora, dopo aver collegato la scheda TV all’antenna, si può incominciare con la scansione
dei canali digitando il seguente comando:
$ scan it-Ancona > channels.conf
In questo modo la procedura produrrà in output un file di testo, chiamato channels.conf,
contenente la lista dei canali per ogni MUX disponibile, completa dei relativi parametri.
Questo file sarà poi utilizzato, da altri programmi, per sintonizzare il canale desiderato.
Non è conveniente, almeno durante la fase di scansione, utilizzare l’antenna portatile
fornita in dotazione con la scheda; questo tipo di antenne infatti è spesso inadeguato e
non consente una ricezione corretta del segnale. E’ preferibile invece collegare la
scheda TV ad una presa a muro domestica; in questo modo sarà più probabile che
vengano riconosciuti tutti i canali disponibili nella zona.
Lo scan, mentre tenta di trovare i canali dalle frequenze del file iniziale, produce un
copioso output nella shell:
60
Capitolo 4: Installazione e gestione della scheda DVB-T
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 674000000 0 2 1 3 1 0 0
initial transponder 722000000 0 2 1 3 1 0 0
initial transponder 842000000 0 2 1 3 1 0 0
initial transponder 802000000 0 2 1 3 1 0 0
initial transponder 226500000 0 2 1 3 1 0 0
initial transponder 522000000 0 2 1 3 1 0 0
initial transponder 490000000 0 2 1 3 1 0 0
initial transponder 554000000 0 2 1 3 1 0 0
initial transponder 706000000 0 2 1 3 1 0 0
initial transponder 219500000 0 2 1 3 1 0 0
initial transponder 474000000 0 2 1 3 1 0 0
initial transponder 666000000 0 2 1 3 1 0 0
initial transponder 177500000 0 2 1 3 1 0 0
initial transponder 194500000 0 2 1 3 1 0 0
initial transponder 618000000 0 2 1 3 1 0 0
initial transponder 698000000 0 2 1 3 1 0 0
initial transponder 770000000 0 2 1 3 1 0 0
initial transponder 786000000 0 2 1 3 1 0 0
>>> tune to:
674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
722000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
0x0384 0x000b: pmt_pid 0x0120 Mediaset -- Rete 4 (running, scrambled)
0x0384 0x000c: pmt_pid 0x0121 (null) -- Italia 1 (running, scrambled)
0x0384 0x000d: pmt_pid 0x0122 (null) -- Teleradio Padre Pio (running,
scrambled)0x0384 0x000e: pmt_pid 0x0123 (null) -- Sportitalia
(running, scrambled)
0x0384 0x000f: pmt_pid 0x0124 (null) -- Si Live 24 (running,
scrambled)
0x0384 0x0010: pmt_pid 0x0125 (null) -- S16 (running)
0x0384 0x0011: pmt_pid 0x0126 (null) -- S17 (running)
0x0384 0x0012: pmt_pid 0x0127 (null) -- S18 (running)
0x0384 0x03e7: pmt_pid 0x0063 (null) -- DV (running)
Network Name 'Mux DFree'
>>> tune to:
61
Capitolo 4: Installazione e gestione della scheda DVB-T
802000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
802000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
226500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
226500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
522000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: filter timeout pid 0x0011
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x0010
>>> tune to:
490000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
490000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
0x0389 0x0015: pmt_pid 0x0100 Mediaset -- Canale 5 (running,
scrambled)
0x0389 0x0017: pmt_pid 0x0102 Mediaset -- Class News (running,
scrambled)
0x0389 0x0018: pmt_pid 0x0103 Mediaset -- Coming Soon (running)
0x0389 0x0019: pmt_pid 0x0104 Mediaset -- BBC World (running)
0x0389 0x001a: pmt_pid 0x0105 (null) -- Mediashopping (running,
scrambled)
0x0389 0x001b: pmt_pid 0x0106 (null) -- Sportitalia (running,
scrambled)
0x0389 0x001c: pmt_pid 0x0107 (null) -- SI Live 24 (running,
scrambled)
0x0389 0x001d: pmt_pid 0x0020 (null) -- s9 EI (running)
0x0389 0x001e: pmt_pid 0x0021 (null) -- s10 EI (running)
Network Name 'Mediaset2'
>>> tune to:
706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
0x0001 0x0d49: pmt_pid 0x0000 RAI -- RaiUno (running)
62
Capitolo 4: Installazione e gestione della scheda DVB-T
0x0001 0x0d4a: pmt_pid 0x0000 RAI -- RaiDue (running)
0x0001 0x0d4b: pmt_pid 0x0000 RAI -- RaiTre (running)
0x0001 0x0d52: pmt_pid 0x0000 RAI -- RaiUtile (running)
0x0001 0x0cf2: pmt_pid 0x0000 Rai -- FD LEGGERA (running)
0x0001 0x0d7b: pmt_pid 0x0000 Rai -- Rai HD 1 (not running)
0x0001 0x0d7c: pmt_pid 0x0000 Rai -- Rai HD 2 (not running)
0x0001 0x0d7d: pmt_pid 0x0000 Rai -- Rai HD 3 (not running)
0x0001 0x0d7e: pmt_pid 0x0000 Rai -- Rai HD 4 (not running)
0x0001 0x0d7f: pmt_pid 0x0000 Rai -- Rai HD 5 (not running)
0x0001 0x0d80: pmt_pid 0x0000 Rai -- Rai HD 6 (not running)
0x0001 0x0d81: pmt_pid 0x0000 Rai -- Rai HD 7 (not running)
0x0001 0x0d82: pmt_pid 0x0000 Rai -- Rai HD 8 (not running)
0x0001 0x0d83: pmt_pid 0x0000 Rai -- Rai HD 9 (not running)
0x0001 0x0d84: pmt_pid 0x0000 Rai -- Rai HD 10 (not running)
0x0001 0x0d79: pmt_pid 0x0000 Rai -- Rai Test 1 (not running)
0x0001 0x0d7a: pmt_pid 0x0000 Rai -- Rai Test 2 (not running)
WARNING: filter timeout pid 0x02bc
WARNING: filter timeout pid 0x02c6
WARNING: filter timeout pid 0x02c4
WARNING: filter timeout pid 0x02c2
WARNING: filter timeout pid 0x02c0
WARNING: filter timeout pid 0x02be
WARNING: filter timeout pid 0x02bb
WARNING: filter timeout pid 0x02c3
WARNING: filter timeout pid 0x02bf
WARNING: filter timeout pid 0x02c5
WARNING: filter timeout pid 0x02bd
WARNING: filter timeout pid 0x02c1
Network Name 'Rai'
>>> tune to:
219500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
219500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
474000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QPSK:TRANSMIS
SION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
474000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QPSK:TRANSMIS
SION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
666000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
666000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
63
Capitolo 4: Installazione e gestione della scheda DVB-T
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
177500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
177500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
194500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
194500000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: filter timeout pid 0x0011
WARNING: filter timeout pid 0x0000
WARNING: filter timeout pid 0x0010
>>> tune to:
698000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
698000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
>>> tune to:
786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to:
786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSM
ISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!
dumping lists (35 services)
Done.
Listato 4.6: Output del programma Scan
64
Capitolo 4: Installazione e gestione della scheda DVB-T
Osservando l’output del comando si può notare che all’inizio vengono fornite alcune
informazioni sui transponder utilizzati, poi il programma inizia ad analizzare tutte le
frequenze una per una. Per ogni frequenza esaminata, se la scansione fallisce viene
visualizzato un avvertimento (WARNING:>>>tuning failed!!!). Lo scan però non si
interrompe e la ricerca viene ripetuta una seconda volta. Se questa fallisce di nuovo si
passa ad analizzare la frequenza successiva. Se invece lo scanning ha successo viene
elencata una lista dei canali trovati completa di PID, nome del canale e nome del
network che li trasmette. Alla fine, il file di configurazione che si ottiene è quello
indicato nel Listato 4.7:
Rete
4:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:513:660:11
Italia
1:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:512:650:12
Teleradio Padre
Pio:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TR
ANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:514:670:13
Sportitalia:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:515:680:
14
Si Live
24:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:526:790:15
S16:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TR
ANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:16
S17:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TR
ANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:17
S18:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TR
ANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:18
DV:842000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:999
Canale
5:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:512:650:21
Class
News:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:T
RANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:514:670:23
Coming
Soon:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:T
RANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:515:680:24
BBC
World:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:
TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:516:690:25
Mediashopping:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2
:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:517:70
65
Capitolo 4: Installazione e gestione della scheda DVB-T
0:26
Sportitalia:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:Q
AM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:518:710:
27
SI Live
24:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:519:720:28
s9
EI:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:29
s10
EI:554000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:30
RaiUno:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64
:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:512:650:3401
RaiDue:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64
:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:513:651:3402
RaiTre:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64
:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:514:652:3403
RaiUtile:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_
64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:523:604:341
0
FD
LEGGERA:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_6
4:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:673:3314
Rai HD
1:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3451
Rai HD
2:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3452
Rai HD
3:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3453
Rai HD
4:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3454
Rai HD
5:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3455
Rai HD
6:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3456
Rai HD
7:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3457
Rai HD
8:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3458
Rai HD
9:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
66
Capitolo 4: Installazione e gestione della scheda DVB-T
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3459
Rai HD
10:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRA
NSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3460
Rai Test
1:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3449
Rai Test
2:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRAN
SMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:3450
Listato 4.7: File channels.conf
Il formato del file channels.conf è stato descritto anch’esso al Paragrafo 2.5.1, dove
viene data anche una breve spiegazione dei valori fondamentali che lo costituiscono.
C’è da segnalare che, uno o entrambi i campi che riguardano il PID dell’audio e del
video di un canale potrebbe assumere il valore zero. Questo è quello che accade ad
esempio per tutti i canali Rai HD e Rai Test. Le cause di questo comportamento sono da
imputare a tre cause, diverse a seconda di quale dei PID vale zero:
•
se il PID video è 0 mentre il PID audio è diverso da zero, significa che molto
probabilmente si tratta di un canale radiofonico. Questo è quello che accade per i
PID di FD Leggera che infatti è proprio una radio;
•
se al contrario è il PID audio ad essere a 0 significa che lo scan ha dei problemi
ad individuare il flusso audio del rispettivo canale. Questo accade spesso,
probabilmente a causa di un bug all’interno del programma, quando l’audio del
canale viene trasmesso in formato AC3 anziché MPEG. In questo caso è
necessario modificare manualmente il file channels.conf;
•
se entrambi i PID sono pari a zero invece vuol dire che lo scan ha rilevato un
segnale troppo debole per la ricezione oppure che si tratta di un canale di test o
non ancora utilizzato. In pratica il canale è presente nella tabella PAT dei servizi
trasmessi ma non ha associato nessun flusso audio e video.
4.4.2 Zap
Il programma zap, o più precisamente tzap per il DVB-T, già introdotto nel Paragrafo
2.5.2, serve per effettuare la sintonizzazione dei canali televisivi e l’analisi delle
caratteristiche del segnale. Come già accennato, per funzionare con successo il
programma ha bisogno del file di configurazione dei canali (channels.conf). Questo,
67
Capitolo 4: Installazione e gestione della scheda DVB-T
dopo essere stato creato dall’utility scan, deve essere collocato dentro la directory
nascosta contenuta nella home e chiamata .tzap:
$ mkdir ~/.tzap
$ cp channels.conf /.tzap/
Una volta fatto questo il programma è pronto all’uso. Per farlo partire basta digitare il
comando tzap seguito dal nome del canale che si vuole esaminare.
4.4.3 Prove di sintonizzazione dei canali
In questo paragrafo viene analizzata la qualità del segnale di due emittenti televisive,
utilizzando le informazioni fornite dal programma tzap. I due canali in questione sono
Rete 4 e Repubblica TV. Il primo fa parte del MUX di trasmissione chiamato Dfree,
caratterizzato da una copertura attuale molto ampia, pari a circa il 73%. Il secondo
invece fa parte del MUX All Music, con una copertura molto minore.
Figura 4.6: Rete4 e Repubblica TV
linuxbox@linuxbox-desktop:~$ tzap 'rete 4'
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 842000000 Hz
video pid 0x0201, audio pid 0x0294
status 00|signal 9494|snr 4949|ber 0001fffe|unc 00000000|
status 1f|signal 9393|snr fefe|ber 00000036|unc 00000047| FE_HAS_LOCK
status 1f|signal 9393|snr fefe|ber 0000003c|unc 00000000| FE_HAS_LOCK
status 1f|signal 9393|snr fefe|ber 00000044|unc 00000000| FE_HAS_LOCK
status 1f|signal 9292|snr fefe|ber 0000004c|unc 00000000| FE_HAS_LOCK
status 1f|signal 9393|snr fefe|ber 00000042|unc 00000000| FE_HAS_LOCK
linuxbox@linuxbox -desktop:~$ tzap 'repubblica tv'
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 618000000 Hz
video pid 0x1f42, audio pid 0x1f43
68
Capitolo 4: Installazione e gestione della scheda DVB-T
status 00|signal 8f8f|snr 8888|ber 0001fffe|unc
status 1f|signal 8e8e|snr 9a9a|ber 0001fffe|unc
status 0d|signal 8f8f|snr 6767|ber 0001fffe|unc
status 1f|signal 8e8e|snr f3f3|ber 00011a30|unc
status 1f|signal 8e8e|snr f1f1|ber 000120de|unc
status 1f|signal 8e8e|snr f1f1|ber 000123a0|unc
Listato 4.8: Confronto tra i canali Rete4 e Repubblica TV
00000000|
ffffffff|
ffffffff|
ffffffff|
ffffffff|
ffffffff|
FE_HAS_LOCK
FE_HAS_LOCK
FE_HAS_LOCK
FE_HAS_LOCK
Dalla visione dei due canali (vedi Figura 4.6) risulta subito evidente la differenza che
esiste rispetto alla qualità del segnale ricevuto. I dati provenienti da tzap (Listato 4.8), in
pratica, confermano questa impressione. Rete 4, rispetto a Repubblica TV, presenta dei
valori più alti per quanto riguarda la forza del segnale. Questi però, come già spiegato
precedentemente, non sono sufficienti a stabilire la reale qualità del segnale poiché un
valore “8f8f”, fatto segnare da Repubblica TV, potrebbe anche essere considerato
buono. Analizzando poi il rapporto S/N, la differenza tra i due canali si fa più marcata.
Il secondo inoltre presenta anche dei valori oscillatori mentre Rete 4 invece è stabile.
Per quanto riguarda il tasso di errore, il primo canale analizzato presenta dei valori
molto bassi mentre il secondo è afflitto da un tasso di qualche ordine di grandezza più
elevato. Significativo infine, è il numero di blocchi non corretti che nel caso di Rete 4 è
pari a zero mentre Repubblica TV raggiunge il fondo scala.
Per valutare le capacità di ricezione dell’antenna portatile omnidirezionale, fornita a
corredo con la scheda, è stata effettuata un’altra prova con tzap. Il canale sintonizzato è
sempre Rete 4 ma questa volta si è utilizzata questa antenna anziché la classica presa a
muro. Il risultato finale, come si evince confrontando i dati forniti da tzap (vedi Listato
4.9), è inequivocabile. Il segnale di Rete 4, che prima risultava più che buono, con
l’antenna portatile è in pratica non sintonizzabile. Esso, infatti, presenta dei valori anche
peggiori del segnale di Repubblica TV, ma soprattutto accade che il frontend della
scheda non riesce a sintonizzarsi ed a bloccare il segnale.
linuxbox@linuxbox-desktop:~$ tzap 'rete 4'
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 842000000 Hz
video pid 0x0201, audio pid 0x0294
status 00|signal 7878|snr 3f3f|ber 0001fffe|unc 00000000|
status 1f|signal 7777|snr f7f7|ber 00019fa0|unc ffffffff| FE_HAS_LOCK
status 01|signal 7676|snr 4a4a|ber 0001f002|unc ffffffff|
status 1f|signal 7777|snr f7f7|ber 0001a1ec|unc ffffffff| FE_HAS_LOCK
status 00|signal 7575|snr 6464|ber 0001fffe|unc 00000000|
status 1f|signal 7575|snr f6f6|ber 0001b78a|unc ffffffff| FE_HAS_LOCK
Listato 4.9: Parametri del segnale ricevuto con antenna portatile
69
Capitolo 4: Installazione e gestione della scheda DVB-T
4.5 Visualizzazione della TV
Dopo che la scheda è stata installata correttamente e che la fase di test è andata a buon
fine, si può finalmente usufruire della scheda TV per la visione dei canali televisivi in
digitale. Per farlo è necessario un player multimediale corredato con le relative librerie
per la gestione e la decodifica del Transport Stream MPEG-2. Tra i vari software a
disposizione è stato scelto Gxine. Questo, in realtà, è solo un frontend grafico basato su
Gnome del software xine, un riproduttore multimediale per Linux rilasciato sotto la
licenza GNU General Public Licence. Xine supporta l’esecuzione di CD audio, VCD,
DVD e la maggior parte dei formati audio e video disponibili. Il programma è costituito
principalmente dalla libreria condivisa chiamata xine-lib, alla quale poi si appoggia la
maggior parte dei frontend grafici diffusi per il sistema operativo Linux. Questo player
è stato scelto perché, oltre alla riproduzione dei filmati, esso consente di utilizzare la
scheda TV per la visualizzazione dei vari canali televisivi.
Figura 4.7: Finestra di Gxine con relativa Playlist
4.5.1 Impostazione di Gxine
Innanzitutto si deve precisare che Gxine non implementa ne gestisce nessuna scansione
per la ricerca dei canali televisivi. Per funzionare necessita invece del file channels.conf,
quello creato in precedenza tramite l’utility scan (vedi Paragrafo 4.4.1). Da questo file
Gxine ricava i PID dei programmi televisivi e tramite le sue librerie (xine-lib)
decodifica il segnale MPEG-2 proveniente dalla scheda. Il file, per essere individuato
correttamente, deve essere posto nella directory di default del programma. Da shell,
posizionandosi nel percorso dove è stato creato il file di configurazione, per copiare il
file nel percorso giusto si può digitare il comando
70
Capitolo 4: Installazione e gestione della scheda DVB-T
$ cp channels.conf ~/.xine
In seguito, per iniziare la visione della televisione digitale, una volta avviato il player
Gxine, è sufficiente selezionare, dal menu File, l’opzione DVB. A questo punto inizia la
riproduzione dell’ultimo canale che era stato visto in precedenza, o in alternativa, il
primo canale nella lista di channels.conf. Per avviare più rapidamente la riproduzione
del segnale DVB-T in Gxine, è possibile utilizzare questo semplice comando:
$ gxine -f ‘dvb:RaiUno’
Con questo il player inizia la riproduzione, a pieno schermo, del canale desiderato, in
questo caso RaiUno. Se invece si vuole sintonizzare l’ultimo programma visto in
precedenza, è possibile omettere dal comando il nome del canale. Associando questo
comando ad una icona del Desktop è possibile, con un solo click, iniziare la visione
della TV digitale terrestre. Un’altra soluzione è invece quella di indicare questo
programma come uno dei servizi da eseguire all’avvio del sistema.
4.5.2 Uso del telecomando
Per poter utilizzare il telecomando con Gxine è necessario accedere alla schermata di
configurazione delle scorciatoie, attraverso il menu File/Configura…, ed impostare i
comandi desiderati. Il telecomando fornito con la scheda ASUS non è del tutto
supportato. Esso infatti presenta dei tasti specifici che funzionano soltanto con il
software a corredo con la scheda. I comandi principali invece, come ad esempio le
quattro frecce direzionali ed il pulsante Enter, vengono riconosciuti senza alcun
problema. Impostare il telecomando è importante perché Gxine implementa un menu di
scelta dei canali che appare in sovraimpressione sullo schermo quando si preme la
freccia avanti o indietro. In questo modo, per cambiare canale, non è necessario aprire
ogni volta la finestra di playlist. Questo menu infatti può essere gestito comodamente
con il telecomando.
71
Capitolo 4: Installazione e gestione della scheda DVB-T
Figura 4.8: Menu in sovraimpressione di Gxine
4.5.3 Registrazione della TV
Uno dei vantaggi di avere un sistema per la ricezione della televisione digitale terrestre,
integrato in un PC è proprio la presenza di un Hard Disk. Questo può essere sfruttato
infatti per registrare i programmi desiderati. Come già detto precedentemente, l’utility
tzap è in grado di poter ridirigere l’output della scheda alla periferica virtuale dvr, che
viene poi utilizzata per la registrazione. Ad esempio, per registrare quello che viene
trasmesso in questo momento su Raiuno è sufficiente digitare:
$ tzap -r
‘RaiUno’
In questo modo, grazie all’opzione “-r”, si abilita lo stream nella periferica dvr di
default, individuata dal file /dev/dvb/adapter0/dvr0. Per registrare il flusso si utilizza poi
il comando:
$ cp /dev/dvb/adapter0/dvr0 Raiuno.ts
A questo punto il programma viene salvato nel file indicato della directory corrente.
Come estensione del file si è scelto di scrivere “.ts” per indicare che si tratta di un
Transport Stream ma in realtà è possibile anche omettere questa dicitura. Per
interrompere la registrazione è sufficiente premere la combinazione di tasti Ctrl+C.
L’utility tzap in realtà non fornisce molte funzionalità ma effettua correttamente i
compiti per cui è stato progettato, senza un eccessivo dispendio di risorse.
Un altro software in grado di registrare la TV su disco rigido è Dvbstream. Esso è
presente nel repository Universe di Ubuntu quindi è facilmente ottenibile grazie al
72
Capitolo 4: Installazione e gestione della scheda DVB-T
gestore dei pacchetti APT. Una volta installato, il programma si esegue tramite la linea
di comando. Per la registrazione del canale, in questo caso, è necessario conoscere i
parametri di modulazione e i valori del PID video ed audio del canale a cui si è
interessati. Il funzionamento di questo software può essere riassunto dal seguente
comando di base:
$ dvbstream -f “frequenza canale” -tm 8 “PID video” “Pid
audio” -o > “nome file”
A questo vanno poi sostituiti di volta in volta i vari parametri specifici del programma
TV desiderato. Per quanto riguarda la modulazione, i valori adottati in Italia
corrispondono a tutti quelli che il programma considera di default, eccetto il modo di
trasmissione che deve essere infatti specificato esplicitamente (-tm 8). Una volta che
tale comando è stato digitato, Dvbstream si occupa del settaggio del frontend e, una
volta ricevuto il valore FE_HAS_LOCK, inizia la registrazione.
4.6 Analisi delle DVB-SI con Dvbsnoop
Grazie al programma descritto al Paragrafo 2.5.3, che consente di analizzare il flusso
digitale proveniente dalla scheda DVB, è possibile visualizzare e decodificare le DVB
Service Information. Queste sono tutte quelle tabelle, definite nello standard DVB-SI ed
illustrate al Paragrafo 1.4.3, che il DVB utilizza per decodificare il Transport Stream e
per veicolare alcune informazioni aggiuntive al flusso video ed audio. Per lo studio
pratico di questi flussi informativi si è utilizzato il programma Dvbsnoop per
decodificare gli stream trasmessi dal MUX-A della Rai. La scelta si è basata soltanto sul
fatto che questa rete digitale, in zona, è una delle migliori per quanto riguarda la qualità
di ricezione. Dato che, come già detto in precedenza, Dvbsnoop non gestisce il settaggio
del frontend, questa operazione è stata effettuata grazie a tzap. In pratica, mentre
l’utility in questione sintonizzava uno dei canali facenti parte del MUX Rai, il TS
MPEG-2 in uscita dalla scheda è stato analizzato con Dvbsnoop.
Prima di tutto, per venire a conoscenza di quali flussi vengono trasmessi, è stata
effettuata una scansione di tutti i PID disponibili, tramite il seguente comando che ha
generato l’output del Listato 4.10:
$ dvbsnoop -s pidscan
73
Capitolo 4: Installazione e gestione della scheda DVB-T
--------------------------------------------------------Transponder PID-Scan...
--------------------------------------------------------PID found:
0 (0x0000) [SECTION: Program Association Table (PAT)]
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, present/following]
PID found:
20 (0x0014) [SECTION: Time Date Table (TDT)]
PID found:
21 (0x0015) [SECTION: ITU-T Rec. H.222.0|ISO/IEC13818
reserved]
PID found: 256 (0x0100) [SECTION: Program Map Table (PMT)]
PID found: 257 (0x0101) [SECTION: Program Map Table (PMT)]
PID found: 258 (0x0102) [SECTION: Program Map Table (PMT)]
PID found: 282 (0x011a) [SECTION: Program Map Table (PMT)]
PID found: 288 (0x0120) [SECTION: Program Map Table (PMT)]
PID found: 512 (0x0200) [PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or
ISO/IEC 11172-2 video stream]
PID found: 513 (0x0201) [PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or
ISO/IEC 11172-2 video stream]
PID found: 514 (0x0202) [PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or
ISO/IEC 11172-2 video stream]
PID found: 523 (0x020b) [PES: ITU-T Rec. H.262 | ISO/IEC 13818-2 or
ISO/IEC 11172-2 video stream]
PID found: 576 (0x0240) [PES: private_stream_1]
PID found: 577 (0x0241) [PES: private_stream_1]
PID found: 578 (0x0242) [PES: private_stream_1]
PID found: 589 (0x024d) [PES: private_stream_1]
PID found: 604 (0x025c) [PES: ISO/IEC 13818-3 or ISO/IEC 11172-3
audio stream]
PID found: 650 (0x028a) [PES: ISO/IEC 13818-3 or ISO/IEC 11172-3
audio stream]
PID found: 651 (0x028b) [PES: ISO/IEC 13818-3 or ISO/IEC 11172-3
audio stream]
PID found: 652 (0x028c) [PES: ISO/IEC 13818-3 or ISO/IEC 11172-3
audio stream]
PID found: 673 (0x02a1) [PES: ISO/IEC 13818-3 or ISO/IEC 11172-3
audio stream]
PID found: 2003 (0x07d3) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 2004 (0x07d4) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 2021 (0x07e5) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 2022 (0x07e6) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 2023 (0x07e7) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 2031 (0x07ef) [SECTION: DSM-CC- Download Data Messages DDB]
PID found: 3010 (0x0bc2) [SECTION: MHP- Application Information Table]
PID found: 3020 (0x0bcc) [SECTION: MHP- Application Information Table]
PID found: 3030 (0x0bd6) [SECTION: MHP- Application Information Table]
PID found: 3040 (0x0be0) [SECTION: MHP- Application Information Table]
Listato 4.10: Scansione dei PID con Dvbsnoop
74
Capitolo 4: Installazione e gestione della scheda DVB-T
La scansione è molto utile perché oltre a generare l’elenco dei PID trasmessi, fornisce
anche una descrizione di quello che ognuno di essi contiene, in modo che si possa
direttamente andare ad analizzare il flusso cercato. Il MUX-A Rai è quello che trasmette
i canali TV Raiuno, Raidue, Raitre, Rai Utile e il canale radio chiamato FD Leggera. Si
può notare infatti che tramite la scansione dei PID sono stati trovati cinque stream audio
e solo quattro stream video.
I flussi trovati sono di due tipi diversi: section e PES. Il primo tipo rappresenta le tabelle
informative del DVB e per decodificarle è necessario, con Dvbsnoop, utilizzare
l’opzione “-s sec”; in realtà non è necessario specificarla poiché questa è già l’opzione
predefinita. Per la decodifica invece dei PES MPEG-2 si utilizza l’opzione “-s pes”. In
seguito si sono analizzati alcuni di questi flussi, in modo da comprendere meglio la
struttura del DVB. Più in particolare, lo studio si è soffermato maggiormente sul canale
Raiuno, così da verificare i passaggi che, partendo dalla PAT, portano alla decodifica
del video e dell’audio di questo programma. Tutto l’output prodotto dal programma
Dvbsnoop, utilizzando i comandi indicati, lo si può trovare nell’Appendice.
4.6.1 Program Association Table
$ dvbsnoop 0
La Program Association Table (PAT) si trova sempre al PID numero zero. Questa
tabella elenca i programmi TV e i servizi presenti nel Transport Stream dopo che è stato
multiplexato. Per ognuno di questi viene fornito il riferimento, tramite indicazione del
PID, con cui recuperare la tabella dettagliata di ogni singolo canale, la PMT. Nella
PAT, lo standard vuole che il record numero zero indichi sempre il PID della tabella
NIT. Le righe seguenti invece sono libere e indicano i riferimenti per andare a trovare le
PMT dei canali trasmessi. La tabella PAT è indicizzata a seconda del
“Program_number”; per ognuno di questi è indicato il numero del PID. Il
“Program_number” è fondamentale poiché tutte le successive tabelle del DVB-SI
utilizzeranno questo numero per indicare a quale canale o servizio si riferiscono. Il
canale Raiuno ad esempio, è quello individuato dal numero 3401, a cui corrisponde la
tabella PMT che può essere filtrata dal TS attraverso il PID 258.
75
Capitolo 4: Installazione e gestione della scheda DVB-T
4.6.2 Network Information Table
$ dvbsnoop 16
La Network Information Table (NIT) si trova di norma al PID 16. Questa tabella
contiene tutte le informazioni che riguardano la rete in questione. Viene indicato il
nome del Network, in questo caso Rai, e tutti i parametri di modulazione che vengono
utilizzati. Per ognuno di questi parametri vengono impiegati due byte, che sono
caratterizzati da dei valori standard, in modo che possano essere facilmente decodificati.
Ad esempio, per quanto riguarda la costellazione, il valore esadecimale 0x00 significa
QPSK mentre 0x02 significa QAM64. In realtà non è necessario conoscere i valori
standard perché Dvbsnoop li decodifica automaticamente.
4.6.3 Service Description Table
$ dvbsnoop 17
La Service Description Table (SDT) elenca le informazioni riguardanti i singoli servizi
trasmessi. Nel MUX-A Rai si trova al PID 17. Questa tabella è indicizzata secondo il
“Service_ID”, che corrisponde al “Program_number” della PAT. Per ogni record viene
indicato il nome del fornitore ed il nome del servizio. Inoltre sono presenti ulteriori
informazioni sullo stato di servizio e sulla cifratura. Anche se prima era già stato detto
che la rete Raiuno era identificata dal numero 3401, questa informazione era stata
ottenuta analizzando già in precedenza la SDT. Solo in questa tabella infatti vengono
indicati i nomi dei canali, mentre nelle altre è indicato soltanto l’ID di servizio.
4.6.4 Event Information Table
$ dvbsnoop 18
La Event Information Table (EIT) contiene la programmazione degli eventi di ogni
singolo canale. Viene mostrato, in ordine cronologico, l’evento corrente, il prossimo, ed
altri eventi programmati. Per ognuno di essi è indicata la data e l’ora di inizio, la durata,
lo stato corrente, il nome dell’evento ed anche una breve descrizione opzionale. La EIT
viene spesso utilizzata da vari software del DVB-T per compilare la EPG (Electronic
Program Guide), la guida elettronica ai programmi. Questo tipo di informazioni di
servizio, dato che la mole di dati è più elevata, viene veicolata in modo diverso nel TS.
Le altre tabelle infatti vengono contenute interamente in un pacchetto che viene ripetuto
76
Capitolo 4: Installazione e gestione della scheda DVB-T
nello stream di trasporto ad intervalli regolari. La EIT invece è composta di un
pacchetto per ogni evento, quindi occorre più tempo prima che queste informazioni
vengano ripetute.
4.6.5 Time and Date Table
$ dvbsnoop 20
La Time and Date Table (TDT) indica semplicemente la data e l’ora correnti nel fuso
orario UTC (Coordinated Universal Time) che è il fuso orario di riferimento per tutti gli
altri fusi orari del mondo ed è calcolato mediante orologi atomici. Nel caso in questione
(vedi Appendice) indica le 08:45 UTC del 17 settembre 2007, cioè le 10:45 dell’ora
italiana, poiché il fuso orario nazionale è UTC+1 ed inoltre in questo periodo è in vigore
l’ora legale.
4.6.6 Program Map Table
$ dvbsnoop 258
La Program Map Table (PMT) contiene la lista degli Elementary Stream che
compongono un singolo canale. La PMT individuata dal PID 258 ha il
“Program_number” 3401; questo indica che si tratta della tabella di Raiuno. Di seguito
vengono elencati tutti gli stream relativi a questo canale: audio, video e dati. Per ognuno
di questi, oltre al PID, vengono dati anche alcuni parametri caratteristici, diversi a
seconda del tipo di segnale. Ad esempio, per il flusso video viene indicato il tipo di
codifica mentre per il flusso audio viene indicata la lingua. Da questa tabella è stata
prelevata l’indicazione di quali stream andare ad analizzare in seguito; questo per
studiare sempre il canale Raiuno.
4.6.7 Private stream
$ dvbsnoop -s pes 576
Il PID 576, identifica uno stream privato che è stato identificato, grazie alla PMT, come
il flusso che trasporta le informazioni sul teletext. In questo caso, dato che questi
pacchetti non contengono tabelle di servizio, vanno codificati con l’opzione “-s pes”. Il
flusso del televideo viene decodificato riga per riga. Per ognuno di esse, oltre ai dati veri
e propri, vengono indicate anche le informazioni sul numero di pagina, di sezione e
77
Capitolo 4: Installazione e gestione della scheda DVB-T
l’offset della riga di cui i dati fanno parte. La pagina del televideo in Figura 4.9 è quella
che corrisponde ai dati nell’appendice.
Figura 4.9: Pagina del televideo
4.6.8 Application Information Table
$ dvbsnoop 3010
La MHP - Application Information Table (AIT) viene utilizzata dal ricevitore per
gestire l’interattività, attraverso lo standard DVB-MHP. Questa tabella fornisce
informazioni utili per amministrare le applicazioni che vengono trasmesse attraverso il
protocollo DSM-CC. Vengono infatti indicate quali sono le Xlet che devono essere
avviate per prime e la loro posizione nel file system. In questo modo si possono
identificare i moduli del carosello che devono essere presi in considerazione. Ad
esempio, in quello che è stato acquisito con Dvbsnoop (vedi Appendice) viene indicata,
come classe iniziale, quella situata nella directory /ApplicationManager con il nome
tv.simple.launcher.Launcher. A questa viene inoltre associato il parametro di autostart,
cioè di avvio automatico alla sintonizzazione del canale.
4.6.9 Conditional Access Table
La Conditional Access Table (CAT) è la tabella che viene utilizzata per l’accesso
condizionato ai servizi. Essa in pratica fornisce alcune informazioni sul tipo di cifratura
utilizzato per codificare il flusso audio e video di un canale a pagamento. Inoltre,
78
Capitolo 4: Installazione e gestione della scheda DVB-T
contiene i riferimenti ad altri PID in cui è possibile trovare i dati necessari alla
decodifica del segnale. Il Transport Stream della Rai, dato che trasmette tutti i suoi
canali in chiaro, non contiene la tabella CAT. Per riuscire a studiarne una è stato
analizzato il MUX Mediaset. Nella CAT di quest’ultima viene indicato, come sistema di
codifica, il “Kudelski SA”. Questo è il nome di un gruppo leader nel settore della
codifica del segnale per la TV digitale terrestre. I suoi prodotti per l’accesso
condizionato vengono anche chiamati Nagra o Nagravision e sono proprio quelli
utilizzati da Mediaset per l’offerta dei canali premium.
4.7 Cenni di interattività
Come è stato visto nel Paragrafo 4.6.8, tra le varie informazioni che vengono trasmesse
attraverso il Transport Stream, sono presenti anche quelle che riguardano le applicazioni
interattive MHP. Attraverso un’applicazione open source chiamata Dvbdata, creata da
Richard Palmer e rilasciata sotto licenza GNU General Public License, è possibile
analizzare questo tipo di dati. Questa, per funzionare correttamente, necessita di una
libreria chiamata Libdsmcc, utile per la gestione del carosello DSM-CC. I sorgenti di
questa applicazione, si possono trovare al sito http://sourceforge.net/projects/libdsmcc/,
divisi in due pacchetti, uno contenente la libreria Libdsmcc e l’altro l’applicazione vera
e propria. Una volta scaricati, va prima decompresso l’archivio contenente i file della
libreria, in modo da formare la directory libdsmcc. La libreria deve poi essere compilata
tramite il comando make. Una volta terminato, va decompresso anche l’altro pacchetto,
quello chiamato dvbdata.tar.gz. A questo punto, prima di compilare anche questo, va
copiato il file libdsmcc.a, creato con la precedente operazione di make, all’interno della
directory dvbdata.
La parte di codice che si occupa del settaggio del frontend della scheda è lo stesso del
programma chiamato Dvbstream, descritto al Paragrafo 4.5.3; quindi per i parametri di
modulazione ci si può riferire direttamente a quello. La differenza consiste nel fatto che,
mentre Dvbstream richiedeva il PID video ed audio del canale, in questo caso Dvbdata,
per riconoscere il flusso DSM-CC, necessita dell’ID di servizio del canale. Questo
parametro può essere ottenuto analizzando le DVB-SI con Dvbsnoop (vedi paragrafo
4.6) oppure, più semplicemente, lo si può ricercare nel file channels.conf creato con la
utility scan (al Paragrafo 4.5.1). Questo parametro è l’ultimo valore che viene indicato
79
Capitolo 4: Installazione e gestione della scheda DVB-T
per ogni canale. Se, per esempio, si vuole acquisire il file system dell’MHP di Raiuno,
basta digitare il comando indicato nella prima riga del Listato 4.11.
$ ./dvbdata -f 706000 -tm 8 -pnr 3402 -n "RAI2"
Using DVB card "Philips TDA10046H DVB-T"
tuning DVB-T (in United Kingdom) to 706000000 Hz
polling....
Getting frontend event
FE_STATUS:
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC
Bit error rate: 1606
Signal strength: 34695
SNR: 65021
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI
FE_HAS_SYNC
Listato 4.11: Output del programma Dvbdata
Il programma, dopo aver settato correttamente la scheda, trova il flusso DSM-CC e
salva il file system trasmesso all’interno della directory temporanea /tmp/cache/RAI1.
Questi file verranno cancellati all’arresto del sistema, quindi, per conservarli, è
necessario effettuare una copia in un altro percorso del file system. Analizzando quello
che è stato acquisito, si nota una struttura ad albero composta principalmente da classi
java, file xml ed immagini. Le prime rappresentano proprio il codice delle applicazioni
interattive mentre gli altri file costituiscono tutte le informazioni di supporto ad esse.
Una volta ottenute, queste applicazioni necessitano, per poter funzionare, di un software
che gestisca le Xlet.
XleTView è un emulatore che consente di vedere le Xlet MHP utilizzando un normale
PC. Il software, sviluppato da Martin Sveden, viene rilasciato sotto licenza GNU
General Public License ed è scaricabile al sito http://xletview.sourceforge.net/, dove si
possono trovare sia i sorgenti che il programma già compilato. Dato che XleTView è
scritto in linguaggio Java, è indispensabile che nella macchina sia installata una JVM
(Java Virtual Machine) versione 1.4 o superiore. Questa, dato che è presente nel
repository di Ubuntu, può essere direttamente installata attraverso il gestore dei
pacchetti APT.
80
Capitolo 4: Installazione e gestione della scheda DVB-T
Una volta che il pacchetto compresso xletview-0.3.6.zip è stato scaricato, per far partire
il programma è sufficiente, da shell, posizionarsi nella directory dove l’archivio è stato
decompresso e digitare il seguente comando:
$ java -jar xletview.jar
A questo punto il programma va in esecuzione mostrando una finestra costituita da una
schermata vuota ed un telecomando (vedi Figura 4.10). Per poter eseguire una Xlet, si
accede al menu Applications/Manage applications e si inseriscono le Xlet da eseguire,
complete di nome e percorso. Poi si lancia l’applicazione desiderata selezionandola dal
menu Applications. Quando la Xlet viene avviata, oltre a quello che appare nella
schermata del programma, può produrre anche dell’output di servizio nella shell.
XleTView non è un implementazione né certificata né completa dell’MHP. Questo può
produrre numerosi problemi in quanto non emula fedelmente tutte le funzionalità che
può avere un set-top box, causando la generazione di numerosi errori ed eccezioni. Di
fatto non è garantito che una applicazione completa, scaricata attraverso la rete
broadcast, possa funzionare correttamente su questa piattaforma.
Figura 4.10: Finestra di XleTView
81
Capitolo 5: Conclusioni
5.1 Requisiti minimi
Quando si progetta un sistema minimale, la scelta dei componenti hardware giusti
diventa fondamentale. Risulta quindi necessario conoscere i requisiti minimi per far sì
che tutto funzioni in maniera ottimale. La distribuzione di Linux scelta, Ubuntu 6.06
LTS Desktop, in se per se non è un problema significativo. Questa infatti richiede
soltanto un processore a 400 MHz, 256 Mbyte di RAM ed un Hard Disk con almeno 3
GB liberi. Tale configurazione, risulta abbastanza economica se si considera che la
Microsoft dichiara, come requisiti minimi per il nuovo Windows Vista, un processore a
1GHz, 1 GB di RAM e 15 GB liberi nell’Hard Disk.
Ciò che invece innalza le richieste minime di hardware è la periferica per la TV. La
scheda scelta, infatti, la ASUS My Cinema-P7132 Hybrid, è una scheda di tipo budget
che quindi, come già affermato in precedenza, non gestisce la decodifica del TSMPEG2. Questo sposta un carico maggiore verso la CPU, che deve riuscire a
decodificare lo streaming in tempo reale per la visualizzazione. Per riuscire a gestire un
flusso medio di 5 Mbit al secondo, una CPU a 400 MHz non è sufficiente. Quindi, per
quanto riguarda il processore, i requisiti dichiarati dalla comunità di Ubuntu non sono
più da considerare minimi per un sistema di decodifica del DVB-T.
Consultando il manuale del produttore, i requisiti della scheda ASUS che vengono
dichiarati risultano particolarmente elevati. Viene infatti raccomandato l’utilizzo di un
processore Pentium 4 a 2.6 GHz, 256 MB di memoria di sistema ed una scheda video
con almeno 32 MB di memoria. Questi però sono riferiti all’utilizzo della scheda con il
sistema operativo Windows XP, quindi non corrispondono necessariamente a ciò che è
veramente indispensabile in un sistema Linux minimale. Purtroppo però non viene data
nessun’altra indicazione per quanto riguarda ambienti di lavoro alternativi.
Per ottenere maggiori risposte è stata effettuata una ricerca sui requisiti di sistema
dichiarati da altri produttori di schede TV analoghe. Il risultato, che viene qua di seguito
riportato, risulta interessante:
82
Capitolo 5: Conclusioni
•
La Hauppauge dichiara che per la scheda WinTV-NOVA-T PCI è sufficiente un
Processore Pentium 3 a 733 MHz con 64 MB di RAM. Questa scheda ha però
un chip diverso, il Conexant cx2388x, ma con funzionalità analoghe. Per la
WinTV-HVR-1100, che è come la ASUS una scheda ibrida, le caratteristiche si
innalzano, per quanto riguarda il processore, a 1.5 GHz per la visione e
registrazione del DVB-T e fino a 2.8 GHz per la TV analogica.
•
La TechnoTrend TT-Budget T-1500 richiede anch’essa una CPU a 733 MHz. In
questo caso il risultato è ancora più significativo perché i dispositivi integrati
nella scheda sono il Philips SAA7146 e TDA10046H, che risultano
praticamente compatibili a quelli della ASUS. Per la TV ad alta definizione è
invece raccomandata una CPU a 2,4 GHz.
•
La scheda Compro VideoMate DVB-T 200, con chipset analogo alla scheda
adottata, richiede, per la visualizzazione della TV, un processore da 600 MHz e
128 MB di RAM. Viene però sottolineato che per altre attività, come la
registrazione del segnale analogico in qualità DVD, i requisiti per la CPU
salgono fino ad una velocità di 1.7 GHz.
•
Tutti gli altri produttori invece dichiarano requisiti più elevati di quelli elencati
finora.
Una volta analizzati questi dati, si può facilmente affermare che i requisiti dichiarati
dall’ASUS sono troppo elevati e non rispecchiano la realtà di un sistema Linux
minimale. Essi possono però in parte essere giustificati dal fatto che la periferica My
Cinema-P7131H è una scheda ibrida e che quindi sono necessarie maggiori risorse per
gestire la tv analogica e l’acquisizione del video.
Un ulteriore dato sui requisiti minimi lo si può ricavare dalla macchina utilizzata per il
progetto. Questa è costituita (vedi Paragrafo 4.1.1) tra le altre cose, da un processore
Pentium 3 a 600 MHz. Durante la riproduzione, con segnale DVB-T buono, è stato
monitorato un carico medio della CPU di circa il 90%, che corrispondeva però ad una
decodifica video fluida, visivamente accettabile per la fruizione della televisione.
Inoltre, la memoria occupata dal sistema, durante la riproduzione, è risultata di 130 MB
ma, di questi, solo 42 MB vengono occupati dal processo Gxine, il player multimediale
utilizzato.
83
Capitolo 5: Conclusioni
Considerato ciò che viene dichiarato dai maggiori produttori ed analizzata l’esperienza
di laboratorio, si può affermare che, per la visione della TV digitale a definizione
standard 720 x 576 pixel, utilizzando una scheda DVB-T budget, è sufficiente una
macchina con la seguente configurazione:
•
processore Pentium 3 a 733 MHz o equivalente,
•
128 MB di memoria di sistema,
•
scheda video con almeno 32 MB di memoria e
•
3 GB di spazio libero su disco.
Infine c’è da dire che, per ridurre il carico di lavoro della CPU in modo da abbassare
ulteriormente i requisiti minimi, è possibile compiere due scelte opposte. La prima
consiste nel considerare l’acquisto di una scheda Full Featured in alternativa a quella di
tipo Budget. Questa soluzione infatti, grazie al decoder MPEG hardware, alleggerirebbe
di molto il lavoro del processore perché il flusso video, che viene fornito dalla
periferica, è già decodificato. Queste schede però, vendute ad un prezzo che si aggira
attorno ai 150-200 Euro, sono molto più costose sia delle schede budget che dei
tradizionali set-top box che si collegano alla TV. Per questo il loro acquisto non è
conveniente e di conseguenza queste periferiche sono difficili da trovare sul mercato.
La seconda soluzione possibile è quella di dotarsi di una scheda video con chip per la
decodifica hardware del flusso MPEG. Queste schede video, come la Dxr3 o la
Hollywood plus prodotte da Creative e Sigma, venivano vendute in passato insieme ai
primi lettori DVD per supportare i processori più lenti nella codifica dell’MPEG-2.
Attualmente questi modelli, con l’avanzare della tecnologia, non sono più sul mercato
ma, grazie all’avvento dell’HDTV, sono in questo momento in commercio alcune
schede nuove che consentono la codifica del segnale ad alta definizione.
5.2 Vantaggi e limiti della tecnologia
La TV digitale ha il vantaggio di permettere la trasmissione di un numero maggiore di
programmi televisivi rispetto a quanto era invece possibile con la TV analogica. Questo
risolve, in pratica, il problema del sovraffollamento delle frequenze terrestri che non
permetteva, fino ad ora, la fondazione di nuovi canali televisivi. Con la stessa larghezza
di banda (7 o 8 MHz) infatti, è possibile trasmettere dai 4 ai 6 canali digitali al posto di
uno solo analogico. Ad esempio in Italia, come già illustrato nel Paragrafo 1.4.7, i
84
Capitolo 5: Conclusioni
parametri di modulazione utilizzati consentono un flusso complessivo, per un singolo
canale, di circa 24 Mbit/s. Questo, grazie alla tecnica di multiplexing, può essere
suddiviso in 6 programmi da 4 Mbit/s, 4 programmi da 6 Mbit/s o qualsiasi altra
configurazione. Inoltre, dato che vengono utilizzate le stesse frequenze operative
dell’analogico, questo nuovo sistema risulta compatibile con il vecchio, quindi non
comporta la sostituzione degli apparati di trasmissione e ricezione come le antenne
domestiche direzionali di tipo Yagi o Log-periodiche.
La tecnologia digitale poi, grazie alla codifica in MPEG-2, consente una qualità delle
immagini nettamente superiore a quella dello standard analogico. Questa caratteristica è
particolarmente sentita in questi ultimi tempi in cui stanno prendendo piede i nuovi
televisori LCD ed al Plasma che garantiscono una definizione superiore ai normali CRT
(Catode Ray Tube). Proprio con questi apparati di ultima generazione si nota la
differenza che sussiste tra la TV tradizionale e il DVB, poiché, mentre con la prima si
notano disturbi e interferenze tra i canali, con il digitale terrestre invece, una volta che
l’intensità del segnale ha superato la soglia di ricezione, la qualità del video rimane
costante ed insensibile a disturbi esterni. In realtà, nei normali ricevitori l’uscita è
sempre dello standard PAL o NTSC, quello dalla tv analogica, ma questa può essere
sfruttata al massimo della qualità possibile.
Un ulteriore vantaggio della tv digitale terrestre riguarda la trasmissione del segnale. Il
DVB-T, infatti, necessita di una potenza di emissione inferiore per coprire la stessa
distanza raggiungibile con il segnale analogico. Questo consente una riduzione del
numero delle stazioni di trasmissione, con la conseguente diminuzione dei costi e
dell’inquinamento elettromagnetico. Oltretutto, grazie alla modulazione digitale
COFDM è possibile realizzare reti di diffusione a isofrequenza. Si può cioè utilizzare lo
stesso canale di trasmissione per aree adiacenti, senza che insorgano disturbi ed
interferenze. Questa ultima caratteristica consente anche di migliorare la copertura in
zone difficili da raggiungere, come valli e gallerie, utilizzando i Gap Filler. Questi
dispositivi sono dei piccoli ripetitori, a bassa potenza, che ricevono il segnale e lo
ritrasmettono alla stesa frequenza, senza quindi occupare bande aggiuntive.
Venendo ora al progetto vero e proprio, si può dire che l’utilizzo di una scheda TV da
installare in un PC, al posto di un set-top box collegato direttamente ad uno schermo
televisivo, consente di sfruttare tutte le potenzialità hardware e software che un
85
Capitolo 5: Conclusioni
computer può offrire, rispetto a quelle limitate dei decoder. I set-top box che vengono
venduti attualmente, infatti, non sono caratterizzati da una elevata qualità costruttiva e
di conseguenza offrono una ristretta capacità di calcolo e disponibilità di risorse. Questi
inoltre, sono sprovvisti di un sistema di memorizzazione permanente, come ad esempio
un hard disk, e ciò limita la personalizzazione e condizione le scelte per possibili
applicazioni future. Un sistema Ubuntu completo invece, anche se minimale, è dotato di
una potenza di calcolo che è di gran lunga superiore. Inoltre, con Linux, si ha un totale
controllo delle risorse della macchina e delle periferiche installate. È possibile infatti
effettuare numerosi test sul comportamento della scheda e sul segnale trasmesso,
analizzando sia i dati fisici che tutte le informazioni aggiuntive veicolate all’interno del
flusso MPEG. Questo garantisce quindi una piattaforma di studio, a basso costo, sullo
standard DVB-T.
Per quanto riguarda invece gli aspetti pratici, la presenza di un hard disk consente di
trasformare, ad un prezzo non troppo elevato, il PC in un Personal Video Recorder, in
grado di registrare e riprodurre, direttamente in formato digitale, tutto ciò che viene
trasmesso
dai
broadcaster
televisivi.
Inoltre,
collegando
alla
macchina
un
masterizzatore DVD, il sistema può funzionare anche da DVD Recorder, dotato di
caratteristiche superiori a quelli attualmente sul commercio, sia per quanto riguarda
l’hardware che il software. Ad esempio, su Linux esistono numerosi programmi che
forniscono la possibilità di authoring per i filmati. Va considerato poi che, una volta
interrotta la trasmissione in analogico, non sarà più possibile, con un solo decoder,
registrare un canale mentre se ne guarda un altro, a meno di non adottare un sistema
come questo.
Questa tecnologia, al momento, presenta però alcuni svantaggi. Il primo limite che si
incontra è la scarsa compatibilità delle schede TV con Linux. Tutti i maggiori
produttori, infatti, non forniscono alcun driver o firmware in grado di funzionare con
questo sistema operativo. È soltanto quindi grazie al lavoro svolto dalla comunità di
LinuxTV che è possibile utilizzare correttamente queste periferiche. La realizzazione di
driver compatibili con Linux però richiede tempo, quindi la maggior parte delle schede
nuove disponibili in commercio potrebbe non essere utilizzabile fino che non venga
realizzato un driver adeguato. L’acquisto della scheda TV si rivela così abbastanza
rischioso. Oltretutto, ogni scheda, se costituita da chip differenti, può avere una
86
Capitolo 5: Conclusioni
procedura di installazione diversa da quella illustrata nel Paragrafo 4.3, che va poi
analizzata caso per caso.
Un aspetto controverso di questo progetto riguarda invece l’utilizzo di apparecchi di
ricezione attraverso dispositivi mobili. Cioè in pratica, si tratta di utilizzare schede TV,
di tipo USB, con computer portatili. Il tipo di modulazione adottata dal DVB-T, infatti,
consente la possibilità di ricezione mobile, anche ad alta velocità, senza le
problematiche che caratterizzavano le normali trasmissioni analogiche. Infatti, è
sufficiente che l’intensità del segnale sia al di sopra della soglia di ricezione e che i
cammini multipli cadano all’interno dell’intervallo di guardia, per garantire una qualità
costante delle immagini. Il problema però è che la copertura del digitale terrestre, in
molte zone d’Italia, non è ancora sufficiente da garantire una buona ricezione neanche
attraverso le normali antenne domestiche. Di conseguenza, le antenne portatili
unidirezionali, dotate di una capacità di ricezione nettamente inferiore rispetto a quelle
fisse, non consentono, di fatto, di vedere nulla, come dimostrato anche nel Paragrafo
4.4.3. Si è quindi di fronte ad un dilemma. Da un lato il passaggio al digitale consente
una sensibile riduzione della potenza di trasmissione. Dall’altro, se si vuole usufruire
della ricezione mobile, che costituisce un valore aggiunto di questa tecnologia, è
necessario di nuovo aumentare la potenza del segnale o adottare una modulazione più
robusta che limita però la banda disponibile, in termini di bit rate.
Un altro aspetto controverso riguarda l’interattività. Questa consiste in pratica, grazie
all’utilizzo di un decoder munito di canale di ritorno, nella possibilità di interagire
attraverso il telecomando, con l’emittente televisiva. L’interattività rappresenta uno dei
principali vantaggi dell’adozione della televisione digitale. Questo perché, mentre con
la televisione analogica era consentita soltanto la ricezione del segnale, il digitale,
adottando lo standard DVB-MHP, permette ad esempio di partecipare a programmi
televisivi, eseguire operazioni bancarie (T-Banking) ed usufruire di molti altri servizi
aggiuntivi offerti dall’emittente. La problematica però sta nel fatto che finora non esiste
uno stack MHP certificato per una macchina Linux. Esistono soltanto dei software che
emulano il funzionamento dell’MHP, come XleTView e OpenMHP, ma questi sono
unicamente delle implementazioni incomplete, che mancano di numerose funzionalità.
Con XleTView infatti, durante l’esperimento, non si sono raggiunti risultati degni di
nota. Questo perché il programma si comporta bene per piccole applicazioni di una o
87
Capitolo 5: Conclusioni
più classi, ma presenta molte difficoltà con applicazioni più complesse, come sono
quelle trasmesse dalle emittenti televisive.
La motivazione della mancanza dell’MHP è da ricercarsi probabilmente nella debole
richiesta di mercato di questi dispositivi. Il sentimento di riluttanza, da parte degli
italiani, verso l’acquisto di un decoder per la televisione digitale terrestre si ripercuote,
infatti, anche nella vendita delle schede TV per PC. Questo è incentivato poi dalla
debole copertura del segnale, insufficiente per la ricezione con antenne portatili. È
verosimile che, in Italia, finché non verranno migliorati questi aspetti, il passaggio alla
nuova tecnologia digitale non potrà essere completato con successo. Di conseguenza il
sistema studiato in questa tesi ha, al momento, uno sbocco commerciale limitato. Detto
questo però, va considerato che, grazie anche all’avvento della televisione ad alta
definizione, il digitale rappresenta comunque il futuro delle trasmissioni terrestri, tanto
che il DVB Project sta già studiando un nuovo standard (DVB-T2), il cui ingresso sul
mercato è previsto per il 2009.
88
Appendice
PAT
-----------------------------------------------------------SECT-Packet: 00000001
PID: 0 (0x0000), Length: 44 (0x002c)
Time received: Mon 2007-09-17 10:33:54.725
-----------------------------------------------------------PID: 0 (0x0000) [= assigned for: ISO 13818-1 Program Association
Table (PAT)]
Guess table from table id...
PAT-decoding....
Table_ID: 0 (0x00) [= Program Association Table (PAT)]
section_syntax_indicator: 1 (0x01)
(fixed): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 41 (0x0029)
Transport_Stream_ID: 1 (0x0001)
reserved_2: 3 (0x03)
Version_number: 1 (0x01)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
Program_number: 0 (0x0000)
reserved: 7 (0x07)
Network_PID: 16 (0x0010)
Program_number: 3401 (0x0d49)
reserved: 7 (0x07)
Program_map_PID: 258 (0x0102)
Program_number: 3402 (0x0d4a)
reserved: 7 (0x07)
Program_map_PID: 257 (0x0101)
Program_number: 3403 (0x0d4b)
reserved: 7 (0x07)
Program_map_PID: 256 (0x0100)
[…]
Program_number: 3450 (0x0d7a)
reserved: 7 (0x07)
Program_map_PID: 700 (0x02bc)
CRC: 3883646850 (0xe77bbf82)
89
Appendice
NIT
PID: 16 (0x0010) [= assigned for: DVB Network Information Table
(NIT), Stuffing Table (ST)]
Guess table from table id...
NIT-decoding....
Table_ID: 64 (0x40) [= Network Information Table (NIT) - actual
network]
section_syntax_indicator: 1 (0x01)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
Section_length: 140 (0x008c)
Network_ID: 418 (0x01a2) [= >>ERROR: not (yet) defined... Report!<<]
reserved_3: 3 (0x03)
Version_number: 24 (0x18)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
reserved_4: 15 (0x0f)
Network_descriptor_length: 5 (0x0005)
DVB-DescriptorTag: 64 (0x40) [= network_name_descriptor]
Descriptor_length: 3 (0x03)
Network_name: "Rai" -- Charset: Latin alphabet
reserved_5: 15 (0x0f)
Transport_stream_loop_length: 122 (0x007a)
[…]
Transport_stream_ID: 1 (0x0001)
Original_network_ID: 318 (0x013e) [= Eutelsat Satellite System
13°E | European Telecommunications Satellite Organization]
reserved_1: 15 (0x0f)
Transport_descriptor_length: 62 (0x003e)
DVB-DescriptorTag: 65 (0x41) [= service_list_descriptor]
Descriptor_length: 21 (0x15)
service_ID: 3401 (0x0d49)[ --> refers to PMT
program_number]
service_type: 1 (0x01) [= digital television service]
service_ID: 3402 (0x0d4a)[ --> refers to PMT
program_number]
service_type: 1 (0x01) [= digital television service]
service_ID: 3403 (0x0d4b)[ --> refers to PMT
program_number]
service_type: 1 (0x01) [= digital television service]
service_ID: 3410 (0x0d52)[ --> refers to PMT
program_number]
90
Appendice
service_type: 1 (0x01)
[= digital television service]
service_ID: 3314 (0x0cf2)[ --> refers to PMT
program_number]
service_type: 2 (0x02) [= digital radio sound service]
service_ID: 3450 (0x0d7a)[ --> refers to PMT
program_number]
service_type: 1 (0x01) [= digital television service]
service_ID: 3449 (0x0d79)[ --> refers to PMT
program_number]
service_type: 1 (0x01) [= digital television service]
DVB-DescriptorTag: 90 (0x5a) [=
terrestrial_delivery_system_descriptor]
Descriptor_length: 11 (0x0b)
Center frequency: 0x000186a0 (= 1000.000 kHz)
Bandwidth: 1 (0x01) [= 7 MHz]
priority: 1 (0x01) [= HP (high priority)]
Time_Slicing_indicator: 1 (0x01) [= Time Slicing is not
used.)]
MPE-FEC_indicator: 1 (0x01) [= MPE-FEC is not used.)]
reserved_1: 3 (0x03)
Constellation: 2 (0x02) [= 64-QAM]
Hierarchy information: 0 (0x00) [= non-hierarchical]
Code_rate_HP_stream: 1 (0x01) [= 2/3]
Code_rate_LP_stream: 0 (0x00) [= 1/2]
Guard_interval: 0 (0x00) [= 1/32]
Transmission_mode: 1 (0x01) [= 8k mode]
Other_frequency_flag: 0 (0x00)
reserved_2: 4294967295 (0xffffffff)
DVB-DescriptorTag: 131 (0x83)
[= User defined/ATSC
reserved]
Descriptor_length: 24 (0x18)
Descriptor-data:
0000: 0d 49 fc 01 0d 4a fc 02
13
.I...J...K...R..
0010: 0d 79 fc 14 0d 7a fc 15
.y...z..
CRC: 4073960607 (0xf2d3b49f)
91
0d 4b fc 03 0d 52 fc
Appendice
SDT
PID: 17 (0x0011) [= assigned for: DVB Service Description Table
(SDT), Bouquet Association Table (BAT)]
Guess table from table id...
SDT-decoding....
Table_ID: 66 (0x42) [= Service Description Table (SDT) - actual
transport stream]
section_syntax_indicator: 1 (0x01)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
Section_length: 159 (0x009f)
Transport_Stream_ID: 1 (0x0001)
reserved_3: 3 (0x03)
Version_number: 1 (0x01)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
Original_network_ID: 318 (0x013e) [= Eutelsat Satellite System 13°E
| European Telecommunications Satellite Organization]
reserved_4: 255 (0xff)
Service_id: 3401 (0x0d49) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 14 (0x000e)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 12 (0x0c)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 3 (0x03)
service_provider_name: "RAI" -- Charset: Latin alphabet
service_name_length: 6 (0x06)
Service_name: "RaiUno" -- Charset: Latin alphabet
Service_id: 3402 (0x0d4a) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 14 (0x000e)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 12 (0x0c)
service_type: 1 (0x01) [= digital television service]
92
Appendice
service_provider_name_length: 3 (0x03)
service_provider_name: "RAI" -- Charset: Latin alphabet
service_name_length: 6 (0x06)
Service_name: "RaiDue" -- Charset: Latin alphabet
Service_id: 3403 (0x0d4b) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 14 (0x000e)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 12 (0x0c)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 3 (0x03)
service_provider_name: "RAI" -- Charset: Latin alphabet
service_name_length: 6 (0x06)
Service_name: "RaiTre" -- Charset: Latin alphabet
Service_id: 3410 (0x0d52) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 16 (0x0010)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 14 (0x0e)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 3 (0x03)
service_provider_name: "RAI" -- Charset: Latin alphabet
service_name_length: 8 (0x08)
Service_name: "RaiUtile" -- Charset: Latin alphabet
[…]
CRC: 4859909 (0x004a2805)
93
Appendice
EIT
dvbsnoop V1.4.00 -- http://dvbsnoop.sourceforge.net/
-----------------------------------------------------------SECT-Packet: 00000004
PID: 18 (0x0012), Length: 59 (0x003b)
Time received: Mon 2007-09-17 10:40:24.580
-----------------------------------------------------------PID: 18 (0x0012) [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e) [= Event Information Table (EIT) - actual
transport stream, present/following]
section_syntax_indicator: 1 (0x01)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
Section_length: 56 (0x0038)
Service_ID: 3401 (0x0d49) [= --> refers to PMT program_number]
reserved_3: 3 (0x03)
Version_number: 3 (0x03)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 1 (0x0001)
Original_network_ID: 318 (0x013e) [= Eutelsat Satellite System 13°E |
European Telecommunications Satellite Organization]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e) [= Event Information Table (EIT) - actual
transport stream, present/following]
Event_ID: 5922 (0x1722)
Start_time: 0xd458085000 [= 2007-09-17 08:50:00 (UTC)]
Duration: 0x0000959 [= 00:09:59 (UTC)]
Running_status: 0 (0x00) [= undefined]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 29 (0x1d)
DVB-DescriptorTag: 77 (0x4d) [= short_event_descriptor]
Descriptor_length: 27 (0x1b)
ISO639_2_language_code: ita
event_name_length: 22 (0x16)
event_name: "Appuntamento al cinema" -- Charset: Latin
alphabet
text_length: 0 (0x00)
text_char: ""
CRC: 2335101803 (0x8b2ed36b)
94
Appendice
TDT
-----------------------------------------------------------SECT-Packet: 00000002
PID: 20 (0x0014), Length: 29 (0x001d)
Time received: Mon 2007-09-17 10:46:00.403
-----------------------------------------------------------0000: 73 70 1a d4 58 08 45 39 f0 0f 58 0d 49 54 41 02
sp..X.E9..X.ITA.
0010: 02 00 d4 81 01 00 00 01 00 d7 7f 60 44
...........`D
PID: 20 (0x0014) [= assigned for: DVB Time and Date Table (TDT),
Time Offset Table (TOT)]
Guess table from table id...
TOT-decoding....
Table_ID: 115 (0x73) [= Time Offset Table (TOT)]
section_syntax_indicator: 0 (0x00)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
Section_length: 26 (0x001a)
UTC_time: 0xd458084539 [= 2007-09-17 08:45:39 (UTC)]
reserved_3: 15 (0x0f)
Descriptors_loop_length: 15 (0x000f)
DVB-DescriptorTag: 88 (0x58) [= local_time_offset_descriptor]
Descriptor_length: 13 (0x0d)
Country_code: ITA
Country_region_ID: 0 (0x00)
reserved_1: 1 (0x01)
local_time_offset_polarity: 0 (= plus to UTC)
Local_time_offset: 02:00
Time_of_change: 0xd481010000 [= 2007-10-28 01:00:00 (UTC)]
Next_time_offset: 01:00
CRC: 3615449156 (0xd77f6044)
95
Appendice
PMT 258
PID: 258 (0x0102)
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: 266 (0x010a)
Program_number: 3401 (0x0d49)
reserved_2: 3 (0x03)
Version_number: 1 (0x01)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
reserved_3: 7 (0x07)
PCR PID: 512 (0x0200)
reserved_4: 15 (0x0f)
Program_info_length: 0 (0x0000)
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: 512 (0x0200)
reserved_2: 15 (0x0f)
ES_info_length: 5 (0x0005)
MPEG-DescriptorTag: 2 (0x02) [= video_stream_descriptor]
Descriptor_length: 3 (0x03)
multiple_frame_rate_flag: 1 (0x01)
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: 650 (0x028a)
reserved_2: 15 (0x0f)
ES_info_length: 6 (0x0006)
MPEG-DescriptorTag: 10 (0x0a) [=
ISO_639_language_descriptor]
Descriptor_length: 4 (0x04)
ISO639_language_code: ITA
Audio_type: 0 (0x00) [= undefined]
Stream_type: 11 (0x0b)
[= ISO/IEC 13818-6 DSM-CC U-N Messages]
96
Appendice
reserved_1: 7 (0x07)
Elementary_PID: 2001 (0x07d1)
reserved_2: 15 (0x0f)
ES_info_length: 14 (0x000e)
DVB-DescriptorTag: 82 (0x52)
stream_identifier_descriptor]
Descriptor_length: 1 (0x01)
component_tag: 4 (0x04)
MPEG-DescriptorTag: 19 (0x13)
carousel_identifier_descriptor]
Descriptor_length: 5 (0x05)
Carousel_id: 1 (0x00000001)
format_id: 0 (0x00)
[=
[=
DVB-DescriptorTag: 102 (0x66) [=
data_broadcast_id_descriptor]
Descriptor_length: 2 (0x02)
Data_broadcast_ID: 240 (0x00f0) [= MHP Object Carousel]
[…]
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: 576 (0x0240)
reserved_2: 15 (0x0f)
ES_info_length: 7 (0x0007)
DVB-DescriptorTag: 86 (0x56) [= teletext_descriptor]
Descriptor_length: 5 (0x05)
ISO639_language_code: ITA
Teletext_type: 1 (0x01) [= initial teletext page]
Teletext_magazine_number: 1 (0x01)
Teletext_page_number: 0 (0x00)
Stream_type: 5 (0x05) [= ITU-T Rec. H.222.0 | ISO/IEC 13818-1
private sections]
reserved_1: 7 (0x07)
Elementary_PID: 3010 (0x0bc2)
reserved_2: 15 (0x0f)
ES_info_length: 5 (0x0005)
DVB-DescriptorTag: 82 (0x52)
stream_identifier_descriptor]
Descriptor_length: 1 (0x01)
component_tag: 14 (0x0e)
DVB-DescriptorTag: 111 (0x6f)
application_signalling_descriptor]
Descriptor_length: 0 (0x00)
CRC: 2583213138 (0x99f8b452)
97
[=
[=
Appendice
AIT
PID: 3010 (0x0bc2)
Guess table from table id...
AIT-decoding....
Table_ID: 116 (0x74) [= MHP- Application Information Table (AIT)]
Section_syntax_indicator: 1 (0x01)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
section_length: 337 (0x0151)
test_application_flag: 0 (0x00)
application_type: 1 (0x0001) [= DVB-J application]
reserved_3: 3 (0x03)
Version_number: 0 (0x00)
Current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_section_number: 0 (0x00)
reserved_4: 15 (0x0f)
common_descriptors_length: 0 (0x0000)
reserved_5: 15 (0x0f)
application_loop_length: 324 (0x0144)
organisation_id: 1 (0x00000001)
appliction_id: 0 (0x0000) [= unsigned applications]
application_control_code: 1 (0x01) [= AUTOSTART]
reserved: 15 (0x0f)
application_descriptor_loop_length: 114 (0x0072)
MHP_AIT-DescriptorTag: 2 (0x02) [= Transport protocol
descriptor]
Descriptor_length: 5 (0x05)
protocol_id: 1 (0x0001) [= MHP Object Carousel]
transport_protocol_label: 0 (0x00)
remote_connection: 0 (0x00)
reserved: 127 (0x7f)
component_tag: 5 (0x05)
MHP_AIT-DescriptorTag: 0 (0x00) [= Application descriptor]
Descriptor_length: 9 (0x09)
application_profile_length: 5 (0x05)
application_profile: 1 (0x0001)
version.major: 1 (0x01)
version.minor: 0 (0x00)
version.micro: 2 (0x02)
service_bound_flag: 0 (0x00)
visibility: 3 (0x03) [= application visible to user and appl.
listening api]
reserved: 31 (0x1f)
application_priority: 0 (0x00)
98
Appendice
transport_protocol_label: 0 (0x00)
MHP_AIT-DescriptorTag: 1 (0x01) [= Application name
descriptor]
Descriptor_length: 16 (0x10)
ISO639_language_code: ITA
application_name_length: 12 (0x0c)
application_name: "RaiLauncher" -- Charset: Latin
alphabet no. 5
MHP_AIT-DescriptorTag: 3 (0x03)
descriptor]
Descriptor_length: 26 (0x1a)
parameter_length: 3 (0x03)
Parameter: "Rai"
parameter_length: 1 (0x01)
Parameter: "1"
parameter_length: 5 (0x05)
Parameter: "20000"
parameter_length: 3 (0x03)
Parameter: "6 7"
parameter_length: 9 (0x09)
Parameter: "UCT debug"
[= DVB-J application
MHP_AIT-DescriptorTag: 4 (0x04) [= DVB-J application location
descriptor]
Descriptor_length: 48 (0x30)
base_directory_length: 19 (0x13)
base_directory: "/ApplicationManager"
classpath_extension_length: 0 (0x00)
classpath_extension: ""
initial_class: "tv.simple.launcher.Launcher"
[…]
CRC: 451945869 (0x1af0258d)
99
Appendice
Televideo
Packet_start_code_prefix: 0x000001
Stream_id: 189 (0xbd) [= private_stream_1]
PES_packet_length: 1282 (0x0502)
reserved1: 2 (0x02)
PES_scrambling_control: 0 (0x00) [= not scrambled]
PES_priority: 0 (0x00)
data_alignment_indicator: 1 (0x01)
copyright: 0 (0x00)
original_or_copy: 1 (0x01)
PTS_DTS_flags: 2 (0x02)
ES_rate_flag: 0 (0x00)
additional_copy_info_flag: 0 (0x00)
PES_CRC_flag: 0 (0x00)
PES_extension_flag: 0 (0x00)
PES_header_data_length: 36 (0x24)
PTS:
Fixed: 2 (0x02)
PTS:
bit[32..30]: 2 (0x02)
marker_bit: 1 (0x01)
bit[29..15]: 1250 (0x04e2)
marker_bit: 1 (0x01)
bit[14..0]: 12253 (0x2fdd)
marker_bit: 1 (0x01)
==> PTS: 2188455901 (0x82712fdd) [= 90 kHz-Timestamp:
6:45:16.176]
stuffing bytes:
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
................
0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
...............
PES_data (private_stream_1):
EBU data:
data_identifier: 16 (0x10) [= EBU data EN 300 472
(teletext)]
…
data_unit_id: 2 (0x02) [= EBU Teletext non-subtitle data]
data_unit_length: 44 (0x2c)
Teletext data:
reserved: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 13 (0x0d)
frame_coding: 228 (0xe4) [= EBU Teletext]
=> decoded:
magazine number (X): 7 (0x07)
packet number (Y): 5 (0x0005) [= normal packet
intended for direct display]
packet data (parity stripped):
0000: 07 20 20 20 4f 67 67 69 20 07 44 6f 6d
100
Appendice
61 6e 69
74 69 17
.
Oggi .Domani
0010:
.Versanti.
0020:
20 20 20 20 20 20 03 56
65 72 73 61 6e
23 23 20 20 20 20 20 20
##
data_unit_id: 2 (0x02) [= EBU Teletext non-subtitle data]
data_unit_length: 44 (0x2c)
Teletext data:
reserved: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 14 (0x0e)
frame_coding: 228 (0xe4) [= EBU Teletext]
=> decoded:
magazine number (X): 7 (0x07)
packet number (Y): 6 (0x0006) [= normal packet
intended for direct display]
packet data (parity stripped):
0000: 14 3c 2c 03 37 30 32 14 2c 2c 03 37 30
33 14 2c
.<,.702.,,.703.,
0010: 24 1d 03 41 6c 70 69 20 65 20 56 61 6c
70 61 64
$..Alpi e Valpad
0020: 61 6e 61 20 20 20 20 20
ana
data_unit_id: 2 (0x02) [= EBU Teletext non-subtitle data]
data_unit_length: 44 (0x2c)
Teletext data:
reserved: 3 (0x03)
field_parity: 1 (0x01)
line_offset: 15 (0x0f)
frame_coding: 228 (0xe4) [= EBU Teletext]
=> decoded:
magazine number (X): 7 (0x07)
packet number (Y): 7 (0x0007) [= normal packet
intended for direct display]
packet data (parity stripped):
0000: 14 35 20 03 37 30 34 20 07 20 03 37 30
35 14 20
.5 .704 . .705.
0010: 20 1d 03 4c 69 67 75 72 65 20 65 20 54
69 72 72
..Ligure e Tirr
0020: 65 6e 69 63 6f 20 20 20
enico
[…]
101
Appendice
CAT
dvbsnoop V1.4.00 -- http://dvbsnoop.sourceforge.net/
-----------------------------------------------------------SECT-Packet: 00000001
PID: 1 (0x0001), Length: 35 (0x0023)
Time received: Mon 2007-09-03 18:22:27.779
-----------------------------------------------------------0000: 01 b0 20 ff ff cb 00 00 09 04 18 04 e5 78 09 04
..
..........x..
0010: 18 03 e5 78 09 09 01 00 e1 2b 01 e1 2c 00 b1 37
...x.....+..,..7
0020: ca 0e bc
...
PID: 1 (0x0001) [= assigned for: ISO 13818-1 Conditional Access
Table (CAT)]
Guess table from table id...
CAT-decoding....
Table_ID: 1 (0x01) [= Conditional Access Table (CAT)]
section_syntax_indicator: 1 (0x01)
(fixed): 0 (0x00)
reserved_1: 3 (0x03)
Section_length: 32 (0x0020)
reserved_2: 262143 (0x3ffff)
Version_number: 5 (0x05)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 4 (0x04)
CA_system_ID: 6148 (0x1804) [= Kudelski SA]
reserved: 7 (0x07)
CA_PID: 1400 (0x0578)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 4 (0x04)
CA_system_ID: 6147 (0x1803) [= Kudelski SA]
reserved: 7 (0x07)
CA_PID: 1400 (0x0578)
MPEG-DescriptorTag: 9 (0x09) [= CA_descriptor]
Descriptor_length: 9 (0x09)
CA_system_ID: 256 (0x0100) [= Canal Plus (Seca/MediaGuard)]
reserved: 7 (0x07)
CA_PID: 299 (0x012b)
Private Data:
0000: 01 e1 2c 00 b1
..,..
CRC: 935988924 (0x37ca0ebc)
102
Bibliografia
[1]
DVB Project, http://www.dvb.org
[2]
Ars Docendi, http://www.ars-docendi.de
[3]
ETSI EN 300 744, Digital Video Broadcasting (DVB); Framing structure,
channel coding and modulation for digital terrestrial television
[4]
Wikipedia, http://www.wikipedia.org
[5]
Dfree, http://www.dfree.tv
[6]
LinuxTV Project, http://www.linuxtv.org
[7]
Dvbsnoop, http://dvbsnoop.sourceforge.net
[8]
ASUSTeK Computer Inc., http://www.asus.com
[9]
Terratec Electronic GmbH, http://www.terratec.net
[10]
NXP Semiconductors, http://www.nxp.com
[11]
Ubuntu, http://www.ubuntu.com
[12]
Associazione DGTVi, http://www.dgtvi.it
[13]
AGCOM (Autorità per le Garanzie nelle Telecomunicazioni), Il Libro Bianco
sulla televisione digitale terrestre
103
Bibliografia
[14]
ETSI EN 300 468, Digital Video Broadcasting (DVB); Specification for Service
Information (SI) in DVB systems
[15] MHP, http://www.mhp.org
[16] Interactive TV Web, http://www.interactivetvweb.org
104

Documenti analoghi

DVB-H e SH Mobile TV - Rai - Centro Ricerche e Innovazione

DVB-H e SH Mobile TV - Rai - Centro Ricerche e Innovazione stato ideato per le trasmissioni radiofoniche; il DMB (Digital Multimedia Broadcasting) permetterebbe di utilizzare canali DAB per il trasporto di segnali video, con prestazioni paragonabili a quel...

Dettagli

Annuario 2013-2014 - Rai - Centro Ricerche e Innovazione

Annuario 2013-2014 - Rai - Centro Ricerche e Innovazione Il Laboratorio sulle nuove tecnologie e la crossmedialità nasce per studiare l’uso incrociato delle nuove tecnologie e l’impatto che queste hanno sui linguaggi della comunicazione. L’attività del L...

Dettagli