nut で使えると言う話だったので
以下の環境で設定した。
$ uname -a
Linux hostname 2.6.32-41-generic #89-Ubuntu SMP Fri Apr 27 22:18:56 UTC 2012 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.4 LTS
Release: 10.04
Codename: lucid
$ dpkg -l nut
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
ii nut 2.4.3-1ubuntu3 network UPS tools - core system
$ dpkg -l udev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
ii udev 151-12.3 rule-based device node and kernel event mana
まず nut を install しておく例えば以下のようにする。
$ sudo aptitude install nut
次に lsusb コマンドで BY50S の idVendor, idProduct 及び USB 接続されている Bus と Device を調べる。
$ lsusb | grep -i omron
Bus 008 Device 002: ID 0590:0081 Omron Corp.
上記の idVendor, idProduct の値を用いて、以下のファイルで次のように設定を行う(
passwordは適当な値に変更すること)。
/etc/nut/nut.conf
MODE=standalone
/etc/nut/ups.conf
[by50s]
driver = blazer_usb
port = auto
desc = "OMRON BY50S"
vendorid = 0590
productid = 0081
subdriver = ippon
/etc/nut/upsd.users
[upsmon]
password = password
upsmon master
/etc/nut/upsmon.conf
MONITOR by50s@localhost 1 upsmon password master
/etc/udev/rules.d/52-nut-usbups-local.rules
ACTION!="add|change", GOTO="nut-usbups_rules_end"
SUBSYSTEM=="usb_device", GOTO="nut-usbups_rules_real"
SUBSYSTEM=="usb", GOTO="nut-usbups_rules_real"
BUS!="usb", GOTO="nut-usbups_rules_end"
LABEL="nut-usbups_rules_real"
# omron UPS BY50S - blazer_usb
ATTR{idVendor}=="0590", ATTR{idProduct}=="0081", MODE="664", GROUP="nut"
LABEL="nut-usbups_rules_end"
上記 udev の rule は /lib/udev/rules.d/52-nut-usbups.rules をコピーして来て、他の UPS の設定を BY50S の idVendor, idProduct で書き換え、不要部分を削除して作成した。
次に udev に rule を再読み込みさせ USP に trigger をかける。
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger --verbose --attr-match=idVendor=0590 --attr-match=idProduct=0081
/sys/devices/pci0000:00/0000:00:1d.2/usb8/8-1
trigger されるパスは接続した USB 端子により異なるが、おおよそ上記のように trigger された事が確認できたら /dev/bus/usb/
Bus/
Device (
Bud,
Device は最初に lsusb で調べた値) の group が nut になっているか確認する。
うちの環境では Bus, Device は 008, 002 だったので以下のようにして確認した。
$ ls -l /dev/bus/usb/008/002
crw-rw-r-- 1 root nut 189, 897 2012-08-01 18:35 /dev/bus/usb/008/002
上記のように group が nut になっているれば成功。
もし group が root のままなら udev の rule の書き方に間違いがある可能性が高いが reload rules と trigger に若干時間がかかるので、数秒置いてから ls しなおしてみると成功しているかもしれない。
udev の設定が完了したら blazer_usb のドライバで上記で設定した by50s にアクセスできるか確認
$ sudo /lib/nut/blazer_usb -a by50s -DDD
設定に成功していれば以下のように表示が出続けるので Ctrl-C で止める。
Network UPS Tools - Megatec/Q1 protocol USB driver 0.03 (2.4.3)
0.000000 debug level is '3'
0.326802 Checking device (0590/0081) (008/002)
0.348572 - VendorID: 0590
0.348597 - ProductID: 0081
0.348605 - Manufacturer: OMRON
0.348613 - Product: BY50S
0.348621 - Serial Number: unknown
0.348628 - Bus: 008
0.348635 Trying to match device
0.348695 Device matches
0.351590 Trying megatec protocol...
0.355568 send: Q1
0.603565 read: (103.0 000.0 103.0 033 60.0 13.6 49.4 00101000
...
もし上記の udev の設定に失敗していると、以下のように Operation not permitted と言われて止まる
Network UPS Tools - Megatec/Q1 protocol USB driver 0.03 (2.4.3)
0.000000 debug level is '3'
0.318037 Checking device (0590/0081) (008/002)
0.318105 - VendorID: 0590
0.318115 - ProductID: 0081
0.318122 - Manufacturer: unknown
0.318130 - Product: unknown
0.318137 - Serial Number: unknown
0.318145 - Bus: 008
0.318152 Trying to match device
0.318204 Device matches
0.318219 failed to claim USB device: could not claim interface 0: Operation not permitted
0.318231 failed to detach kernel driver from USB device: could not detach kernel driver from interface 0: Operation not permitted
0.318242 failed to claim USB device: could not claim interface 0: Operation not permitted
0.318252 failed to detach kernel driver from USB device: could not detach kernel driver from interface 0: Operation not permitted
0.318263 failed to claim USB device: could not claim interface 0: Operation not permitted
0.318273 failed to detach kernel driver from USB device: could not detach kernel driver from interface 0: Operation not permitted
0.318283 failed to claim USB device: could not claim interface 0: Operation not permitted
0.318293 failed to detach kernel driver from USB device: could not detach kernel driver from interface 0: Operation not permitted
0.318303 Can't claim USB device [0590:0081]: could not detach kernel driver from interface 0: Operation not permitted
ここまで上手く行ったら nut を起動
$ sudo service nut start
* Starting Network UPS Tools [ OK ]
nut@hostname から流れてきたメッセージ
(somewhere) at 19:14 ...
Communications with UPS by50s@localhost established
最後に upsc コマンドで BY50S の状態を確認
$ upsc by50s
battery.voltage: 13.60
beeper.status: disabled
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: 0081
driver.parameter.subdriver: ippon
driver.parameter.vendorid: 0590
driver.version: 2.4.3
driver.version.internal: 0.03
input.frequency: 60.0
input.voltage: 99.4
input.voltage.fault: 0.0
output.voltage: 99.8
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 34
ups.productid: 0081
ups.status: OL BYPASS
ups.temperature: 49.4
ups.type: offline / line interactive
ups.vendorid: 0590
上記のようにラインやバッテリーの状態が確認できたら成功
このままだと、バッテリーの充電率が分からないので、
満充電と空になった時の battery.voltage の値を upsc コマンドで調べておいて
/etc/nut/ups.conf で設定した [by50s] のところに以下のような記述を追加しておくと良いとの事
default.battery.voltage.high = 13.6
default.battery.voltage.low = 11.0
nut を再起動すると battery.charge の値が利用可能となる。
参考: