- [前提環境]
- ラズベリーパイ2(2015-09-24-raspbian-jessie) + USB camera(Logicool C270) + PC
-
fswebcam コマンドで静止画キャプチャができるようになりましたが、たまに次のようなエラーが出てキャプチャできなくなってしまうことがあります。USBコネクタを抜き差しするとまたキャプチャできるようになります。
Unable to find a compatible palette format.
ソフト的になんとかしないといけないので探したら usbreset コマンドというのが見つかりました。これを使うとエラー発生後、
$ ./usbreset.sh
と実行すれば、また静止画キャプチャすることができるようになります。
(lsusbすると判りますが Device番号はエラー前と変わります)
usbreset.sh は USBカメラ C270 のリセットを自動化(一発動作化)するスクリプトです。このスクリプトは lsusbを実行して C270の Bus 番号とDevice番号を調べて、それを使って usbresetコマンド(バイナリ)を呼びます。
なお、上記スクリプトを実行後次のようなメッセージが出ます。”Successfull”でなくて”Error…”となっている点が気になりますが、静止画キャプチャは確かに正常にできるようになります。推測ですが、USBリセットにおいて、切り離し、再認識の2段階において、途中でDevice番号が変わってしまうため、”No such device”となっているのではないかと思います。
- Resetting USB device /dev/bus/usb/001/004
Error in ioctl: No such device
- ※ /dev/bus/usb/001/004 の最後の2つの数字は状況で変わります。
ではまた。
◆<usbreset のインストール方法>
usbreset.c のソースをGithub x2q/usbreset.c から取得します。
$ git clone https://gist.github.com/x2q/5124616
$ cd 5124616
そしてコンパイルします。
$ gcc -o usbreset usbreset.c
◆<スクリプト:usbreset.sh>
次のページのものをそのまま使わせてもらいました。
Reset nondetachable USB devices on your laptop
- —— usbreset.sh ——
- #!/bin/sh
ID=’046d:0825′ # Logitech, Webcam C270
MATCHES=$(lsusb | sed -n ‘s/Bus \([0-9]*\) Device \([0-9]*\): ID ‘$ID’.*/\/dev\/bus\/usb\/\1\/\2/p’)
if [ -z ${MATCHES} ]; then
echo “No match found”
else
sudo usbreset $MATCHES
fi - ——————————
- ※ ID=’046d:0825′ のところは C270のID番号に変更しました。lsusbで調べられます。
以上
最近のコメント