Avete una scheda tv e siete impazziti a farla andare d'accordo con la vostra webcam fino ad ora? Per fortuna Ubuntu 8.10 (e in particolare il nuovo kernel 2.6.27 integrato in questa distribuzione) ha grosse novità al riguardo!
Una gestione più razionale dei moduli relativi alle periferiche di input video, con conseguente creazione dei nodi corretti in /dev/video da parte del kernel, permette infatti di compilare e caricare (e usare!) contemporaneamente i driver per vari dispositivi video, nel mio caso una webcam integrata sul portatile Asus, perfettamente funzionante coi driver syntek che si trovano di default in questa release di Ubuntu e una scheda tv della Terratec, modello Cinergy Hybrid T usb XS, che funziona con i moduli em28xx-dvb.
Siccome su internet è abbastanza difficile trovare una guida completa (io non ne ho trovate...) ho pensato di scrivere due righe per tutti...
Il procedimento su cui mi baso è tratto principalmente da mcentral.de e poi da un po' di sano Googling alla ricerca di possibili soluzioni agli errori.
Premetto che la procedura qui riportata funziona alla perfezione per il mio hardware, ma che non ho eseguito nessun test al di fuori della configurazione descritta sopra, non è detto quindi che sia valida per tutti... sarò però lieto di cercare di riolvere assieme a voi eventuali problemi che dovessero capitare e sarò ancora più felice se vorrete postare le configurazioni funzionanti con la procedura.
3,2,1...Si comincia!
Prima di tutto dovete installare alcuni componenti base sulla vostra linux box: cheese per la webcam, kaffeine per usare la scheda tv (per le trasmissioni dvb-t, ossia il digitale terrestre, per la precisione), mercurial per scaricare i sorgenti dei driver e build-essential per avere tutti gli strumenti base per la compilazione.
Nota: Kaffeine non è l'unico programma in grado di usare il flusso video proveniente dalla scheda tv, ma, a mio avviso, è quello più semplice, intuitivo e funzionale!
Per installarli tutti in un solo colpo, aprite un terminale e digitate:
sudo apt-get install kaffeine build-essential cheese mercurial
A questo punto, sempre da terminale, scaricate i sorgenti dei driver per la scheda tv con
hg clone http://mcentral.de/hg/~mrec/v4l-dvb-experimental
e posizionatevi nella directory appena scaricata con
cd v4l-dvb-experimental
Potremmo adesso procedere con la solita compilazione manuale a base di make e make install, ma uno script già bello e pronto (build.sh) permette di installare facilmente i driver, scegliete voi quale strada preferite seguire.
Con lo script (che ovviamente necessita dei privilegi di amministratore per funzionare) servono questi comandi:
sudo ./build.sh build
per compilare i moduli e, successivamente
sudo ./build.sh install
sudo ./build.sh load
per caricarli nel kernel.
Purtroppo, sia che stiate usando il tradizionale make, sia che abbiate deciso per lo script, qui arrivano i problemi: al momento della compilazione, viene restituito un messaggio di errore di cui riporto solo le ultime righe:
...
make: *** [default] Error 2
cp: cannot stat `drx3973d/drx3973d.ko': No such file or directory
cp: cannot stat `tvp5150/tvp5150.ko': No such file or directory
cp: cannot stat `lgdt3304/lgdt3304.ko': No such file or directory
cp: cannot stat `zl10353/zl10353.ko': No such file or directory
cp: cannot stat `cx25843/em28xx-cx25843.ko': No such file or directory
cp: cannot stat `xc3028/tuner-xc3028.ko': No such file or directory
cp: cannot stat `xc5000/tuner-xc5000.ko': No such file or directory
cp: cannot stat `em28xx.ko': No such file or directory
cp: cannot stat `em28xx-audio.ko': No such file or directory
cp: cannot stat `em28xx-aad.ko': No such file or directory
cp: cannot stat `em28xx-audioep.ko': No such file or directory
cp: cannot stat `em28xx-dvb.ko': No such file or directory
cp: cannot stat `qt1010/qt1010.ko': No such file or directory
cp: cannot stat `mt2060/mt2060.ko': No such file or directory
Fortunatamente, cercando un po' in rete, la soluzione si riduce a copiare un paio di file dal sorgente del kernel.
Scarichiamo quindi i sorgenti del kernel con
sudo apt-get install linux-source
a questo punto spostiamoci in /usr/src e scompattiamo l'archivio compresso appena scaricato (io lo faccio da nautilus con privilegi di amministratore per abitudine, ma anche il buon vecchio tar -xjvf va benissimo!)
Una volta estratto l'archivio contenente i sorgenti, copiamo i tre file necessari alla corretta compilazione
sudo cp linux-source-2.6.27/drivers/media/dvb/dvb-core/*.h linux-headers-2.6.27-7-generic/drivers/media/dvb/dvb-core/
sudo cp linux-source-2.6.27/drivers/media/dvb/frontends/lgdt330x.h linux-headers-2.6.27-7/drivers/media/dvb/frontends/
sudo cp linux-source-2.6.27/drivers/media/video/msp3400-driver.h linux-headers-2.6.27-7/drivers/media/dvb/frontends/
(naturalmente la versione del kernel può variare da quella specificata!)
e, dopo essere ritornati nella directory contenente i driver (v4l-experimental), eseguiamo nuovamente i passaggi di compilazione.
Una volta fatto controllate che il modulo sia correttamente installato nel kernel con
lsmod | grep em28xx
Se non compare nulla, basta caricare il modulo con
sudo modprobe em28xx
Abbiamo quasi finito... si tratta ora di scaricare il firmware corretto (che verrà salvato su hard disk, non scritto nella periferica!) per la vostra scheda tv...
Spostiamoci quindi in /lib/firmware
e scarichiamo il firmware corretto con
sudo wget http://konstantin.filtschew.de/v4l-firmware/FIRMWARE
dove, al posto di FIRMWARE dovrete inserire il nome del firmware corretto per la vostra periferica.
Esistono, ad oggi, quattro firmware scaricabili: firmware_v1.tgz, firmware_v2.tgz, firmware_v3.tgz e firmware_v4.tgz.
In linea di principio quello con il numero più alto è il più recente e quindi teoricamente il migliore, ma le schede tv serie Cinergy hybrid T XS hanno bisogno del firmware versione 3 (e un sottogruppo di queste schede, principalmente destinate al mercato francese, riconoscibili per l'ID 0ccd:005e con il comando lsusb, necessitano della versione 2).
In ogni caso non farete un gran danno a provare un firmware ed eventualmente a sostituirlo con un altro.
A questo punto basta attaccare la scheda tv (nel mio caso usb) e in kaffeine troverete un bottone extra preposto alla tv digitale (e premendo "C" potrete passare alla sintonizzazione dei canali, pratica da effettuare la prima volta).
Questi sono i risultati di tail -f /var/log/messages quando la periferica viene connessa dopo che i moduli sono stati caricati:
... em28xx: new video device (0ccd:005e): interface 0, class 255
... em28xx: device is attached to a USB 2.0 bus
...
... attach_inform: tvp5150 detected.
... tvp5150 3-005c: tvp5150am1 detected.
... successfully attached tuner
... em28xx #0: V4L2 VBI device registered as /dev/vbi0
... V4L2 device registered as /dev/video1
... em28xx-audio.c: probing for em28x1 non standard usbaudio
... em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
... em2880-dvb.c: DVB Init
... register disabled
... DVB: registering new adapter (em2880 DVB-T)
... DVB: registering frontend 0 (Zarlink ZL10353 DVB-T)...
... input: em2880/em2870 remote control as /devices/virtual/input/input10
... em28xx-input.c: remote control handler attached
... em28xx #0: Found Empia Hybrid ATSC (em2882)
Presto una guida per l'uso della parte di ricezione analogica di questa scheda (appena trovo tutte le informazioni per farla funzionare correttamente!)
---
M
Bellissima guida!!! Grazie mille!! dopo una lunga guerra con questa scheda tv finalmente funziona perfettamente..un solo problemino nell'audio della tv analogica ma aspetto la tua prossima guida..ricordo solo di riavviare il sistema dopo avere seguito alla lettera tutta la guida...Ciao ciao!!
RispondiEliminaCiao,
RispondiEliminaho seguito, con entusiasmo, la tua guida.
Tutto fila alla perfezione fino a quando do':
sudo ./build.sh load
a quel punto pare che le cose non vadano come previsto:
ERROR: Module s921 does not exist in /proc/modules
ERROR: Module em28xx_aad does not exist in /proc/modules
ERROR: Module em28xx_dvb does not exist in /proc/modules
ERROR: Module em28xx_audio does not exist in /proc/modules
ERROR: Module em28xx does not exist in /proc/modules
insmod: error inserting 'em28xx.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-audio.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-aad.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-dvb.ko': -1 Unknown symbol in module
Idee?
Quale kernel stai usando? Credo che il problema sia nella fase di compilazione, che dovrebbe aver sputato fuori qualche errore o warning... posta l'output di "./build build"
RispondiEliminaciao,
Marco
Ciao,
RispondiElimina- il kernel e' quello di default in Kubuntu Intrepid Ibex: il 2.6.27-7-generic
-------L'OUTPUT di sudo ./build build e':------------
rm -rf Module.symvers;
make -C /lib/modules/`if [ -d /lib/modules/2.6.21.4-eeepc ]; then echo 2.6.21.4-eeepc; else uname -r; fi`/build SUBDIRS=`pwd` modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-7-generic'
CC [M] /home/deadlinx/v4l-dvb-experimental/em2880-dvb.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-video.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-i2c.o
/home/deadlinx/v4l-dvb-experimental/em28xx-i2c.c:681: warning: ‘inc_use’ defined but not used
/home/deadlinx/v4l-dvb-experimental/em28xx-i2c.c:688: warning: ‘dec_use’ defined but not used
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-cards.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-core.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-input.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-webcam.o
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-aad.o
/home/deadlinx/v4l-dvb-experimental/em28xx-aad.c: In function ‘em28xx_aad_register’:
/home/deadlinx/v4l-dvb-experimental/em28xx-aad.c:341: warning: format not a string literal and no format arguments
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-audio.o
CC [M] /home/deadlinx/v4l-dvb-experimental/em28xx-audioep.o
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx-dvb.o
CC [M] /home/deadlinx/v4l-dvb-experimental/adimtv102/adimtv102.o
CC [M] /home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_demod.o
CC [M] /home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.o
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:6059:8: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:6068:7: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:6085:8: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:7726:8: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c: In function ‘DRX3973D_Open’:
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:7799: warning: enumeration value ‘DRX3973D_SPIN_UNKNOWN’ not handled in switch
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:7915:8: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:7927:8: warning: "COMPILE_FOR_QT" is not defined
/home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_core.c:7933:8: warning: "COMPILE_FOR_QT" is not defined
CC [M] /home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d_i2c.o
LD [M] /home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d.o
CC [M] /home/deadlinx/v4l-dvb-experimental/lgdt3304/lgdt3304.o
CC [M] /home/deadlinx/v4l-dvb-experimental/mt2060/mt2060.o
CC [M] /home/deadlinx/v4l-dvb-experimental/mt352/mt352.o
CC [M] /home/deadlinx/v4l-dvb-experimental/qt1010/qt1010.o
CC [M] /home/deadlinx/v4l-dvb-experimental/sharp/s921_module.o
LD [M] /home/deadlinx/v4l-dvb-experimental/sharp/s921.o
CC [M] /home/deadlinx/v4l-dvb-experimental/zl10353/zl10353.o
Building modules, stage 2.
MODPOST 17 modules
LD [M] /home/deadlinx/v4l-dvb-experimental/adimtv102/adimtv102.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/drx3973d/drx3973d.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx-aad.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx-audio.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx-audioep.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx-dvb.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/em28xx.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/lgdt3304/lgdt3304.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/mt2060/mt2060.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/mt352/mt352.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/qt1010/qt1010.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/sharp/s921.ko
LD [M] /home/deadlinx/v4l-dvb-experimental/zl10353/zl10353.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-7-generic'
-------L'OUTPUT di sudo ./build install -------------
Non c'e' alcun output, probabilmente per gli errori con le QT di cui sopra
-------L'OUTPUT di sudo ./build load e':-------------
ERROR: Module s921 does not exist in /proc/modules
ERROR: Module em28xx_audioep does not exist in /proc/modules
ERROR: Module em28xx_aad does not exist in /proc/modules
ERROR: Module em28xx_dvb does not exist in /proc/modules
ERROR: Module em28xx_audio does not exist in /proc/modules
ERROR: Module em28xx does not exist in /proc/modules
ERROR: Module drx3973d does not exist in /proc/modules
ERROR: Module lgdt3304 does not exist in /proc/modules
ERROR: Module mt352 does not exist in /proc/modules
ERROR: Module zl10353 does not exist in /proc/modules
ERROR: Module em28xx_cx25843 does not exist in /proc/modules
ERROR: Module tuner_xc3028 does not exist in /proc/modules
ERROR: Module tuner_xc5000 does not exist in /proc/modules
ERROR: Module tvp5150 does not exist in /proc/modules
ERROR: Module qt1010 does not exist in /proc/modules
ERROR: Module mt2060 does not exist in /proc/modules
insmod: error inserting 'em28xx.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-audio.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-aad.ko': -1 Unknown symbol in module
insmod: error inserting 'em28xx-dvb.ko': -1 Unknown symbol in module
Sinceramente non saprei dove sbattere la testa,
ho anche provato a rimuovere il kernel con tutti gli annessi e connessi, e poi reinstallarlo, in modo da lavorare su un kernel *certamente* pulito, ma non cambia nulla.
Prova a installare gli header con
RispondiEliminasudo apt-get install linux-headers-`uname -r`
Fammi sapere, in caso lo aggiungo alla guida!
ciao,
M
erano gia' installati prima di iniziare la procedura
RispondiEliminaE il comando
RispondiEliminasudo modprobe em28xx
immagino che continui a non funzionare, vero?
Per curiosità, che scheda video stai usando?
Prometto di provare a compilare nel week end su virtual machine con kubuntu, per vedere se è questo che crea problemi, anche se non dovrebbe, dal momento che il kernel è assolutamente il medesimo.
ciao,
Marco
...che scheda video...
RispondiEliminaEDIT: intendevo che scheda TV :)
ciao,
Marco
Ciao,
RispondiEliminala procedura che consigli *non e' corretta* per il kernel 2.6.27, che e' presente di default su Intrepid Ibex; tale kernel dispone, gia' nel vanilla, del driver per il supporto alla scheda ibrida, quindi e' meglio non pasticciare in compilazioni non necessarie.
Lo sviluppatore ha indicato, ****diversi anni fa****,
la scheda come "hardware supportato", e...
da allora non ha praticamente mai piu' messo mano al driver, lasciando con palmo di naso tutti quelli che avevano comprato quella scheda proprio per vedere la tv analogica e digitale in GNU/Linux!!
Inoltre sembra che non si sia nemmeno granche' dedicato alla documentazione, visto che, come avrete potuto constatare, quella presente sul sito ufficiale e' frammentaria e pure obsoleta, quindi confusionaria, incompleta, ma, soprattutto,
inutilizzabile per chiunque abbia un kernel recente!!
Qualcuno ha anche contattato lo sviluppatore per fargli presente che, almeno per i newbies,
e' veramente un casino riuscire a fare funzionare la Hauppauge WinTV HVR 900,
anche per via delle sue ****numerose varianti**** che ne comportano diversi funzionamenti;
non e' raro riscontrare persone che, ad esempio, riescono *solo* a vedere la tv analogica,
ma non riescono a sentire l'audio ****nonostante le mille soluzioni provate.****
In breve l'atteggiamento dello sviluppatore e' stato quello di rispondere che, dal suo punto di vista, va tutto bene cosi', quindi i geek possono fruire appieno della tv analogica e digitale e il resto del mondo chi se ne frega.
Gli sviluppatori di Free Software hanno tutti la mia stima, detto questo,
mi pare che questo atteggiamento sia ****perlomeno incoerente**** col principio di ****libera condivisione del sapere**** su cui si fonda
il movimento del Free Software ...
o forse abbiamo capito male noi ...
In ogni caso mi pare poco corretto indurre la gente ad acquistare dell'hardware, spacciandolo per supportato, quando poi,
****DOPO ANNI****
****la PIENA FRUIZIONE****
della scheda rimane appannaggio dello 0.000001 per miliardo dei suoi possessori, rendendo, nei fatti, la scheda come "PLURI_parzialmente supportata",
in quanto solo alcuni sono in grado di farla funzionare e, questi, spesso, riescono ad usare solo la parte analogica, sempre che riescano ad incanalare il flusso audio per sentire qualcosa...
Sono i progetti come questo a screditare tutto il mondo Free ed Open Source e a disincentivare molti potenziali "migranti": la gente si domanda che hardware acquistare, se non ci si puo' fidare nemmeno di quello dato per ***SUPPORTATO DA ANNI***
Questo driver e' quello che gli sviluppatori di FreeBSD definirebbero:"a hack, not a solution"!!
FreeBSD supportera' meno hardware, ma quando ti dicono che funziona ti ci puoi giocare una mano!!!
I moduli presenti nel kernel 2.6.27 *non funzionano* con un enorme numero di dispositivi (compreso il mio!) quindi è obbligatorio compilarsi la versione scaricata con mercurial!
RispondiEliminaLa pagina che ospita il progetto è stata ****aggiornata il 6 novembre scorso****, gli ultimi aggiornamenti ai driver risalgono a ****pochi mesi fa**** (febbraio, se non erro) mostrando, contrariamente a quanto affermi, che il progetto è seguito.
La documentazione presente sul sito ufficiale potrebbe probabilmente essere più completa, ma mi sembra che cercando un po' si trovi tutto (visto che, personalmente, ho cercato e trovato...)
Ai newbies bisognerebbe insegnare fin da subito che ***prima*** si cerca su forum, internet e amici una scheda pienamente compatibile e ***poi*** si procede con l'acquisto! Nel bene o nel male così funziona il mondo gnu/linux (per ora), se a qualcuno non piace, ci sono sempre gli ottimi prodotti della Apple! (e lo dico senza il minimo sarcasmo!)
Per quanto riguarda la scheda che hai menzionato, non l'ho mai avuta tra le mani, quindi non ho esperienze dirette... vedo molte guide in giro... se però la Hauppage marchia con lo stesso nome schede con componenti molto diversi, mi pare chiaro che ci siano problemi di installazione, non mi sembra imputabile ai driver! (ed è il motivo per cui si va a vedere gli id delle schede sputati da un semplice lsusb prima di acquistare... io l'ho fatto in negozio!)
Per quanto riguarda il numero di utenti soddisfatti, non ti preoccupare ce ne sono moltissimi ;)
I possessori di Eeepc e schede Terratec trovano addirittura gli script autoinstallanti sul sito del produttore...
Per quanto riguarda l'audio analogico... se, invece di ****provare mille soluzioni**** avessero cercato 15 secondi su Google, avrebbero visto che esiste sox che funziona perfettamente e che, per alcuni, si può anche compilare l'ultima versione di tvtime...
Ce ne fossero di progetti come questo, visto che mi ha permesso di usare qualcosa che altrimenti non funzionava!
Se poi non ti sta bene, usa FreeBSD!
ciao,
Marco
Ciao,
RispondiEliminaIl driver per la mia scheda e' nel kernel, ma e' sostanzialmente quello di due anni fa...
A dire il vero io ho acquistato la scheda *solo* perche' era gia' data per supportata...
Quello che sto cercando di spiegare e' che questo progetto e' (tra i pochi) a non contribuire affatto a rendere Linux alla portata dei newbies.
E per dirla tutta mentre ti scrivo mi sto godendo C.S.I. con la mia scheda, in versione digitale anche se potrei anche vederla in analogico...giusto per "mettere i puntini sulle i"...
My 2 cents
Marco (deadlinx)
Forse non ho capito bene... ti lamenti di questo progetto e contemporaneamente lo usi per guardare la tv analogica e digitale sul computer?! Quale sarebbe esattamente il problema, dal momento che funziona (previo comperare una scheda data per funzionante controllando l'output di lsusb)?
RispondiEliminaSe dovessimo fare l'elenco di tutto quello che non è a prova di newbe su linux, potremmo fare notte... è per questo che esistono le guide... il newbe legge, impara e diventa pian piano meno newbe e più esperto!
Se uno vuole tutto funzionante subito, senza sbattimenti (ma anche senza la possibilità di coustomizzazioni), lo ripeto, può tranquillamente comperarsi un mac (lo consiglio a molti che dicono chiaramente di non avere tempo e/o voglia di mettersi a leggere manuali e guide per usare un computer).
Tra l'altro ti posso assicurare che è pieno di progetti che non contribuiscono affatto a rendere linux a portata di newbe... non è mica l'obiettivo primario di tutti i programmatori...ciascuno scrive il codice che gli pare...fa parte del gioco!
ciao,
Marco