Basic functionality working for GoldenMate LIPO UPS - ddl-dump output attached.
Apologies if I have submitted this incorrectly. let me know if you need something else.
# Please add if relevant: DEVICE:URL:REPORT: <GitHub issue/PR or Mailing list archive entry URL>
# Please add if relevant: DEVICE:URL:VENDOR: <Vendor/Manufacturer/Product page URL>
GoldenMate LIPO 1500VA/1000W
https://goldenmateenergy.com/products/goldenmate-back-ups-1500va-1000w-lifepo4-battery-backup-and-surge-protector
# Please add comments for humans here and perhaps raise concerns about the data points,
# see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax
# strip sensitive data (passwords, SNMP community, serial number, IP address, host name...)
# and post as a pull request to https://github.com/networkupstools/nut-ddl/
# DEVICE:COMMENT:
# Device dump generated by ./nut-ddl-dump.sh on Sun, 13 Jul 2025 16:20:26 -0500
# DEVICE:EOC
# :; upsc myups
battery.charge: 100
battery.runtime: 0
battery.type: Lion
device.mfr: -BMS-
device.model: Smart-Battery
device.serial: J954E1A365FBE554041:23
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: iDowell HID 0.2
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
ups.delay.shutdown: 20
ups.delay.start: 30
ups.mfr: -BMS-
ups.model: Smart-Battery
ups.productid: 0300
ups.serial: xxxx
ups.status: OL
ups.timer.shutdown: 1
ups.timer.start: 257
ups.vendorid: 075d
# DEVICE:COMMENT-BLOCK:FIXME:UPSRW: myups
# [ups.delay.shutdown]
# Interval to wait after shutdown with delay command (seconds)
# Type: STRING
# Maximum length: 10
# Value: 20
#
# [ups.delay.start]
# Interval to wait before (re)starting the load (seconds)
# Type: STRING
# Maximum length: 10
# Value: 30
# DEVICE:EOC
# DEVICE:COMMENT-BLOCK:FIXME:UPSCMD: myups
# Instant commands supported on UPS [myups]:
#
# load.off - Turn off the load immediately
# load.off.delay - Turn off the load with a delay (seconds)
# load.on - Turn on the load immediately
# load.on.delay - Turn on the load with a delay (seconds)
# shutdown.return - Turn off the load and return when power is back
# shutdown.stayoff - Turn off the load and remain off
# shutdown.stop - Stop a shutdown in progress
# DEVICE:EOC
I see similar output and am new to nut and these ups drivers - do you know if there's a way to see more info from the UPS via this service, like the input and output watts?
Is that a property of the usbhid-ups driver and the what the device itself provides to the driver?
Essentially yes - what the device says at all, and if it does so in a way the driver code (and particular sub-driver with data point mapping) understands.
Many data points on USB HID side have effectifely synonyms, so the device may be reporting one "path" and we're looking for another. In that case, it is a bit of trial and error, aided by high-verbosity debug in the NUT driver, to code up a next iteration of those mappings that would also understand this device.
If feeling adventurous, see wiki about custom-building NUT (anyhow would be newer than what you have from packages), and docs in sources about subdriver development.
Here's the driver debug data from my 1000VA/600W version:
Network UPS Tools - Generic HID driver 0.52 (2.8.1)
USB communication driver (libusb 1.0) 0.46
0.000000 [D1] Built-in default or configured user for drivers 'root' was ignored due to 'root' specified on command line
0.000240 [D3] main_arg: var='explore' val='<null>'
0.000381 [D5] send_to_all: SETINFO driver.flag.explore "enabled"
0.000515 [D3] main_arg: var='vendorid' val='075d'
0.000589 [D5] send_to_all: SETINFO driver.parameter.vendorid "075d"
0.000756 [D3] main_arg: var='port' val='auto'
0.000839 [D5] send_to_all: SETINFO driver.parameter.port "auto"
0.000875 [D1] Network UPS Tools version 2.8.1 (release/snapshot of 2.8.1) built with x86_64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28784-155eea44e7) 13.3.0 and configured with flags: --target=x86_64-openwrt-linux --host=x86_64-openwrt-linux --build=x86_64-pc-linux-gnu --disable-dependency-tracking --program-prefix= --program-suffix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls --sysconfdir=/etc/nut --datadir=/usr/share/nut --with-dev --with-usb --without-avahi --without-snmp --with-serial --without-doc --with-neon --without-powerman --without-wrap --with-hotplug-dir=/etc/hotplug --with-cgi --without-ipmi --without-freeipmi --without-linux-i2c --without-ssl --without-libltdl --without-macosx_ups --with-statepath=/var/run/nut --with-pidpath=/var/run --with-drvpath=/lib/nut --with-user=root --with-group=root --with-gd-includes='-I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include -I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include/freetype2 -I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include/libpng16' --with-gd-libs='-L/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/lib -lgd'
0.000978 [D1] debug level is '5'
0.001043 [D5] send_to_all: SETINFO driver.debug "5"
0.001150 [D5] send_to_all: SETFLAGS driver.debug RW NUMBER
0.001653 [D1] Succeeded to become_user(root): now UID=0 GID=0
0.001745 [D5] send_to_all: SETINFO device.type "ups"
0.001810 [D5] send_to_all: SETINFO driver.state "init.device"
0.001869 [D1] upsdrv_initups (non-SHUT)...
0.001931 [D2] Initializing an USB-connected UPS with library libusb-1.0.27 (API: 0x100010a) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.46')
0.004187 [D2] Checking device 1 of 9 (075D/0300)
0.006638 [D2] - VendorID: 075d
0.006700 [D2] - ProductID: 0300
0.006872 [D2] - Manufacturer: -BMS-
0.007045 [D2] - Product: Smart-Battery
0.007178 [D2] - Serial Number: XXXXXXXX
0.007240 [D2] - Bus: 007
0.007370 [D2] - Bus Port: 001
0.007432 [D2] - Device: 002
0.007599 [D2] - Device release number: 0001
0.007660 [D2] Trying to match device
0.007818 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.007943 [D3] match_function_regex: matching a device...
0.008016 [D2] Device matches
0.008149 [D2] Reading first configuration descriptor
0.008220 [D3] libusb_kernel_driver_active() returned 0: Success
0.008315 [D2] Claimed interface 0 successfully
0.008377 [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 0, 0)
0.008820 [D2] Retrieved HID descriptor (expected 9, got 9)
0.008891 [D3] HID descriptor, method 1: (9 bytes) => 09 21 00 01 00 01 22 23 01
0.008954 [D3] HID descriptor length (method 1) 291
0.009013 [D4] i=0, extra[i]=09, extra[i+1]=21
0.009080 [D3] HID descriptor, method 2: (9 bytes) => 09 21 00 01 00 01 22 23 01
0.009144 [D3] HID descriptor length (method 2) 291
0.009203 [D2] HID descriptor length 291
0.012375 [D2] Report Descriptor size = 291
0.012452 [D3] Report Descriptor: (291 bytes) => 05 84 09 04 a1 01 09 24 a1 00 05 84 85 01
0.012539 [D3] 09 25 09 1f 75 04 95 02 15 00 25 0f b1 03 09 fd 79 01 75 08 95 01 15 00 26
0.012621 [D3] ff 00 b1 03 09 fe 79 02 b1 23 09 ff 79 02 b1 23 05 85 09 89 b1 22 05 85 09
0.012703 [D3] d1 09 8b 25 01 75 01 95 02 b1 a2 95 06 b1 83 05 85 09 2c 75 08 25 ff 95 01
0.012782 [D3] b1 83 09 83 25 64 b1 82 09 67 b1 82 09 8c b1 83 09 66 b1 83 09 68 75 20 55
0.012864 [D3] 00 15 00 27 ff ff ff 75 66 01 10 95 01 b1 83 05 84 09 40 67 21 d1 f0 00 55
0.012948 [D3] 05 75 10 95 01 27 ff ff 00 00 b1 83 09 30 95 01 b1 83 05 84 09 02 a1 02 05
0.013029 [D3] 85 09 d0 09 44 09 45 09 42 09 61 09 d1 09 69 65 00 55 00 25 01 75 01 95 07
0.013111 [D3] b1 83 95 01 b1 a3 c0 05 84 09 57 85 09 75 20 15 ff 27 ff ff ff 7f 66 01 10
0.013234 [D3] b1 82 09 56 85 0a b1 82 85 02 75 08 95 01 81 a3 05 85 09 66 15 00 25 64 75
0.013315 [D3] 08 95 01 81 a3 09 68 66 01 10 55 00 75 20 95 01 15 00 27 ff ff ff fe 81 83
0.013453 [D3] 05 84 09 30 67 21 d1 f0 00 55 05 75 10 95 01 81 82 85 06 75 08 95 20 81 83
0.013517 [D3] c0 c0
0.013700 HIDParse: LogMax is less than LogMin. Vendor HID report descriptor may be incorrect; interpreting LogMax -1 as 255 in ReportID: 0x01
0.013845 HIDParse: LogMax is less than LogMin. Vendor HID report descriptor may be incorrect; interpreting LogMax -16777217 as 4278190079 in ReportID: 0x02
0.014107 Using subdriver: EXPLORE HID 0.2
0.014232 [D1] 28 HID objects found
0.014293 [D4] Entering libusb_get_report
0.014906 [D3] Report[get]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.014974 [D3] 72 01 28 05 31
0.015034 [D5] PhyMax = 0, PhyMin = 0, LogMax = 15, LogMin = 0
0.015094 [D5] Unit = 00000000, UnitExp = 0
0.015151 [D5] Exponent = 0
0.015211 [D5] hid_lookup_path: 00840004 -> UPS
0.015273 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.015334 [D5] hid_lookup_path: 00840025 -> PowerSummaryID
0.015399 [D1] Path: UPS.PowerSummary.PowerSummaryID, Type: Feature, ReportID: 0x01, Offset: 0, Size: 4, Value: 1
0.015524 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.015591 [D3] 72 01 28 05 31
0.015703 [D5] PhyMax = 0, PhyMin = 0, LogMax = 15, LogMin = 0
0.015762 [D5] Unit = 00000000, UnitExp = 0
0.015825 [D5] Exponent = 0
0.015885 [D5] hid_lookup_path: 00840004 -> UPS
0.015946 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.016007 [D5] hid_lookup_path: 0084001f -> FlowID
0.016071 [D1] Path: UPS.PowerSummary.FlowID, Type: Feature, ReportID: 0x01, Offset: 4, Size: 4, Value: 2
0.016149 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.016215 [D3] 72 01 28 05 31
0.016273 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0
0.016332 [D5] Unit = 00000000, UnitExp = 0
0.016392 [D5] Exponent = 0
0.016451 [D5] hid_lookup_path: 00840004 -> UPS
0.016511 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.016571 [D5] hid_lookup_path: 008400fd -> iManufacturer
0.016634 [D1] Path: UPS.PowerSummary.iManufacturer, Type: Feature, ReportID: 0x01, Offset: 8, Size: 8, Value: 1
0.016710 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.016776 [D3] 72 01 28 05 31
0.016835 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0
0.016892 [D5] Unit = 00000000, UnitExp = 0
0.016948 [D5] Exponent = 0
0.017011 [D5] hid_lookup_path: 00840004 -> UPS
0.017070 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.017130 [D5] hid_lookup_path: 008400fe -> iProduct
0.017193 [D1] Path: UPS.PowerSummary.iProduct, Type: Feature, ReportID: 0x01, Offset: 16, Size: 8, Value: 2
0.017269 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.017335 [D3] 72 01 28 05 31
0.017356 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0
0.017375 [D5] Unit = 00000000, UnitExp = 0
0.017391 [D5] Exponent = 0
0.017408 [D5] hid_lookup_path: 00840004 -> UPS
0.017426 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.017446 [D5] hid_lookup_path: 008400ff -> iSerialNumber
0.017467 [D1] Path: UPS.PowerSummary.iSerialNumber, Type: Feature, ReportID: 0x01, Offset: 24, Size: 8, Value: 3
0.017503 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.017529 [D3] 72 01 28 05 31
0.017547 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0
0.017565 [D5] Unit = 00000000, UnitExp = 0
0.017581 [D5] Exponent = 0
0.017600 [D5] hid_lookup_path: 00840004 -> UPS
0.017617 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.017637 [D5] hid_lookup_path: 00850089 -> iDeviceChemistry
0.017658 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x01, Offset: 32, Size: 8, Value: 4
0.017694 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.017719 [D3] 72 01 28 05 31
0.017737 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.017755 [D5] Unit = 00000000, UnitExp = 0
0.017771 [D5] Exponent = 0
0.017790 [D5] hid_lookup_path: 00840004 -> UPS
0.017808 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.017827 [D5] hid_lookup_path: 008500d1 -> BatteryPresent
0.017848 [D1] Path: UPS.PowerSummary.BatteryPresent, Type: Feature, ReportID: 0x01, Offset: 40, Size: 1, Value: 1
0.017884 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.017908 [D3] 72 01 28 05 31
0.017926 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.017944 [D5] Unit = 00000000, UnitExp = 0
0.017960 [D5] Exponent = 0
0.018022 [D5] hid_lookup_path: 00840004 -> UPS
0.018045 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.018066 [D5] hid_lookup_path: 0085008b -> Rechargeable
0.018087 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x01, Offset: 41, Size: 1, Value: 1
0.018123 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.018148 [D3] 72 01 28 05 31
0.018166 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0
0.018282 [D5] Unit = 00000000, UnitExp = 0
0.018301 [D5] Exponent = 0
0.018318 [D5] hid_lookup_path: 00840004 -> UPS
0.018338 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.018356 [D5] hid_lookup_path: 0085002c -> CapacityMode
0.018441 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x01, Offset: 48, Size: 8, Value: 2
0.018479 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.018506 [D3] 72 01 28 05 31
0.018524 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.018540 [D5] Unit = 00000000, UnitExp = 0
0.018619 [D5] Exponent = 0
0.018641 [D5] hid_lookup_path: 00840004 -> UPS
0.018660 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.018679 [D5] hid_lookup_path: 00850083 -> DesignCapacity
0.018703 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x01, Offset: 56, Size: 8, Value: 100
0.018740 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.018885 [D3] 72 01 28 05 31
0.018904 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.018921 [D5] Unit = 00000000, UnitExp = 0
0.018993 [D5] Exponent = 0
0.019016 [D5] hid_lookup_path: 00840004 -> UPS
0.019035 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.019054 [D5] hid_lookup_path: 00850067 -> FullChargeCapacity
0.019076 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x01, Offset: 64, Size: 8, Value: 100
0.019112 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.019248 [D3] 72 01 28 05 31
0.019270 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.019286 [D5] Unit = 00000000, UnitExp = 0
0.019308 [D5] Exponent = 0
0.019386 [D5] hid_lookup_path: 00840004 -> UPS
0.019407 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.019427 [D5] hid_lookup_path: 0085008c -> WarningCapacityLimit
0.019448 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 72, Size: 8, Value: 5
0.019486 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.019512 [D3] 72 01 28 05 31
0.019587 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.019606 [D5] Unit = 00000000, UnitExp = 0
0.019622 [D5] Exponent = 0
0.019639 [D5] hid_lookup_path: 00840004 -> UPS
0.019656 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.019675 [D5] hid_lookup_path: 00850066 -> RemainingCapacity
0.019697 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x01, Offset: 80, Size: 8, Value: 100
0.019740 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.019763 [D3] 72 01 28 05 31
0.019782 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1979711487, LogMin = 0
0.019798 [D5] Unit = 00001001, UnitExp = 0
0.019814 [D5] Exponent = 0
0.019831 [D5] hid_lookup_path: 00840004 -> UPS
0.019848 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.019867 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty
0.019888 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 88, Size: 32, Value: 125040
0.019929 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.019955 [D3] 72 01 28 05 31
0.019973 [D5] PhyMax = 0, PhyMin = 0, LogMax = 65535, LogMin = 0
0.019991 [D5] Unit = 00f0d121, UnitExp = 5
0.020006 [D5] Exponent = -2
0.020025 [D5] hid_lookup_path: 00840004 -> UPS
0.020042 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.020061 [D5] hid_lookup_path: 00840040 -> ConfigVoltage
0.020083 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x01, Offset: 120, Size: 16, Value: 3.7
0.020119 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.020143 [D3] 72 01 28 05 31
0.020162 [D5] PhyMax = 0, PhyMin = 0, LogMax = 65535, LogMin = 0
0.020179 [D5] Unit = 00f0d121, UnitExp = 5
0.020196 [D5] Exponent = -2
0.020215 [D5] hid_lookup_path: 00840004 -> UPS
0.020235 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.020255 [D5] hid_lookup_path: 00840030 -> Voltage
0.020279 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x01, Offset: 136, Size: 16, Value: 13.2
0.020314 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.020339 [D3] 72 01 28 05 31
0.020359 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.020373 [D5] Unit = 00000000, UnitExp = 0
0.020391 [D5] Exponent = 0
0.020410 [D5] hid_lookup_path: 00840004 -> UPS
0.020426 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.020445 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.020466 [D5] hid_lookup_path: 008500d0 -> ACPresent
0.020486 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x01, Offset: 152, Size: 1, Value: 1
0.020522 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.020547 [D3] 72 01 28 05 31
0.020566 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.020585 [D5] Unit = 00000000, UnitExp = 0
0.020601 [D5] Exponent = 0
0.020619 [D5] hid_lookup_path: 00840004 -> UPS
0.020639 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.020656 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.020675 [D5] hid_lookup_path: 00850044 -> Charging
0.020696 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x01, Offset: 153, Size: 1, Value: 0
0.020731 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.020756 [D3] 72 01 28 05 31
0.020842 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.020864 [D5] Unit = 00000000, UnitExp = 0
0.020881 [D5] Exponent = 0
0.020897 [D5] hid_lookup_path: 00840004 -> UPS
0.020918 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.020935 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.020954 [D5] hid_lookup_path: 00850045 -> Discharging
0.020975 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x01, Offset: 154, Size: 1, Value: 0
0.021011 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.021035 [D3] 72 01 28 05 31
0.021054 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.021072 [D5] Unit = 00000000, UnitExp = 0
0.021088 [D5] Exponent = 0
0.021106 [D5] hid_lookup_path: 00840004 -> UPS
0.021123 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.021141 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.021160 [D5] hid_lookup_path: 00850042 -> BelowRemainingCapacityLimit
0.021181 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 155, Size: 1, Value: 0
0.021219 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.021244 [D3] 72 01 28 05 31
0.021263 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.021281 [D5] Unit = 00000000, UnitExp = 0
0.021297 [D5] Exponent = 0
0.021315 [D5] hid_lookup_path: 00840004 -> UPS
0.021333 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.021394 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.021418 [D5] hid_lookup_path: 00850061 -> AtRateTimeToEmpty
0.021441 [D1] Path: UPS.PowerSummary.PresentStatus.AtRateTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 156, Size: 1, Value: 1
0.021476 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.021500 [D3] 72 01 28 05 31
0.021519 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.021535 [D5] Unit = 00000000, UnitExp = 0
0.021550 [D5] Exponent = 0
0.021566 [D5] hid_lookup_path: 00840004 -> UPS
0.021584 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.021601 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.021620 [D5] hid_lookup_path: 008500d1 -> BatteryPresent
0.021641 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x01, Offset: 157, Size: 1, Value: 1
0.021678 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00
0.021703 [D3] 72 01 28 05 31
0.021722 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0
0.021784 [D5] Unit = 00000000, UnitExp = 0
0.021801 [D5] Exponent = 0
0.021818 [D5] hid_lookup_path: 00840004 -> UPS
0.021835 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.021852 [D5] hid_lookup_path: 00840002 -> PresentStatus
0.021871 [D5] hid_lookup_path: 00850069 -> AverageTimeToEmpty
0.021892 [D1] Path: UPS.PowerSummary.PresentStatus.AverageTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 158, Size: 1, Value: 0
0.021918 [D4] Entering libusb_get_report
0.022250 [D3] Report[get]: (5 bytes) => 09 01 00 00 00
0.022273 [D5] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1
0.022292 [D5] Unit = 00001001, UnitExp = 0
0.022307 [D5] Exponent = 0
0.022326 [D5] hid_lookup_path: 00840004 -> UPS
0.022343 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.022362 [D5] hid_lookup_path: 00840057 -> DelayBeforeShutdown
0.022383 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x09, Offset: 0, Size: 32, Value: 1
0.022412 [D4] Entering libusb_get_report
0.022731 [D3] Report[get]: (5 bytes) => 0a 01 01 00 00
0.022754 [D5] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1
0.022782 [D5] Unit = 00001001, UnitExp = 0
0.022799 [D5] Exponent = 0
0.022817 [D5] hid_lookup_path: 00840004 -> UPS
0.022836 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.022855 [D5] hid_lookup_path: 00840056 -> DelayBeforeStartup
0.022877 [D1] Path: UPS.PowerSummary.DelayBeforeStartup, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 32, Value: 257
0.022898 [D4] Entering libusb_get_report
0.023286 [D3] Report[get]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.023309 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.023328 [D5] Unit = 00001001, UnitExp = 0
0.023353 [D5] Exponent = 0
0.023372 [D5] hid_lookup_path: 00840004 -> UPS
0.023392 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.023413 [D5] hid_lookup_path: 00850066 -> RemainingCapacity
0.023436 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x02, Offset: 8, Size: 8, Value: 100
0.023467 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.023487 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0
0.023505 [D5] Unit = 00001001, UnitExp = 0
0.023522 [D5] Exponent = 0
0.023539 [D5] hid_lookup_path: 00840004 -> UPS
0.023557 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.023575 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty
0.023596 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x02, Offset: 16, Size: 32, Value: 125040
0.023628 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.023646 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0
0.023663 [D5] Unit = 00f0d121, UnitExp = 5
0.023681 [D5] Exponent = -2
0.023697 [D5] hid_lookup_path: 00840004 -> UPS
0.023717 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.023734 [D5] hid_lookup_path: 00840030 -> Voltage
0.023756 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x02, Offset: 48, Size: 16, Value: 13.2
0.023791 [D5] send_to_all: SETINFO ups.mfr "-BMS-"
0.023817 [D5] send_to_all: SETINFO ups.model "Smart-Battery"
0.023844 [D5] send_to_all: SETINFO ups.serial "XXXXXXXXX"
0.023869 [D5] send_to_all: SETINFO ups.vendorid "075d"
0.023891 [D5] send_to_all: SETINFO ups.productid "0300"
0.023909 [D2] Report descriptor retrieved (Reportlen = 291)
0.023927 [D2] Found HID device
0.023945 [D1] Detected a UPS: -BMS-/Smart-Battery
0.023968 [D2] find_nut_info: unknown info type: load.off.delay
0.023984 [D2] find_nut_info: unknown info type: load.on.delay
0.024001 [D2] find_nut_info: unknown info type: load.off.delay
0.024025 [D5] send_to_all: SETINFO driver.state "init.quiet"
0.024049 [D5] send_to_all: SETINFO driver.version "2.8.1"
0.024071 [D5] send_to_all: SETINFO driver.version.internal "0.52"
0.024095 [D5] send_to_all: SETINFO driver.name "usbhid-ups"
0.024117 [D5] send_to_all: SETINFO driver.state "init.info"
0.024134 [D1] upsdrv_initinfo...
0.024159 [D5] send_to_all: SETINFO driver.version.data "EXPLORE HID 0.2"
0.024182 [D5] send_to_all: SETINFO driver.parameter.pollfreq "30"
0.024208 [D5] send_to_all: SETINFO driver.state "init.updateinfo"
0.024226 [D1] upsdrv_updateinfo...
0.038691 [D2] file_report_buffer: expected 9 bytes, but got 512 instead
0.038736 [D3] Report[err]: (512 bytes) => 02 83 64 70 e8 01 00 28 05 00 00 00 00 00 00 00
0.038790 [D3] 80 0f 44 00 00 00 00 00 b8 1f ac f0 fd 7f 00 00 28 21 ac f0 fd 7f 00 00 ab
0.038833 [D3] 64 41 00 00 00 00 00 28 28 ac f0 fd 7f 00 00 35 4a 01 34 d4 7f 00 00 0f 13
0.038875 [D3] 41 00 00 00 00 00 00 00 00 00 00 00 00 00 69 6e 69 74 2e 75 70 64 61 74 65
0.038919 [D3] 69 6e 66 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.038961 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039004 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039046 [D3] 00 00 00 00 00 00 00 00 00 00 62 00 8c 9d cc 3d c8 60 00 00 00 00 00 00 00
0.039088 [D3] 00 ab 64 41 00 00 00 00 00 28 21 ac f0 fd 7f 00 00 00 00 00 00 00 00 00 00
0.039130 [D3] ff fe fe fe fe fe fe fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039173 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039216 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039257 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0.039298 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 00 8c 9d cc
0.039339 [D3] 3d c8 60 80 0f 44 00 00 00 00 00 62 00 8c 9d cc 3d c8 60 28 21 ac f0 fd 7f
0.039380 [D3] 00 00 01 00 00 00 00 00 00 00 00 00 01 01 00 01 01 ff 64 68 6d 65 6e 21 09
0.039420 [D3] ff ff fe fe fe fe fe fe fe 28 e9 ba 2e 00 00 00 00 35 4a 01 34 d4 7f 00 00
0.039461 [D3] d9 e2 40 00 00 00 00 00 10 00 00 00 30 00 00 00 00 23 ac f0 fd 7f 00 00 30
0.039499 [D3] 22 ac f0 fd 7f 00 00 69 6e 69 74 2e 75 70 64 61 74 65 69 6e 66 6f 00 00 00
0.039541 [D3] 00 00 00 00 00 00 80 21 ac f0 fd 7f 00 00 ff ff ff ff 00 00 00 00 00 00 00
0.039578 [D3] 00 00 00 00 00 1a 2e ff 33 d4 7f 00 00 02 00 00 00 d4 7f 00 00
0.039600 [D1] Got 3 HID objects...
0.039628 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.039648 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0
0.039668 [D5] Unit = 00001001, UnitExp = 0
0.039686 [D5] Exponent = 0
0.039706 [D5] hid_lookup_path: 00840004 -> UPS
0.039772 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.039794 [D5] hid_lookup_path: 00850066 -> RemainingCapacity
0.039819 [D2] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x02, Offset: 8, Size: 8, Value: 100
0.039841 [D3] NUT doesn't use this HID object
0.039868 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.039887 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0
0.039965 [D5] Unit = 00001001, UnitExp = 0
0.039986 [D5] Exponent = 0
0.040006 [D5] hid_lookup_path: 00840004 -> UPS
0.040025 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.040046 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty
0.040074 [D2] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x02, Offset: 16, Size: 32, Value: 125040
0.040161 [D3] NUT doesn't use this HID object
0.040192 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05
0.040213 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0
0.040233 [D5] Unit = 00f0d121, UnitExp = 5
0.040248 [D5] Exponent = -2
0.040265 [D5] hid_lookup_path: 00840004 -> UPS
0.040283 [D5] hid_lookup_path: 00840024 -> PowerSummary
0.040360 [D5] hid_lookup_path: 00840030 -> Voltage
0.040387 [D2] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x02, Offset: 48, Size: 16, Value: 13.2
0.040411 [D3] NUT doesn't use this HID object
0.040430 [D1] Quick update...
0.040460 [D5] send_to_all: SETINFO ups.status "OB"
0.040550 [D5] send_to_all: DATAOK
0.040595 [D5] send_to_all: SETINFO driver.state "init.quiet"
0.041005 [D2] dstate_init: sock /var/run/nut/usbhid-ups-ups open on fd 9
0.041036 [D5] send_to_all: SETINFO driver.parameter.pollinterval "2"
0.041119 [D5] send_to_all: SETINFO driver.parameter.synchronous "auto"
0.041147 [D5] send_to_all: SETINFO device.mfr "-BMS-"
0.041174 [D5] send_to_all: SETINFO device.model "Smart-Battery"
0.041201 [D5] send_to_all: SETINFO device.serial "XXXXXXXX"
0.041219 Running as foreground process, not saving a PID file
0.041244 [D5] send_to_all: SETINFO driver.flag.allow_killpower "0"
0.041379 [D5] send_to_all: SETFLAGS driver.flag.allow_killpower RW NUMBER
0.041402 [D5] send_to_all: ADDCMD driver.killpower
0.041424 [D5] send_to_all: ADDCMD driver.reload
0.041501 [D5] send_to_all: ADDCMD driver.reload-or-exit
0.041555 [D5] send_to_all: ADDCMD driver.reload-or-error
0.041706 [D5] send_to_all: SETINFO driver.state "quiet"
0.041728 [D1] Driver initialization completed, beginning regular infinite loop
0.041752 upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
0.041783 [D5] send_to_all: SETINFO driver.state "updateinfo"
0.041801 [D1] upsdrv_updateinfo...
...
Not sure if the data beyond the first expected 9 bytes has anything interesting yet.
Here's the driver debug data from my 1000VA/600W version:
Network UPS Tools - Generic HID driver 0.52 (2.8.1) USB communication driver (libusb 1.0) 0.46 0.000000 [D1] Built-in default or configured user for drivers 'root' was ignored due to 'root' specified on command line 0.000240 [D3] main_arg: var='explore' val='<null>' 0.000381 [D5] send_to_all: SETINFO driver.flag.explore "enabled" 0.000515 [D3] main_arg: var='vendorid' val='075d' 0.000589 [D5] send_to_all: SETINFO driver.parameter.vendorid "075d" 0.000756 [D3] main_arg: var='port' val='auto' 0.000839 [D5] send_to_all: SETINFO driver.parameter.port "auto" 0.000875 [D1] Network UPS Tools version 2.8.1 (release/snapshot of 2.8.1) built with x86_64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28784-155eea44e7) 13.3.0 and configured with flags: --target=x86_64-openwrt-linux --host=x86_64-openwrt-linux --build=x86_64-pc-linux-gnu --disable-dependency-tracking --program-prefix= --program-suffix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls --sysconfdir=/etc/nut --datadir=/usr/share/nut --with-dev --with-usb --without-avahi --without-snmp --with-serial --without-doc --with-neon --without-powerman --without-wrap --with-hotplug-dir=/etc/hotplug --with-cgi --without-ipmi --without-freeipmi --without-linux-i2c --without-ssl --without-libltdl --without-macosx_ups --with-statepath=/var/run/nut --with-pidpath=/var/run --with-drvpath=/lib/nut --with-user=root --with-group=root --with-gd-includes='-I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include -I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include/freetype2 -I/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/include/libpng16' --with-gd-libs='-L/builder/shared-workdir/build/sdk/staging_dir/target-x86_64_musl/usr/lib -lgd' 0.000978 [D1] debug level is '5' 0.001043 [D5] send_to_all: SETINFO driver.debug "5" 0.001150 [D5] send_to_all: SETFLAGS driver.debug RW NUMBER 0.001653 [D1] Succeeded to become_user(root): now UID=0 GID=0 0.001745 [D5] send_to_all: SETINFO device.type "ups" 0.001810 [D5] send_to_all: SETINFO driver.state "init.device" 0.001869 [D1] upsdrv_initups (non-SHUT)... 0.001931 [D2] Initializing an USB-connected UPS with library libusb-1.0.27 (API: 0x100010a) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.46') 0.004187 [D2] Checking device 1 of 9 (075D/0300) 0.006638 [D2] - VendorID: 075d 0.006700 [D2] - ProductID: 0300 0.006872 [D2] - Manufacturer: -BMS- 0.007045 [D2] - Product: Smart-Battery 0.007178 [D2] - Serial Number: XXXXXXXX 0.007240 [D2] - Bus: 007 0.007370 [D2] - Bus Port: 001 0.007432 [D2] - Device: 002 0.007599 [D2] - Device release number: 0001 0.007660 [D2] Trying to match device 0.007818 [D2] match_function_subdriver (non-SHUT mode): matching a device... 0.007943 [D3] match_function_regex: matching a device... 0.008016 [D2] Device matches 0.008149 [D2] Reading first configuration descriptor 0.008220 [D3] libusb_kernel_driver_active() returned 0: Success 0.008315 [D2] Claimed interface 0 successfully 0.008377 [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 0, 0) 0.008820 [D2] Retrieved HID descriptor (expected 9, got 9) 0.008891 [D3] HID descriptor, method 1: (9 bytes) => 09 21 00 01 00 01 22 23 01 0.008954 [D3] HID descriptor length (method 1) 291 0.009013 [D4] i=0, extra[i]=09, extra[i+1]=21 0.009080 [D3] HID descriptor, method 2: (9 bytes) => 09 21 00 01 00 01 22 23 01 0.009144 [D3] HID descriptor length (method 2) 291 0.009203 [D2] HID descriptor length 291 0.012375 [D2] Report Descriptor size = 291 0.012452 [D3] Report Descriptor: (291 bytes) => 05 84 09 04 a1 01 09 24 a1 00 05 84 85 01 0.012539 [D3] 09 25 09 1f 75 04 95 02 15 00 25 0f b1 03 09 fd 79 01 75 08 95 01 15 00 26 0.012621 [D3] ff 00 b1 03 09 fe 79 02 b1 23 09 ff 79 02 b1 23 05 85 09 89 b1 22 05 85 09 0.012703 [D3] d1 09 8b 25 01 75 01 95 02 b1 a2 95 06 b1 83 05 85 09 2c 75 08 25 ff 95 01 0.012782 [D3] b1 83 09 83 25 64 b1 82 09 67 b1 82 09 8c b1 83 09 66 b1 83 09 68 75 20 55 0.012864 [D3] 00 15 00 27 ff ff ff 75 66 01 10 95 01 b1 83 05 84 09 40 67 21 d1 f0 00 55 0.012948 [D3] 05 75 10 95 01 27 ff ff 00 00 b1 83 09 30 95 01 b1 83 05 84 09 02 a1 02 05 0.013029 [D3] 85 09 d0 09 44 09 45 09 42 09 61 09 d1 09 69 65 00 55 00 25 01 75 01 95 07 0.013111 [D3] b1 83 95 01 b1 a3 c0 05 84 09 57 85 09 75 20 15 ff 27 ff ff ff 7f 66 01 10 0.013234 [D3] b1 82 09 56 85 0a b1 82 85 02 75 08 95 01 81 a3 05 85 09 66 15 00 25 64 75 0.013315 [D3] 08 95 01 81 a3 09 68 66 01 10 55 00 75 20 95 01 15 00 27 ff ff ff fe 81 83 0.013453 [D3] 05 84 09 30 67 21 d1 f0 00 55 05 75 10 95 01 81 82 85 06 75 08 95 20 81 83 0.013517 [D3] c0 c0 0.013700 HIDParse: LogMax is less than LogMin. Vendor HID report descriptor may be incorrect; interpreting LogMax -1 as 255 in ReportID: 0x01 0.013845 HIDParse: LogMax is less than LogMin. Vendor HID report descriptor may be incorrect; interpreting LogMax -16777217 as 4278190079 in ReportID: 0x02 0.014107 Using subdriver: EXPLORE HID 0.2 0.014232 [D1] 28 HID objects found 0.014293 [D4] Entering libusb_get_report 0.014906 [D3] Report[get]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.014974 [D3] 72 01 28 05 31 0.015034 [D5] PhyMax = 0, PhyMin = 0, LogMax = 15, LogMin = 0 0.015094 [D5] Unit = 00000000, UnitExp = 0 0.015151 [D5] Exponent = 0 0.015211 [D5] hid_lookup_path: 00840004 -> UPS 0.015273 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.015334 [D5] hid_lookup_path: 00840025 -> PowerSummaryID 0.015399 [D1] Path: UPS.PowerSummary.PowerSummaryID, Type: Feature, ReportID: 0x01, Offset: 0, Size: 4, Value: 1 0.015524 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.015591 [D3] 72 01 28 05 31 0.015703 [D5] PhyMax = 0, PhyMin = 0, LogMax = 15, LogMin = 0 0.015762 [D5] Unit = 00000000, UnitExp = 0 0.015825 [D5] Exponent = 0 0.015885 [D5] hid_lookup_path: 00840004 -> UPS 0.015946 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.016007 [D5] hid_lookup_path: 0084001f -> FlowID 0.016071 [D1] Path: UPS.PowerSummary.FlowID, Type: Feature, ReportID: 0x01, Offset: 4, Size: 4, Value: 2 0.016149 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.016215 [D3] 72 01 28 05 31 0.016273 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0 0.016332 [D5] Unit = 00000000, UnitExp = 0 0.016392 [D5] Exponent = 0 0.016451 [D5] hid_lookup_path: 00840004 -> UPS 0.016511 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.016571 [D5] hid_lookup_path: 008400fd -> iManufacturer 0.016634 [D1] Path: UPS.PowerSummary.iManufacturer, Type: Feature, ReportID: 0x01, Offset: 8, Size: 8, Value: 1 0.016710 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.016776 [D3] 72 01 28 05 31 0.016835 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0 0.016892 [D5] Unit = 00000000, UnitExp = 0 0.016948 [D5] Exponent = 0 0.017011 [D5] hid_lookup_path: 00840004 -> UPS 0.017070 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.017130 [D5] hid_lookup_path: 008400fe -> iProduct 0.017193 [D1] Path: UPS.PowerSummary.iProduct, Type: Feature, ReportID: 0x01, Offset: 16, Size: 8, Value: 2 0.017269 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.017335 [D3] 72 01 28 05 31 0.017356 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0 0.017375 [D5] Unit = 00000000, UnitExp = 0 0.017391 [D5] Exponent = 0 0.017408 [D5] hid_lookup_path: 00840004 -> UPS 0.017426 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.017446 [D5] hid_lookup_path: 008400ff -> iSerialNumber 0.017467 [D1] Path: UPS.PowerSummary.iSerialNumber, Type: Feature, ReportID: 0x01, Offset: 24, Size: 8, Value: 3 0.017503 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.017529 [D3] 72 01 28 05 31 0.017547 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0 0.017565 [D5] Unit = 00000000, UnitExp = 0 0.017581 [D5] Exponent = 0 0.017600 [D5] hid_lookup_path: 00840004 -> UPS 0.017617 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.017637 [D5] hid_lookup_path: 00850089 -> iDeviceChemistry 0.017658 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x01, Offset: 32, Size: 8, Value: 4 0.017694 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.017719 [D3] 72 01 28 05 31 0.017737 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.017755 [D5] Unit = 00000000, UnitExp = 0 0.017771 [D5] Exponent = 0 0.017790 [D5] hid_lookup_path: 00840004 -> UPS 0.017808 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.017827 [D5] hid_lookup_path: 008500d1 -> BatteryPresent 0.017848 [D1] Path: UPS.PowerSummary.BatteryPresent, Type: Feature, ReportID: 0x01, Offset: 40, Size: 1, Value: 1 0.017884 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.017908 [D3] 72 01 28 05 31 0.017926 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.017944 [D5] Unit = 00000000, UnitExp = 0 0.017960 [D5] Exponent = 0 0.018022 [D5] hid_lookup_path: 00840004 -> UPS 0.018045 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.018066 [D5] hid_lookup_path: 0085008b -> Rechargeable 0.018087 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x01, Offset: 41, Size: 1, Value: 1 0.018123 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.018148 [D3] 72 01 28 05 31 0.018166 [D5] PhyMax = 0, PhyMin = 0, LogMax = 255, LogMin = 0 0.018282 [D5] Unit = 00000000, UnitExp = 0 0.018301 [D5] Exponent = 0 0.018318 [D5] hid_lookup_path: 00840004 -> UPS 0.018338 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.018356 [D5] hid_lookup_path: 0085002c -> CapacityMode 0.018441 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x01, Offset: 48, Size: 8, Value: 2 0.018479 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.018506 [D3] 72 01 28 05 31 0.018524 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.018540 [D5] Unit = 00000000, UnitExp = 0 0.018619 [D5] Exponent = 0 0.018641 [D5] hid_lookup_path: 00840004 -> UPS 0.018660 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.018679 [D5] hid_lookup_path: 00850083 -> DesignCapacity 0.018703 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x01, Offset: 56, Size: 8, Value: 100 0.018740 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.018885 [D3] 72 01 28 05 31 0.018904 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.018921 [D5] Unit = 00000000, UnitExp = 0 0.018993 [D5] Exponent = 0 0.019016 [D5] hid_lookup_path: 00840004 -> UPS 0.019035 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.019054 [D5] hid_lookup_path: 00850067 -> FullChargeCapacity 0.019076 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x01, Offset: 64, Size: 8, Value: 100 0.019112 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.019248 [D3] 72 01 28 05 31 0.019270 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.019286 [D5] Unit = 00000000, UnitExp = 0 0.019308 [D5] Exponent = 0 0.019386 [D5] hid_lookup_path: 00840004 -> UPS 0.019407 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.019427 [D5] hid_lookup_path: 0085008c -> WarningCapacityLimit 0.019448 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 72, Size: 8, Value: 5 0.019486 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.019512 [D3] 72 01 28 05 31 0.019587 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.019606 [D5] Unit = 00000000, UnitExp = 0 0.019622 [D5] Exponent = 0 0.019639 [D5] hid_lookup_path: 00840004 -> UPS 0.019656 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.019675 [D5] hid_lookup_path: 00850066 -> RemainingCapacity 0.019697 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x01, Offset: 80, Size: 8, Value: 100 0.019740 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.019763 [D3] 72 01 28 05 31 0.019782 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1979711487, LogMin = 0 0.019798 [D5] Unit = 00001001, UnitExp = 0 0.019814 [D5] Exponent = 0 0.019831 [D5] hid_lookup_path: 00840004 -> UPS 0.019848 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.019867 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty 0.019888 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 88, Size: 32, Value: 125040 0.019929 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.019955 [D3] 72 01 28 05 31 0.019973 [D5] PhyMax = 0, PhyMin = 0, LogMax = 65535, LogMin = 0 0.019991 [D5] Unit = 00f0d121, UnitExp = 5 0.020006 [D5] Exponent = -2 0.020025 [D5] hid_lookup_path: 00840004 -> UPS 0.020042 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.020061 [D5] hid_lookup_path: 00840040 -> ConfigVoltage 0.020083 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x01, Offset: 120, Size: 16, Value: 3.7 0.020119 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.020143 [D3] 72 01 28 05 31 0.020162 [D5] PhyMax = 0, PhyMin = 0, LogMax = 65535, LogMin = 0 0.020179 [D5] Unit = 00f0d121, UnitExp = 5 0.020196 [D5] Exponent = -2 0.020215 [D5] hid_lookup_path: 00840004 -> UPS 0.020235 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.020255 [D5] hid_lookup_path: 00840030 -> Voltage 0.020279 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x01, Offset: 136, Size: 16, Value: 13.2 0.020314 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.020339 [D3] 72 01 28 05 31 0.020359 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.020373 [D5] Unit = 00000000, UnitExp = 0 0.020391 [D5] Exponent = 0 0.020410 [D5] hid_lookup_path: 00840004 -> UPS 0.020426 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.020445 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.020466 [D5] hid_lookup_path: 008500d0 -> ACPresent 0.020486 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x01, Offset: 152, Size: 1, Value: 1 0.020522 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.020547 [D3] 72 01 28 05 31 0.020566 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.020585 [D5] Unit = 00000000, UnitExp = 0 0.020601 [D5] Exponent = 0 0.020619 [D5] hid_lookup_path: 00840004 -> UPS 0.020639 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.020656 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.020675 [D5] hid_lookup_path: 00850044 -> Charging 0.020696 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x01, Offset: 153, Size: 1, Value: 0 0.020731 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.020756 [D3] 72 01 28 05 31 0.020842 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.020864 [D5] Unit = 00000000, UnitExp = 0 0.020881 [D5] Exponent = 0 0.020897 [D5] hid_lookup_path: 00840004 -> UPS 0.020918 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.020935 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.020954 [D5] hid_lookup_path: 00850045 -> Discharging 0.020975 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x01, Offset: 154, Size: 1, Value: 0 0.021011 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.021035 [D3] 72 01 28 05 31 0.021054 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.021072 [D5] Unit = 00000000, UnitExp = 0 0.021088 [D5] Exponent = 0 0.021106 [D5] hid_lookup_path: 00840004 -> UPS 0.021123 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.021141 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.021160 [D5] hid_lookup_path: 00850042 -> BelowRemainingCapacityLimit 0.021181 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 155, Size: 1, Value: 0 0.021219 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.021244 [D3] 72 01 28 05 31 0.021263 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.021281 [D5] Unit = 00000000, UnitExp = 0 0.021297 [D5] Exponent = 0 0.021315 [D5] hid_lookup_path: 00840004 -> UPS 0.021333 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.021394 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.021418 [D5] hid_lookup_path: 00850061 -> AtRateTimeToEmpty 0.021441 [D1] Path: UPS.PowerSummary.PresentStatus.AtRateTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 156, Size: 1, Value: 1 0.021476 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.021500 [D3] 72 01 28 05 31 0.021519 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.021535 [D5] Unit = 00000000, UnitExp = 0 0.021550 [D5] Exponent = 0 0.021566 [D5] hid_lookup_path: 00840004 -> UPS 0.021584 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.021601 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.021620 [D5] hid_lookup_path: 008500d1 -> BatteryPresent 0.021641 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x01, Offset: 157, Size: 1, Value: 1 0.021678 [D3] Report[buf]: (21 bytes) => 01 21 01 02 03 04 03 02 64 64 05 64 70 e8 01 00 0.021703 [D3] 72 01 28 05 31 0.021722 [D5] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 0.021784 [D5] Unit = 00000000, UnitExp = 0 0.021801 [D5] Exponent = 0 0.021818 [D5] hid_lookup_path: 00840004 -> UPS 0.021835 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.021852 [D5] hid_lookup_path: 00840002 -> PresentStatus 0.021871 [D5] hid_lookup_path: 00850069 -> AverageTimeToEmpty 0.021892 [D1] Path: UPS.PowerSummary.PresentStatus.AverageTimeToEmpty, Type: Feature, ReportID: 0x01, Offset: 158, Size: 1, Value: 0 0.021918 [D4] Entering libusb_get_report 0.022250 [D3] Report[get]: (5 bytes) => 09 01 00 00 00 0.022273 [D5] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1 0.022292 [D5] Unit = 00001001, UnitExp = 0 0.022307 [D5] Exponent = 0 0.022326 [D5] hid_lookup_path: 00840004 -> UPS 0.022343 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.022362 [D5] hid_lookup_path: 00840057 -> DelayBeforeShutdown 0.022383 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x09, Offset: 0, Size: 32, Value: 1 0.022412 [D4] Entering libusb_get_report 0.022731 [D3] Report[get]: (5 bytes) => 0a 01 01 00 00 0.022754 [D5] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1 0.022782 [D5] Unit = 00001001, UnitExp = 0 0.022799 [D5] Exponent = 0 0.022817 [D5] hid_lookup_path: 00840004 -> UPS 0.022836 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.022855 [D5] hid_lookup_path: 00840056 -> DelayBeforeStartup 0.022877 [D1] Path: UPS.PowerSummary.DelayBeforeStartup, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 32, Value: 257 0.022898 [D4] Entering libusb_get_report 0.023286 [D3] Report[get]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.023309 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.023328 [D5] Unit = 00001001, UnitExp = 0 0.023353 [D5] Exponent = 0 0.023372 [D5] hid_lookup_path: 00840004 -> UPS 0.023392 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.023413 [D5] hid_lookup_path: 00850066 -> RemainingCapacity 0.023436 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x02, Offset: 8, Size: 8, Value: 100 0.023467 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.023487 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0 0.023505 [D5] Unit = 00001001, UnitExp = 0 0.023522 [D5] Exponent = 0 0.023539 [D5] hid_lookup_path: 00840004 -> UPS 0.023557 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.023575 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty 0.023596 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x02, Offset: 16, Size: 32, Value: 125040 0.023628 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.023646 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0 0.023663 [D5] Unit = 00f0d121, UnitExp = 5 0.023681 [D5] Exponent = -2 0.023697 [D5] hid_lookup_path: 00840004 -> UPS 0.023717 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.023734 [D5] hid_lookup_path: 00840030 -> Voltage 0.023756 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x02, Offset: 48, Size: 16, Value: 13.2 0.023791 [D5] send_to_all: SETINFO ups.mfr "-BMS-" 0.023817 [D5] send_to_all: SETINFO ups.model "Smart-Battery" 0.023844 [D5] send_to_all: SETINFO ups.serial "XXXXXXXXX" 0.023869 [D5] send_to_all: SETINFO ups.vendorid "075d" 0.023891 [D5] send_to_all: SETINFO ups.productid "0300" 0.023909 [D2] Report descriptor retrieved (Reportlen = 291) 0.023927 [D2] Found HID device 0.023945 [D1] Detected a UPS: -BMS-/Smart-Battery 0.023968 [D2] find_nut_info: unknown info type: load.off.delay 0.023984 [D2] find_nut_info: unknown info type: load.on.delay 0.024001 [D2] find_nut_info: unknown info type: load.off.delay 0.024025 [D5] send_to_all: SETINFO driver.state "init.quiet" 0.024049 [D5] send_to_all: SETINFO driver.version "2.8.1" 0.024071 [D5] send_to_all: SETINFO driver.version.internal "0.52" 0.024095 [D5] send_to_all: SETINFO driver.name "usbhid-ups" 0.024117 [D5] send_to_all: SETINFO driver.state "init.info" 0.024134 [D1] upsdrv_initinfo... 0.024159 [D5] send_to_all: SETINFO driver.version.data "EXPLORE HID 0.2" 0.024182 [D5] send_to_all: SETINFO driver.parameter.pollfreq "30" 0.024208 [D5] send_to_all: SETINFO driver.state "init.updateinfo" 0.024226 [D1] upsdrv_updateinfo... 0.038691 [D2] file_report_buffer: expected 9 bytes, but got 512 instead 0.038736 [D3] Report[err]: (512 bytes) => 02 83 64 70 e8 01 00 28 05 00 00 00 00 00 00 00 0.038790 [D3] 80 0f 44 00 00 00 00 00 b8 1f ac f0 fd 7f 00 00 28 21 ac f0 fd 7f 00 00 ab 0.038833 [D3] 64 41 00 00 00 00 00 28 28 ac f0 fd 7f 00 00 35 4a 01 34 d4 7f 00 00 0f 13 0.038875 [D3] 41 00 00 00 00 00 00 00 00 00 00 00 00 00 69 6e 69 74 2e 75 70 64 61 74 65 0.038919 [D3] 69 6e 66 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.038961 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039004 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039046 [D3] 00 00 00 00 00 00 00 00 00 00 62 00 8c 9d cc 3d c8 60 00 00 00 00 00 00 00 0.039088 [D3] 00 ab 64 41 00 00 00 00 00 28 21 ac f0 fd 7f 00 00 00 00 00 00 00 00 00 00 0.039130 [D3] ff fe fe fe fe fe fe fe 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039173 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039216 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039257 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.039298 [D3] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 00 8c 9d cc 0.039339 [D3] 3d c8 60 80 0f 44 00 00 00 00 00 62 00 8c 9d cc 3d c8 60 28 21 ac f0 fd 7f 0.039380 [D3] 00 00 01 00 00 00 00 00 00 00 00 00 01 01 00 01 01 ff 64 68 6d 65 6e 21 09 0.039420 [D3] ff ff fe fe fe fe fe fe fe 28 e9 ba 2e 00 00 00 00 35 4a 01 34 d4 7f 00 00 0.039461 [D3] d9 e2 40 00 00 00 00 00 10 00 00 00 30 00 00 00 00 23 ac f0 fd 7f 00 00 30 0.039499 [D3] 22 ac f0 fd 7f 00 00 69 6e 69 74 2e 75 70 64 61 74 65 69 6e 66 6f 00 00 00 0.039541 [D3] 00 00 00 00 00 00 80 21 ac f0 fd 7f 00 00 ff ff ff ff 00 00 00 00 00 00 00 0.039578 [D3] 00 00 00 00 00 1a 2e ff 33 d4 7f 00 00 02 00 00 00 d4 7f 00 00 0.039600 [D1] Got 3 HID objects... 0.039628 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.039648 [D5] PhyMax = 0, PhyMin = 0, LogMax = 100, LogMin = 0 0.039668 [D5] Unit = 00001001, UnitExp = 0 0.039686 [D5] Exponent = 0 0.039706 [D5] hid_lookup_path: 00840004 -> UPS 0.039772 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.039794 [D5] hid_lookup_path: 00850066 -> RemainingCapacity 0.039819 [D2] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x02, Offset: 8, Size: 8, Value: 100 0.039841 [D3] NUT doesn't use this HID object 0.039868 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.039887 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0 0.039965 [D5] Unit = 00001001, UnitExp = 0 0.039986 [D5] Exponent = 0 0.040006 [D5] hid_lookup_path: 00840004 -> UPS 0.040025 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.040046 [D5] hid_lookup_path: 00850068 -> RunTimeToEmpty 0.040074 [D2] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x02, Offset: 16, Size: 32, Value: 125040 0.040161 [D3] NUT doesn't use this HID object 0.040192 [D3] Report[buf]: (9 bytes) => 02 83 64 70 e8 01 00 28 05 0.040213 [D5] PhyMax = 0, PhyMin = 0, LogMax = 4278190079, LogMin = 0 0.040233 [D5] Unit = 00f0d121, UnitExp = 5 0.040248 [D5] Exponent = -2 0.040265 [D5] hid_lookup_path: 00840004 -> UPS 0.040283 [D5] hid_lookup_path: 00840024 -> PowerSummary 0.040360 [D5] hid_lookup_path: 00840030 -> Voltage 0.040387 [D2] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x02, Offset: 48, Size: 16, Value: 13.2 0.040411 [D3] NUT doesn't use this HID object 0.040430 [D1] Quick update... 0.040460 [D5] send_to_all: SETINFO ups.status "OB" 0.040550 [D5] send_to_all: DATAOK 0.040595 [D5] send_to_all: SETINFO driver.state "init.quiet" 0.041005 [D2] dstate_init: sock /var/run/nut/usbhid-ups-ups open on fd 9 0.041036 [D5] send_to_all: SETINFO driver.parameter.pollinterval "2" 0.041119 [D5] send_to_all: SETINFO driver.parameter.synchronous "auto" 0.041147 [D5] send_to_all: SETINFO device.mfr "-BMS-" 0.041174 [D5] send_to_all: SETINFO device.model "Smart-Battery" 0.041201 [D5] send_to_all: SETINFO device.serial "XXXXXXXX" 0.041219 Running as foreground process, not saving a PID file 0.041244 [D5] send_to_all: SETINFO driver.flag.allow_killpower "0" 0.041379 [D5] send_to_all: SETFLAGS driver.flag.allow_killpower RW NUMBER 0.041402 [D5] send_to_all: ADDCMD driver.killpower 0.041424 [D5] send_to_all: ADDCMD driver.reload 0.041501 [D5] send_to_all: ADDCMD driver.reload-or-exit 0.041555 [D5] send_to_all: ADDCMD driver.reload-or-error 0.041706 [D5] send_to_all: SETINFO driver.state "quiet" 0.041728 [D1] Driver initialization completed, beginning regular infinite loop 0.041752 upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it 0.041783 [D5] send_to_all: SETINFO driver.state "updateinfo" 0.041801 [D1] upsdrv_updateinfo... ...Not sure if the data beyond the first expected 9 bytes has anything interesting yet.
@sovanyio looks like you were able to extract more data, can you tell me how you were able to get this?
@jonpaterson reading documentation ;)
https://github.com/networkupstools/nut?tab=readme-ov-file#hacking--development-info -> https://networkupstools.org/docs/developer-guide.chunked/new-drivers.html#hid-subdrivers:~:text=2%22%200x%22%241%7D%27-,Writing%20a%20subdriver,-In%20preparation%20for
can someone tell me how to use this locally? would appreciate it.
It's a shame. Very basic info, but better than none. It would be nice to see the load in watts or at least align with what shows up on the front panel. Reviewing the output, it is not showing load numbers or temperature numbers.
Here's the driver debug data from my 1000VA/600W version:
Wait, so is that 4pin GX16-ish connector on the back actually USB?
The newer models have a USB Type-B connector on them.
@jonpaterson Apologies, but I was wondering if this issue indicates the bug is that NUT does not support the GoldenMate LIPO 1500VA/1000W, because NUT does not report critical information needed to trigger automated shutdown, or if the bug is that NUT does in fact provide minimal support but the NUT website lists no support at all?
Full disclosure: I am thinking of buying a GoldenMate LIPO 1500VA/1000W and I am trying to understand if I could use NUT on a Debian system, to receive power shutdown warnings from the device.
Well, not all issues are bugs. This one is not tagged as such, for example.
It is a point of improvement for DDL and HCL publishing though (two data sets that lack this info), so probably your question's second aspect applies.
As far as I can tell, ups.status reports reasonable info so can drive shutdowns - but I'd better have confirmations from people with actual devices.
All of this is highly dependent on the hardware version you acquire. Getting the one with the USB or NAS port and the front side USB charging will likely get you the latest firmware. I've been holding off buying another as the USB model I had did not post into as I expected when listening to the USB port.
Just reading these, very interested in the latest Goldenmate described as "GOLDENMATE 1000VA/800W Lithium UPS Battery Backup and Surge Protector, Sinewave UPS System with LiFePO4 Battery(230.4 Wh), 2025 Upgraded Pro Ver. with Communication Port, 8 Outlets"
Am I correct, after reading this thread, that depending on the firmware installed on this device, it MAY support NUT and automated shutdowns?
I asked Goldenmate support about NUT support on linux and this was their very simple reply "Our UPS only supports Windows and Apple."
Oh nice, catch them on their word - we can build NUT for Windows and on MacOS too =D
Their Tech Support are more like sales guys. I don't think they are hackers like us. If you ask highly technical questions of them, you can sense their biological operating systems rebooting. Then their is the delay as they scan for the predetermined answer. ;)
Lol, first I received a message from support saying that "they were referring my question to their tech team". Then, a day later, "Our UPS only supports Windows and Apple."
What is this groups opinion on whether the 2025 version of Goldenmate will work with NUT on Proxmox and other linux OSs?
Oh nice, catch them on their word - we can build NUT for Windows and on MacOS too =D
I just asked them if I could use NUT with my MacBook Air, since they also told me that they run on "Windows and Apple". Hopefully they will be able to say! 🤷
Just reading these, very interested in the latest Goldenmate described as
"GOLDENMATE 1000VA/800W Lithium UPS Battery Backup and Surge Protector, Sinewave UPS System with LiFePO4 Battery(230.4 Wh), 2025 Upgraded Pro Ver. with Communication Port, 8 Outlets"Am I correct, after reading this thread, that depending on the firmware installed on this device, it MAY support NUT and automated shutdowns?
I asked Goldenmate support about NUT support on linux and this was their very simple reply
"Our UPS only supports Windows and Apple."
I have that version (well the lower wattage one) and NUT sees it--see my debug output above.
NUT shows online / charging status and current charge level but that's it--should be sufficient for shutdowns but I haven't tested auto shutdowns yet.
I wish they would provide the same stats via USB as they present on the front panel, as well as the number of power event, estimated battery life, etc. Seriously, if it's on the front panel, they should be able to output it on the USB port.
Just reading these, very interested in the latest Goldenmate described as
"GOLDENMATE 1000VA/800W Lithium UPS Battery Backup and Surge Protector, Sinewave UPS System with LiFePO4 Battery(230.4 Wh), 2025 Upgraded Pro Ver. with Communication Port, 8 Outlets"Am I correct, after reading this thread, that depending on the firmware installed on this device, it MAY support NUT and automated shutdowns?
I asked Goldenmate support about NUT support on linux and this was their very simple reply
"Our UPS only supports Windows and Apple."I have that version (well the lower wattage one) and NUT sees it--see my debug output above.
NUT shows online / charging status and current charge level but that's it--should be sufficient for shutdowns but I haven't tested auto shutdowns yet.
This works fine for me for shutdowns with the generic USBHID driver - as the other author mentioned it would be nice to see individual data points on AMP draw etc.. I submitted to this report as I did not think that the team had the info on this device yet and may wish to list (basic) support for it.
It would actually be interesting to see a high-verbosity debug log from driver initialization with either a build of NUT master branch (newly usbhid-ups reports what it saw in device data but had no mapping for in ghe current subdriver) or even an older NUT build and the explore HID subdriver.
Either of these can inform someone to tinker on improvement of a mostly-suitable subdriver or starting a new one (see NUT dev docs for details on that).
It would actually be interesting to see a high-verbosity debug log from driver initialization with either a build of NUT master branch (newly
usbhid-upsreports what it saw in device data but had no mapping for in ghe current subdriver) or even an older NUT build and theexploreHID subdriver.Either of these can inform someone to tinker on improvement of a mostly-suitable subdriver or starting a new one (see NUT dev docs for details on that).
I just received and installed the 1000W version. I'm running Debian bookworm. I'd be happy to generate such a high-verbosity debug log, if you can point me to instructions on how to do so. I know my way around linux pretty well but I have no experience with NUT, UPSs, or driver development.
Great to hear, really! :)
A first step would be https://github.com/networkupstools/nut/wiki/Building-NUT-for-in%E2%80%90place-upgrades-or-non%E2%80%90disruptive-tests to custom-build NUT. As far as testing new driver code goes, you can do that without installing that build into the system.
Generation of USB HID subdrivers is script-aided, and generally described at https://networkupstools.org/docs/developer-guide.chunked/new-drivers.html#hid-subdrivers - the same process applies if there are a few mappings to add into an existing subdriver or to create a new one completely (roughly - if there are more changes than there was original code).
A first step would be https://github.com/networkupstools/nut/wiki/Building-NUT-for-in%E2%80%90place-upgrades-or-non%E2%80%90disruptive-tests to custom-build NUT. As far as testing new driver code goes, you can do that without installing that build into the system.
I had a go at the first step.
I've tested the GoldenMate UPS 1500VA on Debian bookworm following the instructions from the link from your comment above.
TL;DR: The UPS works with the usbhid-ups driver using the iDowell HID 0.2 subdriver. Basic functionality seems to be good enough for automatic shutdown, but battery runtime always reports 0.
What seems to work:
- Device detection (075d:0300)
- Battery charge level (100%)
- Power status (online/on battery)
- battery.runtime shows 0 when the battery is on mains (OL), but starts to show a time estimate when the battery is discharging (OB DISCHARG).
What seems not to work:
- No voltage, frequency, or load info
- Several standard status flags aren't present in the device's HID descriptor
Not tested:
- Reporting of LB for low battery, and consequent automatic shutdown.
I've attached:
- A detailed report with HID mapping analysis (generated by AI, but I inspected it and believe it to be accurate)
- The complete high-verbosity debug log (1062 lines) from git master build (commit 8144f600f)
I may try experimenting with defining a new subdriver but I am totally new to this so I am not confident I will make any progress. (So don't count on me!)
I had a quick look at extending the iDowell HID subdriver to expose additional HID paths found in the device.
What I added:
- battery.voltage → UPS.PowerSummary.Voltage (reports 2.21)
- battery.voltage.nominal → UPS.PowerSummary.ConfigVoltage (reports 3.7)
This was via:
index e20505d2d..05fb158cf 100644
--- a/drivers/idowell-hid.c
+++ b/drivers/idowell-hid.c
@@ -96,6 +96,8 @@ static hid_info_t idowell_hid2nut[] = {
{ "battery.charge.low", 0, 0, "UPS.PowerSummary.RemainingCapacityLimit", NULL, "%.0f", HU_FLAG_STATIC , NULL }, /* Read only */
{ "battery.runtime", 0, 0, "UPS.PowerSummary.RunTimeToEmpty", NULL, "%.0f", 0, NULL },
{ "battery.type", 0, 0, "UPS.PowerSummary.iDeviceChemistry", NULL, "%s", HU_FLAG_STATIC, stringid_conversion },
+ { "battery.voltage", 0, 0, "UPS.PowerSummary.Voltage", NULL, "%.2f", 0, NULL },
+ { "battery.voltage.nominal", 0, 0, "UPS.PowerSummary.ConfigVoltage", NULL, "%.1f", HU_FLAG_STATIC, NULL },
/* UPS page */
While these mappings seem to work correctly, I'm not sure how to make use of the reported values. What's nominal voltage mean? why is it higher than reported?
I didn't spot any other actually useful values, like expected runtime at current power draw. It may be I was looking in the wrong place. So I'm going to stop further adventures in sub driver definition, since I don't think I know enough to reach anything useful.
"Nominal" numbers is what the marketing/average expectation is, e.g. nominal PbAc battery voltage is exactly 12V although it varies from about 11 to about 13.7 in normal life cycle. Or the "220V AC" wall voltage or its "50Hz" frequency expected (nominal) in some country may in fact be something near that - maybe different during the day depending on grid load, temperature and whatnot.
The 12V PbAc is usually actually constructed from 6 roughly 2V cells, this per-cell voltage seems to be what many UPSes report (so in some drivers we have or read settings for cells-per-battery counts).
I am not sure OTOH what the healthy numbers are for LiPO.
Also note that "iDowell" mapping may not necessarily be the best fit for these devices. There was an idea to use the feature mentioned above, with count of mappings actually found in the report vs. data reported but not mapped, to pick (in auto-guessing mode) the subdriver which reports the most info for a device. I am not sure that part was completed and merged yet.
Given that this LiPO UPS differs at least in battery tech (and maker) from probably all previously known subdrivers, it makes sense to ultimately define a new subdriver for it even if just for that reason.
Also note that "iDowell" mapping may not necessarily be the best fit for these devices. There was an idea to use the feature mentioned above, with count of mappings actually found in the report vs. data reported but not mapped, to pick (in auto-guessing mode) the subdriver which reports the most info for a device.
Understood.
Is the debug information I provided enough to determine if a better subdriver definition would report more data fields, or report the existing fields more correctly?
Hm, as the first suspicious data point, "Report Descriptor size = 270" seems small-ish; many devices have it around 800-900 bytes.
Even so, here "26 items are present in the report descriptor from HID UPS" and the existing mapping did almost completely fit: "40 mapping entries are defined, and 21 were actually used from USB HID report, in the selected NUT subdriver iDowell HID 0.2" (probably some of those 21 are synthetic).
So in fact some more data points are not utilized:
- UPS.PowerSummary.BatteryPresent (Feature),
- UPS.PowerSummary.Rechargeable (Feature),
- UPS.PowerSummary.DesignCapacity (Feature),
- UPS.PowerSummary.ConfigVoltage (Feature),
- UPS.PowerSummary.Voltage (Feature),
- UPS.PowerSummary.PresentStatus.AtRateTimeToEmpty (Feature),
- UPS.PowerSummary.PresentStatus.BatteryPresent (Feature),
- UPS.PowerSummary.PresentStatus.AverageTimeToEmpty (Feature)
but they don't seem to be populated with meaningful values (nor LogMin/LogMax limits).
Well, maybe values of Rechargeable or BatteryPresent served and not equal to "1" could be used to raise an alarm (and/or status_set("RB");)?..
The *TimeToEmpty could be useful if they were not just 0/1, and DesignCapacity if it was not 100 (%?) :)
Although comparing DesignCapacity, FullChargeCapacity and RemainingCapacity might be useful to evaluate how much the battery is charged (actual divided by max, regardless of their absolute numeric values). Not sure how BelowRemainingCapacityLimit fits into this picture though - is there some threshold setting that can be used for the device itself to raise a "Low Battery" state reported to us?