Modulo kernel 3.6.2 compatibile con Fedora 17 x86_64: DVT RTL 2832/2838

Devo ammettere di avere perso parecchio tempo cercando una soluzione che permettesse ai diffusissimi stick DVT senza grande successo, tanto che per qualche tempo ho mantenuto alcune installazioni con MythTv sul kernel 3.4.9 per potere utilizzare gli stick.

lkjhkljhl

Sono stato entusiasta quando ho letto che il kernel 3.6 avrebbe fnalmente portato il supporto nativo per questi diffusissimi e super economici chip Realtek, ma con mio grande disappunto ho scoperto che tutti gli stick in mio possesso (ben tre) non funzionano con il nuovo kernel 3.6.

Per contro il "vecchio" metodo della compilazione del modulo, pur non presentando errori di compilazione, non funzionava più.

Non potevo quindi resistere alla tentazione di trovare una diversa soluzione e così eccola qui: funzionante e testata su Fedora 17 64 bit con kernel 3.6.2 e verificata con tre diversi stick.

Partiamo!

L'idea in sè era semplice: se il modulo funzionava prima per quale dannato motivo doveva NON funzionare con il kernel 3.6?

Inoltre il progetto ha sospeso l'attività in quanto sta lavorando all'inserimento del proprio codice nella mainline del kernel, ma a me serve ADESSO.

Quindi mi sono documentato ed ho fatto un "giro" nel codice del modulo, "scoprendo" che la funzionalità è legata all'utilizzo di alcuni file di header prelevati del sorgente del kernel.

Quindi mi sono detto: ma perchè non provare a sostituire i files header con quelli del nuovo kernel?

Detto fatto: il modulo compila e funziona in modo eccellente.

Allego quindi il sorgente del modulo:

Istruzioni

  • assicurarsi di disporre degli strumenti di sviluppo necessari alla compilazione di codice (make cpp eccetera)
  • scaricare il sorgente allegato
  • decomprimere il file
  • entrare da un terminale nella directory RTL2832-2.2.2_kernel-3.0.0 in cui si trova il file Makefile che io ho già adattato al kernel 3.6
  • digitare make e battere enter
  • digitare sudo make install (verrà chiesta la password i root oppure diventare root con il comando su e dare il predetto comando)
  • riavviare la macchina e quindi connettere lo stick

Se tutto è andato per il verso giusto digitando il comando dmesg si vedrà qualcosa del tipo:

[ 1541.353026] usb 1-2: new high-speed USB device number 4 using ehci_hcd
[ 1541.480889] usb 1-2: New USB device found, idVendor=0bda, idProduct=2838
[ 1541.480895] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1541.480900] usb 1-2: Product: RTL2838UHIDIR
[ 1541.480904] usb 1-2: Manufacturer: Realtek
[ 1541.480908] usb 1-2: SerialNumber: 00000195
[ 1847.030028] usbcore: deregistering interface driver dvb_usb_rtl2832u
[ 1853.431684] dvb-usb: found a 'RTL2832U DVB-T USB DEVICE' in warm state.
[ 1853.431696] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 1853.433307] DVB: registering new adapter (RTL2832U DVB-T USB DEVICE)
[ 1853.448794] RTL2832U usb_init_bulk_setting : USB2.0 HIGH SPEED (480Mb/s)
[ 1853.684893] RTL2832U check_tuner_type : E4000 tuner on board...
[ 1854.183135] DVB: registering adapter 0 frontend 0 (Realtek DVB-T RTL2832)...
[ 1854.183359] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:1d.7/usb1/1-2/input/input9
[ 1854.183444] dvb-usb: schedule remote query interval to 287 msecs.
[ 1854.183450] dvb-usb: RTL2832U DVB-T USB DEVICE successfully initialized and connected.
[ 1854.183510] usbcore: registered new interface driver dvb_usb_rtl2832u

Buona visione!

Credits

Desidero ricordare a tutti che io non ho scritto questo modulo, ma lo ho solo adattato al kernel 3.6, quindi tutti i meriti ed i rigraziamenti vanno ai VERI creatori del driver, che è la rielaborazione del driver Realtek, il cui progetto è indicato nel mio precedente articolo.

Mi auguro che presto questo modulo non serva più grazie al supporto dei device nel driver nativo incluso con il kernel 3.6 (speriamo in Fedora 18)