[Nut-upsdev] Liebert PowerSure PSA 500
Jochen Bern
bern at ti.uni-trier.de
Wed Sep 7 10:30:42 UTC 2005
Hello everyone, Charles suggested (about a week ago) that I repost to
this list. I took a moment to run some additional tests ...
The basics:
-- UPS: Liebert PowerSure PSA 500 (from the 230 VAC / 50 Hz line)
-- Kernel: 2.6.11.5 (from sources), USB support (down to and including
CONFIG_USB_HIDDEV) compiled in statically (not as a module)
-- Rest of OS: Basically still from the original SuSE 9.1 install :-/
-- Connection: USB cable (as supplied by Liebert)
-- NUT: Tried both 2.0.2 and 2.1.0
The situation:
1. INITIAL STATE (e.g., after reboot):
-- /proc/bus/usb/devices (excerpt below) lists kernel (usbhid) as the
driver in use.
-- lsusb -v claims it "cannot get report descriptor".
-- newhidups driver doesn't recognize the UPS:
# bin/newhidups -DD -a PowerSure
Network UPS Tools: New USB/HID UPS driver 0.27 (2.1.0)
debug level is '2'
Opening new device (0000/0000)
Opening new device (0000/0000)
Opening new device (0000/0000)
Opening new device (10AF/0001)
Opening new device (0000/0000)
Opening new device (0000/0000)
found 0 (-1)
No USB/HID UPS found
(Changes to /etc/hotplug/ have been made as instructed. Note that
the UPS *does* get probed (the non-zero device ID).)
-- hidups driver can connect to the UPS, but *dies* whenever it changes
state:
# bin/hidups -DD -a PowerSure
[...]
Detected Liebert Liebert PSA 500 FW:09
on port /dev/usb/hiddev0
addhidvalue(850066, battery.charge): obtained 0
addhidvalue(850068, battery.runtime): obtained 0
[... pulling mains cable]
read: Input/output error
(I'm still trying to obtain info from Liebert whether those two
values plus ups.status are actually *all* the data the UPS offers.)
-- UPS has changed bus ID from 2:2 to 2:6 after the experiment. (Note
that I pulled the cable *twice* to verify some detail ...)
2. RECLAIMED STATE
-- entered by running "get_descriptor 002 006 0 0 0 128 0x22 0" (code at
lists.alioth.debian.org/pipermail/nut-upsdev/2005-August/000088.html,
output below)
-- /proc/bus/usb/devices (excerpt below) now lists "(none)" as driver
-- lsusb -v now lists the entire spiel (output below)
-- no change for newhidups driver (still doesn't recognize the UPS)
-- hidups driver can't connect to the UPS anymore:
# bin/hidups -DD -a PowerSure
Network UPS Tools: HID UPS driver 0.13 (2.1.0)
Warning: This is an experimental driver.
Some features may not function correctly.
debug level is '2'
hiddev path open /dev/usb/hiddev0: No such device
3. FUBARED STATE
-- Entered by once more pulling&reinserting mains cable, which again
changes the device ID (to 2:8). (Will have to do more testing to see
whether it can cause a direct Initial->FUBARed state change, too.)
-- /proc/bus/usb/devices (excerpt below) is back to "usbhid"
-- a simple "lsusb -v" lists the UPS (again with "cannot get report
descriptor"), while "lsusb -v -s 2:8" gives no output at all :-?
-- still no change with the newhidups driver
-- hidups driver is back to initial state behavior, including the I/O
error as soon as I pull the mains (which takes the device ID to 2:10,
with no further change of state)
I could probably have the hidups driver started from inittab with a
"respawn" label to get NUT running reliably (sorta), but that's as ugly
as a kludge can get. ;-) Does anyone have an idea for an alternative?
Kind regards,
J. Bern
========================================================================
[initial state] # grep -A 4 -B 3 Liebert /proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=10af ProdID=0001 Rev= 5.00
S: Manufacturer=Liebert
S: Product=Liebert PSA 500 FW:09
S: SerialNumber=0507600440BA069
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 20mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=248ms
========================================================================
[initial state] # ./get_descriptor 002 006 0 0 0 128 0x22 0
Bus 002 device 006 configuration 0 interface 0 altsetting 0 endpoint 128
descriptor 0x22 index 0:
05 84 09 04 a1 01 05 86 09 26 a1 02 85 01 75 08 95 01 15 00 26 ff 00 09
40 b1 02 85 02 09 42 b1 02 85 03 75 10 15 00 27 ff ff 00 00 09 43 b1 02
85 04 09 44 b1 02 c0 05 86 09 29 a1 02 75 08 95 01 15 00 26 ff 00 85 0d
09 75 b1 02 85 0e 09 76 b1 02 85 0f 09 7c b1 02 c0 05 86 09 27 a1 02 85
10 75 08 95 01 15 00 26 ff 00 09 58 b1 02 85 11 09 5a b1 02 85 15 75 10
95 01 15 00 27 ff ff 00 00 09 57 b1 02 85 16 09 56 b1 02 85 40 75 08 95
01 15 00 26 ff 00 09 80 b1 02 85 41 09 81 b1 02 85 42 09 82 b1 02 85 43
09 83 b1 02 85 44 09 84 b1 02 c0 05 86 09 2a a1 02 09 1a a1 02 85 18 75
10 95 01 65 00 55 00 15 00 27 ff ff 00 00 09 30 b1 02 85 19 09 32 b1 02
85 1a 75 08 15 00 26 ff 00 09 36 b1 02 c0 09 1c a1 02 85 1b 75 10 95 01
15 00 27 ff ff 00 00 09 30 b1 02 85 1c 09 32 b1 02 85 1e 75 08 95 01 15
00 26 ff 00 09 35 b1 02 c0 c0 05 86 09 10 a1 02 05 86 85 20 75 10 95 01
15 00 27 ff ff 00 00 09 30 b1 02 85 21 75 08 95 01 15 00 26 ff 00 09 39
b1 02 c0 05 86 09 28 a1 02 85 22 75 10 95 01 15 00 27 ff ff 00 00 09 21
b1 02 85 23 75 08 95 01 15 00 26 ff 00 09 22 b1 02 c0 05 84 09 24 a1 00
85 28 09 fe 79 14 75 08 95 01 15 00 26 ff 00 b1 02 85 29 09 ff 79 16 b1
02 05 85 85 2a 09 89 79 1a b1 02 85 2b 09 8f 79 04 b1 02 85 2c 09 8b b1
02 85 2d 09 44 75 08 95 01 81 82 09 44 b1 82 85 2e 09 45 81 82 09 45 b1
82 05 84 85 30 09 40 75 10 95 01 27 fe ff 00 00 b1 02 85 31 09 30 b1 02
85 32 09 31 75 08 95 01 26 ff 00 b1 02 05 85 85 33 09 2c b1 02 85 34 09
66 81 82 09 66 b1 82 85 35 09 68 75 10 95 01 27 fe ff 00 00 81 82 09 68
b1 82 85 36 75 08 95 01 26 ff 00 09 83 b1 02 85 37 09 67 b1 02 85 38 09
8c b1 02 85 39 09 8e b1 02 85 3a 09 29 b1 82 85 3b 09 8d b1 02 85 3c 09
d0 b1 82 09 d0 81 82 85 3d 09 42 81 82 09 42 b1 82 85 3e 05 84 09 69 81
82 09 69 b1 82 05 85 85 3f 09 6c 75 10 95 01 27 fe ff 00 00 15 00 b1 82
c0 c0
.........&....u.....&... at .....B....u...'.....C.....D......)..u.....&....
.u.....v.....|......'....u.....&...X.....Z....u.....'.....W.....V... at u..
...&.......A.....B.....C.....D........*........u...e.U...'.....0.....2..
..u...&...6.........u.....'.....0.....2....u.....&...5............. u...
..'.....0...!u.....&...9......(..."u.....'.....!...#u.....&..."......$..
.(..y.u.....&.....)..y......*..y....+..y....,.....-.Du......D.....E...E.
....0. at u...'.......1.0...2.1u...&.......3.,...4.f...f...5.hu...'.......h
...6u...&.......7.g...8.....9.....:.)...;.....<.........=.B...B...>...i.
..i.....?.lu...'..........
========================================================================
[reclaimed state] # grep -A 4 -B 3 Liebert /proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 6 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=10af ProdID=0001 Rev= 5.00
S: Manufacturer=Liebert
S: Product=Liebert PSA 500 FW:09
S: SerialNumber=0507600440BA069
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 20mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=248ms
========================================================================
[reclaimed state] # lsusb -v -s 2:6
Bus 002 Device 006: ID 10af:0001
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 Interface
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x10af
idProduct 0x0001
bcdDevice 5.00
iManufacturer 4 Liebert
iProduct 20 Liebert PSA 500 FW:09
iSerial 22 0507600440BA069
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 20mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Devices
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 33
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 602
Report Descriptor: (length is 602)
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x04 ] 4
UPS
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x26 ] 38
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x40 ] 64
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Local ): Usage, data= [ 0x42 ] 66
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x43 ] 67
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Local ): Usage, data= [ 0x44 ] 68
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x29 ] 41
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report ID, data= [ 0x0d ] 13
Item(Local ): Usage, data= [ 0x75 ] 117
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0e ] 14
Item(Local ): Usage, data= [ 0x76 ] 118
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0f ] 15
Item(Local ): Usage, data= [ 0x7c ] 124
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x27 ] 39
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x10 ] 16
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x58 ] 88
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x11 ] 17
Item(Local ): Usage, data= [ 0x5a ] 90
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x15 ] 21
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x57 ] 87
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x16 ] 22
Item(Local ): Usage, data= [ 0x56 ] 86
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x40 ] 64
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x80 ] 128
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x41 ] 65
Item(Local ): Usage, data= [ 0x81 ] 129
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x42 ] 66
Item(Local ): Usage, data= [ 0x82 ] 130
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x43 ] 67
Item(Local ): Usage, data= [ 0x83 ] 131
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x44 ] 68
Item(Local ): Usage, data= [ 0x84 ] 132
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x2a ] 42
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Local ): Usage, data= [ 0x1a ] 26
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x18 ] 24
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Unit, data= [ 0x00 ] 0
Item(Global): Unit Exponent, data= [ 0x00 ] 0
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x30 ] 48
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x19 ] 25
Item(Local ): Usage, data= [ 0x32 ] 50
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x1a ] 26
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x36 ] 54
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Local ): Usage, data= [ 0x1c ] 28
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x1b ] 27
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x30 ] 48
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x1c ] 28
Item(Local ): Usage, data= [ 0x32 ] 50
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x1e ] 30
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x35 ] 53
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x10 ] 16
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Global): Report ID, data= [ 0x20 ] 32
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x30 ] 48
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x21 ] 33
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x39 ] 57
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 ] 134
Power Pages
Item(Local ): Usage, data= [ 0x28 ] 40
(null)
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x22 ] 34
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00
] 65535
Item(Local ): Usage, data= [ 0x21 ] 33
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x23 ] 35
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x22 ] 34
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x24 ] 36
Power Summary
Item(Main ): Collection, data= [ 0x00 ] 0
Physical
Item(Global): Report ID, data= [ 0x28 ] 40
Item(Local ): Usage, data= [ 0xfe ] 254
iProduct
Item(Local ): String Index, data= [ 0x14 ] 20
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x29 ] 41
Item(Local ): Usage, data= [ 0xff ] 255
iSerialNumber
Item(Local ): String Index, data= [ 0x16 ] 22
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Global): Report ID, data= [ 0x2a ] 42
Item(Local ): Usage, data= [ 0x89 ] 137
iDeviceChemistry
Item(Local ): String Index, data= [ 0x1a ] 26
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x2b ] 43
Item(Local ): Usage, data= [ 0x8f ] 143
iOEMInformation
Item(Local ): String Index, data= [ 0x04 ] 4
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x2c ] 44
Item(Local ): Usage, data= [ 0x8b ] 139
Rechargeable
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x2d ] 45
Item(Local ): Usage, data= [ 0x44 ] 68
Charging
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x44 ] 68
Charging
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x2e ] 46
Item(Local ): Usage, data= [ 0x45 ] 69
Discharging
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x45 ] 69
Discharging
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Global): Report ID, data= [ 0x30 ] 48
Item(Local ): Usage, data= [ 0x40 ] 64
Config Voltage
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0xfe 0xff 0x00 0x00
] 65534
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x31 ] 49
Item(Local ): Usage, data= [ 0x30 ] 48
Voltage
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x32 ] 50
Item(Local ): Usage, data= [ 0x31 ] 49
Current
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Global): Report ID, data= [ 0x33 ] 51
Item(Local ): Usage, data= [ 0x2c ] 44
Capacity Mode
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x34 ] 52
Item(Local ): Usage, data= [ 0x66 ] 102
Remaining Capacity
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x66 ] 102
Remaining Capacity
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x35 ] 53
Item(Local ): Usage, data= [ 0x68 ] 104
Run Time To Empty
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0xfe 0xff 0x00 0x00
] 65534
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x68 ] 104
Run Time To Empty
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x36 ] 54
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x83 ] 131
Design Capacity
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x37 ] 55
Item(Local ): Usage, data= [ 0x67 ] 103
Full Charge Capacity
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x38 ] 56
Item(Local ): Usage, data= [ 0x8c ] 140
Warning Capacity Limit
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x39 ] 57
Item(Local ): Usage, data= [ 0x8e ] 142
Capacity Granularity 2
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x3a ] 58
Item(Local ): Usage, data= [ 0x29 ] 41
Remaining Capacity Limit
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x3b ] 59
Item(Local ): Usage, data= [ 0x8d ] 141
Capacity Granularity 1
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x3c ] 60
Item(Local ): Usage, data= [ 0xd0 ] 208
AC Present
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0xd0 ] 208
AC Present
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x3d ] 61
Item(Local ): Usage, data= [ 0x42 ] 66
Below Remaining Capacity Limit
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x42 ] 66
Below Remaining Capacity Limit
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Report ID, data= [ 0x3e ] 62
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x69 ] 105
Shutdown Imminent
Item(Main ): Input, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Local ): Usage, data= [ 0x69 ] 105
Shutdown Imminent
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Global): Report ID, data= [ 0x3f ] 63
Item(Local ): Usage, data= [ 0x6c ] 108
(null)
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0xfe 0xff 0x00 0x00
] 65534
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Main ): Feature, data= [ 0x82 ] 130
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Volatile
Bitfield
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type none
wMaxPacketSize 8
bInterval 248
Language IDs: (length=4)
0409 English(US)
========================================================================
[FUBARed state] # grep -A 4 -B 3 Liebert /proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 8 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=10af ProdID=0001 Rev= 5.00
S: Manufacturer=Liebert
S: Product=Liebert PSA 500 FW:09
S: SerialNumber=0507600440BA069
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 20mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=248ms
More information about the Nut-upsdev
mailing list