Veamos como instalar el driver que da soporte a los dispositivos que utilizan los chipsets de la familia stk11xx, de Syntek Semicon, en concreto, para el EasyCAP USB.

Hace poco necesité adquirir vídeo de una fuente analógica. Buscando por internet, me encontré con un chisme que parecía suplir mis necesidades. Se llamaba concretamente “EasyCAP 4-Channel 4-Input USB 2.0 DVR Video Capture/Surveillance Dongle” (EasyCAP para los amigos ;-)), pero no había mucha más información sobre él. Lo encontré en dealextreme.com, y terminé comprándolo, porque de lejos, era la opción más barata (me salió por unos 11 €, portes gratuitos). No esperaba mucho del chisme, simplemente con que funcionara…
Y funcionó… bueno, más o menos. :p

Cuando llegó, traía un CD con drivers para otros sistemas operativos, que fue lo primero que deseché ;-) El chisme, por cierto, es como un pincho USB gris, con 5 cables que terminan en sendas clavijas RCA-f (hembra): 4 de vídeo (amarillas) y 1 de audio (blanca).

Tras desembalarlo, lo primero fue enchufarlo en mi Debian, a ver que me contaba Linux. No esperaba que funcionara directamente, ni de lejos. Me salió algo así:

[ 2517.072014] usb 1-2: new high speed USB device using ehci_hcd and address 5
[ 2517.204916] usb 1-2: configuration #1 chosen from 1 choice
[ 2517.216239] usb 1-2: New USB device found, idVendor=05e1, idProduct=0408
[ 2517.216247] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2517.216251] usb 1-2: Product: USB 2.0 Video Capture Controller
[ 2517.216254] usb 1-2: Manufacturer: Syntek Semiconductor

Bueno, algo es algo. Me dice que tiene un chip Syntek, con USB ID 05e1:0408. Perfecto. Una búsqueda rápida (bueno, la verdad es que me tiré un buen rato :p) me lleva a descubrir que el chip que monta es un stk1160. Más google y descubro que hay un driver para unas webcam de Syntek, en concreto para las DC-1125 y las STK-1135. Mmm, quizá tenga soporte. Busco un poco más, y me doy de bruces con este hilo: STK1160 Support, Bien, algo de esperanza. Es un parche para el driver stk11xx, escrito por Ivor Hewitt. Lo probé, y funcionó regularmente. Es muy experimental, y muy joven, pero funciona. En esta receta describo un poco cómo instalarlo. Hay dos formas: compilar el código o instalar el paquete.

ADVERTENCIA: El autor del driver dice:
The syntek […] driver […] is currently being developed on Linux. This driver can do damages. Use this driver only if you know what you are doing.

Y yo añado que no me hago responsable de nada de lo que pueda pasar si sigues esta receta. En mi caso, el driver funciona. No puedo asegurar nada más. Es un módulo del kernel, por lo que puede producir ‘kernel panics’ y dejar congelado tu PC. Avisado quedas :p

Desde el código

Lo que vas a hacer es compilar el código fuente del driver para tu sistema. Está escrito en C, y depende de una versión del kernel bastante moderna, a partir de la 2.6.28 (en el foro hay un parche para compilar en versiones anteriores del kernel), por lo que necesitas los siguientes paquetes:

  • build-essential
  • linux-image-2.6.28
  • linux-headers-2.6.28

Estos están disponibles en las distribuciones Debian actuales (si tienes problemas con linux-kbuild, he compilado y empaquetado la versión 2.6.28, está disponible en el repo citado en la siguiente sección).

La mejor opción es tirar del repositorio de svn para bajarse las fuentes. Algo así:

 ~$ svn co https://syntekdriver.svn.sourceforge.net/svnroot/syntekdriver/trunk/driver syntekdriver

Ahora nos descargamos el parche antes mencionado, y lo aplicamos

 ~$ cd syntekdriver
 syntekdriver$ wget http://www.ivor.org/stk0408-1.patch
 [...]
 syntekdriver$ patch -i stk0408-1.patch
 [...]

Listo, ahora toca compilar. El fichero Makefile tiene un pequeño error, pero no afecta a la compilación del módulo:

 ~$ make -f Makefile.standalone
 [...]
ctags: no input files specified.
	Try `ctags --help' for a complete list of options.
make: *** [driver] Error 1

Puedes ignorar el error, pues el módulo se ha compilado perfectamente. Ya está, solo queda probarlo. Depende de otros módulos, en concreto de usbcore y de videodev. El probable que ya los tengas cargados, pero por si acaso…

 ~$ sudo modprobe videodev
 ~$ sudo modprobe usbcore
 ~$ sudo insmod stk11xx.ko
 ~$ dmesg | tail -n 15
[ 5700.101573] usb 1-2: new high speed USB device using ehci_hcd and address 6
[ 5700.232899] usb 1-2: configuration #1 chosen from 1 choice
[ 5700.242794] stk11xx: Probe function called with VendorID=05E1, ProductID=0408 and InterfaceNumber=0
[ 5700.242800] stk11xx: Syntek USB2.0 - STK-1160 based device found.
[ 5700.242804] stk11xx: Syntek AVStream USB2.0 Video Capture - Product ID 0x0408.
[ 5700.242808] stk11xx: Release: 0005
[ 5700.242810] stk11xx: Number of interfaces : 3
[ 5700.243331] stk11xx: Initialize USB2.0 Syntek Capture device
[ 5700.461080] stk11xx: SET FEATURE
[ 5700.461086] stk11xx: Syntek USB2.0 Capture device is ready
[ 5700.461200] stk11xx: Syntek USB2.0 Camera is now controlling video device /dev/video0
[ 5700.468901] usb 1-2: New USB device found, idVendor=05e1, idProduct=0408
[ 5700.468909] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 5700.468913] usb 1-2: Product: USB 2.0 Video Capture Controller
[ 5700.468916] usb 1-2: Manufacturer: Syntek Semiconductor

La ultima ejecución de ‘dmesg’ retorna los mensajes producidos al conectar el dispositivo. Vemos que hay un nuevo device en /dev/video0 listo para ser usado. Lo podemos probar con cualquier cosa que utilice V4L2, por ejemplo con mplayer, con la línea siguiente:

 ~$ mplayer tv:// -tv driver=v4l2:device=/dev/video0

Como verás, consume bastante CPU, y la calidad no es de lo mejor, pero funciona. Hay que tener en cuenta que el driver es muy joven (apenas cuenta con 3 meses de vida!!). Por supuesto, cualquier contribución es bienvenida: parches, pruebas, etc. ;-)

Paquete Debian

Nota: este paquete ya no está disponible. Siento las molestias.

Para no recompilar el driver en cada máquina que pueda usar este trasto, y para aquellos que lo deseen, lo he empaquetado para Debian. Está disponible en mi repositorio personal, que se puede utilizar añadiendo la siguiente línea en el fichero /etc/apt/sources.list:

deb http://lamport.mine.nu/debian binary/

Luego, actualizas la lista de paquetes, y lo instalas como de costumbre (en el ejemplo uso apt-get). Aquí, las dependencias se suelen satisfacer solas… :p :

 ~$ sudo apt-get update
 ~$ sudo apt-get install stk11xx-modules
 [...]

Y listo. Conecta el chisme y a rular! :-o

Referencias



blog comments powered by Disqus