I sinto USB digitali terrestri e non, sono supportati dal progetto v4l ( video for linux ) che è implementato di default in mandriva 2010.
Tuttavia lo stick TerraTec Cinergy T Stick, che è un sintoTV digitale terrestre USB 2.0 DVB-T basato su chip Afatech AF9035, non è al momento supportato e i relativi driver vanno implementati parendo dai sorgenti.
Questa cosa è un vero peccato perché lo stick in questione ha una caratteristica che lo rende unico: costa 19 euro !
I driver messi a disposizione dal produttore sono progettati per funzionare sia a 32bit che 64 bit, usando un kernel che va dal 2.6.18 al 2.6.27 .. Mandriva 2010 implementa almeno il kernel 2.6.31 quindi l'operazione di compilazione dei sorgenti presenta qualche grattacapo ma niente di insormontabile.
Nel forum lo stick è stato fatto funzionare su una macchina con mandriva 2009.1 con kernel 2.6.32 mib edition a 64bit e una con Mandriva 2010 kernel desktop-2.6.31.6-1mnb-1-1mnb2 ( la mia macchina attuale ) a 32bit. Credo che come campionario di possibili combinazioni incasinate abbiamo raggiunto il massimo
Se volete leggere tutta la storia dell'implementazione che è cominciata nel peggiore dei modi ed è finita in gloria potete leggere questo tread sul forum. Un ringraziamento speciale va a Gamal, utente del forum, senza il quale non avrei mai capito cosa fare (le varie operazioni sono tutt'altro che intuitive) e quel sinto non avrebbe MAI funzionato sulla mia macchina, perchè non riuscivo ad applicare una patch..
Nella serata di oggi è stato reso disponibile il kernel-desktop-2.6.31.12-1mnb-1-1mnb2, lo stick continua a funzionare senza problemi. Avendo conservato tutti i sorgenti completi delle modifiche necessarie è bastato rifare il make del driver e poi il make install
Ho installato lo stick sotto mandriva 2010.1 con kernel 2.6.33.7-desktop586-2mnb senza alcun problema. La presente guida è sta aggiornata
1) Far in modo che Cinergy t stick venga riconosciuto correttamente come perifericha dvb e non come periferica generica hid usando una patch da applicare ad uno dei file dei sorgenti
2) Installare il modulo per il chip afatehc Afatech AF9035 che è il cuore del sinto usb che non è implementato nel kernel attuale e si fa partendo dai sorgenti, preparando adeguatamente la cosa visto la mancanza di supporto per i kernel superiori al 2.6.27
3) Sintonizzare i canali per poter usare il tutto con vlc. L'operazione si fa utilizzando wscan che genera un file di testo con le coordinate dei canali digitali.. il file vien usato da vlc ( ma anche xine volendo ) per sintonizzare i canali
Per prima cosa è necessario avere i Repository in ordine e funzionanti, se non sai come fare leggi la pagina del wiki sui repository.
Se vuoi installare vlc sono necessarie le fonti plf, per configurarle usa http://easyurpmi.zarb.org .. questo tool on line può essere usato anche per configurare i repository ufficiali
Apri un file di testo vuoto con un editor a caso, ad esempio kwrite e copincolla il codice per la patch da questa pagina, quindi salvate il file chiamandolo TerraTec_Cinergy_T-Stick.patch ( rispettate il nome vi verrà più facile copiare i comandi da consolle più avanti nella guida) nel caso la pagina non fosse disponibile, codice da copiare è questo:
> #define USB_PID_TERRATEC_CINERGY_T 0x0093
78a80
> {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T)},
146c148
< .num_device_descs =1,
---
> .num_device_descs =2,
152a155,159
> {
> .name = "TerraTec Cinergy T-Stick",
> .cold_ids = {&af903x_usb_id_table[5], NULL},
> .warm_ids = {NULL},
> },
Se non riuscite a fare la patch.. questo è il file già patchato.. solo per i 32 bit
bool DevicePower;
static int af903x_download_firmware(struct usb_device *udev, const struct firmware *fw)
{
int ret=0;
deb_data("- Enter %s Function -\n",__FUNCTION__);
return ret;
}
static int af903x_powerctrl(struct dvb_usb_device *d, int onoff)
{
int ret;
DevicePower = onoff;
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
deb_data("- Enter %s Function - chip=%d:%s\n",__FUNCTION__, d->adapter->id, onoff?"ON":"OFF");
ret = DL_ApCtrl(d->adapter->id, onoff);
#else
deb_data("- Enter %s Function - %s\n",__FUNCTION__, onoff?"ON":"OFF");
ret = DL_ApCtrl(0, onoff);
#endif
if(ret) deb_data(" af903x_powerctrl Fail: 0x%04X\n", ret);
return ret;
}
static int af903x_identify_state(struct usb_device *udev, struct dvb_usb_device_properties *props,
struct dvb_usb_device_description **desc, int *cold)
{
deb_data("- Enter %s Function -\n",__FUNCTION__);
*cold = 0;
return 0;
}
static int af903x_frontend_attach(struct dvb_usb_adapter *adap)
{
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
deb_data("- Enter %s Function - chip=%d\n", __FUNCTION__, adap->id);
#else
deb_data("- Enter %s Function - \n", __FUNCTION__);
#endif
adap->fe = af903x_attach(1);
return adap->fe == NULL ? -ENODEV : 0;
}
static int af903x_tuner_attach(struct dvb_usb_adapter *adap)
{
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
deb_data("- Enter %s Function - chip=%d\n",__FUNCTION__, adap->id);
#else
deb_data("- Enter %s Function - \n", __FUNCTION__);
#endif
tuner_attach(adap->fe);
return 0;
}
static int af903x_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
{
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
deb_data("- Enter %s Function - (%s) streaming state for chip=%d\n",__FUNCTION__, onoff?"ON":"OFF", adap->id);
#else
deb_data("- Enter %s Function - (%s) streaming state \n",__FUNCTION__, onoff?"ON":"OFF");
#endif
return 0;
}
#define USB_PID_TERRATEC_CINERGY_T 0x0093
struct usb_device_id af903x_usb_id_table[] = {
{ USB_DEVICE(0x15A4,0x1000) },
{ USB_DEVICE(0x15A4,0x1001) },
{ USB_DEVICE(0x15A4,0x1002) },
{ USB_DEVICE(0x15A4,0x1003) },
{ USB_DEVICE(0x15A4,0x9035) },
{USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T)},
{ 0}, /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, af903x_usb_id_table);
struct dvb_usb_device_properties af903x_properties[] = {
{
.usb_ctrl = DEVICE_SPECIFIC,
.download_firmware = af903x_download_firmware,
.no_reconnect = 1,
.power_ctrl = af903x_powerctrl,
.identify_state = af903x_identify_state,
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,18)
.caps = DVB_USB_HAS_PID_FILTER | DVB_USB_NEED_PID_FILTERING,
.pid_filter_count = 32,
.frontend_attach = af903x_frontend_attach,
.tuner_attach = af903x_tuner_attach,
.streaming_ctrl = af903x_streaming_ctrl,
.urb = {
.type = DVB_USB_BULK,
.count = 10,
.endpoint = 0x84,
.u = {
.bulk = {
.buffersize = 65424,
}
}
},
#else
.num_adapters = 1,
.adapter = {
{
.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_NEED_PID_FILTERING,
.pid_filter_count = 32,
.frontend_attach = af903x_frontend_attach,
.tuner_attach = af903x_tuner_attach,
.streaming_ctrl = af903x_streaming_ctrl,
.stream = {
.type = USB_BULK,
.count = 4,
.endpoint = 0x84,
.u = {
.bulk = {
.buffersize = 65424,
}
}
}
},
{
.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_NEED_PID_FILTERING,
.pid_filter_count = 32,
.frontend_attach = af903x_frontend_attach,
.tuner_attach = af903x_tuner_attach,
.streaming_ctrl = af903x_streaming_ctrl,
.stream = {
.type = USB_BULK,
.count = 4,
.endpoint = 0x85,
.u = {
.bulk = {
.buffersize = 65424,
}
}
}
},
},
#endif
.num_device_descs =2,
.devices = {
{ "Afatech USB2.0 DVB-T Recevier",
{ &af903x_usb_id_table[0], &af903x_usb_id_table[1],&af903x_usb_id_table[2],
&af903x_usb_id_table[3], &af903x_usb_id_table[4], NULL},
{ NULL },
},
{
.name = "TerraTec Cinergy T-Stick",
.cold_ids = {&af903x_usb_id_table[5], NULL},
.warm_ids = {NULL},
},
{NULL},
}
}
};
int af903x_device_count = ARRAY_SIZE(af903x_properties);
Supponiamo di usare il 2.6.33.7-desktop586-2mnb, l'ultimo ufficiale per Mandriva 2010.1 al momento dell'aggiornamento di questa guida
Apri una consolle e digita il seguente codice ( fai un bel copincolla )
...contemporaneamente segui il punto 3...
... cliccando su questo link: cinergy t stick driver.rar scarica il tutto in /home/tuo_user ( sempre per comodità scarica lì.. ti sarà più facile copincollare i comandi da consolle più avanti)
Fai una pausa caffè... .. ci vorrà un po', se hai installato un kernel più aggiornato dovrai anche riavviare il pc per il nuovo kernel
Supponiamo che tu l'abbia scaricato in /home/tuo_user apri una consolle e digita
...otterrai una directory che si chiama Linux_PC_AF9035_Afatech_2008.12.17 ... entraci
..otterrai due directory distinte per architettura: 32bit o 64 bit .. entra in quella che ti riguarda:
... otterrai una directory che si chiama AF903x_SRC .. entraci
Prima di tutto è necessario copiare il file creato al punto 1) : TerraTec_Cinergy_T-Stick.patch ... nella directory dove sei appena entrato ovvero:
per il 32bit
Per il 64bit
.. ora possiamo applicare la patch con questo comando:
Spostati in /v4l:
.. osserva il contenuto della directory, contiene una serie di subdirectory che si chiamano kernel-2.6.xx e vanno da kernel-2.6.18 a kernel-2.6.27 ... Dovrai crearne una che si chiama kernel-2.6.33 ( supponendo che il tuo kernel sia il kernel-desktop-2.6.33.7)
.. entra nella directory
Ora la directory è pronta per ricevere gli header del tuo kernel copiandoli dalla giusta directory del tuo sistema a quella che hai appena creato
Mancano ancora due file che si trovano in nella directory kernel-2.6.27
Prima di tutto sali di due livelli da dove sei ora
[user@localhost v4l]# cd..
[user@localhost AF903x_SRC]#
.. nell'attuale directory esiste un file che si chiama: Makefile ... questo file contiene lo scrip di configurazione che verrà usato successivamente per la compilazione. Il file è ingrado di eseguire il make ( la compilazione) dal kernel 2.6.18 al kernel-2.6.27 ... tu hai il 2.6.33 bisogna aggiungere alcune righe di codice per dirgli che esiste anche questo kernel.
Crea un backup di Makefile .. che non si sa mai
... ora editalo con un editor di testo, ad esempio kwrite ( se hai kde4)
osserva il codice di Makefile, in particolare nella sezione: "default" del codice troverai un elenco fatto così:
ifneq (,$(findstring 2.6.16,$(CURRENT)))
@cp -f v4l/kernel-2.6.16/* ./
endif
ifneq (,$(findstring 2.6.17,$(CURRENT)))
@cp -f v4l/kernel-2.6.17/* ./
endif
ifneq (,$(findstring 2.6.18,$(CURRENT)))
@cp -f v4l/kernel-2.6.18/* ./
endif
ifneq (,$(findstring 2.6.19,$(CURRENT)))
@cp -f v4l/kernel-2.6.19/* ./
endif
ifneq (,$(findstring 2.6.20,$(CURRENT)))
@cp -f v4l/kernel-2.6.20/* ./
endif
ifneq (,$(findstring 2.6.21,$(CURRENT)))
@cp -f v4l/kernel-2.6.21/* ./
endif
ifneq (,$(findstring 2.6.22,$(CURRENT)))
@cp -f v4l/kernel-2.6.22/* ./
endif
ifneq (,$(findstring 2.6.23,$(CURRENT)))
@cp -f v4l/kernel-2.6.23/* ./
endif
ifneq (,$(findstring 2.6.24,$(CURRENT)))
@cp -f v4l/kernel-2.6.24/* ./
endif
ifneq (,$(findstring 2.6.25,$(CURRENT)))
@cp -f v4l/kernel-2.6.25/* ./
endif
ifneq (,$(findstring 2.6.26,$(CURRENT)))
@cp -f v4l/kernel-2.6.26/* ./
endif
ifneq (,$(findstring 2.6.27,$(CURRENT)))
@cp -f v4l/kernel-2.6.27/* ./
endif
... in coda a questo elenco dovrai copincollare queste righe di codice
@cp -f v4l/kernel-2.6.33/* ./
endif
Dopo l'incollaggio.. controlla che gli spazi di indenzatazione siano delle tabulazioni e non degli spazi semplici altrimenti nella fase di make riceverai un errore che grossomodo è come questo:
Ovvero errore alla linea 54, ho trovato 8 spazi, volevi forse usare TAB ? ( puoi vedere il numero di linea in kwrite cliccando su visualizza->mostra i numeri di linea nell abarrà dei menù)
.. salva il file.. sei pronto per la compilazione
Loggati come root e spostati nella directory di lavoro
Per il 32bit
Per il 64bit
... bene ed ora compilazione ! digita:
...Il processo di configurazione richiederà pochi istanti
Potresti ricever il messaggio di errore che manca il file demodulator.o .. ignora l'avviso e procedi con l'installazione ovvero digita.. sempre come root
Quando il processo finisce sei pronto per infilare il sinto USB nella relativa porta
Inserisci il sinto USB e subito dopo digita:
Dovresti ottenere questo messaggio
usb 2-1: New USB device found, idVendor=0ccd, idProduct=0093
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: Cinergy T-Stick
usb 2-1: Manufacturer: TerraTec
usb 2-1: SerialNumber: 11132008
usb 2-1: configuration #1 chosen from 1 choice
input: TerraTec Cinergy T-Stick as /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.1/input/input11
generic-usb 0003:0CCD:0093.0003: input,hidraw2: USB HID v1.01 Keyboard [TerraTec Cinergy T-Stick] on usb-0000:00:1d.7-1/input1
AF903X: af903x_module_init
DRIVER_RELEASE_VERSION : v2.0-1
FW_RELEASE_VERSION : v8_8_52_0
API_RELEASE_VERSION : 200.20081203.0
dvb-usb: found a 'TerraTec Cinergy T-Stick' in warm state.
dvb-usb: will use the device's hardware PID filter (table count: 32).
DVB: registering new adapter (TerraTec Cinergy T-Stick)
DVB: registering adapter 0 frontend 0 (AF903X USB DVB-T)...
dvb-usb: TerraTec Cinergy T-Stick successfully initialized and connected.
usbcore: registered new interface driver dvb_usb_af903x
Dmesg segnala che è stata creata una periferica /dev/dvb/adapter0 (registering adapter 0 frontend 0 (AF903X USB DVB-T) e che "TerraTec Cinergy T-Stick successfully initialized and connected", cioè la periferica è connessa e funziona.. ora puoi sintonizzare i canali
Esci da root e spostati nella tua directory /home (ci dovresti tornare direttamente)
[user@locahost ~]$
.. adesso puoi lanciare la sintonia e creare il file di configurazione digita:
gli switch di comando sono -ft (frontend terrestrian che è di default ) -c IT (country ITalia) -E 0 (nessun canale Encrypted) -X (layout per XIne)
..ci vorranno diversi minuti, intanto che il sinto fa la scansione delle frequenze. Quando l'operazione termina troverai nella tua /home un file che si chiama channels.conf
Bene non ti resta che guardare la TV, digita:
Buona visione !
Il file dei canali usabile anche con Xine
Il file dei canali è un normale file di testo che può essere editato a piacere, ad esempio per riordinare i canali, per togliere magari quelli a pagamento se non interessano
Il file dei canali deve iniziare per forza con un canale, non ci possono essere ne spazi ne commenti segnati con l'hash "#"
Successivamente invece è possibile inserire dei commenti ad esempio per distinguere il bouquet dei canali
0105 Rai Storia(Rai):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ...
0106 Rai Gulp(Rai):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ...
0107 TV2000(Rai):482000000:INVERSION_AUTO:BANDWIDTH_8_MHZ...
#mediaset
0151 CANALE 5(Mediaset):618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ...
0152 ITALIA 1(Mediaset):618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ...
etc...
Se si cerca di usare Kaffeine 4 i canali vengono sintonizzati ma poi la preiferica non viene correttamente inizializzati
Dopo l'installazione la volta successiva che avviate il pc fatelo senza inserire il sintoUSB ( almeno sul mio acer ) altrimenti non funziona
Commenti
Inviato da Ilario il Dom, 24/01/2010 - 18:29.
Re: Terratec Cinergy T stick su Mandriva 2010
Madonna mia.......non ci posso credere.......
Inviato da Dom-X il Lun, 25/01/2010 - 03:09.
Re: Terratec Cinergy T stick su Mandriva 2010
Mandriva 64 bit 2011, kernel MIb Nrj 3.0.8
Inviato da Ilario il Lun, 25/01/2010 - 09:48.
Re: Terratec Cinergy T stick su Mandriva 2010
Ciao, ieri ero troppo sotto shok!!!, pensa era in vendita, l' ho chiusa, l' ho provato e funziona!
di volevo chiedere un favore, potresti spiegare brevemente cosa succede durante tutti i pasaggi,più o meno ho intuito, pero ho ancora qualche dubio qua e la, del tipo la path, cosa fa il codice al suo intrerno?, ecc, vorrei capire..
Grazie mille comunque!!!
PS: al prossimo kernel come dovrei comportarmi??
Inviato da Dom-X il Lun, 25/01/2010 - 13:57.
Re: Terratec Cinergy T stick su Mandriva 2010
La patch sostituisce alcune righe di codice nel file da patchare, è un file scritto in C credo.. io non sono un programmatore .. ho una pessima infarinatura di basic risalente a 30 anni fa più o meno..
.. a saper dove mettere le mani, potrsti banalmente fare un copia incolla delel righe di testo..
Quello che viene fatto è :
- sistemare un file sorgente con la patch in modo che il tuo sistema riconosca nel modo giusto il sinto usb: viene comunque riconosciuto come periferica HID, ma grazie alla modifica nei sorgenti, la nostra Mandriva sa che cosa farsene di questa periferica, l'associazione iniziale alla categoria tastiere, penso sia frutto di un banale "ragionamento" del kernel: "nulla mi dice cosa farmene di sta roba usb, è un HID .. quindi potrebbe essere una tastiera"... e tastiera diventa.
- sistemare il makefile ( che sono le istruzioni per la compilazione del driver) in modo da poter compilare i sorgenti per i kernel più recenti: i sorgenti forniti da terratec sono strutturati per funzionare fino al kernel 2.6.27 .. mandriva 2010 ha il 2.6.31 e bisogna "dirglielo in qualche modo. Nelle operazioni della guida è prevista proprio questa cosa: primo la creazione di una directory con gli header del kernel 2.6.31 ( vengono copiati dai sorgenti del kernel, per quello che è necessario scaricarli) e due righe di codice da aggiungere al makefile per fargli capire che esiste anche un altro kernel e dove puoi trovare i suoi header.
- il resto sintonia del file.. e uso. che mi sembra la parte meno complicata
.. al prossimo kernel.. sarà necessario rifare tutta la fila.. almeno che non venga messo il supporto in v4l oppure che venga creato un pacchetto rpm ad hoc.. (bella comodità gli rpm vero
).
Mandriva 64 bit 2011, kernel MIb Nrj 3.0.8
Inviato da Ilario il Mar, 26/01/2010 - 11:02.
Re: Terratec Cinergy T stick su Mandriva 2010
Gazie mille!!!!!
PS: sui miei due pc anche se lo lascio inserito funziona sempre.
Inviato da factum il Mar, 13/04/2010 - 20:42.
Re: Terratec Cinergy T stick su Mandriva 2010
Ho dovuo cambiare il comando per la ricerca dei canali
w_scan f t -k -t 2 -X >channels.conf
così funziona con vlc con xine non mi va
Ciao
Inviato da Dom-X il Mer, 14/04/2010 - 00:55.
Re: Terratec Cinergy T stick su Mandriva 2010
ma sei sicuro della sintassi che hai riportato ? hai aggiunto l'opzione per kaffeine solo che.... o metti -k oppure -X .... insieme non funziona mica
-ft (frontend terrestrial )
-t 2 ( tuning timeout medium ) probabilmente in antenna hai il segnale un po' basso e devi rallentare il tempo di timeout della ricerca su una determinata frequenza
-X (xine format)
-k (kaffeine format )
A seconda dell'opzione che metti: -X o -k, cambia il layout del file di output
Mandriva 64 bit 2011, kernel MIb Nrj 3.0.8
Inviato da factum il Ven, 07/05/2010 - 00:42.
Re: Terratec Cinergy T stick su Mandriva 2010
Ho rifatto la procedura per il nuovo kernel e devo dire che stavolta ho avuto meno problemi anche il comando w_scan che hai proposto ha funzionato, ma se metti il mio comando su google vedrai da dove l'ho preso, diversi siti lo propongono.
C'è nella guida i passi per un nuovo kernel? Alcuni vanno fatti una sola volta vero?
Inviato da Ciroloide il Lun, 19/07/2010 - 18:50.
Re: Terratec Cinergy T stick su Mandriva 2010
Ciao a tutti!
Provando ad utilizzare questa pèrocedura per la Mandriva 2010 Spring a 64 bit ho questo errore:
[ciro@BimboCiroBook AF903x_SRC]$ patch af903x-devices.c TerraTec_Cinergy_T-Stick.patch
patching file af903x-devices.c
Hunk #3 FAILED at 148.
patch unexpectedly ends in middle of line
patch: **** unexpected end of file in patch at line 13
Qualcuno sa dirmi perchè?
Ho persino riscritto "a mano" il contenuto della patch ma mi continua a dare lo stesso errore...
Ciao da Ciro
Pace a voi ed ai vostri pianeti
Ciroloide
Inviato da Dom-X il Dom, 24/10/2010 - 18:14.
Re: Terratec Cinergy T stick su Mandriva 2010
Ciao purtroppo l'ho letto solo adesso .. se ripassi di qua scrivi la tua mail ti mando il file già patchato.. su alcune macchine.. comprese la mia non ri riesce a patchare il file
Mandriva 64 bit 2011, kernel MIb Nrj 3.0.8