Quien se haya pasado a ubuntu karmic o haya actualizado a un kernel superior a la versión 2.6.28-11 habrá comprobado que siguiendo el post donde explicaba la instalación de estos drivers en la compilación habrá tenido problemas. A continuación voy a explicar la forma de instalar estos drivers en cualquier kernel utilizando ubuntu, lo que vamos a hacer es compilar todo el kernel.
### EDITADO - Gracias a jimmykruspe por su comentario :) ###
Por un lado necesitamos el codigo fuente del kernel parcheado por ubuntu y por otro los drivers que vienen en el cd de la tarjeta DVB
Para descargar el codigo fuente del kernel
& sudo apt-get install linux-source
Tambien necesitaremos descargar otros paquetes, por ejemplo la libreria ncurses para modificar el kernel y a el paquete kernel-package
& sudo apt-get install libncurses5-dev kernel-package build-essential
Ahora vamos con los drivers. Podemos descargarlos de aquí o bien los cogemos de nuestro cd y en los dos casos copiamos la carpeta 080821_rtd2831u_linux_driver en el escritorio. Ahora viene algo muy importante, si son los drivers del cd tenemos que hacerle una modificación, es muy importante este paso, sino no funcionarán. Si los drivers son los descargados, obviamos este paso. La modificación que hay que hacer es la siguiente:
* Entramos en la carpeta 080821_rtd2831u_linux_driver y abrimos el archivo tuner_base_2831u.h
* En la línea 16 del archivo donde pone #include “foundation.h” debemos cambiarlo #include “foundation_2831u.h”
* Guardamos los cambios y listo.
Bien, ahora tenemos que copiar los drivers en el codigo fuente del kernel que hemos descargado para compilarlo, para ello en terminal escribimos:
& cd /usr/src
En mi caso el codigo fuente descargado correspondia con la versión 2.6.31, para ver que versión hemos descargado, ls, mostrará el archivo .tar.bz2 que tenemos.
& sudo tar xvjf linux-source-2.6.31.tar.bz2
Para crear un enlace simbólico al kernel
& sudo ln -s linux-source-2.6.31 linux& cd /home/nombre-usuario/Escritorio/080821_rtd2831u_linux_driver
Copia los dirvers en el kernel
& sudo cp -f *.* /usr/src/linux/drivers/media/dvb/dvb-usb
Abrimos el Makefile y el Kconfig que se encuentran en el directorio /usr/src/linux/drivers/media/dvb/dvb-usb.
& sudo gedit /usr/src/linux/drivers/media/dvb/dvb-usb/Makefile
Y añadimos las siguientes lineas:
dvb-usb-rtl2831u-objs = math_mpi.o foundation_2831u.o demod_rtl2830.o tuner_demod_io.o tuner_mxl5005s.o mt_spuravoid.o mt_userdef.o mt2060_basic.o tuner_ah.o MT2060Tuner.o rtd2830.o rtd2830u.o
obj-$(CONFIG_DVB_USB_RTL2831U) += dvb-usb-rtl2831u.o
Guardamos y hacemos lo mismo con el kconfig
& sudo gedit /usr/src/linux/drivers/media/dvb/dvb-usb/Kconfig
config DVB_USB_RTL2831U
tristate "Realtek RTL2831U DVB-T USB2.0 support"
depends on DVB_USB
help
Realtek RTL2831U DVB-T driver.
Ahora vamos a configurar el kernel para que compile los drivers.
& cd /usr/src/linux
& sudo make menuconfig
Y se nos abrerá un menú, tenemos que ir a:
Device Drivers —> Multimedia support —> DVB/ATSC adapters —> Realtek RTL2831U DVB-T USB2.0 support y pulsamos M para habilitar este modulo, guardamos los cambios y cerramos el menú.
Ya solo no queda compilar el kernel e instalarlo. En el mismo directorio /usr/src/linux/
& sudo make-kpkg --initrd kernel_image kernel_headers
La compilación va a tardar un buen rato, asi que te puedes armar de paciencia y esperar. Cuando finalice vamos a la carpeta /usr/src/ ya sea mediante la terminal o de forma gráfica y ejecutamos los dos .deb para instalar el nuevo kernel. Mediante terminal sería así:
& dpkg -i kernel-image-2.6.31.4_10.00.Custom_amd64.deb
& dpkg -i kernel-headers-2.6.31.4_10.00.Custom_amd64.deb
Si queremos podemos guardarnos los dos paquetes .deb para instalarlos en otra ocasión.
Espero que os sea de gran ayuda.
Más información sobre el compilado del Kernel aquí
< Prev | Próximo > |
---|
Comentarios
& make-kpkg --initrd kernel_image kernel_headers
en mi caso tengo que ser superusuario:
& sudo make-kpkg --initrd kernel_image kernel_headers
Y en
& cd /usr/src/linux& sudo make menuconfig
he tenido que hacer antes:
& cd
porque estaba en otra carpeta de un paso anterior..
por lo demás todo perfecto, muchas gracias por tu gran aportación, estoy compilándolo (tarda mucho)
Saludos.
A veces voy tan rápido... la finalidad de la web es mas que nada, que cuando estemos trasteando y encontremos una solución en Google, dejarla más o menos plasmada, para que si posteriormente, en un futuro tenemos que volver a hacerlo, podamos tirar de "guiaburros", pero a veces, se nos escapen detalles. Para eso están los comentarios!! :)
En mi caso lo tengo funcionando desde que colgué el artículo y va de maravilla, otra cosa será si actualizamos el kernel... :(
Me tardo unas cuantas horas en compilar...
Lo dicho, gracias!!!
puppo@puppo-desktop:~$ sudo gedit /usr/src/linux/drivers/media/dvb/dvb-usb/Kconfig
[sudo] password for puppo:
puppo@puppo-desktop:~$ cd /usr/src/linux
puppo@puppo-desktop:/usr/src/linux$ sudo make menuconfig
scripts/kconfig/mconf arch/x86/Kconfig
drivers/media/dvb/dvb-usb/Kconfig:325: unknown option "DVB_USB_RTL2831U"
drivers/media/dvb/dvb-usb/Kconfig:326:warning: prompt redefined
make[1]: *** [menuconfig] Error 1
make: *** [menuconfig] Error 2
puppo@puppo-desktop:/usr/src/linux$
soy novato así que no sé que hacer con el error que me sale
puppo@puppo-desktop:~$ sudo make-kpkg --initrd kernel_image kernel_headers
We do not seem to be in a top level linux kernel source directory
tree. Since we are trying to make a kernel package, that does not make
sense. Please change directory to a top level linux kernel source
directory, and try again. (If I am wrong, and this is indeed a top
level linux kernel source directory, then I have gotten sadly out of
date with current kernels, and you should upgrade kernel-package)
puppo@puppo-desktop:~$
mi inglés no es muy bueno así que no sé que pasa ahora, tampoco estoy seguro de como guardar los cambios en el modulo del paso anterior, he pulsado la "M" y luego la "Y" y cerrado el terminal
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:750: error: ‘FUNCTION_SUCCE SS’ undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:758: error: ‘FUNCTION_ERROR ’ undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetI2 cBridgeModuleTu nerArg’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:809: error: ‘TUNER_MODULE’ has no member named ‘pI2cBridge’
make[5]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[4]: *** [drivers/media/dvb/dvb-usb] Error 2
make[3]: *** [drivers/media/dvb] Error 2
make[2]: *** [drivers/media] Error 2
make[1]: *** [drivers] Error 2
make[1]: se sale del directorio `/usr/src/linux-source-2.6.32'
make: *** [debian/stamp/build/kernel] Error 2
puppo@puppo-desktop:/usr/src/linux$
no se si esto contesta tu pregunta
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:750: error: ‘FUNCTION_SUCCE SS’ undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:758: error: ‘FUNCTION_ERROR ’ undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetI2 cBridgeModuleTu nerArg’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:809: error: ‘TUNER_MODULE’ has no member named ‘pI2cBridge’
make[5]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[4]: *** [drivers/media/dvb/dvb-usb] Error 2
make[3]: *** [drivers/media/dvb] Error 2
make[2]: *** [drivers/media] Error 2
make[1]: *** [drivers] Error 2
make[1]: se sale del directorio `/usr/src/linux-source-2.6.32'
make: *** [debian/stamp/build/kernel] Error 2
puppo@puppo-desktop:/usr/src/linux$
no se si esto contesta tu pregunta
ber named ‘pI2cBridge’
make[5]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[4]: *** [drivers/media/dvb/dvb-usb] Error 2
make[3]: *** [drivers/media/dvb] Error 2
make[2]: *** [drivers/media] Error 2
make[1]: *** [drivers] Error 2
make[1]: se sale del directorio `/usr/src/linux-source-2.6.32'
make: *** [debian/stamp/build/kernel] Error 2
puppo@puppo-desktop:/usr/src/linux$
ber named ‘pI2cBridge’
make[5]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[4]: *** [drivers/media/dvb/dvb-usb] Error 2
make[3]: *** [drivers/media/dvb] Error 2
make[2]: *** [drivers/media] Error 2
make[1]: *** [drivers] Error 2
make[1]: se sale del directorio `/usr/src/linux-source-2.6.32'
make: *** [debian/stamp/build/kernel] Error 2
puppo@puppo-desktop:/usr/src/linux$
Linux puppo-desktop 2.6.32-24-generic #43-Ubuntu SMP Thu Sep 16 14:17:33 UTC 2010 i686 GNU/Linux
en cuanto al directorio puppo@puppo-desktop:~$ cd /usr/src
puppo@puppo-desktop:/usr/src$ ls
broadcom-sta.tar.bz2 linux-source-2.6.32
linux linux-source-2.6.32.tar.bz2
linux-headers-2.6.32-21 lzma.tar.bz2
linux-headers-2.6.32-21-generic nvidia-173-173.14.22
linux-headers-2.6.32-24 nvidia-current-195.36.24
linux-headers-2.6.32-24-generic
puppo@puppo-desktop:/usr/src$
ber named ‘pI2cBridge’
make[5]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[4]: *** [drivers/media/dvb/dvb-usb] Error 2
make[3]: *** [drivers/media/dvb] Error 2
make[2]: *** [drivers/media] Error 2
make[1]: *** [drivers] Error 2
make[1]: se sale del directorio `/usr/src/linux-source-2.6.32'
make: *** [debian/stamp/build/kernel] Error 2
puppo@puppo-desktop:/usr/src/linux$
puppo@puppo-desktop:/usr/src/linux$ sudo make menuconfig
[sudo] password for puppo:
scripts/kconfig/mconf arch/x86/Kconfig
*** End of Linux kernel configuration.
*** Execute 'make' to build the kernel or try 'make help'.
puppo@puppo-desktop:/usr/src/linux$ sudo make-kpkg --initrd kernel_image kernel_headers
el proceso de compilacion tarda varias horas, depende de la máquina, interrumpirlo te puede llevar a problemas con el kernel y o con el Sistema Operativo, es importante destacar que no es una operación trivial, recompilar el kernel es tedioso y a veces no nos da el fruto que queremos. De todas formas si el proceso de compilación inicia correctamente no lo interrumpas. Déjalo, por ejemplo, toda la noche
Suscripción de noticias RSS para comentarios de esta entrada.