BeagleBoneBlackからUSB-WiFi経由でインターネットに接続,USB-Camで映像を取得する実験をしました。
環境はDebianWheezy(7.3),繋ぐ先はAtermです。Angstromでは確認できていません。
USB-WiFiはI-O DATA IEEE802.11n/g/b準拠 300Mbps(規格値) 無線LANアダプター WN-G300UAです。
LinuxのUSBデバイスの仕組みはこちらに書いています。
まず、認識されているUSBデバイスを取得します。
$ lsusb
Bus 001 Device 002: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ネットワーク機器として認識されているか確認します。
$ iwconfig
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry long limit:7 RTS thr=2347 B Fragment thr:off
Encryption key:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
usb0 no wireless extensions.
SSID/PASSを無線LANクライアントツールを使って設定します。
$ wpa_passphrase "aterm-xxx-g" "xxx" > /etc/wpa_supplicant/wpa_supplicant.conf
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="aterm-xxx-g"
#psk="xxx"
psk=xxxxxx
}
設定の確認をします。
$ wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 1e:b1:7f:dd:86:d7 (SSID='ssid' freq=2437 MHz)
ioctl[SIOCSIWFREQ]: Device or resource busy
wlan0: Association request to the driver failed
wlan0: Associated with 1e:b1:7f:dd:86:d7
Linuxネットワーク設定を以下のように変更します。
$ vi /etc/network/interfaces
# WiFi Example
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# wpa-ssid "essid"
# wpa-psk "password"
ネットワークを再起動します。
$ /etc/init.d/networking restart
BBBのバッテリーはルックイースト(LE-UBT12K-WH)を使用しています。
BBBにsshで接続してみます
$ ssh root@192.168.0.6
USB-Camから映像を取得する
使用カメラはSANWA SUPPLY WEBカメラ CMS-V34BKです。接続してカーネルログを見てみます。
$ dmesg
[ 301.563693] usbcore: registered new interface driver uvcvideo [ 301.563712] USB Video Class driver (1.1.1)
[ 301.569073] ALSA sound/usb/clock.c:237 2:3:1: cannot get freq at ep 0x84
[ 301.595924] usbcore: registered new interface driver snd-usb-audio
マイク内蔵のため ALSA(Advanced Linux Sound Architecture)からも認識されています。
デバイスファイルは /dev/video0 でした。
$ lsusb
Bus 001 Device 002: ID 0c45:6340 Microdia
確認のため V4L2 + ffmepg で動画ファイルを生成してみます。
ストリーミング配信用の ffserver は Debian には入っていませんでした。
$ ffmpeg -f video4linux2 -r 5 -s 640x480 -i /dev/video0 BBB-Web-Cam.avi
メモリ使用率を計算してみました。(VGA)
計算は以下で取得できる MemTotal – (MemFree + Buffers + Cached) です。
$ cat /proc/meminfo
結果は以下で,10fps以上だと極度に変換が遅くなりました。
1fps -> 81564KB
3fps -> 105116KB
5fps -> 106476KB
けっこうメモリ消費しますね…
* この記事はkarota-projectの活動に関する記事です。