[Nut-upsdev] usb ups on openindiana
Jim Klimov
jimklimov at cos.ru
Sat Nov 9 13:24:38 UTC 2013
Hello all,
I am trying to set up my brother's UPS (remotely over internet)
on an OpenIndiana-based storage box. According to him, the UPS is
probably an Ippon Back Power Pro 600 dated around 2003 (battery
recently replaced), and it has an USB connection.
Sorry for a relatively long post with a log of my successes and
failures, in the hopes that someone would point out what I did
wrong. I guess this is among my first experiences with USB in
Solaris - for a decade we had either serial or snmp UPSes :)
I have found some assorted blog posts, following which I found
that the proper driver nowadays is blazer_usb (and earlier versions
of NUT had an ippon driver, which was AFAIK serial-only). However
I can't get the blazer_usb driver to recognize this UPS, and there
are some other problems. Another driver says it found the UPS, but
I am not sure about its correctness :)
Main question is if this is some mistake of mine, an OS specific
thing, or just that this particular UPS is not supported (or maybe
its mgmt parts are broken - who knows, so far they haven't been
tested in any other OS)?
For the record, here's what I did so far:
1) Installed the GCC-based development environment in OI, libusb
and other packages that the build wanted
2) Compiled nut-2.6.5 (with the patch mentioned a week ago)
3) Installed NUT in the global zone, and defined the ups.conf entry:
[ippon]
driver = blazer_usb
port = auto
desc = "Ippon Pro 600 USB"
[hid]
driver = usbhid-ups
port = auto
4) The interesting part is about getting USB to be found at all :)
Do credit where credit is due - some helpful posts were:
http://barbz.com.au/blog/?p=407
http://www.mail-archive.com/nut-upsuser@lists.alioth.debian.org/msg06556.html
# /usr/sbin/cfgadm -lv usb8/5
Ap_Id Receptacle Occupant Condition
Information
When Type Busy Phys_Id
usb8/5 connected configured ok
Mfg: OMRON Product: 87XXUPS NConfigs: 1 Config: 0 <no cfg str descr>
unavailable usb-input n /devices/pci at 0,0/pci103c,1609 at 12:5
# prtconf -v | ggrep -B20 -A20 OMRON | egrep "value='(NAME|usb)"
value='NAME= ugen0 Power' + '0=USB D3 State' +
'3=USB D0 State'
value='usb6da,3.0' + 'usb6da,3' +
'usbif6da,class3.0.0' + 'usbif6da,class3.0' + 'usbif6da,class3' +
'usbif,class3.0.0' + 'usbif,class3.0' + 'usbif,class3' + 'usb,device'
So this UPS has VendorID 06DA, ProductID 0003.
# rem_drv ugen
# add_drv -i '"usb6da,3.0"' -m '* 0666 nobody nobody' ugen
# dmesg | tail
...
Nov 9 15:42:10 n54l usba: [ID 912658 kern.info] USB 1.10 device
(usb6da,3) operating at low speed (USB 1.x) on USB 1.10 root hub:
input at 5, ugen0 at bus address 2
Nov 9 15:42:10 n54l usba: [ID 349649 kern.info] OMRON 87XXUPS
Nov 9 15:42:10 n54l genunix: [ID 936769 kern.info] ugen0 is
/pci at 0,0/pci103c,1609 at 12/input at 5
However, the UPS is *usually* not found at all:
root at n54l:/# /usr/local/ups/bin/usbhid-ups -DDDD -a hid
Network UPS Tools - Generic HID driver 0.37 (2.6.5)
USB communication driver 0.31
0.000000 debug level is '4'
0.001180 upsdrv_initups...
0.002196 No appropriate HID device found
0.002241 No matching HID UPS found
root at n54l:/# /usr/local/ups/bin/blazer_usb -DDDD -a ippon
Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5)
0.000000 debug level is '4'
0.001235 No appropriate HID device found
0.001287 No supported devices found. Please check your device
availability with 'lsusb' and make sure you have an up-to-date version
of NUT. If this does not help, try running the driver with at least
'subdriver', 'vendorid' and 'productid' options specified. Please refer
to the man page for details about these options (man 8 blazer).
I wrote that it is *usually* not found, because early in my tests
(i.e. soon after boot) it was actually discovered as a device on
the USB bus, but with no details and unrecognized as a known UPS.
Actually, I've tracked this down to the USB device nodes changing
ownership from nobody:nobody to root:root during blazer_ups driver
startup :\ I am so far at a loss as to "The why". Even weirder,
sometimes the device links get gone as well, and this recovers them:
# devfsadm -Cv
devfsadm[5083]: verbose: symlink /dev/usb/6da.3/0/devstat ->
../../../../devices/pci at 0,0/pci103c,1609 at 12/input at 5:6da.3.devstat
devfsadm[5083]: verbose: symlink /dev/usb/6da.3/0/cntrl0 ->
../../../../devices/pci at 0,0/pci103c,1609 at 12/input at 5:6da.3.cntrl0
devfsadm[5083]: verbose: symlink /dev/usb/6da.3/0/cntrl0stat ->
../../../../devices/pci at 0,0/pci103c,1609 at 12/input at 5:6da.3.cntrl0stat
devfsadm[5083]: verbose: symlink /dev/usb/6da.3/0/if0in1 ->
../../../../devices/pci at 0,0/pci103c,1609 at 12/input at 5:6da.3.if0in1
devfsadm[5083]: verbose: symlink /dev/usb/6da.3/0/if0in1stat ->
../../../../devices/pci at 0,0/pci103c,1609 at 12/input at 5:6da.3.if0in1stat
Running as root does work around the former problem, but the UPS
is still not recognized by any of the protocols:
# /usr/local/ups/bin/blazer_usb -DDDD -a ippon -u root
Network UPS Tools - Megatec/Q1 protocol USB driver 0.09 (2.6.5)
0.000000 debug level is '4'
0.022634 Checking device (06DA/0003) (/dev/usb/6da.3/0)
0.045564 - VendorID: 06da
0.045663 - ProductID: 0003
0.045733 - Manufacturer: OMRON
0.045788 - Product: 87XXUPS
0.045841 - Serial Number: unknown
0.045899 - Bus: /dev/usb
0.045951 Trying to match device
0.046011 Device matches
0.046187 Trying megatec protocol...
0.049547 send: Q1
0.101572 read: (217.0 2
0.101674 blazer_status: short reply
0.101733 Status read 1 failed
1.266722 send: I/O error
1.266900 blazer_status: short reply
1.266956 Status read 2 failed
1.267648 Checking device (06DA/0003) (/dev/usb/6da.3/0)
1.271661 - VendorID: 06da
1.271763 - ProductID: 0003
1.271823 - Manufacturer: unknown
1.271877 - Product: unknown
1.271925 - Serial Number: unknown
1.271974 - Bus: /dev/usb
1.272020 Trying to match device
1.272074 Device does not match - skipping
1.272175 No appropriate HID device found
1.272256 blazer_status: short reply
1.272309 Status read 3 failed
1.272358 Trying mustek protocol...
1.272933 Checking device (06DA/0003) (/dev/usb/6da.3/0)
1.277622 - VendorID: 06da
1.277670 - ProductID: 0003
1.277693 - Manufacturer: unknown
1.277715 - Product: unknown
1.277734 - Serial Number: unknown
1.277756 - Bus: /dev/usb
1.277774 Trying to match device
1.277793 Device does not match - skipping
1.277838 No appropriate HID device found
1.277861 blazer_status: short reply
1.277885 Status read 1 failed
1.278143 Checking device (06DA/0003) (/dev/usb/6da.3/0)
1.282635 - VendorID: 06da
1.282726 - ProductID: 0003
1.282782 - Manufacturer: unknown
1.282829 - Product: unknown
1.282881 - Serial Number: unknown
1.282932 - Bus: /dev/usb
1.282979 Trying to match device
1.283026 Device does not match - skipping
1.283124 No appropriate HID device found
1.283224 blazer_status: short reply
1.283273 Status read 2 failed
1.283866 Checking device (06DA/0003) (/dev/usb/6da.3/0)
1.288638 - VendorID: 06da
1.288727 - ProductID: 0003
1.288779 - Manufacturer: unknown
1.288829 - Product: unknown
1.288881 - Serial Number: unknown
1.288927 - Bus: /dev/usb
1.288975 Trying to match device
1.289028 Device does not match - skipping
1.289123 No appropriate HID device found
1.289189 blazer_status: short reply
1.289239 Status read 3 failed
1.289285 Trying megatec/old protocol...
1.289829 Checking device (06DA/0003) (/dev/usb/6da.3/0)
1.290230 Failed to open device, skipping. (I/O error)
1.290291 No appropriate HID device found
1.290339 blazer_status: short reply
1.290388 Status read 1 failed
1.300475 No appropriate HID device found
1.300572 blazer_status: short reply
1.300622 Status read 2 failed
1.321620 No appropriate HID device found
1.321719 blazer_status: short reply
1.321772 Status read 3 failed
1.321827 Trying zinto protocol...
1.322081 No appropriate HID device found
1.322144 blazer_status: short reply
1.322192 Status read 1 failed
1.322417 No appropriate HID device found
1.322479 blazer_status: short reply
1.322530 Status read 2 failed
1.322747 No appropriate HID device found
1.322808 blazer_status: short reply
1.322860 Status read 3 failed
1.322909 No supported UPS detected
# /usr/local/ups/bin/usbhid-ups -DDDD -a hid -u root
Network UPS Tools - Generic HID driver 0.37 (2.6.5)
USB communication driver 0.31
0.000000 debug level is '4'
0.000342 upsdrv_initups...
0.021748 Checking device (06DA/0003) (/dev/usb/6da.3/0)
0.044606 - VendorID: 06da
0.044658 - ProductID: 0003
0.044679 - Manufacturer: OMRON
0.044709 - Product: 87XXUPS
0.044730 - Serial Number: unknown
0.044753 - Bus: /dev/usb
0.044778 Trying to match device
0.044805 This Liebert device (06da:0003) is not (or perhaps not
yet) supported by usbhid-ups. Please make sure you have an up-to-date
version of NUT. If this does not fix the problem, try running the
driver with the '-x productid=0003' option. Please report your results
to the NUT user's mailing list <nut-upsuser at lists.alioth.debian.org>.
0.044833 Device does not match - skipping
0.044891 No appropriate HID device found
0.044923 No matching HID UPS found
(no idea why liebert comes up - vendor id?)
# /usr/local/ups/bin/usbhid-ups -DDDD -a hid -u root -x productid=0003
Network UPS Tools - Generic HID driver 0.37 (2.6.5)
USB communication driver 0.31
0.000000 debug level is '4'
0.000739 upsdrv_initups...
0.022865 Checking device (06DA/0003) (/dev/usb/6da.3/0)
0.045791 - VendorID: 06da
0.045896 - ProductID: 0003
0.045958 - Manufacturer: OMRON
0.046020 - Product: 87XXUPS
0.046073 - Serial Number: unknown
0.046136 - Bus: /dev/usb
0.046189 Trying to match device
0.046282 Device matches
0.051733 HID descriptor, method 1: (9 bytes) => 09 21 11 01 00
01 22 1b 00
0.051848 i=0, extra[i]=09, extra[i+1]=21
0.051920 HID descriptor, method 2: (9 bytes) => 09 21 11 01 00
01 22 1b 00
0.051978 HID descriptor length 27
0.058714 Report Descriptor size = 27
0.058817 Report Descriptor: (27 bytes) => 06 00 ff 09 01 a1 01
09 02 15 00 26 ff 00
0.058887 75 08 95 08 81 82 09 02 95 08 91 82 c0
0.059102 Using subdriver: Liebert HID 0.3
0.059195 Entering libusb_get_report
0.060809 libusb_get_report: I/O error
0.060914 Can't retrieve Report 00: I/O error
0.060993 Path: ff000001.ff000002, Type: Input, ReportID: 0x00,
Offset: 0, Size: 8
0.061057 Entering libusb_get_report
0.061850 libusb_get_report: I/O error
0.061954 Can't retrieve Report 00: I/O error
0.062024 Path: ff000001.ff000002, Type: Output, ReportID: 0x00,
Offset: 0, Size: 8
0.062132 Report descriptor retrieved (Reportlen = 27)
0.062189 Found HID device
0.062245 Detected a UPS: OMRON/87XXUPS
0.062316 string_to_path: depth = 3
0.062443 string_to_path: depth = 3
0.062521 string_to_path: depth = 3
0.062588 string_to_path: depth = 3
0.062663 string_to_path: depth = 3
0.062727 string_to_path: depth = 3
0.062800 string_to_path: depth = 4
0.062867 string_to_path: depth = 4
0.062936 string_to_path: depth = 4
0.063001 string_to_path: depth = 4
0.063069 string_to_path: depth = 4
0.063133 string_to_path: depth = 4
0.063195 find_nut_info: unknown info type: load.off.delay
0.063249 find_nut_info: unknown info type: load.on.delay
0.063305 find_nut_info: unknown info type: load.off.delay
0.063381 upsdrv_initinfo...
0.063452 upsdrv_updateinfo...
0.063507 Not using interrupt pipe...
0.063559 Quick update...
0.064358 dstate_init: sock /var/state/ups/usbhid-ups-hid open on
fd 7
0.064417 upsdrv_updateinfo...
0.064442 Not using interrupt pipe...
0.064466 Quick update...
2.064222 upsdrv_updateinfo...
2.064347 Not using interrupt pipe...
2.064421 Quick update...
4.063982 upsdrv_updateinfo...
4.064080 Not using interrupt pipe...
4.064108 Quick update...
(this goes on forever)
However (after starting upsd) it seems that the UPS is seen somehow:
# /usr/local/ups/bin/upsc hid at localhost
device.mfr: OMRON
device.model: 87XXUPS
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: 0003
driver.version: 2.6.5
driver.version.data: Liebert HID 0.3
driver.version.internal: 0.37
ups.mfr: OMRON
ups.model: 87XXUPS
ups.productid: 0003
ups.status: OB
ups.vendorid: 06da
I am puzzled why it is considered "OB" for example, which makes this
information somewhat useless for automated shutdowns...
It is indeed quite possible, that this particular piece of hardware is
just not supported by NUT and there are few-to-no problems regarding
the OS/Software side of my setup... I'd welcome confirmations though :)
And ideas about the volatility of device node setup (disappearance of
symlinks and changes of ownership with blazer_usb - but not with the
usbhid-ups driver) are also welcome.
Also, for the record, it is very inconvenient that starting an UPS
driver requires an entry in the ups.conf nowadays - basically, to
find a matching driver I'd have to make dozens of such entries and
see if any of them works... I'm lucky I got a possible hit on my
second attempt.
Thanks,
//Jim Klimov
More information about the Nut-upsdev
mailing list