Webcam integrada para de funcionar após alguns segundos [Ubuntu 16.04]

4

Nas duas últimas horas, tentei fazer com que minha webcam integrada (do meu laptop Dell E7470) funcionasse para aplicativos como o Skype.

O problema:

Após cada inicialização, a câmera funciona bem, mas apenas por alguns segundos (~ 30 segundos) depois de iniciar o aplicativo de vídeo. Depois disso, a câmera não pode ser encontrada por nenhum aplicativo (incluindo cheese ) até que eu reinicie.

O pastebin

pastebin (desculpe não ter representante suficiente para ter vários links)

Quando está funcionando:

  • ls /dev/video0 mostra que a câmera está lá

  • v4l2-ctl --info fornece a seguinte saída: pastebin (primeira parte)

  • hwinfo | grep video fornece a seguinte saída: pastebin (segunda parte)

Quando não está funcionando:

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

  • v412-ctl --infoFailed to open /dev/video0: No such file or directory

  • hwinfo | grep video fornece a seguinte saída: pastebin (terceira parte)

O que eu tentei:

  1. Verificado se minha webcam é compatível com o Ubuntu. Verificado no site da Dell, bem como no site da UVC, e chegou à conclusão de que deveria funcionar.
  2. Verificado se existe alguma combinação Fn + F_Key que habilite / desabilite minha webcam. Parece não estar lá.
  3. Instalou os drivers: sudo apt-get install cheese build-essential linux-headers- uname -r
  4. Tentei: rmmod uvcvideo && modprobe uvcvideo
  5. Tentei a solução # 9 de aqui , alterando uma linha em /etc/default/grub (também tentei colocar iommu=soft após quiet splash )

Desculpe pela pasta combinada, mas não tenho reputação suficiente para postar mais de dois links. Qualquer ajuda sobre como eu poderia resolver este problema seria muito apreciada!

Editar 1:

De Depois de um tempo, webcam integrada é desconectada Eu descobri que esse problema ocorreu mais de quatro anos atrás também. Fazendo sudo rmmod uvcvideo && sudo modprobe uvcvideo parece trazê-lo de volta vivo por alguns segundos (eu esqueci de executar este comando com sudo, então é por isso que não fez nada antes), mas depois falha novamente ... Alguém já resolveu esse problema ?

A propósito, o truque rmmod / modprobe funciona apenas algumas vezes. Depois disso, não funciona até eu reiniciar.

Editar 2:

Aqui está o rastreamento de chamadas em /var/log/kern.log no momento em que a câmera falha:

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'

Editar 3:

Outro Rastreamento de Chamada mostra que a conexão usb pode estar com defeito:

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

Uma coisa estranha é que o idVendor (0bda) pode ser encontrado (que é Realtek Semiconductor Corp.), mas o idProduct (5765) está longe de ser encontrado ...

Editar 4:

Só para deixar claro, meu fluxo de trabalho é o seguinte.

  1. Inicialização fresca no Ubuntu 16.04
  2. Iniciar cheese
  3. Após 1 minuto, ele cai com a seguinte saída kern.log: link
  4. Reinicie cheese . Parece funcionar bem ...
  5. Após 1 minuto, falha novamente, mas agora com a seguinte saída kern.log: link (o erro -71)
  6. Agora, cheese não pode mais ser lançado com sucesso (nenhum dispositivo foi detectado).
  7. Reinicie e volte ao passo 1 ...
por JimmyJumbo 04.06.2017 / 20:47

2 respostas

1

Ok, a verdadeira solução para o problema foi eu trabalhar com um kernel não-compatível para minha webcam. Eu atualizei de 4.8.0-54-genérico para 4.10.0-22-genérico, e a webcam está muito estável agora. Apenas algumas vezes ele se desligará (como no mensageiro do Facebook, por exemplo), mas apenas reiniciar o aplicativo corrigirá isso. Não há necessidade de reiniciar mais.

    
por JimmyJumbo 11.06.2017 / 11:41
3

Leia a edição abaixo também!

Portanto, parece que existem muitos outros que enfrentam (d) o error -71 problema; não apenas com webcams, mas com dispositivos USB em geral. O problema parece ser "um bug USB que foi introduzido com os módulos de economia de energia [no kernel 2.6 .27] ". Então, para economizar energia, acho que a webcam foi desativada após um minuto ou mais.

Esse site também tem o que parece ser a solução de trabalho:

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

Isso é escrito para ser o 'hotfix', mas parece ter resolvido meu problema permanentemente (após a reinicialização, o valor mudou de volta para o valor original 2, mas não há mais falhas na webcam :))

Só para ter certeza, eu também fiz a 'correção permanente':

  1. Crie um arquivo em /etc/modprobe.d chamado usbcore
  2. Preencha o arquivo com o seguinte options usbcore autosuspend=-1
  3. Salve o arquivo
  4. Execute o "mkinitrd" (se você tiver certeza de que nenhum módulo de dispositivo USB está carregado via initrd, você pode pular este passo). Eu pulei este passo, porque este comando não pôde ser encontrado.
  5. Reiniciar

Espero que isso ajude alguém!

Importante Editar!

Portanto, a maneira mencionada acima de definir a suspensão automática não é universal e depende do seu sistema operacional. Por favor, encontre uma resposta mais elaborada sobre como editar seu parâmetro autosuspend aqui: link

Vou mencionar aqui apenas por completo.

Para o Ubuntu 14.04 & 15,04:

Edite o arquivo / etc / default / grub e altere a linha GRUB_CMDLINE_LINUX_DEFAULT para adicionar a opção usbcore.autosuspend = -1:

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

Observe que desistir de splash já estavam presentes. Então, mantenha outras opções que você tem também.

Depois de salvar o arquivo, atualize o grub:

sudo upgrade-grub
(também pode ser sudo update-grub2 (eu fiz os dois))

E reinicie.

Agora, verifique o valor de suspensão automática:

cat /sys/module/usbcore/parameters/autosuspend E deve exibir -1

Ubuntu 15.10 e acima

O procedimento é o mesmo, mas o parâmetro a ser alterado é autosuspend_delay_ms (em vez de autosuspend).

Editar 2

Alarme falso ... Então, o acima não funcionou, afinal. Eu ainda recebo os erros do dispositivo USB em error -71 . Aqui está um rastreamento completo de pilha de /var/log/kern.log no momento em que a webcam caiu: link . Uma nota: a primeira vez que a webcam trava eu recebo esse tipo de saída: link , O error -71 acontece somente depois que eu tento rodar cheese novamente (que pode ser iniciado normalmente). Quando ele falha novamente, não funciona mais (até que eu reinicie).

Se alguém tiver a menor ideia do que eu posso fazer, por favor me avise!

Editar 3

Então eu atualizei meu kernel do 4.8.0-54-generic para o 4.10.0-22-generic, e até agora parece ser estável. Se ele cair novamente eu vou denunciá-lo.

    
por JimmyJumbo 05.06.2017 / 12:16