2016/03/17

USBカメラをlxcインスタンスから使ってみる

最初 普通にカメラモジュールを買って遊んでみようと思ったが、調べているうちにチューブカメラ(スネークカメラ)の方が遊びがいがありそうだったので、買ってみた。

チューブカメラ(スネークカメラ)
kamura 7mm 6LED カメラ USB接続エンドスコープ(内視鏡) 防水 内視鏡スコープ
1300円は安いんじゃないかな。自分は2mを買ったけど何故か5mの方が100円安い設定・・・
レビューも詳しい商品説明もなかったけど、2~3千円台のやつと大差ないだろうとエイヤ!購入。

チューブカメラをUbuntuサーバーに付けて

認識してるかな?

$ lsusb
Bus 001 Device 006: ID 1908:2311 GEMBIRD

$ dmesg |grep CAMERA
[    2.535026] usb 1-1: Product: USB2.0 PC CAMERA
[   10.129511] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (1908:2311)
[   10.131662] input: USB2.0 PC CAMERA as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/input/input5
[ 8834.645489] usb 1-1: Product: USB2.0 PC CAMERA
[ 8834.646070] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (1908:2311)
[ 8834.646467] input: USB2.0 PC CAMERA as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/input/input11

$ ls -l /dev/video*
crw-rw---- 1 root video 81, 0  ~~~~ /dev/video0

どんなデバイスかな?

$ sudo apt-get install v4l-utils
video4linux2 utilitiesを入れて

$ v4l2-ctl -d /dev/video0 --info
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : USB2.0 PC CAMERA
        Bus info      : usb-0000:00:14.0-1
        Driver version: 4.2.8
        Capabilities  : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format

最大640x480 30fpsの標準的なUVC Camera。USBコネクタ側に先端のLED調光ダイヤルが付いていて4段階くらいの制御が出来ている。


lxcインスタンス側から使えるようにする

/var/lib/lxc/(instance)/config に
”lxc.cgroup.devices.allow = c 81:* rwm”

lxc.hook.autodevスクリプトに
”mknod -m 660 ${LXC_ROOTFS_MOUNT}/dev/video0 c 81 0”
"chgrp video ${LXC_ROOTFS_MOUNT}/dev/video0"

を加え、lxcインスタンスを起動。これでホストと同等にアクセスできるようになった。
後々めんどくさいので
”mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/video0 c 81 0”
だけにして、誰でもOKに。

キャプチャツールでテスト

Ubuntu Webcam で紹介されているものを幾つか試してみる

streamer
$ sudo apt-get install streamer
$ streamer -o test.jpeg -s 640x480

シンプルでコンパクトなコマンドツール。自分はこれで満足です。

cheese
$ sudo apt-get install cheese
$ cheese
** Message: cheese-application.vala:211: Error during camera setup: No device found

ほえ?自動的にデバイスを認識するって話ですが? "-d /dev/video0" してもだめでした。
lxcインスタンスからとか、tightvnc上での起動とかが絡んでるかもしれないけど、もういいっす。

VLC
$ sudo apt-get install vlc
$ vlc

難なくtightvnc上にGUI出てきました。/dev/video0を選んで 再生も問題なし。
$ vlc v4l2:///dev/video0 とすればすぐさま再生。

ただ、起動するとエラーではないけれど

pulse audio output error: PulseAudio server connection failure
Qt: XKEYBOARD extension not present on the X server.
Failed to open VDPAU backend libvdpau_nvidia.so

のメッセージが出るのが気になる。

$ cvlc v4l2:///dev/video0

でコマンドツールで起動するとXKEYBOARDのメッセージだけは消せる。
けど他は消せないなぁ。

iPadやAndroidとかではどうかな?
iPadにCamera Connector Kit経由で繋いでみたら消費電力が高すぎるから使えないと言われた。それじゃあと、外部電源付きのUSBハブをさらに経由したら、サポートしていないカメラだと言われた。。。
 AmazonFireHDXに繋いでみたが認識しなかった。外部USBカメラアプリをいくつか試してみたが、やっぱり認識しないようだ。USB変換ケーブルが原因の可能性もあるかな。今の所残念な状態。


0 件のコメント:

コメントを投稿