目的
WebカメラをUbuntuに接続して利用している場合に、途中でUSB接続そのものが認識されなくなる場合がある。
通常、以下のコマンドでカメラデバイスをリストで表示できるが、この場合に限っては何も表示されなくなる。
$ v4l2-ctl --list-devices
解決方法はハードアプローチとソフトアプローチのに種類がある。ハードアプローチはUSBを抜いて指し直すという物理的な解決方法である。ソフトアプローチはUSBドライバそのものを読み込みなおす解決方法である。以下にその手順を記す。
USBバスを再ロードする方法
デバイスを確認する:
$ lsusb
ドライバをアンロードする:
USBカメラのドライバを特定してアンロードする。一般的に、USBカメラはuvcvideoドライバの使用を想定している。
$ sudo modprobe -r uvcvideo
ドライバを再ロードする:
$ sudo modprobe uvcvideo
デバイスの確認:
再度デバイスを確認して、認識されているかを確認する。
$ v4l2-ctl --list-devices
これで、USBデバイスが再認識されるかを確認すること。もしこれでも解決しない場合は、以下の方法も試すこと。
USBバスをリセットする方法
USBデバイスのバス番号を確認:
$ lsusb
出力例:
Bus 002 Device 003: ID 0c45:6366 Microdia
バス番号を使用してUSBバスをリセット:
バス番号が002の場合、以下のコマンドを使用してUSBバスをリセットする。
sudo sh -c 'echo -n "2-1" > /sys/bus/usb/drivers/usb/unbind'
sudo sh -c 'echo -n "2-1" > /sys/bus/usb/drivers/usb/bind'
デバイスの確認:
再度デバイスを確認して、認識されているかを確認する。
v4l2-ctl --list-devices
これらの方法で、USBを差し直すことなくデバイスを再認識させることができるかもしれない。