web-dev-qa-db-ja.com

統合されたウェブカメラが数秒後に機能しなくなる[Ubuntu 16.04]

過去数時間、Skypeなどのアプリケーションで(Dell E7470ラップトップの)統合Webカメラを動作させようとしてきました。

問題:

起動するたびにカメラは正常に機能しますが、ビデオアプリケーションを起動してから数秒(〜30秒)しかかかりません。その後、再起動するまで、アプリケーション(cheeseを含む)でカメラが見つかりません。

ペーストビン

Pastebin (複数のリンクを作成するのに十分な担当者ではありません)

動作しているとき:

  • ls /dev/video0は、カメラがあることを示します

  • v4l2-ctl --infoは次の出力を提供します:Pastebin(最初の部分)

  • hwinfo | grep videoは次の出力を提供します:Pastebin(2番目の部分)

動作していないとき:

  • ls /dev/video0の結果:cannot access '/dev/video0': No such file or directory

  • v412-ctl --infoFailed to open /dev/video0: No such file or directoryを提供します

  • hwinfo | grep videoは次の出力を提供します:Pastebin(3番目の部分)

私が試したもの:

  1. ウェブカメラがUbuntuでサポートされているかどうかを確認しました。 Dell WebサイトとUVC Webサイトで確認し、機能するはずであるという結論に達しました。
  2. Webカメラを有効/無効にするFn + F_Keyの組み合わせがあるかどうかを確認しました。そこにはないようです。
  3. ドライバーをインストールしました:Sudo apt-get install cheese build-essential linux-headers-uname -r
  4. 試した:rmmod uvcvideo && modprobe uvcvideo
  5. 解決策#9を here から試して、/etc/default/grubの行を変更しました(iommu=softの後にquiet splashを置いてみました)

Pastebinを組み合わせてすみませんが、2つ以上のリンクを投稿するほどの評判はありません。この問題をどのように解決できるかについてのヘルプは大歓迎です!

編集1:

から しばらくすると統合されたWebカメラが切断されます この問題は4年以上前にも発生していることがわかりました。 Sudo rmmod uvcvideo && Sudo modprobe uvcvideoを実行すると、数秒間元に戻せるようです(このコマンドをSudoで実行するのを忘れていたため、以前は何もしませんでした)。この問題?

ちなみに、rmmod/modprobeトリックは数回しか機能しません。その後、再起動するまでまったく機能しません。

編集2:

カメラが失敗したときの/var/log/kern.logの呼び出しトレースは次のとおりです。

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'

編集3:

別の呼び出しトレースは、USB接続に障害がある可能性があることを示しています。

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

奇妙なことは、idVendor(0bda)が見つかる(Realtek Semiconductor Corp.)が、idProduct(5765)がどこにも見つからないということです...

編集4:

明確にするために、私のワークフローは次のとおりです。

  1. Ubuntu 16.04のフレッシュブート
  2. cheeseを起動します
  3. 1分後、次のkern.log出力でクラッシュします。 https://Pastebin.com/XVwSEDBZ
  4. cheeseを再起動します。うまくいくようです...
  5. 1分後に再びクラッシュしますが、次のkern.log出力が表示されます。 https://Pastebin.com/8qHpBcdR (エラー-71)
  6. cheeseが正常に起動できなくなりました(デバイスが検出されません)。
  7. 再起動してステップ1に戻ります...
4
JimmyJumbo

さて、問題の本当の解決策は、ウェブカメラ用の非サポートカーネルで作業することでした。 4.8.0-54-genericから4.10.0-22-genericにアップグレードしたところ、ウェブカメラは非常に安定しています。 Facebookメッセンジャーなどのように、数回だけオフになりますが、アプリケーションを再起動するだけで修正できます。もうリブートする必要はありません。

1
JimmyJumbo

以下の編集も読んでください!

他の多くerror -71問題に直面している人がいるようです; Webカメラだけでなく、一般的なUSBデバイスでも使用できます。問題は "[カーネル2.6.27]の省電力モジュールで導入されたUSBバグ" のようです。そのため、電力を節約するために、ウェブカメラは1分ほどでシャットダウンしました。

そのWebサイトには、実際のソリューションと思われるものもあります。

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

これは「修正プログラム」と書き留められていますが、問題を永久に解決したようです(再起動後、値は元の値2に戻りましたが、Webカメラのエラーはもうありません:))

念のため、「永続的な修正」も行いました。

  1. Usbcoreというファイルを/etc/modprobe.dに作成します
  2. ファイルに次のoptions usbcore autosuspend=-1を入力します
  3. ファイルを保存する
  4. 「mkinitrd」を実行します(initrdを介してUSBデバイスモジュールがロードされていないことが確実な場合は、この手順をスキップできます)。このコマンドが見つからなかったため、この手順をスキップしました。
  5. リブート

これが誰かを助けることを願っています!

重要な編集!

したがって、上記の自動サスペンドの設定方法は普遍的ではなく、OSに依存します。 autosuspendパラメータを編集する方法について、より詳細な答えをここで見つけてください: https://unix.stackexchange.com/questions/91027/how-to-disable-usb-autosuspend-on-kernel-3-7 -10-or-above

ここでは完全を期すために言及します。

Ubuntu 14.04および15.04の場合:

/ etc/default/grubファイルを編集し、GRUB_CMDLINE_LINUX_DEFAULT行を変更してusbcore.autosuspend = -1オプションを追加します。

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

スプラッシュを終了するオプションが既に存在することに注意してください。したがって、他のオプションも用意してください。

ファイルを保存した後、grubを更新します。

Sudo upgrade-grub
Sudo update-grub2の場合もあります(私は両方しました))

そして再起動します。

次に、自動サスペンド値を確認します。

cat /sys/module/usbcore/parameters/autosuspendそして-1を表示するはずです

Ubuntu 15.10以降

手順は同じですが、変更するパラメーターはautosuspend_delay_msです(autosuspendではありません)。

編集2

誤報...したがって、上記は結局機能しませんでした。 USBデバイスがerror -71でエラーになることはまだわかります。以下に、Webカメラがクラッシュしたときの/var/log/kern.logの完全なスタックトレースを示します。 https://Pastebin.com/8qHpBcdR 。ただし、Webカメラが初めてクラッシュすると、次のような出力が表示されます。 https://Pastebin.com/XVwSEDBZerror -71は、cheeseもう一度(通常どおり起動できます)。再びクラッシュすると、(私が再起動するまで)まったく機能しなくなります。

誰にも私ができることの手がかりがあれば、教えてください!

編集3

それで、カーネルを4.8.0-54-genericから4.10.0-22-genericに更新しましたが、今のところ安定しているようです。再度クラッシュする場合は報告します。

3
JimmyJumbo