<div dir="ltr"><div dir="ltr"><br></div><div><br>Apologies for the long post. I'm trying to include what I hope are the relevant bits (output of lsusb -v and usbhid-ups) </div><div dir="ltr"><br></div><div dir="ltr">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) <br><br>Immediate short-term problem:<br>I can't get past running usbhid-ups on Ubuntu 23.10 with an Arduino Leonardo. <br><br>I have an Arduino Micro using this <a href="https://github.com/abratchik/HIDPowerDevice/">https://github.com/abratchik/HIDPowerDevice/</a> 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.<br><br>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.  <br><br></div><div>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:</div><div>Scanning USB bus.<br>[nutdev1]<br>        driver = "usbhid-ups"<br>        port = "auto"<br>        vendorid = "2341"<br>        productid = "8036"<br>        product = "Arduino Leonardo"<br>        serial = "UPS11"<br>        vendor = "Arduino LLC"<br>        bus = "001"<br><br>I then put this in my ups.conf</div><div>[diyups]<br>  driver = "usbhid-ups"<br>  desc = "DIY UPS via Arduino"<br>  port = "auto"<br>  vendorid = "2341"<br>  productid = "8036"<br><br>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" :-( </div><div><br>When I run the usbhid driver (as root) like this:<br> /usr/lib/nut/usbhid-ups -DDDDDDDDD  -a diyups<br>Network UPS Tools - Generic HID driver 0.47 (2.8.0)<br>USB communication driver (libusb 1.0) 0.43<br>   0.000000     [D3] do_global_args: var='maxretry' val='3'<br>   0.000360     [D3] main_arg: var='driver' val='usbhid-ups'<br>   0.000435     [D3] main_arg: var='desc' val='DIY UPS via Arduino'<br>   0.000503     [D3] main_arg: var='port' val='auto'<br>   0.000569     [D5] send_to_all: SETINFO driver.parameter.port "auto"<br>   0.000620     [D3] main_arg: var='vendorid' val='2341'<br>   0.000682     [D5] send_to_all: SETINFO driver.parameter.vendorid "2341"<br>   0.000734     [D3] main_arg: var='productid' val='8036'<br>   0.000785     [D5] send_to_all: SETINFO driver.parameter.productid "8036"<br>   0.000918     [D1] debug level is '9'<br>   0.009460     [D5] send_to_all: SETINFO device.type "ups"<br>   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')<br>   0.009608     [D1] upsdrv_initups (non-SHUT)...<br>   0.041470     [D2] Checking device 1 of 5 (2341/8036)<br>   0.049789     [D2] - VendorID: 2341<br>   0.049863     [D2] - ProductID: 8036<br>   0.049907     [D2] - Manufacturer: Arduino LLC<br>   0.049948     [D2] - Product: Arduino Leonardo<br>   0.049990     [D2] - Serial Number: UPS11<br>   0.050032     [D2] - Bus: 001<br>   0.050078     [D2] - Device: unknown<br>   0.050126     [D2] - Device release number: 0100<br>   0.050171     [D2] Trying to match device<br>   0.050224     [D2] match_function_subdriver (non-SHUT mode): matching a device...<br>   0.050272     [D3] match_function_regex: matching a device...<br>   0.050642     [D2] Device matches<br>   0.050744     [D2] Reading first configuration descriptor<br>   0.050799     [D2] result: -5 (Entity not found)<br>   0.050921     [D3] libusb_kernel_driver_active() returned 0<br>   0.051021     [D2] Claimed interface 2 successfully<br>   0.051066     [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 2, 0)<br>   0.051108     [D2]   Couldn't retrieve descriptors<br>   0.051346     [D2] Checking device 2 of 5 (0424/7800)<br>   0.051500     [D1] Failed to open device (0424/7800), skipping: Access denied (insufficient permissions)<br>   0.051548     [D2] Checking device 3 of 5 (0424/2514)<br>   0.051642     [D1] Failed to open device (0424/2514), skipping: Access denied (insufficient permissions)<br>   0.051708     [D2] Checking device 4 of 5 (0424/2514)<br>   0.051798     [D1] Failed to open device (0424/2514), skipping: Access denied (insufficient permissions)<br>   0.051845     [D2] Checking device 5 of 5 (1D6B/0002)<br>   0.051945     [D1] Failed to open device (1D6B/0002), skipping: Access denied (insufficient permissions)<br>   0.051991     [D2] libusb1: No appropriate HID device found<br>   0.052033     libusb1: Could not open any HID devices: insufficient permissions on everything<br>   0.052074     No matching HID UPS found<br></div><div><br>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:<br><br>Bus 001 Device 007: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)<br>Device Descriptor:<br>  bLength                18<br>  bDescriptorType         1<br>  bcdUSB               2.00<br>  bDeviceClass            0<br>  bDeviceSubClass         0<br>  bDeviceProtocol         0<br>  bMaxPacketSize0        64<br>  idVendor           0x2341 Arduino SA<br>  idProduct          0x8036 Leonardo (CDC ACM, HID)<br>  bcdDevice            1.00<br>  iManufacturer           1 Arduino LLC<br>  iProduct                2 Arduino Leonardo<br>  iSerial                 3 UPS11<br>  bNumConfigurations      1<br>  Configuration Descriptor:<br>    bLength                 9<br>    bDescriptorType         2<br>    wTotalLength       0x0029<br>    bNumInterfaces          1<br>    bConfigurationValue     1<br>    iConfiguration          0<br>    bmAttributes         0xa0<br>      (Bus Powered)<br>      Remote Wakeup<br>    MaxPower              500mA<br>    Interface Descriptor:<br>      bLength                 9<br>      bDescriptorType         4<br>      bInterfaceNumber        2<br>      bAlternateSetting       0<br>      bNumEndpoints           2<br>      bInterfaceClass         3 Human Interface Device<br>      bInterfaceSubClass      0<br>      bInterfaceProtocol      0<br>      iInterface              0<br>        HID Device Descriptor:<br>          bLength                 9<br>          bDescriptorType        33<br>          bcdHID               1.01<br>          bCountryCode           33 US<br>          bNumDescriptors         1<br>          bDescriptorType        34 Report<br>          wDescriptorLength     400<br>          Report Descriptor: (length is 400)<br>            Item(Global): Usage Page, data= [ 0x84 ] 132<br>                            Power Device Page<br>            Item(Local ): Usage, data= [ 0x04 ] 4<br>                            UPS<br>            Item(Main  ): Collection, data= [ 0x01 ] 1<br>                            Application<br>            Item(Local ): Usage, data= [ 0x24 ] 36<br>                            Power Summary<br>            Item(Main  ): Collection, data= [ 0x02 ] 2<br>                            Logical<br>            Item(Global): Report Size, data= [ 0x08 ] 8<br>            Item(Global): Report Count, data= [ 0x01 ] 1<br>            Item(Global): Logical Minimum, data= [ 0x00 ] 0<br>            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255<br>            Item(Global): Report ID, data= [ 0x01 ] 1<br>            Item(Local ): Usage, data= [ 0xfe ] 254<br>                            iProduct<br>            Item(Local ): String Index, data= [ 0x02 ] 2<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x02 ] 2<br>            Item(Local ): Usage, data= [ 0xff ] 255<br>                            iSerialNumber<br>            Item(Local ): String Index, data= [ 0x03 ] 3<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x03 ] 3<br>            Item(Local ): Usage, data= [ 0xfd ] 253<br>                            iManufacturer<br>            Item(Local ): String Index, data= [ 0x01 ] 1<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Usage Page, data= [ 0x85 ] 133<br>                            Battery System Page<br>            Item(Global): Report ID, data= [ 0x06 ] 6<br>            Item(Local ): Usage, data= [ 0x8b ] 139<br>                            Rechargeable<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x1f ] 31<br>            Item(Local ): Usage, data= [ 0x89 ] 137<br>                            iDeviceChemistry<br>            Item(Local ): String Index, data= [ 0x04 ] 4<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x20 ] 32<br>            Item(Local ): Usage, data= [ 0x8f ] 143<br>                            iOEMInformation<br>            Item(Local ): String Index, data= [ 0x05 ] 5<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x16 ] 22<br>            Item(Local ): Usage, data= [ 0x2c ] 44<br>                            Capacity Mode<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x10 ] 16<br>            Item(Local ): Usage, data= [ 0x8d ] 141<br>                            Capacity Granularity 1<br>            Item(Global): Logical Maximum, data= [ 0x64 0x00 ] 100<br>            Item(Main  ): Feature, data= [ 0x22 ] 34<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x18 ] 24<br>            Item(Local ): Usage, data= [ 0x8e ] 142<br>                            Capacity Granularity 2<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0e ] 14<br>            Item(Local ): Usage, data= [ 0x67 ] 103<br>                            Full Charge Capacity<br>            Item(Main  ): Feature, data= [ 0x83 ] 131<br>                            Constant Variable Absolute No_Wrap Linear<br>                            Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x17 ] 23<br>            Item(Local ): Usage, data= [ 0x83 ] 131<br>                            Design Capacity<br>            Item(Main  ): Feature, data= [ 0x83 ] 131<br>                            Constant Variable Absolute No_Wrap Linear<br>                            Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0c ] 12<br>            Item(Local ): Usage, data= [ 0x66 ] 102<br>                            Remaining Capacity<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x66 ] 102<br>                            Remaining Capacity<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0f ] 15<br>            Item(Local ): Usage, data= [ 0x8c ] 140<br>                            Warning Capacity Limit<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x11 ] 17<br>            Item(Local ): Usage, data= [ 0x29 ] 41<br>                            Remaining Capacity Limit<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x09 ] 9<br>            Item(Local ): Usage, data= [ 0x85 ] 133<br>                            Manufacturer Date<br>            Item(Global): Report Size, data= [ 0x10 ] 16<br>            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x1a ] 26<br>            Item(Local ): Usage, data= [ 0x6a ] 106<br>                            Average Time To Full<br>            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535<br>            Item(Global): Unit, data= [ 0x01 0x10 ] 4097<br>                            System: SI Linear, Unit: Seconds<br>            Item(Global): Unit Exponent, data= [ 0x00 ] 0<br>                            Unit Exponent: 0<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x1c ] 28<br>            Item(Local ): Usage, data= [ 0x69 ] 105<br>                            Average Time To Empty<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x69 ] 105<br>                            Average Time To Empty<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0d ] 13<br>            Item(Local ): Usage, data= [ 0x68 ] 104<br>                            Run Time To Empty<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x68 ] 104<br>                            Run Time To Empty<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x08 ] 8<br>            Item(Local ): Usage, data= [ 0x2a ] 42<br>                            Remaining Time Limit<br>            Item(Global): Report Size, data= [ 0x10 ] 16<br>            Item(Global): Logical Maximum, data= [ 0x64 0x05 0x00 0x00 ] 1380<br>            Item(Global): Logical Minimum, data= [ 0x78 0x00 ] 120<br>            Item(Main  ): Input, data= [ 0x22 ] 34<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x2a ] 42<br>                            Remaining Time Limit<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Usage Page, data= [ 0x84 ] 132<br>                            Power Device Page<br>            Item(Global): Report ID, data= [ 0x12 ] 18<br>            Item(Local ): Usage, data= [ 0x57 ] 87<br>                            Delay Before Shutdown<br>            Item(Global): Logical Minimum, data= [ 0x00 0x80 ] 32768<br>            Item(Global): Logical Maximum, data= [ 0xff 0x7f 0x00 0x00 ] 32767<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x13 ] 19<br>            Item(Local ): Usage, data= [ 0x55 ] 85<br>                            Delay Before Reboot<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0a ] 10<br>            Item(Local ): Usage, data= [ 0x40 ] 64<br>                            Config Voltage<br>            Item(Global): Logical Minimum, data= [ 0x00 ] 0<br>            Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535<br>            Item(Global): Unit, data= [ 0x21 0xd1 0xf0 0x00 ] 15782177<br>                            System: SI Linear, Unit: Centimeter^2*Gram*Seconds^-3*Ampere^-1<br>            Item(Global): Unit Exponent, data= [ 0x05 ] 5<br>                            Unit Exponent: 5<br>            Item(Main  ): Feature, data= [ 0x23 ] 35<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x0b ] 11<br>            Item(Local ): Usage, data= [ 0x30 ] 48<br>                            Voltage<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x30 ] 48<br>                            Voltage<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report ID, data= [ 0x14 ] 20<br>            Item(Local ): Usage, data= [ 0x5a ] 90<br>                            Audible Alarm Control<br>            Item(Global): Report Size, data= [ 0x08 ] 8<br>            Item(Global): Logical Minimum, data= [ 0x01 ] 1<br>            Item(Global): Logical Maximum, data= [ 0x03 ] 3<br>            Item(Global): Unit, data= [ 0x00 ] 0<br>                            System: None, Unit: (None)<br>            Item(Global): Unit Exponent, data= [ 0x00 ] 0<br>                            Unit Exponent: 0<br>            Item(Main  ): Input, data= [ 0x22 ] 34<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x5a ] 90<br>                            Audible Alarm Control<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x02 ] 2<br>                            Present Status<br>            Item(Main  ): Collection, data= [ 0x02 ] 2<br>                            Logical<br>            Item(Global): Report ID, data= [ 0x07 ] 7<br>            Item(Global): Usage Page, data= [ 0x85 ] 133<br>                            Battery System Page<br>            Item(Local ): Usage, data= [ 0x44 ] 68<br>                            Charging<br>            Item(Global): Report Size, data= [ 0x01 ] 1<br>            Item(Global): Logical Minimum, data= [ 0x00 ] 0<br>            Item(Global): Logical Maximum, data= [ 0x01 ] 1<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x44 ] 68<br>                            Charging<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x45 ] 69<br>                            Discharging<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x45 ] 69<br>                            Discharging<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xd0 ] 208<br>                            AC Present<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xd0 ] 208<br>                            AC Present<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xd1 ] 209<br>                            Battery Present<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xd1 ] 209<br>                            Battery Present<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x42 ] 66<br>                            Below Remaining Capacity Limit<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x42 ] 66<br>                            Below Remaining Capacity Limit<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x43 ] 67<br>                            Remaining Time Limit Expired<br>            Item(Main  ): Input, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x43 ] 67<br>                            Remaining Time Limit Expired<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x4b ] 75<br>                            Need Replacement<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x4b ] 75<br>                            Need Replacement<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xdb ] 219<br>                            Voltage Not Regulated<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0xdb ] 219<br>                            Voltage Not Regulated<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x46 ] 70<br>                            Fully Charged<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x46 ] 70<br>                            Fully Charged<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x47 ] 71<br>                            Fully Discharged<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x47 ] 71<br>                            Fully Discharged<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Usage Page, data= [ 0x84 ] 132<br>                            Power Device Page<br>            Item(Local ): Usage, data= [ 0x68 ] 104<br>                            Shutdown Requested<br>            Item(Main  ): Input, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x68 ] 104<br>                            Shutdown Requested<br>            Item(Main  ): Feature, data= [ 0xa2 ] 162<br>                            Data Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x69 ] 105<br>                            Shutdown  Imminent<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x69 ] 105<br>                            Shutdown  Imminent<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x73 ] 115<br>                            Communication Lost<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x73 ] 115<br>                            Communication Lost<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x65 ] 101<br>                            Overload<br>            Item(Main  ): Input, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Local ): Usage, data= [ 0x65 ] 101<br>                            Overload<br>            Item(Main  ): Feature, data= [ 0xa3 ] 163<br>                            Constant Variable Absolute No_Wrap Linear<br>                            No_Preferred_State No_Null_Position Volatile Bitfield<br>            Item(Global): Report Count, data= [ 0x02 ] 2<br>            Item(Main  ): Input, data= [ 0x01 ] 1<br>                            Constant Array Absolute No_Wrap Linear<br>                            Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Main  ): Feature, data= [ 0x01 ] 1<br>                            Constant Array Absolute No_Wrap Linear<br>                            Preferred_State No_Null_Position Non_Volatile Bitfield<br>            Item(Main  ): End Collection, data=none<br>            Item(Main  ): End Collection, data=none<br>            Item(Main  ): End Collection, data=none<br>      Endpoint Descriptor:<br>        bLength                 7<br>        bDescriptorType         5<br>        bEndpointAddress     0x84  EP 4 IN<br>        bmAttributes            3<br>          Transfer Type            Interrupt<br>          Synch Type               None<br>          Usage Type               Data<br>        wMaxPacketSize     0x0040  1x 64 bytes<br>        bInterval              20<br>      Endpoint Descriptor:<br>        bLength                 7<br>        bDescriptorType         5<br>        bEndpointAddress     0x05  EP 5 OUT<br>        bmAttributes            3<br>          Transfer Type            Interrupt<br>          Synch Type               None<br>          Usage Type               Data<br>        wMaxPacketSize     0x0040  1x 64 bytes<br>        bInterval              10<br>Device Status:     0x0000<br>  (Bus Powered)<br></div><div><br></div><div>Thanks for any help you can provide.</div></div>