EasyCAP en GNU/Linux

Debian

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 Eye-wink), 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. Sticking out tongue

Cuando llegó, traía un CD con drivers para otros sistemas operativos, que fue lo primero que deseché Eye-wink 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 Sticking out tongue) 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 Sticking out tongue

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í:

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. Eye-wink

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:

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… Sticking out tongue :

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

Y listo. Conecta el chisme y a rular! Shocked

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de david.villa

Dos cosillas

  1. El repositorio en el que tienes el paquete no está accesible. Si aún lo tienes, ponlo en babel.
  2. A mi no me funciona con el repo+patch que dices, pero sí que funciona aceptablemente con http://sourceforge.net/projects/easycapdc60/files/

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de oscarah

No lo tengo

Me temo que no tengo el paquete. Lo hice hace tiempo, pero nunca me dio buenos resultados (el driver), así que lo abandoné. Es cierto, tengo que quitarlo del post. Gracias Laughing out loud

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Imagen de david.villa

¿Qué problemas te dio

¿Qué problemas te dio el driver? yo he probado el que enlazo y pinta bastante bien.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de oscarah

Pues...

No se si será el mismo, pero tenía dos problemas serios. El primero, y más importante: se comía toda la CPU y provocaba kernel panics. El segundo: se veía fatal: colores incorrectos, poco refresco... en fin, una pre-pre-alfa en toda regla Smiling

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Problema con repos

Hola a todos!!!

Necesito un poco de ayuda con la instalacion para la EASYCAP.
Estoy usando ubuntu 9.10. No me ha funcionado la compilacion del driver y tampoco he podido bajar los stk11xx-modules desde el repositorio personal linkeado, parece que el servidor no esta disponible, existe otro sitio desde donde pueda bajar estos modulos??

Agradeciendo de antemano me despido,

Imagen de oscarah

Driver STK1160

Hola,

Gracias por tu paciencia Laughing out loud Perdona las molestias, pero el repositorio que se muestra en la receta ya no está disponible. Cuando tenga un ratejo arreglo la receta.

El driver para la capturadora stk1160 ha sido añadido al repositorio, junto con el resto de drivers, por lo que ya no es necesario aplicar ningún parche. Basta con bajarse el repositorio y compilarlo.

Se puede hacer de la siguiente forma:

$ svn co https://syntekdriver.svn.sourceforge.net/svnroot/syntekdriver/trunk/driver syntekdriver
$ cd syntekdriver/trunk/driver/
$ make -f Makefile.standalone
$ sudo modprobe videodev
$ sudo insmod stk11xx.ko

Con eso debería bastar.

Saludos.

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Instalación

Hola,

Gracias por tu respuesta. Luego de realizar los pasos que me indicaste el driver se instalo sin problemas (segun lo que creo), en efecto

cosi@CosiHome:~$ dmesg | tail -n 20
[ 19.816251] agpgart-via 0000:00:00.0: AGP 3.5 bridge
[ 19.816275] agpgart-via 0000:00:00.0: putting AGP V3 device into 8x mode
[ 19.816359] nvidia 0000:01:00.0: putting AGP V3 device into 8x mode
[ 24.900870] usb 3-1: new full speed USB device using uhci_hcd and address 10
[ 25.024030] usb 3-1: device descriptor read/64, error -71
[ 25.248033] usb 3-1: device descriptor read/64, error -71
[ 25.464093] usb 3-1: new full speed USB device using uhci_hcd and address 11
[ 25.588030] usb 3-1: device descriptor read/64, error -71
[ 25.816054] usb 3-1: device descriptor read/64, error -71
[ 26.032035] usb 3-1: new full speed USB device using uhci_hcd and address 12
[ 26.440219] usb 3-1: device not accepting address 12, error -71
[ 26.552045] usb 3-1: new full speed USB device using uhci_hcd and address 13
[ 26.966095] usb 3-1: device not accepting address 13, error -71
[ 26.966123] hub 3-0:1.0: unable to enumerate USB device on port 1
[ 404.844069] nvidia-settings[1853]: segfault at 1c ip 080b68dd sp bf901c00 error 4 in nvidia-settings[8048000+9b000]
[ 1013.338904] Linux video capture interface: v2.00
[ 1020.565723] stk11xx: Syntek USB2.0 webcam driver startup
[ 1020.565729] stk11xx: Copyright(c) 2006-2009 Nicolas VIVIEN
[ 1020.565783] usbcore: registered new interface driver usb_stk11xx_driver
[ 1020.565788] stk11xx: v2.2.0 : Syntek USB Video Camera

Sin embargo no reconoce el dispositivo,

cosi@CosiHome:~/syntekdriver$ mplayer tv:// -tv driver=v4l2:device=/dev/video0
MPlayer SVN-r29237-4.4.1 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing tv://.
TV file format detected.
Selected driver: v4l2
name: Video 4 Linux 2 input
author: Martin Olschewski
comment: first try, more to come Eye-wink
v4l2: unable to open '/dev/video0': No such file or directory
v4l2: ioctl set mute failed: Bad file descriptor
v4l2: 0 frames successfully processed, 0 frames dropped.

Exiting... (End of file)

No esta en /dev/video1, 2...

Alguna sugerencia??????

Imagen de admin

Por favor, cuidad la

Por favor, cuidad la ortografía…. No convirtamos CRySoL en otro nido de incultura.