[Nut-upsuser] usbhid-ups not loading with Arduino Leonardo on Ubuntu 23.10

Kelly Byrd kbyrd at memcpy.com
Sun Oct 29 20:42:28 GMT 2023


Apologies for the long post. I'm trying to include what I hope are the
relevant bits (output of lsusb -v and usbhid-ups)

Long term goal: I've got a DIY UPS that I would like to get working with my
QNAP NAS (which uses Linux and NUT underneath the hood)

Immediate short-term problem:
I can't get past running usbhid-ups on Ubuntu 23.10 with an Arduino
Leonardo.

I have an Arduino Micro using this
https://github.com/abratchik/HIDPowerDevice/ library. I have a
sketch working successfully with both Win10 and MacOS. They both recognize
the Arduino as a HID power device and detect the AC present true/false as
well as a hard-coded (for now) charge state.

Before getting it to work with the QNAP I thought it would be easier to get
this working on a full Linux install. So I have Ubuntu 23.10 running on a
Raspberry Pi. I installed the nut-server and nut-client packages and did a
simple test with an APC UPS I have and was able to see in the logs that nut
loaded the driver for it.

However, I cannot get this to work with the Arduino.  For both the APC and
the Arduino I used `nut-scanner -U`. For the Arduino I get:
Scanning USB bus.
[nutdev1]
        driver = "usbhid-ups"
        port = "auto"
        vendorid = "2341"
        productid = "8036"
        product = "Arduino Leonardo"
        serial = "UPS11"
        vendor = "Arduino LLC"
        bus = "001"

I then put this in my ups.conf
[diyups]
  driver = "usbhid-ups"
  desc = "DIY UPS via Arduino"
  port = "auto"
  vendorid = "2341"
  productid = "8036"

The Ubuntu nut package installed  /lib/udev/rules.d/62-nut-usbups.rules
which does have the VID/PID combination of my device so I hoped this would
"just work" :-(

When I run the usbhid driver (as root) like this:
 /usr/lib/nut/usbhid-ups -DDDDDDDDD  -a diyups
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
   0.000000     [D3] do_global_args: var='maxretry' val='3'
   0.000360     [D3] main_arg: var='driver' val='usbhid-ups'
   0.000435     [D3] main_arg: var='desc' val='DIY UPS via Arduino'
   0.000503     [D3] main_arg: var='port' val='auto'
   0.000569     [D5] send_to_all: SETINFO driver.parameter.port "auto"
   0.000620     [D3] main_arg: var='vendorid' val='2341'
   0.000682     [D5] send_to_all: SETINFO driver.parameter.vendorid "2341"
   0.000734     [D3] main_arg: var='productid' val='8036'
   0.000785     [D5] send_to_all: SETINFO driver.parameter.productid "8036"
   0.000918     [D1] debug level is '9'
   0.009460     [D5] send_to_all: SETINFO device.type "ups"
   0.009549     [D2] Initializing an USB-connected UPS with library
libusb-1.0.26 (API: 0x1000109) (NUT subdriver name='USB communication
driver (libusb 1.0)' ver='0.43')
   0.009608     [D1] upsdrv_initups (non-SHUT)...
   0.041470     [D2] Checking device 1 of 5 (2341/8036)
   0.049789     [D2] - VendorID: 2341
   0.049863     [D2] - ProductID: 8036
   0.049907     [D2] - Manufacturer: Arduino LLC
   0.049948     [D2] - Product: Arduino Leonardo
   0.049990     [D2] - Serial Number: UPS11
   0.050032     [D2] - Bus: 001
   0.050078     [D2] - Device: unknown
   0.050126     [D2] - Device release number: 0100
   0.050171     [D2] Trying to match device
   0.050224     [D2] match_function_subdriver (non-SHUT mode): matching a
device...
   0.050272     [D3] match_function_regex: matching a device...
   0.050642     [D2] Device matches
   0.050744     [D2] Reading first configuration descriptor
   0.050799     [D2] result: -5 (Entity not found)
   0.050921     [D3] libusb_kernel_driver_active() returned 0
   0.051021     [D2] Claimed interface 2 successfully
   0.051066     [D3] nut_usb_set_altinterface: skipped
libusb_set_interface_alt_setting(udev, 2, 0)
   0.051108     [D2]   Couldn't retrieve descriptors
   0.051346     [D2] Checking device 2 of 5 (0424/7800)
   0.051500     [D1] Failed to open device (0424/7800), skipping: Access
denied (insufficient permissions)
   0.051548     [D2] Checking device 3 of 5 (0424/2514)
   0.051642     [D1] Failed to open device (0424/2514), skipping: Access
denied (insufficient permissions)
   0.051708     [D2] Checking device 4 of 5 (0424/2514)
   0.051798     [D1] Failed to open device (0424/2514), skipping: Access
denied (insufficient permissions)
   0.051845     [D2] Checking device 5 of 5 (1D6B/0002)
   0.051945     [D1] Failed to open device (1D6B/0002), skipping: Access
denied (insufficient permissions)
   0.051991     [D2] libusb1: No appropriate HID device found
   0.052033     libusb1: Could not open any HID devices: insufficient
permissions on everything
   0.052074     No matching HID UPS found

Note that the Arduino is "interesting" because it's a composite USB device.
With my sketch loaded it has a CDC interface (for flashing and serial
output)  and a HID device (which my sketch controls). Current Arduino core
libraries let you enable and disable the CDC so I have tried with it both
enabled and disabled. Neither seems to work. The above usbhid-ups run is
with the CDC disabled, so that lsusb -v shows me:

Bus 001 Device 007: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x2341 Arduino SA
  idProduct          0x8036 Leonardo (CDC ACM, HID)
  bcdDevice            1.00
  iManufacturer           1 Arduino LLC
  iProduct                2 Arduino Leonardo
  iSerial                 3 UPS11
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.01
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     400
          Report Descriptor: (length is 400)
            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(Local ): Usage, data= [ 0x24 ] 36
                            Power Summary
            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= [ 0x01 ] 1
            Item(Local ): Usage, data= [ 0xfe ] 254
                            iProduct
            Item(Local ): String Index, data= [ 0x02 ] 2
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x02 ] 2
            Item(Local ): Usage, data= [ 0xff ] 255
                            iSerialNumber
            Item(Local ): String Index, data= [ 0x03 ] 3
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x03 ] 3
            Item(Local ): Usage, data= [ 0xfd ] 253
                            iManufacturer
            Item(Local ): String Index, data= [ 0x01 ] 1
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Usage Page, data= [ 0x85 ] 133
                            Battery System Page
            Item(Global): Report ID, data= [ 0x06 ] 6
            Item(Local ): Usage, data= [ 0x8b ] 139
                            Rechargeable
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x1f ] 31
            Item(Local ): Usage, data= [ 0x89 ] 137
                            iDeviceChemistry
            Item(Local ): String Index, data= [ 0x04 ] 4
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x20 ] 32
            Item(Local ): Usage, data= [ 0x8f ] 143
                            iOEMInformation
            Item(Local ): String Index, data= [ 0x05 ] 5
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x16 ] 22
            Item(Local ): Usage, data= [ 0x2c ] 44
                            Capacity Mode
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x10 ] 16
            Item(Local ): Usage, data= [ 0x8d ] 141
                            Capacity Granularity 1
            Item(Global): Logical Maximum, data= [ 0x64 0x00 ] 100
            Item(Main  ): Feature, data= [ 0x22 ] 34
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x18 ] 24
            Item(Local ): Usage, data= [ 0x8e ] 142
                            Capacity Granularity 2
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x0e ] 14
            Item(Local ): Usage, data= [ 0x67 ] 103
                            Full Charge Capacity
            Item(Main  ): Feature, data= [ 0x83 ] 131
                            Constant Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x17 ] 23
            Item(Local ): Usage, data= [ 0x83 ] 131
                            Design Capacity
            Item(Main  ): Feature, data= [ 0x83 ] 131
                            Constant Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x0c ] 12
            Item(Local ): Usage, data= [ 0x66 ] 102
                            Remaining Capacity
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x66 ] 102
                            Remaining Capacity
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x0f ] 15
            Item(Local ): Usage, data= [ 0x8c ] 140
                            Warning Capacity Limit
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x11 ] 17
            Item(Local ): Usage, data= [ 0x29 ] 41
                            Remaining Capacity Limit
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x09 ] 9
            Item(Local ): Usage, data= [ 0x85 ] 133
                            Manufacturer Date
            Item(Global): Report Size, data= [ 0x10 ] 16
            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ]
65535
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x1a ] 26
            Item(Local ): Usage, data= [ 0x6a ] 106
                            Average Time To Full
            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ]
65535
            Item(Global): Unit, data= [ 0x01 0x10 ] 4097
                            System: SI Linear, Unit: Seconds
            Item(Global): Unit Exponent, data= [ 0x00 ] 0
                            Unit Exponent: 0
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x1c ] 28
            Item(Local ): Usage, data= [ 0x69 ] 105
                            Average Time To Empty
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x69 ] 105
                            Average Time To Empty
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x0d ] 13
            Item(Local ): Usage, data= [ 0x68 ] 104
                            Run Time To Empty
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x68 ] 104
                            Run Time To Empty
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x08 ] 8
            Item(Local ): Usage, data= [ 0x2a ] 42
                            Remaining Time Limit
            Item(Global): Report Size, data= [ 0x10 ] 16
            Item(Global): Logical Maximum, data= [ 0x64 0x05 0x00 0x00 ]
1380
            Item(Global): Logical Minimum, data= [ 0x78 0x00 ] 120
            Item(Main  ): Input, data= [ 0x22 ] 34
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x2a ] 42
                            Remaining Time Limit
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Usage Page, data= [ 0x84 ] 132
                            Power Device Page
            Item(Global): Report ID, data= [ 0x12 ] 18
            Item(Local ): Usage, data= [ 0x57 ] 87
                            Delay Before Shutdown
            Item(Global): Logical Minimum, data= [ 0x00 0x80 ] 32768
            Item(Global): Logical Maximum, data= [ 0xff 0x7f 0x00 0x00 ]
32767
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x13 ] 19
            Item(Local ): Usage, data= [ 0x55 ] 85
                            Delay Before Reboot
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x0a ] 10
            Item(Local ): Usage, data= [ 0x40 ] 64
                            Config Voltage
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ]
65535
            Item(Global): Unit, data= [ 0x21 0xd1 0xf0 0x00 ] 15782177
                            System: SI Linear, Unit:
Centimeter^2*Gram*Seconds^-3*Ampere^-1
            Item(Global): Unit Exponent, data= [ 0x05 ] 5
                            Unit Exponent: 5
            Item(Main  ): Feature, data= [ 0x23 ] 35
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Global): Report ID, data= [ 0x0b ] 11
            Item(Local ): Usage, data= [ 0x30 ] 48
                            Voltage
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x30 ] 48
                            Voltage
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report ID, data= [ 0x14 ] 20
            Item(Local ): Usage, data= [ 0x5a ] 90
                            Audible Alarm Control
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Logical Minimum, data= [ 0x01 ] 1
            Item(Global): Logical Maximum, data= [ 0x03 ] 3
            Item(Global): Unit, data= [ 0x00 ] 0
                            System: None, Unit: (None)
            Item(Global): Unit Exponent, data= [ 0x00 ] 0
                            Unit Exponent: 0
            Item(Main  ): Input, data= [ 0x22 ] 34
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position
Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x5a ] 90
                            Audible Alarm Control
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x02 ] 2
                            Present Status
            Item(Main  ): Collection, data= [ 0x02 ] 2
                            Logical
            Item(Global): Report ID, data= [ 0x07 ] 7
            Item(Global): Usage Page, data= [ 0x85 ] 133
                            Battery System Page
            Item(Local ): Usage, data= [ 0x44 ] 68
                            Charging
            Item(Global): Report Size, data= [ 0x01 ] 1
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0x01 ] 1
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x44 ] 68
                            Charging
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x45 ] 69
                            Discharging
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x45 ] 69
                            Discharging
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xd0 ] 208
                            AC Present
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xd0 ] 208
                            AC Present
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xd1 ] 209
                            Battery Present
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xd1 ] 209
                            Battery Present
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x42 ] 66
                            Below Remaining Capacity Limit
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x42 ] 66
                            Below Remaining Capacity Limit
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x43 ] 67
                            Remaining Time Limit Expired
            Item(Main  ): Input, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x43 ] 67
                            Remaining Time Limit Expired
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x4b ] 75
                            Need Replacement
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x4b ] 75
                            Need Replacement
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xdb ] 219
                            Voltage Not Regulated
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0xdb ] 219
                            Voltage Not Regulated
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x46 ] 70
                            Fully Charged
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x46 ] 70
                            Fully Charged
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x47 ] 71
                            Fully Discharged
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x47 ] 71
                            Fully Discharged
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Usage Page, data= [ 0x84 ] 132
                            Power Device Page
            Item(Local ): Usage, data= [ 0x68 ] 104
                            Shutdown Requested
            Item(Main  ): Input, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x68 ] 104
                            Shutdown Requested
            Item(Main  ): Feature, data= [ 0xa2 ] 162
                            Data Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x69 ] 105
                            Shutdown  Imminent
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x69 ] 105
                            Shutdown  Imminent
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x73 ] 115
                            Communication Lost
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x73 ] 115
                            Communication Lost
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x65 ] 101
                            Overload
            Item(Main  ): Input, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Local ): Usage, data= [ 0x65 ] 101
                            Overload
            Item(Main  ): Feature, data= [ 0xa3 ] 163
                            Constant Variable Absolute No_Wrap Linear
                            No_Preferred_State No_Null_Position Volatile
Bitfield
            Item(Global): Report Count, data= [ 0x02 ] 2
            Item(Main  ): Input, data= [ 0x01 ] 1
                            Constant Array Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile
Bitfield
            Item(Main  ): Feature, data= [ 0x01 ] 1
                            Constant Array 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(Main  ): End Collection, data=none
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              20
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

Thanks for any help you can provide.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20231029/eccfc20c/attachment-0001.htm>


More information about the Nut-upsuser mailing list