-
-
Notifications
You must be signed in to change notification settings - Fork 349
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
APC Smart-UPS X 750 - some data is missing #1261
Comments
Can you please check with a local build of current NUT master branch?
Packaged release 2.7.4 (which your "screenshots" imply) was a few years
ago, and some fixes might have landed for APC over time, and more
importantly for libusb-1.0 support which should be more stable WRT
'Resource temporarily unavailable' messages).
My quick guess is that this model exposes data at different HID points so
mapping is missing (at least in your build).
Note APC was also seen to not follow standards for USB data encoding, see
e.g. #1208
…On Wed, Jan 12, 2022, 17:22 Kajetan Krykwiński ***@***.***> wrote:
Hello,
battery.charge: 66
battery.charge.low: 10
battery.charge.warning: 50
battery.runtime: 65535
battery.runtime.low: 150
battery.type: PbAc
battery.voltage: 52.0
battery.voltage.nominal: 48.0
device.mfr: American Power Conversion
device.model: Smart-UPS X 750
device.serial: <serial>
device.type: upsdriver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: COM 03.8 / UPS 03.8
ups.mfr: American Power Conversion
ups.mfr.date: 2011/11/28
ups.model: Smart-UPS X 750
ups.productid: 0003
ups.serial: <serial>
ups.status: OL CHRG
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.vendorid: 051d
Device connected via USB. It is lacking some data like ups load,
input/output voltages and so on (visible on older Smart-UPS 1000 RM that
I'm replacing).
I found some topics suggesting that it may use modbus, not sure if that's
the case here (at least manual don't mention it, nor it is mentioned in
menus). Any suggestions?
Below is the descriptor data:
Bus 002 Device 006: ID 051d:0003 American Power Conversion UPS
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x051d American Power Conversion
idProduct 0x0003 UPS
bcdDevice 1.06
iManufacturer 1 American Power Conversion
iProduct 2 Smart-UPS X 750 FW:COM 03.8 / UPS 03.8
iSerial 3 <serial>
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0029
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x60
(Missing must-be-set bit!)
Self Powered
Remote Wakeup
MaxPower 2mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 33 US
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 425
Report Descriptor: (length is 425)
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x04 ] 4
UPS
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Local ): Usage, data= [ 0x24 ] 36
Power Summary
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0xfe ] 254
iProduct
Item(Local ): String Index, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Local ): Usage, data= [ 0xff ] 255
iSerialNumber
Item(Local ): String Index, data= [ 0x03 ] 3
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Local ): Usage, data= [ 0xfd ] 253
iManufacturer
Item(Local ): String Index, data= [ 0x01 ] 1
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Local ): Usage, data= [ 0x8f ] 143
iOEMInformation
Item(Local ): String Index, data= [ 0x01 ] 1
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x05 ] 5
Item(Local ): Usage, data= [ 0x89 ] 137
iDeviceChemistry
Item(Local ): String Index, data= [ 0x04 ] 4
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x06 ] 6
Item(Local ): Usage, data= [ 0x8b ] 139
Rechargeable
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x2c ] 44
Capacity Mode
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0e ] 14
Item(Local ): Usage, data= [ 0x83 ] 131
Design Capacity
Item(Global): Logical Maximum, data= [ 0x64 ] 100
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x67 ] 103
Full Charge Capacity
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0c ] 12
Item(Local ): Usage, data= [ 0x66 ] 102
Remaining Capacity
Item(Main ): Input, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x66 ] 102
Remaining Capacity
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report ID, data= [ 0x10 ] 16
Item(Local ): Usage, data= [ 0x8d ] 141
Capacity Granularity 1
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x8e ] 142
Capacity Granularity 2
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0f ] 15
Item(Local ): Usage, data= [ 0x8c ] 140
Warning Capacity Limit
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x11 ] 17
Item(Local ): Usage, data= [ 0x29 ] 41
Remaining Capacity Limit
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report ID, data= [ 0x09 ] 9
Item(Local ): Usage, data= [ 0x85 ] 133
Manufacturer Date
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report ID, data= [ 0x0d ] 13
Item(Local ): Usage, data= [ 0x68 ] 104
Run Time To Empty
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
Item(Global): Unit, data= [ 0x01 0x10 ] 4097
System: SI Linear, Unit: Seconds
Item(Global): Unit Exponent, data= [ 0x00 ] 0
Unit Exponent: 0
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x68 ] 104
Run Time To Empty
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Global): Report ID, data= [ 0x12 ] 18
Item(Local ): Usage, data= [ 0x57 ] 87
Delay Before Shutdown
Item(Global): Logical Minimum, data= [ 0xff 0xff ] 65535
Item(Global): Logical Maximum, data= [ 0xff 0x7f ] 32767
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report ID, data= [ 0x13 ] 19
Item(Local ): Usage, data= [ 0x55 ] 85
Delay Before Reboot
Item(Global): Report Size, data= [ 0x18 ] 24
Item(Global): Logical Minimum, data= [ 0xff 0xff 0xff 0xff ] -1
Item(Global): Logical Maximum, data= [ 0x18 0xc5 0x13 0x00 ] 1295640
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Global): Report ID, data= [ 0x08 ] 8
Item(Local ): Usage, data= [ 0x2a ] 42
Remaining Time Limit
Item(Global): Logical Maximum, data= [ 0x64 0x05 0x00 0x00 ] 1380
Item(Global): Logical Minimum, data= [ 0x78 0x00 ] 120
Item(Main ): Input, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x2a ] 42
Remaining Time Limit
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Global): Report ID, data= [ 0x0a ] 10
Item(Local ): Usage, data= [ 0x40 ] 64
Config Voltage
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0xff 0x00 0x00 ] 65535
Item(Global): Unit, data= [ 0x21 0xd1 0xf0 0x00 ] 15782177
System: SI Linear, Unit: Centimeter^2*Gram*Seconds^-3*Ampere^-1
Item(Global): Unit Exponent, data= [ 0x05 ] 5
Unit Exponent: 5
Item(Main ): Feature, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0b ] 11
Item(Local ): Usage, data= [ 0x30 ] 48
Voltage
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report ID, data= [ 0x14 ] 20
Item(Local ): Usage, data= [ 0x5a ] 90
Audible Alarm Control
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Global): Logical Maximum, data= [ 0x03 ] 3
Item(Global): Unit, data= [ 0x00 ] 0
System: None, Unit: (None)
Item(Global): Unit Exponent, data= [ 0x00 ] 0
Unit Exponent: 0
Item(Main ): Input, data= [ 0x22 ] 34
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x5a ] 90
Audible Alarm Control
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x02 ] 2
Present Status
Item(Main ): Collection, data= [ 0x02 ] 2
Logical
Item(Global): Report ID, data= [ 0x07 ] 7
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Local ): Usage, data= [ 0x44 ] 68
Charging
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x44 ] 68
Charging
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x45 ] 69
Discharging
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x45 ] 69
Discharging
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0xd0 ] 208
AC Present
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0xd0 ] 208
AC Present
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0xd1 ] 209
Battery Present
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0xd1 ] 209
Battery Present
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x42 ] 66
Below Remaining Capacity Limit
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x42 ] 66
Below Remaining Capacity Limit
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x68 ] 104
Shutdown Requested
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x68 ] 104
Shutdown Requested
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x69 ] 105
Shutdown Imminent
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x69 ] 105
Shutdown Imminent
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Local ): Usage, data= [ 0x43 ] 67
Remaining Time Limit Expired
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x43 ] 67
Remaining Time Limit Expired
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x73 ] 115
Communication Lost
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x73 ] 115
Communication Lost
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Local ): Usage, data= [ 0x4b ] 75
Need Replacement
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x4b ] 75
Need Replacement
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x84 ] 132
Power Device Page
Item(Local ): Usage, data= [ 0x65 ] 101
Overload
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x65 ] 101
Overload
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x85 ] 133
Battery System Page
Item(Local ): Usage, data= [ 0xdb ] 219
Voltage Not Regulated
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0xdb ] 219
Voltage Not Regulated
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Usage Page, data= [ 0x86 0xff ] 65414
(null)
Item(Local ): Usage, data= [ 0x80 ] 128
(null)
Item(Main ): Input, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Local ): Usage, data= [ 0x80 ] 128
(null)
Item(Main ): Feature, data= [ 0xa2 ] 162
Data Variable Absolute No_Wrap Linear
No_Preferred_State No_Null_Position Volatile Bitfield
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): Feature, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x86 0xff ] 65414
(null)
Item(Global): Report ID, data= [ 0x89 ] 137
Item(Local ): Usage, data= [ 0xfd ] 253
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x3f ] 63
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x90 ] 144
Item(Local ): Usage, data= [ 0xfc ] 252
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x3f ] 63
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0002
(Bus Powered)
Remote Wakeup Enabled
—
Reply to this email directly, view it on GitHub
<#1261>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMPTFHAW24MOL6KN2BIQ6DUVWTCRANCNFSM5LZM3XQQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Interesting, as this is Debian Stable (or to be exact, Proxmox VE 7.0.x). |
Note, not latest "release" (still is 2.7.4), but the master branch from
GitHub.
…On Wed, Jan 12, 2022, 17:45 Kajetan Krykwiński ***@***.***> wrote:
Packaged release 2.7.4 (which your "screenshots" imply) was a few years
Interesting, as this is Debian Stable (or to be exact, Proxmox VE 7.0.x).
I'll build latest release and report back.
—
Reply to this email directly, view it on GitHub
<#1261 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMPTFCB7X3P5PQGRQ47LELUVWV37ANCNFSM5LZM3XQQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.Message ID:
***@***.***>
|
Finally found some time to check that out. Likely a rookie mistake, but after building with
I went to
|
Thanks, can you please try to add some `-DDDDDD` flags to the driver
launch, to report some debugs that might shine a light on this? I'd expect
maybe unsupported VID/PID combo (new model for us, etc.), or device node
busy due to another driver instance, udev, upower etc., or the test running
as a user without permissions to the device node, etc.
…On Sat, Feb 12, 2022, 20:32 Kajetan Krykwiński ***@***.***> wrote:
Finally found some time to check that out. Likely a rookie mistake, but
after building with
./configure -': ./configure --with-user=nut --with-group=nut --with-usb
make
make install
I went to /usr/local/ups/bin and tried to execute ./usbhid-ups -s ups -x
port=auto
Network UPS Tools - Generic HID driver 0.45 (2.7.4-4613-ge1218569)
USB communication driver (libusb 0.1) 0.42
interrupt pipe disabled (add 'pollonly' flag to 'ups.conf' to get rid of this message)
No matching HID UPS found
BTW: apcupsd can read all the values so it might be a good source to check
how those are fetched:
***@***.***:/opt# apcaccess status
APC : 001,027,0656
DATE : 2022-02-12 19:44:45 +0100
HOSTNAME : pve02
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : ups
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2022-02-12 19:44:43 +0100
MODEL : Smart-UPS X 750
STATUS : ONLINE
BCHARGE : 100.0 Percent
TIMELEFT : 1092.2 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
ALARMDEL : No alarm
BATTV : 54.4 Volts
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
MANDATE : 2011-11-28
SERIALNO : AS1149110011
NOMBATTV : 48.0 Volts
FIRMWARE : COM 03.8 / UPS 03.8
—
Reply to this email directly, view it on GitHub
<#1261 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMPTFFAAAWCLDVKCSKTXLTU22YUFANCNFSM5LZM3XQQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.Message ID:
***@***.***>
|
Logs:
If I launch distro provided packages, it is detected (as in first posts). Tests done on two machines, one had distro nut services disabled (and machine rebooted for a good measure), other had distro nut packages removed. |
Negative descriptor length looks odd. @nbriggs @clepple : any ideas?
Did some recent improvement to be stricter with the wire protocol make
another practical regression with APC? (2.7.4 apparently tolerated this and
talked to the device)
…On Sun, Feb 13, 2022, 23:09 Kajetan Krykwiński ***@***.***> wrote:
Logs:
# ./usbhid-ups -s ups -x port=auto -DDDDDDDD
Network UPS Tools - Generic HID driver 0.45 (2.7.4-4613-ge1218569)
USB communication driver (libusb 0.1) 0.42
0.000000 [D1] debug level is '8'
0.005450 [D5] send_to_all: SETINFO device.type "ups"
0.006061 [D2] Initializing an USB-connected UPS with library libusb-0.1 (or compat) (NUT subdriver name='USB communication driver (libusb 0.1)' ver='0.42')
0.006561 [D1] upsdrv_initups (non-SHUT)...
0.024062 [D3] usb_busses=0x5622c0ad99c0
//skipped other devices
0.050910 [D2] Checking device (051D/0003) (001/003)
0.053250 [D2] - VendorID: 051d
0.053853 [D2] - ProductID: 0003
0.053947 [D2] - Manufacturer: American Power Conversion
0.054146 [D2] - Product: Smart-UPS X 750 FW:COM 03.8 / UPS 03.8
0.054231 [D2] - Serial Number: AS1149110011
0.054428 [D2] - Bus: 001
0.054516 [D2] - Device: 003
0.054689 [D2] - Device release number: 0106
0.054948 [D2] Trying to match device
0.055032 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.055239 interrupt pipe disabled (add 'pollonly' flag to 'ups.conf' to get rid of this message)
0.055329 [D3] match_function_regex: matching a device...
0.055527 [D2] Device matches
0.055639 [D2] failed to claim USB device: could not claim interface 0: Device or resource busy
0.058693 [D2] detached kernel driver from USB device...
0.058782 [D3] nut_usb_set_altinterface: skipped usb_set_altinterface(udev, 0)
0.060013 [D3] HID descriptor, method 1: (9 bytes) => 09 21 00 01 21 01 22 a9 01
0.060055 [D2] Warning: HID descriptor, method 1 failed
0.060082 [D3] HID descriptor length (method 1) -87
0.060108 [D4] i=0, extra[i]=09, extra[i+1]=21
0.060139 [D3] HID descriptor, method 2: (9 bytes) => 09 21 00 01 21 01 22 a9 01
0.060163 [D2] Warning: HID descriptor, method 2 failed
0.060186 [D3] HID descriptor length (method 2) -87
0.060209 [D2] Unable to retrieve any HID descriptor
//skipped other devices
0.061053 [D2] libusb0: No appropriate HID device found
0.061085 No matching HID UPS found
# lsusb | grep UPS
Bus 001 Device 003: ID 051d:0003 American Power Conversion UPS
# ls -lah /dev/bus/usb/001/003
crw-rw-r-- 1 root nut 189, 2 Feb 13 23:05 /dev/bus/usb/001/003
# usbhid-dump -a 1:3
001:003:000:DESCRIPTOR 1644789921.728014
05 84 09 04 A1 01 09 24 A1 02 85 01 09 FE 79 02
75 08 95 01 15 00 26 FF 00 B1 22 85 02 09 FF 79
03 B1 22 85 03 09 FD 79 01 B1 22 05 85 85 04 09
8F 79 01 B1 22 85 05 09 89 79 04 B1 22 85 06 09
8B B1 22 09 2C B1 22 85 0E 09 83 25 64 B1 22 09
67 B1 22 85 0C 09 66 81 22 09 66 B1 A2 85 10 09
8D B1 22 09 8E B1 22 85 0F 09 8C B1 22 85 11 09
29 B1 A2 85 09 09 85 75 10 27 FF FF 00 00 B1 A2
85 0D 09 68 27 FF FF 00 00 66 01 10 55 00 81 A2
09 68 B1 A2 05 84 85 12 09 57 16 FF FF 26 FF 7F
B1 A2 85 13 09 55 75 18 17 FF FF FF FF 27 18 C5
13 00 B1 A2 05 85 85 08 09 2A 27 64 05 00 00 16
78 00 81 22 09 2A B1 A2 05 84 85 0A 09 40 75 10
15 00 27 FF FF 00 00 67 21 D1 F0 00 55 05 B1 22
85 0B 09 30 B1 A2 85 14 09 5A 75 08 15 01 25 03
65 00 55 00 81 22 09 5A B1 A2 09 02 A1 02 85 07
05 85 09 44 75 01 15 00 25 01 81 A2 09 44 B1 A2
09 45 81 A2 09 45 B1 A2 09 D0 81 A2 09 D0 B1 A2
09 D1 81 A2 09 D1 B1 A2 09 42 81 A2 09 42 B1 A2
05 84 09 68 81 A2 09 68 B1 A2 09 69 81 A2 09 69
B1 A2 05 85 09 43 81 A2 09 43 B1 A2 05 84 09 73
81 A2 09 73 B1 A2 05 85 09 4B 81 A2 09 4B B1 A2
05 84 09 65 81 A2 09 65 B1 A2 05 85 09 DB 81 A2
09 DB B1 A2 06 86 FF 09 80 81 A2 09 80 B1 A2 95
03 81 01 B1 01 C0 C0 06 86 FF 85 89 09 FD 15 00
26 FF 00 75 08 95 3F 81 02 85 90 09 FC 15 00 26
FF 00 75 08 95 3F 91 02 C0
If I launch distro provided packages, it is detected (as in first posts).
Tests done on two machines, one had distro nut services disabled (and
machine rebooted for a good measure), other had distro nut packages removed.
—
Reply to this email directly, view it on GitHub
<#1261 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMPTFFOYGVPR74HHWUMELDU3AT2RANCNFSM5LZM3XQQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.Message ID:
***@***.***>
|
Just a note: There seems to be multiple hardware revisions of this model. There are some with firmware 1.x that are not upgradable, mine is upgradable to 3.8 (as listed here), some can go up to 7.x series. So even though they all identify as Smart UPS 750-X, they have different internal model number. I believe the same apply to 1000 and 1500W models, as they share the same chassis. |
Thanks for that heads-up. And just to clarify: was it the same device that
worked (at least somewhat) with packaged NUT 2.7.4 in earlier posts, and
did not get recognized with the later ones and master-branch builds?
…On Mon, Feb 14, 2022, 09:52 Kajetan Krykwiński ***@***.***> wrote:
Just a note: There seems to be multiple hardware revisions of this model.
There are some with firmware 1.x that are not upgradable, mine is
upgradable to 3.8 (as listed here), some can go up to 7.x series. So even
though they all identify as Smart UPS 750-X, they have different internal
model number.
I believe the same apply to 1000 and 1500W models, as they share the same
chassis.
—
Reply to this email directly, view it on GitHub
<#1261 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMPTFB6P4ZF3HFCZDYXLVDU3C6KLANCNFSM5LZM3XQQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.Message ID:
***@***.***>
|
Yes, exactly the same device that works on 2.7.4 from Debian repo is not recognized on version built yesterday from master. |
Yeah, it's the descriptor length that's wrong and preventing anything else from working correctly.
HID descriptor, method 1: (9 bytes) => 09 21 00 01 21 01 22 a9 01
so it should be doing 0xa9 | (0x01 << 8) and getting 425 (they are to be interpreted as unsigned bytes), but it's coming up with -87 because you've (newly?) declared the usb_ctrl_charbuf as signed characters for libusb 0.1 --
silversword% git blame drivers/usb-common.h
[...]
3f8d588 (Jim Klimov 2021-12-19 16:38:04 +0100 411) /* Here MIN/MAX should not matter much, type mostly used for casting */
c2029ec (Jim Klimov 2021-12-13 14:16:44 +0100 412) typedef char* usb_ctrl_charbuf;
3f8d588 (Jim Klimov 2021-12-19 16:38:04 +0100 413) typedef char usb_ctrl_char;
3f8d588 (Jim Klimov 2021-12-19 16:38:04 +0100 414) #define USB_CTRL_CHAR_MIN CHAR_MIN
3f8d588 (Jim Klimov 2021-12-19 16:38:04 +0100 415) #define USB_CTRL_CHAR_MAX CHAR_MAX
…-- Nick
On Feb 14, 2022, at 12:35 AM, Jim Klimov ***@***.***> wrote:
Negative descriptor length looks odd. @nbriggs @clepple : any ideas?
Did some recent improvement to be stricter with the wire protocol make
another practical regression with APC? (2.7.4 apparently tolerated this and
talked to the device)
On Sun, Feb 13, 2022, 23:09 Kajetan Krykwiński ***@***.***>
wrote:
> Logs:
>
> # ./usbhid-ups -s ups -x port=auto -DDDDDDDD
> Network UPS Tools - Generic HID driver 0.45 (2.7.4-4613-ge1218569)
> USB communication driver (libusb 0.1) 0.42
> 0.000000 [D1] debug level is '8'
> 0.005450 [D5] send_to_all: SETINFO device.type "ups"
> 0.006061 [D2] Initializing an USB-connected UPS with library libusb-0.1 (or compat) (NUT subdriver name='USB communication driver (libusb 0.1)' ver='0.42')
> 0.006561 [D1] upsdrv_initups (non-SHUT)...
> 0.024062 [D3] usb_busses=0x5622c0ad99c0
> //skipped other devices
> 0.050910 [D2] Checking device (051D/0003) (001/003)
> 0.053250 [D2] - VendorID: 051d
> 0.053853 [D2] - ProductID: 0003
> 0.053947 [D2] - Manufacturer: American Power Conversion
> 0.054146 [D2] - Product: Smart-UPS X 750 FW:COM 03.8 / UPS 03.8
> 0.054231 [D2] - Serial Number: AS1149110011
> 0.054428 [D2] - Bus: 001
> 0.054516 [D2] - Device: 003
> 0.054689 [D2] - Device release number: 0106
> 0.054948 [D2] Trying to match device
> 0.055032 [D2] match_function_subdriver (non-SHUT mode): matching a device...
> 0.055239 interrupt pipe disabled (add 'pollonly' flag to 'ups.conf' to get rid of this message)
> 0.055329 [D3] match_function_regex: matching a device...
> 0.055527 [D2] Device matches
> 0.055639 [D2] failed to claim USB device: could not claim interface 0: Device or resource busy
> 0.058693 [D2] detached kernel driver from USB device...
> 0.058782 [D3] nut_usb_set_altinterface: skipped usb_set_altinterface(udev, 0)
> 0.060013 [D3] HID descriptor, method 1: (9 bytes) => 09 21 00 01 21 01 22 a9 01
> 0.060055 [D2] Warning: HID descriptor, method 1 failed
> 0.060082 [D3] HID descriptor length (method 1) -87
> 0.060108 [D4] i=0, extra[i]=09, extra[i+1]=21
> 0.060139 [D3] HID descriptor, method 2: (9 bytes) => 09 21 00 01 21 01 22 a9 01
> 0.060163 [D2] Warning: HID descriptor, method 2 failed
> 0.060186 [D3] HID descriptor length (method 2) -87
> 0.060209 [D2] Unable to retrieve any HID descriptor
> //skipped other devices
> 0.061053 [D2] libusb0: No appropriate HID device found
> 0.061085 No matching HID UPS found
>
> # lsusb | grep UPS
> Bus 001 Device 003: ID 051d:0003 American Power Conversion UPS
> # ls -lah /dev/bus/usb/001/003
> crw-rw-r-- 1 root nut 189, 2 Feb 13 23:05 /dev/bus/usb/001/003
> # usbhid-dump -a 1:3
> 001:003:000:DESCRIPTOR 1644789921.728014
> 05 84 09 04 A1 01 09 24 A1 02 85 01 09 FE 79 02
> 75 08 95 01 15 00 26 FF 00 B1 22 85 02 09 FF 79
> 03 B1 22 85 03 09 FD 79 01 B1 22 05 85 85 04 09
> 8F 79 01 B1 22 85 05 09 89 79 04 B1 22 85 06 09
> 8B B1 22 09 2C B1 22 85 0E 09 83 25 64 B1 22 09
> 67 B1 22 85 0C 09 66 81 22 09 66 B1 A2 85 10 09
> 8D B1 22 09 8E B1 22 85 0F 09 8C B1 22 85 11 09
> 29 B1 A2 85 09 09 85 75 10 27 FF FF 00 00 B1 A2
> 85 0D 09 68 27 FF FF 00 00 66 01 10 55 00 81 A2
> 09 68 B1 A2 05 84 85 12 09 57 16 FF FF 26 FF 7F
> B1 A2 85 13 09 55 75 18 17 FF FF FF FF 27 18 C5
> 13 00 B1 A2 05 85 85 08 09 2A 27 64 05 00 00 16
> 78 00 81 22 09 2A B1 A2 05 84 85 0A 09 40 75 10
> 15 00 27 FF FF 00 00 67 21 D1 F0 00 55 05 B1 22
> 85 0B 09 30 B1 A2 85 14 09 5A 75 08 15 01 25 03
> 65 00 55 00 81 22 09 5A B1 A2 09 02 A1 02 85 07
> 05 85 09 44 75 01 15 00 25 01 81 A2 09 44 B1 A2
> 09 45 81 A2 09 45 B1 A2 09 D0 81 A2 09 D0 B1 A2
> 09 D1 81 A2 09 D1 B1 A2 09 42 81 A2 09 42 B1 A2
> 05 84 09 68 81 A2 09 68 B1 A2 09 69 81 A2 09 69
> B1 A2 05 85 09 43 81 A2 09 43 B1 A2 05 84 09 73
> 81 A2 09 73 B1 A2 05 85 09 4B 81 A2 09 4B B1 A2
> 05 84 09 65 81 A2 09 65 B1 A2 05 85 09 DB 81 A2
> 09 DB B1 A2 06 86 FF 09 80 81 A2 09 80 B1 A2 95
> 03 81 01 B1 01 C0 C0 06 86 FF 85 89 09 FD 15 00
> 26 FF 00 75 08 95 3F 81 02 85 90 09 FC 15 00 26
> FF 00 75 08 95 3F 91 02 C0
>
> If I launch distro provided packages, it is detected (as in first posts).
> Tests done on two machines, one had distro nut services disabled (and
> machine rebooted for a good measure), other had distro nut packages removed.
>
> —
> Reply to this email directly, view it on GitHub
> <#1261 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAMPTFFOYGVPR74HHWUMELDU3AT2RANCNFSM5LZM3XQQ>
> .
> Triage notifications on the go with GitHub Mobile for iOS
> <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
> or Android
> <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
>
> You are receiving this because you commented.Message ID:
> ***@***.***>
>
—
Reply to this email directly, view it on GitHub <#1261 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AB6DAWNYH7TWEGBLIXR3AILU3C5GXANCNFSM5LZM3XQQ>.
Triage notifications on the go with GitHub Mobile for iOS <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.
|
While there may be fewer warnings... I suspect there will be other new bugs from having changed the buffers from unsigned to signed bytes in the libusb 0.1 case. |
Thanks a lot for the analysis and catch; I think the buffer type changes trickled down from libusb-1.0(+0.1) reworks under issue #300 and I believe they were supposed to match API headers of the two library versions, to call their methods with types they expected (and it is a huge mismatched mess there even inside one version). So, the correction would be to make sure |
I haven't looked that hard at the code (beyond just the negative length), but someone could look at anything in NUT code that does arithmetic on the buffer elements for issues. I'm not sure which way round to cast is the right way -- declare the buffers that will get passed (or received from?) the libusb 0.1 code with what the libusb declarations expect and just cast for the arithmetic (probably a small number of cases...?) or declare the buffers unsigned in the NUT code and cast to what the libusb 0.1 expects when they're passed. I suspect the former would be more obvious. I'd cast to |
Yes, by now I think C99+ is a reasonable assumption; there are too many things to fix and de-optimise to build in ANSI mode, beside simple-to-adhere cosmetics like declarations on top of methods and block-comment style, so I left the door open and CI ready, but won't commit to the cause myself (documented as such along the way to NUT 2.7.5).
|
…libusb 0.1) The libusb 0.1 interface definition declares a (signed) char type for control messages. The HID descriptor length contained within a control message is intended to be interpreted as a pair of unsigned bytes so we must cast to uint8_t when doing the arithmetic rather than trip over the sign bit. Closes networkupstools#1261, closes networkupstools#1312.
…libusb 0.1) The libusb 0.1 interface definition declares a (signed) char type for control messages. The HID descriptor length contained within a control message is intended to be interpreted as a pair of unsigned bytes so we must cast to uint8_t when doing the arithmetic rather than trip over the sign bit. Closes networkupstools#1261, closes networkupstools#1312.
…libusb 0.1) The libusb 0.1 interface definition declares a (signed) char type for control messages. The HID descriptor length contained within a control message is intended to be interpreted as a pair of unsigned bytes so we must cast to uint8_t when doing the arithmetic rather than trip over the sign bit. Closes networkupstools#1261, closes networkupstools#1312.
Hello, why this ticket is closed? It was about missing data, not about the bug that was apparently fixed in master. |
Sorry, I tagged this as closed by the bug fix that was preventing the code from reading any data when using libusb-0.1. Presumably the fix for your missing data is to check if there are missing mappings from the descriptors to the NUT variables. Perhaps @jimklimov could reopen this. |
Sorry about the automated mess-up :) |
Thank you. I built head (like previously), run
Thus nothing new, except in driver fields. Is there any document/guide on hid descriptors? I'm fine even running "hacked up" version as lack of load and input/output voltages screwed my automation a bit :) |
The HID descriptor that the UPS sent is really minimal, I ran an HID decoder over it that knows most of the APC specific usages, plus all the standard usages, and below are all the values that it will report. Percent load, and input/output voltage are not values it seems to be prepared to report. Power device page "ConfigVoltage" and "Voltage" are the battery nominal and actual voltages that you're seeing.
|
@nbriggs : Hello again, did/would you have a chance to revise the data dump above? :) |
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…tools#1261] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
@jimklimov - I didn't look at it (I assumed that there'd be someone else who might take on the dump decoding in a more timely manner), but I have some time over the next week or so so I will see if I can figure out what was going on in the raw USB capture and report back whether there's anything of interest. |
Sounds great, thanks a lot! |
Hey, just a reminder that there's a screen capture of me gathering that dump: https://www.youtube.com/watch?v=_aYcPjheZMM In the meantime I also got a stand alone Smart-UPS 750 (SMT750I). If I'm correct, SMT and SMX series are siblings (released about the same time, share almost identical local LCD interface). SMT are "tower" while SMX are rack mounted and support external battery packs.
|
…pstools#1261] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Yes, noted. I have extracted the USB data from the PCAP file, but now I have to look at decoding those with reference to the HID report descriptor that the UPS sent. I think a possible first step will be to remove duplicate request/response pairs and then determine if there are any reports that don't correspond to the known report types (or lengths?) in the report descriptor that therefore might contain the extra information that PowerChute sees. |
Note to let you know that my free tie got preempted - I'm probably not going to be able to work on this for about another month. |
Awww, schucks! Thanks for the update, and we do hope to see you soon! :) FWIW, I planed to also populate some The |
…tools#1261] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com> Signed-off-by: Alex W Baulé <alexwbaule@gmail.com>
…pstools#1261] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com> Signed-off-by: Alex W Baulé <alexwbaule@gmail.com>
@kitor : would you be able to check if this UPS would actually respond better to the new |
Thanks for notification. I'll try it in next few days and get back to you with result. |
NUT built as in linked docs (with libmodbus built to I tried using modubs driver but it fails with:
Not sure if any extra params needs to be set? |
Nevermind, forgot to enable modbus in device menus. Now it started, I need to prepare some config for test. |
Okey, that is a lot more output. That's from SMT750i, I can't check SMX750i (from title) now as it is deployed in remote location. I'll try when I'll visit there.
|
Super, thanks for the report!
That would be a menu in the UPS LCD+buttons panel, right? |
Yes. From UPS LCD in Configuration submenu there are modbus enable/disable and modbus address options. That's SMT750i On SMX750i, according to my original post there was no modbus option visible in menus. |
Ok, I built libmodbus/nut on that remote machine where SMX750i is connected, however all I get is this:
Insufficient permissions? Some weird state after shutting down distro NUT? (I stopped nut-server, nut-client, nut-driver@ups, verified usbhid-ups is not running). That's on Proxmox 8, based on Debian 12.2. |
You would probably need to add A quick check if the device would work with the driver can be done by using |
Ok, then this one likely will not work with new driver :(
According to https://community.se.com/t5/APC-UPS-Data-Center-Enterprise/SMX1500RM2U-Modbus-Support-Firmware-3-8/td-p/292812
That's a shame, it means Considering my previous post:
it seems that even using AP9630/9635 card wouldn't help as this hardware revision can't use firmware 6.x. Unless they mean 6.x firmware for card itself - that was ambiguous tbh. Full debug log, just in case:
|
For kicks, did you try this one with Another idea is if they have it all published on a non-zero USB interface number and if the driver only queries the zero'th one. For USB HID investigations, users looked at verbose Recent NUT versions, like your custom build, should have the CLI/ups.conf options to specify a custom number, although practical support in particular driver programs may vary so far - it is a recent'ish effort. |
Nope, just tried - nothing new available in upsc output.
All the descriptor dumps I think are attached in first few messages of this issue. It doesn't look anything else is available there. I wouldn't be surprised if they indeed use modbus internally, just there's some magic done to start that communication. After all it would be surprising they implemented two new protocols at once. |
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Hello,
Device connected via USB. It is lacking some data like ups load, input/output voltages and so on (visible on older Smart-UPS 1000 RM that I'm replacing).
I found some topics suggesting that it may use modbus, not sure if that's the case here (at least manual don't mention it, nor it is mentioned in menus). Any suggestions?
Below is the descriptor data:
The text was updated successfully, but these errors were encountered: