9 votos

La webcam integrada deja de funcionar después de unos segundos [Ubuntu 16.04]

Durante las últimas horas he intentado que mi cámara web integrada (de mi portátil Dell E7470) funcione para aplicaciones como Skype.

El problema:

Después de cada boot la cámara funciona bien, pero sólo durante un par de segundos (~ 30 seg.) después de iniciar la aplicación de vídeo. Después de eso la cámara no puede ser encontrada por ninguna aplicación (incluyendo cheese ) hasta que reinicie.

El pastebin

pastebin (lo siento, no hay suficiente representación para tener múltiples enlaces)

Cuando funciona:

  • ls /dev/video0 muestra que la cámara está ahí

  • v4l2-ctl --info da la siguiente salida: pastebin (primera parte)

  • hwinfo | grep video da la siguiente salida: pastebin (segunda parte)

Cuando no funciona:

  • ls /dev/video0 da: cannot access '/dev/video0': No such file or directory

  • v412-ctl --info da Failed to open /dev/video0: No such file or directory

  • hwinfo | grep video da la siguiente salida: pastebin (tercera parte)

Lo que intenté:

  1. Comprobé si mi cámara web es compatible con Ubuntu. Comprobé la página web de Dell y la de la UVC y llegué a la conclusión de que debería funcionar.
  2. Comprobado si hay alguna combinación Fn + F_Key que habilite / deshabilite mi cámara web. Parece que no está ahí.
  3. Instaló los controladores: sudo apt-get install cheese build-essential linux-headers- uname -r
  4. Lo intenté: rmmod uvcvideo && modprobe uvcvideo
  5. La solución probada #9 de aquí cambiando una línea en /etc/default/grub (también intentó poner iommu=soft después de quiet splash )

Lo siento por el pastebin combinado, pero no tengo suficiente reputación para publicar más de 2 enlaces. ¡Cualquier ayuda sobre cómo podría potencialmente resolver este problema sería muy apreciada!

Edición 1:

De Después de un tiempo la cámara web integrada se desconecta Descubrí que este problema también ocurrió hace más de cuatro años. Haciendo sudo rmmod uvcvideo && sudo modprobe uvcvideo parece traerlo de vuelta vivo por unos segundos (olvidé realizar este comando con sudo, por eso no hizo nada antes), pero luego vuelve a fallar... ¿Alguien ha resuelto alguna vez este problema?

Por cierto, el truco del rmmod/modprobe funciona sólo unas pocas veces. Después de eso no funciona en absoluto hasta que reinicio.

Edición 2:

Aquí está el rastreo de llamadas en /var/log/kern.log en el momento en que la cámara falla:

Jun  5 10:54:21 me kernel: [  219.778042] CPU: 0 PID: 2455 Comm: cheese Not tainted 4.8.0-53-generic #56~16.04.1-Ubuntu
Jun  5 10:54:21 me kernel: [  219.778043] Hardware name: Dell Inc. Latitude E7470/0T6HHJ, BIOS 1.13.4 02/07/2017
Jun  5 10:54:21 me kernel: [  219.778044]  0000000000000286 000000002daf03ef ffff8d9e4be93b98 ffffffff9082e7b3
Jun  5 10:54:21 me kernel: [  219.778045]  ffff8d9e4be93be8 0000000000000000 ffff8d9e4be93bd8 ffffffff9048314b
Jun  5 10:54:21 me kernel: [  219.778047]  000000ed4be93bd8 0000000000000000 ffffffff912d06c0 ffff8d9e771d70c0
Jun  5 10:54:21 me kernel: [  219.778049] Call Trace:
Jun  5 10:54:21 me kernel: [  219.778051]  [<ffffffff9082e7b3>] dump_stack+0x63/0x90
Jun  5 10:54:21 me kernel: [  219.778054]  [<ffffffff9048314b>] __warn+0xcb/0xf0
Jun  5 10:54:21 me kernel: [  219.778055]  [<ffffffff904831cf>] warn_slowpath_fmt+0x5f/0x80
Jun  5 10:54:21 me kernel: [  219.778057]  [<ffffffff906b78a8>] ? kernfs_find_and_get_ns+0x48/0x60
Jun  5 10:54:21 me kernel: [  219.778058]  [<ffffffff906bb56b>] sysfs_remove_group+0x8b/0x90
Jun  5 10:54:21 me kernel: [  219.778060]  [<ffffffff909a6297>] dpm_sysfs_remove+0x57/0x60
Jun  5 10:54:21 me kernel: [  219.778062]  [<ffffffff90998ab8>] device_del+0x58/0x270
Jun  5 10:54:21 me kernel: [  219.778063]  [<ffffffff90942c42>] ? kbd_disconnect+0x22/0x30
Jun  5 10:54:21 me kernel: [  219.778065]  [<ffffffff90ac6ea3>] evdev_disconnect+0x23/0x60
Jun  5 10:54:21 me kernel: [  219.778066]  [<ffffffff90ac1ef5>] __input_unregister_device+0xb5/0x160
Jun  5 10:54:21 me kernel: [  219.778067]  [<ffffffff90ac2cc7>] input_unregister_device+0x47/0x70
Jun  5 10:54:21 me kernel: [  219.778071]  [<ffffffffc0a14ba2>] uvc_status_cleanup+0x42/0x50 [uvcvideo]
Jun  5 10:54:21 me kernel: [  219.778073]  [<ffffffffc0a0a208>] uvc_delete+0x18/0x160 [uvcvideo]
Jun  5 10:54:21 me kernel: [  219.778074]  [<ffffffffc0a0a423>] uvc_release+0x23/0x30 [uvcvideo]
Jun  5 10:54:21 me kernel: [  219.778078]  [<ffffffffc098f946>] v4l2_device_release+0xe6/0x120 [videodev]
Jun  5 10:54:21 me kernel: [  219.778079]  [<ffffffff909982d2>] device_release+0x32/0x90
Jun  5 10:54:21 me kernel: [  219.778081]  [<ffffffff90830f7a>] kobject_release+0x6a/0x170
Jun  5 10:54:21 me kernel: [  219.778082]  [<ffffffff90830e37>] kobject_put+0x27/0x50
Jun  5 10:54:21 me kernel: [  219.778083]  [<ffffffff909985c7>] put_device+0x17/0x20
Jun  5 10:54:21 me kernel: [  219.778086]  [<ffffffffc098e490>] v4l2_release+0x50/0x80 [videodev]
Jun  5 10:54:21 me kernel: [  219.778087]  [<ffffffff906350f7>] __fput+0xe7/0x230
Jun  5 10:54:21 me kernel: [  219.778088]  [<ffffffff906352ae>] ____fput+0xe/0x10
Jun  5 10:54:21 me kernel: [  219.778090]  [<ffffffff904a230e>] task_work_run+0x7e/0xa0
Jun  5 10:54:21 me kernel: [  219.778091]  [<ffffffff904032d2>] exit_to_usermode_loop+0xc2/0xd0
Jun  5 10:54:21 me kernel: [  219.778093]  [<ffffffff90403b3e>] syscall_return_slowpath+0x4e/0x60
Jun  5 10:54:21 me kernel: [  219.778094]  [<ffffffff90c9a8fe>] entry_SYSCALL_64_fastpath+0xa6/0xa8
Jun  5 10:54:21 me kernel: [  219.778095] ---[ end trace cd02296d8a08b517 ]---
Jun  5 10:54:21 me kernel: [  219.802017] ------------[ cut here ]------------
Jun  5 10:54:21 me kernel: [  219.802022] WARNING: CPU: 0 PID: 2455 at /build/linux-hwe-MohJvK/linux-hwe-4.8.0/fs/sysfs/group.c:237 sysfs_remove_group+0x8b/0x90
Jun  5 10:54:21 me kernel: [  219.802023] sysfs group ffffffff912d06c0 not found for kobject 'input14'

Edición 3:

Otro rastreo de llamadas muestra que la conexión USB podría ser defectuosa:

Jun  5 11:08:11 me kernel: [ 1049.717359] usb 1-2: new full-speed USB device number 8 using xhci_hcd
Jun  5 11:08:11 me kernel: [ 1049.841492] usb 1-2: device descriptor read/64, error -71
Jun  5 11:08:12 me kernel: [ 1050.069407] usb 1-2: device descriptor read/64, error -71
Jun  5 11:08:12 me kernel: [ 1050.297575] usb 1-2: new full-speed USB device number 9 using xhci_hcd
Jun  5 11:08:12 me kernel: [ 1050.417566] usb 1-2: device descriptor read/64, error -71
Jun  5 11:08:12 me kernel: [ 1050.645641] usb 1-2: device descriptor read/64, error -71
Jun  5 11:08:12 me kernel: [ 1050.873599] usb 1-2: new full-speed USB device number 10 using xhci_hcd
Jun  5 11:08:12 me kernel: [ 1050.873825] usb 1-2: Device not responding to setup address.
Jun  5 11:08:13 me kernel: [ 1051.081804] usb 1-2: Device not responding to setup address.
Jun  5 11:08:13 me kernel: [ 1051.289562] usb 1-2: device not accepting address 10, error -71
Jun  5 11:08:13 me kernel: [ 1051.409586] usb 1-2: new full-speed USB device number 11 using xhci_hcd
Jun  5 11:08:13 me kernel: [ 1051.409821] usb 1-2: Device not responding to setup address.
Jun  5 11:08:13 me kernel: [ 1051.617820] usb 1-2: Device not responding to setup address.
Jun  5 11:08:13 me kernel: [ 1051.825581] usb 1-2: device not accepting address 11, error -71
Jun  5 11:08:13 me kernel: [ 1051.825661] usb usb1-port2: unable to enumerate USB device

Una cosa extraña es que el idVendor (0bda) se puede encontrar (que es Realtek Semiconductor Corp.), pero el idProduct (5765) no se encuentra en ninguna parte...

Edición 4:

Para que quede claro, mi flujo de trabajo es el siguiente.

  1. Fresco boot en Ubuntu 16.04
  2. Lanzamiento cheese
  3. Después de 1 minuto, se bloquea con la siguiente salida de kern.log: https://pastebin.com/XVwSEDBZ
  4. Reinicie cheese . Parece que funciona bien...
  5. Después de 1 minuto vuelve a fallar, pero ahora con la siguiente salida de kern.log: https://pastebin.com/8qHpBcdR (el error -71)
  6. Ahora cheese ya no puede lanzarse con éxito (no se detecta ningún dispositivo).
  7. Reiniciar y volver al paso 1...

3voto

JimmyJumbo Puntos 46

¡Lee también la edición de abajo!

~~

Así que parece que hay muchos otros que se enfrentan a la error -71 problema; no sólo con las cámaras web, sino con los dispositivos USB en general. El problema parece ser "un error de USB que se introdujo con los módulos de ahorro de energía [en el kernel 2.6.27]" . Así que para ahorrar energía supongo que la webcam se apagó después de un minuto o así.

Ese sitio web también tiene lo que parece ser la solución de trabajo:

$ sudo -s
$ echo -1> /sys/module/usbcore/parameters/autosuspend

Esto está escrito para ser el 'hotfix', pero parecía haber resuelto permanentemente mi problema (después de reiniciar el valor cambió de nuevo al valor original 2, pero hey no más fallos de la cámara web :) )

Sólo para estar seguro, también hice el "arreglo permanente":

  1. Crea un archivo en /etc/modprobe.d llamado usbcore
  2. Rellene el archivo con lo siguiente options usbcore autosuspend=-1
  3. Guardar el archivo
  4. Ejecute "mkinitrd" (Si está seguro de que no hay módulos de dispositivos USB cargados a través del initrd, entonces puede saltarse este paso). Yo me salté este paso, porque este comando no se pudo encontrar.
  5. Reiniciar

Espero que esto ayude a alguien.

¡Edición importante!

Por lo tanto, la forma mencionada para establecer la suspensión automática no es universal, y depende de su sistema operativo. Por favor, encuentre una respuesta más elaborada sobre cómo editar su parámetro de autosuspensión aquí: https://unix.stackexchange.com/questions/91027/how-to-disable-usb-autosuspend-on-kernel-3-7-10-or-above

Lo mencionaré aquí sólo para completarlo.

Para Ubuntu 14.04 y 15.04:

Edite el archivo /etc/default/Grub y cambie la línea GRUB_CMDLINE_LINUX_DEFAULT para añadir la opción usbcore.autosuspend=-1:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

Tenga en cuenta que las opciones de salir de la salpicadura ya estaban presentes. Así que mantener otras opciones que tiene también.

Después de guardar el archivo, actualice Grub:

sudo upgrade-grub
(también puede ser sudo update-grub2 (Yo hice las dos cosas))

Y reiniciar.

Ahora comprueba el valor de la suspensión automática:

cat /sys/module/usbcore/parameters/autosuspend Y debería mostrar -1

Ubuntu 15.10 y superior

~~

El procedimiento es el mismo, pero el parámetro a cambiar es autosuspend_delay_ms (en lugar de autosuspend).

Edición 2

Falsa alarma... Así que lo anterior no funcionó después de todo. Todavía tengo que el dispositivo USB errores en error -71 . A continuación se muestra un seguimiento completo de la pila de /var/log/kern.log en el momento en que la cámara web se estrelló: https://pastebin.com/8qHpBcdR . Sin embargo, una nota: la primera vez que la cámara web se bloquea obtengo este tipo de salida: https://pastebin.com/XVwSEDBZ , El error -71 ocurre sólo después de intentar ejecutar cheese de nuevo (que puede lanzarse normalmente). Cuando se bloquea de nuevo, ya no puede funcionar en absoluto (hasta que reinicio).

Si alguien tiene una idea de lo que puedo hacer, por favor, hágamelo saber.

Edición 3

Así que actualicé mi kernel de 4.8.0-54-generic a 4.10.0-22-generic, y hasta ahora parece ser estable. Si se bloquea de nuevo lo reportaré.

2voto

JimmyJumbo Puntos 46

Ok, entonces la verdadera solución al problema fue que yo trabajara con un kernel no compatible con mi cámara web. Actualicé de 4.8.0-54-generic a 4.10.0-22-generic, y la webcam es muy estable ahora. Sólo algunas veces se apaga sola (como en Facebook messenger, por ejemplo), pero basta con reiniciar la aplicación para solucionarlo. Ya no es necesario reiniciar.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: