guida completa alle schede TV saa713x su ubuntu

Ottobre 18, 2008 · 3 Commenti

[ Guida in continuo aggiornamento ]

In questa guida spiegherò approfonditamente come far funzionare schede TV basate su chip Philips Semiconductors Inc. Saa713x, per schede TV analogiche, digitali o ibride (analogico e digitale insieme).

Introduzione
Prima di cominciare, dobbiamo verificare se la nostra scheda TV è riconosciuta da Ubuntu, quindi digitiamo da terminale:

lspci | grep -i saa

Se il risultato sarà simile a questo:

03:03.0 Multimedia controller: Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder (rev d1)

La vostra scheda TV è riconosciuta correttamente da Ubuntu.

Il modulo per far funzionare i chip Saa713x si chiama saa7134 ed è già presente in Ubuntu. Il comando seguente verifica l’effettiva disponibilità del modulo:

ls /lib/modules/$(uname --kernel-release)/kernel/drivers/media/video/saa7134/saa7134.ko

Qui la lista delle schede TV che dovrebbe supportare il modulo.

Qui la lista dei tuner che dovrebbe supportare il modulo.

Potete guardare anche nel vostro PC nella cartella di documentazione del kernel, in Cartella_kernel/Documentation/video4linux/CARDLIST.saa7134 per le schede TV, e Cartella_kernel/Documentation/video4linux/CARDLIST.tuner per i tuner.

Non è detto che se la vostra scheda TV o il vostro tuner non è all’interno della lista, non funzioni, provate comunque.

Configurazione moduli
Inseriamo nella lista dei moduli da caricare all’avvio i moduli saa7134 e saa7134-alsa.

In alternativa è possibile inserire saa7134-oss, usando OSS al posto di ALSA per l’audio.

Apriamo la lista dei moduli che si caricano all’avvio:

sudo gedit /etc/modules

Aggiungiamo alla lista quindi:

saa7134
saa7134-alsa

Aggiungiamo gli alias videodev e saa7134 alla lista degli aliases.

Apriamo la lista degli aliases:

sudo gedit /etc/modprobe.d/aliases

Inseriamo alla lista degli aliases:

alias char-major-81 videodev
alias char-major-81-0 saa7134

Inseriamo l’opzione saa7134 nella lista delle opzioni con il numero della vostra scheda TV e il numero del vostro tuner.

Apriamo quindi la lista delle opzioni:

sudo gedit /etc/modprobe.d/options

Aggiungete l’opzione saa7134:

options saa7134 card=[numero scheda TV] tuner=[numero tuner]

Il numero della vostra scheda TV e il numero del vostro tuner dovete cercarlo sul web (forum, siti web… ecc). Per una Hauppauge WinTV HVR-1110 è 104, e il tuner è 54, nel mio caso.

Riavviate la vostra distro.

Al riavvio, vediamo la lista di tutti i moduli caricati:

lsmod | grep saa

Controlliamo che i messaggi del kernel non presentino errori:

dmesg | grep saa

Se vi uscirà qualcosa di simile a questo, vuol dire che la vostra scheda TV dovrebbe funzionare senza errori:

saa7130/34: v4l2 driver version 0.2.14 loaded
saa7133[0]: found at 0000:03:03.0, rev: 209, irq: 20, latency: 32, mmio: 0xfdeff000
saa7133[0]: subsystem: 0070:6700, board: Hauppauge WinTV-HVR1110 DVB-T/Hybrid [card=104,insmod option]
saa7133[0]: board init: gpio is 400000
saa7133[0]: i2c eeprom 00: 70 00 00 67 54 20 1c 00 43 43 a9 1c 55 d2 b2 92
saa7133[0]: i2c eeprom 10: ff ff ff 08 ff 20 ff ff ff ff ff ff ff ff ff ff saa7133[0]: i2c eeprom 20: 01 40 01 32 32 ff 01 33 88 ff 00 a1 ff ff ff ff
saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 40: ff 21 00 c2 96 10 03 32 15 60 ff ff ff ff ff ff
saa7133[0]: i2c eeprom 50: ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
saa7133[0]: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
saa7133[0]: i2c eeprom 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
tuner 1-004b: chip found @ 0×96 (saa7133[0])
saa7133[0]: registered device video0 [v4l2]
saa7133[0]: registered device vbi0 saa7133[0]: registered device radio0
DVB: registering new adapter (saa7133[0]). saa7134 ALSA driver for DMA sound loaded
saa7133[0] at 0xfdeff000 irq 20 registered as card -1

Nel caso la scheda TV non venga riconosciuta…
1° soluzione
- I kernel recenti utilizzano il bus i2c per il riconoscimento hardware. Potreste provare a far riconoscere la vostra scheda TV digitando:

sudo modprobe saa7134 i2c_scan=1

Per rendere permanente questa opzione, creiamo un file saa7134 da posizionare in /etc/modprobe.d:

Entriamo come root:

su

E digitiamo:

echo “options saa7134 i2c_scan=1″ > /etc/modprobe.d/saa7134

Se non avete un account di root, provate con sudo.
Se non dovesse funzionare con sudo, stiamo semplicemente creando un file chiamato saa7134, dove all’interno dobbiamo scrivere:

options saa7134 i2c_scan=1

e dovrà essere spostato in /etc/modprobe.d

Perciò potete fare così:

sudo gedit saa7134

Aggiungete:

options saa7134 i2c_scan=1

Copiate il file in /etc/modprobe.d con il comando:

sudo cp -v saa7134 /etc/modprobe.d

2° soluzione
- Se il nome del chip della vostra scheda TV è saa7133, provate rinominare il modulo saa7134 in saa7133.

Apriamo la lista dei moduli che si caricano all’avvio:

sudo gedit /etc/modules

Rinominate saa7134 e saa7134-alsa in:

saa7133
saa7133-alsa

Installazione e configurazione TV Analogica con TVTime
Per installare TVTime:

sudo apt-get install tvtime

Dopo averlo installato digitiamo:

sudo chmod 777 /home/nomeutente/.tvtime/

Fare la scansione dell’intera banda di canali, digitiamo da terminale:

tvtime-scanner

e aspettiamo che il programma termini il suo lavoro.

Fatto questo, digitando

tvtime

si avvierà il programma e finalmente si potranno vedere i programmi tv.

Impostare la qualità di ricezione
Per alcune schede la configurazione di card e tuners richiede un intervento manuale per la qualita’ della ricezione. E’ possibile provare il modulo sperimentale tda9887.

Aprite il file /etc/modprobe.d/options:

sudo gedit /etc/modprobe.d/options

Aggiungi alla lista delle opzioni:

options tda9887 secam=d port2=0 port1=1

Cattura audio dalla scheda TV
Per utilizzare la cattura dell’audio direttamente dalla scheda (DMA transfer) e’ possibile utilizzare singolarmente ALSA o OSS.

Per avviare TVTime con la cattura dell’audio dalla scheda TV utilizzando ALSA, digitare da terminale:

tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -

Per specificare la periferica d’audio:

tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -D [periferica audio]

Nel caso l’audio sia in ritardo rispetto al video, o che l’audio non si senta… utilizzare queste alternative:

Per avviare tvtime e la cattura dell’audio utilizzando sox e ALSA, digitate da terminale:

tvtime | sox -r 32000 -w -t alsa hw:1,0 -t alsa hw:0,0

Per installare sox digitare:

sudo apt-get install sox

Un’altra combinazione con sox e qarecord, che ha funzionato nella maggior parte delle volte:
tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | sox -q -c 2 -r 32000 -w -t wav - -t alsa hw:0,0
Per installare sox e qarecord digitare:

sudo apt-get install sox qarecord

Se sox non ha supporto ALSA, provate con questo comando:

tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | play -q -c 2 -r 32000 -w -t wav -

In alternativa, usate un’emulazione di OSS tramite ALSA con sox e qarecord:

tvtime | sox -q -c 2 -s -w -r 32000 -t ossdsp /dev/dsp1 -t ossdsp -w -r 32000 /dev/dsp

Per avere altre informazioni e dettagli sul modulo saa7134-alsa:
Guida completa al modulo saa7134-alsa

Aprire TVTime e la cattura audio dalla scheda TV in un click con uno script bash
1) Digita da terminale:

sudo gedit tvtime.sh

Inserisci nel file:

#!/bin/sh
tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -

Potete sostituire la riga

tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -

con la vostra combinazione funzionante per catturare l’audio.

2) Digita da terminale:

sudo chmod +X tvtime.sh

3) Per aprire il file .sh puoi farci il doppio click sopra oppure puoi digitare:

sudo ./tvtime.sh

Chiudete sempre i processi arecord e aplay, se vi resteranno aperti, avrete problemi audio.

Potete farvi uno script bash per chiuderli manualmente:
Digita:

sudo gedit killarecord.sh

Inserisci nel file:

#!/bin/sh
killall arecord | killall aplay

Dai il comando

sudo chmod +X killarecord.sh

Puoi aprire il file sh col doppio click oppure:

sudo ./killarecord.sh

Potete sostituire la voce del menù di GNOME, facendo tasto destro sul menù -> Modifica Menù.
Navigate su Audio e Video -> TVTime Television Viewer. Cliccate su Modifica, e selezionate su Tipo Applicazione nel terminale, e inserite su Posizione tvtime.sh. In questo caso, inserendo Applicazione nel terminale, vi si aprirà il terminale, e quando chiuderete il terminale, vi si chiuderà tvtime, e i processi audio arecord e aplay.

Installazione e configurazione della TV digitale con gxine
Consiglio di utilizzare gxine per guardare la TV digitale. Per installare gxine, digitare da terminale:

sudo apt-get install gxine

Come fare la scansione dei canali digitali? Seguite passo per passo e lo scoprirete:

1) Cercare le frequenze dei Mux qui, inserendo la regione, il comune e la città. Dopo aver trovato la propria città, copiare le frequenze di ogni Mux.

2) Creare un file dove inserire le frequenze dei Mux, digitando da terminale:

sudo gedit muxlist

Esempio: Supponiamo che le frequenze di un Mux sono 554, 682, 490. Inseriremo nel file muxlist le 3 frequenze in questo modo:

T 554000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 682000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE
T 490000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE

Dopo aver inserito le frequenze, salvare il file e chiudere.

3) Per fare la scansione delle frequenze dei Mux è necessario installare dvb-utils, digitando da terminale:

sudo apt-get install dvb-utils

4) Iniziare a fare la scansione e digitare da terminale:

scan muxlist

Alla fine della scansione vi apparirà una lista di canali simile a questa:

Rete4:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:
Italia1:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:
Mediashopping:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:
Sportitalia:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:
Sportitalia24:706000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:

5) Copiare la lista dei canali. Creare il file dove inserire la lista dei canali, nella directory di gxine, digitando da terminale:

sudo gedit ~/.xine/channels.conf

ATTENZIONE: Se ci sono canali doppi, rinominate il secondo, con un 2 a fianco, e così via… sennò non verranno letti da gxine.

Dopo aver inserito la lista dei canali, salvare il file e chiudere.

6) Aprire gxine, digitando da terminale:

gxine

7) Selezionare nel menù File -> DVB per vedere i canali digitali. Per scegliere il canale selezionare nel menù File -> Playlist.

Soluzioni ad altri problemi

- Chi ha il firmware tda1004x, il boot è più lento alla prima volta che accendiamo il PC, e non al riavvio. Si fermerà la barra di caricamento per alcuni secondi, e se andrete a vedere togliendo il bootsplash (CTRL+ALT+F1) è a causa del firmware che dà questo messaggio: tda1004x: timeout waiting for DSP… Alcuni hanno risolto inserendo il modulo saa7134-dvb in blacklist, e sulla lista dei moduli da caricare all’avvio.

Aprite la blacklist dei moduli:

sudo gedit /etc/modprobe.d/blacklist

E inserite:

blacklist saa7134-dvb

Aprite la lista dei moduli da caricare all’avvio:

sudo gedit /etc/modules/

Inserite:

saa7134-dvb

Per altri problemi e per altre soluzioni, scrivete un commento!

Guide da cui è stato preso spunto:
Tv Linux e Hauppauge WinTV-HVR 1110 DVB-T/Hybrid
Wiki ufficiale Ubuntu-It Saa7130
Divilinux Installazione Saa7134

Altri riferimenti:
LinuxTV V4LWiki Guida installazione Saa7134
Lista di schede TV Saa713x testate su Ubuntu
Gentoo Wiki Saa7134
Linux Configure Pinnacle PCTV Card to Watch Television with saa7134 / saa7134-alsa Driver

Categorie: hardware · tv

3 risposte finora ↓

  • sito // Novembre 12, 2008 a 8:47 pm

    Oh my good!
    Geniale davvero geniale, grazie alla tua guida son riuscito a far andare l’audio su intrpid ibex!

  • sito // Novembre 12, 2008 a 11:47 pm

    Ah scusa una domanda, la radio, con gnomeradio, come la si fa funzionare?
    Ho provato come con tvtime ma il suono che ne risulta non è per niente buono, va come a colpi e non si capisce granchè, ho fatto così:
    sito@Principale:~$ gnomeradio | arecord -D hw:2,0 -r 32000 -c 2 -f S16_LE | sox -q -c 2 -r 32000 -w -t wav – -t alsa hw:0,0

    Ho provato anche a mettere 44100 al posto di 32000 ma è uguale, la scansione per trovare le stazioni anche se sembra che il programma vada in freeze dopo un po invece si ripiglia e trova per modi di dire alcune stazioni.
    Qualcuno dice che se si compila la svn dovrebbe andare meglio, sul sito di gnomeradio pare che chi lo sviluppa avrebbe bisogno di aiuto, insomma tu che vedo ne sai di più magari mi dai qualche delucidazione.
    E stranamente dal wiki di ubuntu han tolto l alista delle schede tv compatibili, maledetti c’era la lista e questa scheda era messa compatibile, per quello l’ho presa ma poi le amare scoperte!

  • sito // Novembre 13, 2008 a 9:47 pm

    Dimenticavo, se si usa gnome potrebbe far comodo usare MeTv (http://me-tv.sourceforge.net/) per vedere il digitale terrestre, come programma forse non è il top m aquelle 4 cose che ha sono facili, per registrare basta premere un pulsante e si registra senza dover fare chissà cosa.

Lascia un Commento