Contents
USBRH は ストロベリーリナックス から発売されている温度・湿度測定 ユニットです.USB 経由でセンサーの値を取得できます.
USBRH の詳しい仕様については こちら を参照してください.
このページでは,USBRH の Linux 用ドライバを配布しています.
$ make % sudo make install
ドライバをインストールした後,USBRH をパソコンに接続すると /proc/usbrh/[番号] というディレクトリが生成されます.[番号]は 0 から 始まり,接続される USBRH の個数が増える度に 1 ずつ増えます.
USBRH のセンサーの値はこの中にある以下のファイルを読み出すことで取得で きます.
$ ls -la /proc/usbrh/0 合計 0 dr-xr-xr-x 2 root root 0 2008-04-05 02:46 ./ dr-xr-xr-x 3 root root 0 2008-04-05 02:46 ../ -rw-r--r-- 1 root root 0 2008-04-05 02:46 heater -r--r--r-- 1 root root 0 2008-04-05 02:46 humidity -rw-r--r-- 1 root root 0 2008-04-05 02:46 led -r--r--r-- 1 root root 0 2008-04-05 02:46 status -r--r--r-- 1 root root 0 2008-04-05 02:46 temperature $ cat /proc/usbrh/0/temperature 30.05 $ cat /proc/usbrh/0/humidity 35.02 $ cat /proc/usbrh/0/status t:30.07 h:34.95
USBRH を接続しても /proc/usbrh が現れない場合は以下の点を確認してください.
下記のように lsusb を実行して,ID 1774:1001 のデバイスが表示される ことを確認してください.
$ su - # lsusb -d 0x1774:0x1001 Bus 004 Device 002: ID 1774:1001
下記のように lsmod を実行して,usbrh が表示されることを確認してくだ さい.
$ lsmod Module Size Used by usbrh 5636 0
dmesg を実行して,下記のように「USBRH device now attached to /dev/usbrh[番号]」という出力がある事を確認してください.
$ dmesg usbrh.c: USBRH device now attached to /dev/usbrh123
無い場合は,USBRH を一旦 PC から外し,再び接続してみてください.
make install によってドライバをロードしてから,デバイスを接続してくだ さい.デバイスを接続してからドライバをロードした場合,うまくデバイスを 認識できません.その場合,一旦デバイスを外すか下記のようにして USB のバ スリセットを行ってください.
# rmmod uhci_hcd; modprobe uhci_hcd
dmesg を実行して,下記のように「hiddev96: USB HID v1.00 Device [Strawberry Linux Co.,Ltd. Hygrometer/Thermometer]」という出力があるか 確認して下さい.存在する場合,USBRH ドライバではなく USB HID ドライバが ロードされてしまっています.
$ dmesg hiddev96: USB HID v1.00 Device [Strawberry Linux Co.,Ltd. Hygrometer/Thermometer] on usb-0000:00:1a.0-1
デバイスを外してから,下記のようにして USB HID ドライバを一旦アンロード してみて下さい.
# rmmod usbhid; modprobe usbhid
「Failed to get temperature/humierature」のようにエラーメッセージが時々 表示される場合,お使いの環境においてドライバで設定しているタイムアウト 時間(1秒)が短すぎる可能性があります.
ソースファイル usbrh.c 中の 150行目付近に下記のような行があると思いま す.その中の「1000」という数字を「5000」に書き換えてみてください. (5000にすると,USBRHの応答を最大5秒間待つようになります)
result = usb_bulk_msg(dev->udev,
usb_rcvbulkpipe(dev->udev, USBRH_SENSOR_ENDPOINT),
value, sizeof(*value),
&read_size, msecs_to_jiffies(1000));
書き換えたあとは,次のようにしてドライバをロードし直してから,USBRH を抜き差し.
% sudo rmmod usbrh % make % sudo make install % sudo modprobe usbrh
このドライバでは,USBRH についている 2 つの LED とセンサーに内蔵されて いるヒータを制御する事も可能です.
/proc/usbrh/[番号]/led に値を書き込むことで LED の制御が行えます.
$ sudo su [緑色の LED を点灯] # echo 1 > /proc/usbrh/0/led [赤色の LED を点灯] # echo 2 > /proc/usbrh/0/led [緑色と赤色の LED を点灯] # echo 3 > /proc/usbrh/0/led
/proc/usbrh/[番号]/heater に値を書き込むことで LED の制御が行えます.
$ sudo su [ヒータをオン] # echo 1 > /proc/usbrh/0/heater # cat /proc/usbrh/0/temperature 30.78 # cat /proc/usbrh/0/temperature 31.69 # cat /proc/usbrh/0/temperature 32.19 [ヒータをオフ] # echo 0 > /proc/usbrh/0/heater # cat /proc/usbrh/0/temperature 29.42 # cat /proc/usbrh/0/temperature 28.74