G'day Jim.
Did you receive the following?
I tried running "./drivers/nutdrv_qx -a ups1 -d1 -DDDDDD -x
subdriver=hunnox" after building directly after
./configure? --with-all --with-cgi --with-usb=libusb-1.0 --with-modbus=no
--with-gpio=no --with-snmp=no
The output is the the attachment. Doesn't look good.
(I added the three =no bits to configure options because I couldn't find the
relevant dependencies.)
Cheers,
Stephen
On 19/12/25 18:46, Jim Klimov wrote:> Thanks,
>
> So on one hand that part does not look too promising:
>
> Dec 19 18:04:56 mustang nut-driver at ups1[916173]: 0.028122#011[D5]
send_to_all: SETINFO driver.state "reconnect.updateinfo"
> Dec 19 18:04:56 mustang nut-driver at ups1[916173]: 0.028125#011[D3] send:
Q1
> Dec 19 18:04:56 mustang nut-driver at ups1[916173]: 0.029292#011[D3] read:
Input/Output Error (-1)
> Dec 19 18:04:56 mustang nut-driver at ups1[916173]: 0.029308#011[D5]
send_to_all: SETINFO driver.state "reconnect.trying"
>
> but on another, NUT v2.8.2.1 along with `nut_libusb_open get iProduct
failed, retrying` indicates that maybe this is a device with botched retrieval
of language-specific strings, so we get part of that reply and the rest is seen
by USB layer as garbage when asking for Q1. Maybe. At least, the part about
iProduct, iVendor, possibly iSerial was solved about a year ago - so trying a
newer NUT version can help.
>
> Can you please check if you can build the current master branch per
https://github.com/networkupstools/nut/wiki/Building-NUT-for-in%E2%80%90place-upgrades-or-non%E2%80%90disruptive-tests
and run the driver from the resulting build workspace, if that would fare
better? If yes, you can go on about installing that build over the packaged
version; if no, not much of a change for the existing system (except added build
dependency prerequisite packages).
>
> Specifically, I think these PRs can apply to the situation:
> * https://github.com/networkupstools/nut/pull/2604?and maybe
https://github.com/networkupstools/nut/pull/2571 (both went into 2.8.3)
> * https://github.com/networkupstools/nut/pull/3211 (recently on master,
fixes a string truncation issue possible after #2604 above)
>
> Hope this helps,
> Jim Klimov
>
>
-------------- next part --------------
0.000000 [D5] send_to_all: SETINFO driver.state "init.starting"
Network UPS Tools 2.8.4.983-983+ge439012cd (development iteration after 2.8.4) -
Generic Q* USB/Serial driver 0.48
USB communication driver (libusb 1.0) 0.51
0.000135 [D1] upsdrv_makevartable...
0.000160 [D5] send_to_all: SETINFO driver.version.usb "libusb-1.0.28
(API: 0x0100010A)"
0.000167 [D1] Using USB implementation: libusb-1.0.28 (API: 0x0100010A)
0.000331 [D5] do_upsconf_args: confupsname=(null), var=maxretry, val=3
0.000337 [D5] do_upsconf_args: call do_global_args()
0.000339 [D3] do_global_args: var='maxretry' val='3'
0.000398 [D5] do_upsconf_args: confupsname=ups1, var=driver, val=nutdrv_qx
0.000402 [D5] do_upsconf_args: call main_arg()
0.000404 [D3] main_arg: var='driver' val='nutdrv_qx'
0.000409 [D5] do_upsconf_args: not a main_arg()
0.000412 [D5] do_upsconf_args: this is a 'driver' setting, may we
proceed?
0.000415 [D6] testval_reloadable: var=driver, oldval=nutdrv_qx,
newval=nutdrv_qx, reloadable=0, reload_flag=0
0.000418 [D6] testval_reloadable: verdict for (re)loading var=driver value:
-1
0.000420 [D5] do_upsconf_args: 'driver' setting already applied with
this value
0.000423 [D5] do_upsconf_args: confupsname=ups1, var=port, val=auto
0.000425 [D5] do_upsconf_args: call main_arg()
0.000427 [D3] main_arg: var='port' val='auto'
0.000430 [D6] testinfo_reloadable: var=port, infoname=driver.parameter.port,
newval=auto, reloadable=0, reload_flag=0
0.000432 [D6] testinfo_reloadable: verdict for (re)loading var=port value: 1
0.000436 [D5] send_to_all: SETINFO driver.parameter.port "auto"
0.000439 [D5] do_upsconf_args: confupsname=ups1, var=vendorid, val=0001
0.000441 [D5] do_upsconf_args: call main_arg()
0.000481 [D3] main_arg: var='vendorid' val='0001'
0.000483 [D5] do_upsconf_args: not a main_arg()
0.000485 [D5] do_upsconf_args: process as value
0.000487 [D6] testvar_reloadable: searching for var=vendorid, vartype=2,
reload_flag=0
0.000491 [D6] testvar_reloadable: found var=vendorid, val='(null)'
=> '0001', vartype=2 => 2, found=0, reloadable=0, reload_flag=0
0.000495 [D6] testvar_reloadable: verdict for (re)loading var=vendorid value:
1
0.000502 [D5] send_to_all: SETINFO driver.parameter.vendorid "0001"
0.000505 [D5] do_upsconf_args: confupsname=ups1, var=productid, val=0000
0.000507 [D5] do_upsconf_args: call main_arg()
0.000509 [D3] main_arg: var='productid' val='0000'
0.000512 [D5] do_upsconf_args: not a main_arg()
0.000513 [D5] do_upsconf_args: process as value
0.000516 [D6] testvar_reloadable: searching for var=productid, vartype=2,
reload_flag=0
0.000519 [D6] testvar_reloadable: found var=productid, val='(null)'
=> '0000', vartype=2 => 2, found=0, reloadable=0, reload_flag=0
0.000522 [D6] testvar_reloadable: verdict for (re)loading var=productid
value: 1
0.000525 [D5] send_to_all: SETINFO driver.parameter.productid
"0000"
0.000528 [D5] do_upsconf_args: confupsname=ups1, var=protocol, val=hunnox
0.000530 [D5] do_upsconf_args: call main_arg()
0.000532 [D3] main_arg: var='protocol' val='hunnox'
0.000534 [D5] do_upsconf_args: not a main_arg()
0.000536 [D5] do_upsconf_args: process as value
0.000538 [D6] testvar_reloadable: searching for var=protocol, vartype=2,
reload_flag=0
0.000541 [D6] testvar_reloadable: found var=protocol, val='(null)'
=> 'hunnox', vartype=2 => 2, found=0, reloadable=0, reload_flag=0
0.000544 [D6] testvar_reloadable: verdict for (re)loading var=protocol value:
1
0.000547 [D5] send_to_all: SETINFO driver.parameter.protocol
"hunnox"
0.000549 [D5] do_upsconf_args: confupsname=ups1, var=novendor, val=(null)
0.000551 [D5] do_upsconf_args: call main_arg()
0.000553 [D3] main_arg: var='novendor' val='<null>'
0.000555 [D5] do_upsconf_args: not a main_arg()
0.000557 [D5] do_upsconf_args: process as flag
0.000559 [D6] testvar_reloadable: searching for var=novendor, vartype=1,
reload_flag=0
0.000563 [D6] testvar_reloadable: found var=novendor, val='(null)'
=> '(null)', vartype=1 => 1, found=0, reloadable=0, reload_flag=0
0.000574 [D6] testvar_reloadable: verdict for (re)loading var=novendor value:
1
0.000577 [D5] send_to_all: SETINFO driver.flag.novendor "enabled"
0.000581 [D5] do_upsconf_args: confupsname=ups1, var=noscanlangid, val=(null)
0.000583 [D5] do_upsconf_args: call main_arg()
0.000585 [D3] main_arg: var='noscanlangid' val='<null>'
0.000587 [D5] do_upsconf_args: not a main_arg()
0.000589 [D5] do_upsconf_args: process as flag
0.000591 [D6] testvar_reloadable: searching for var=noscanlangid, vartype=1,
reload_flag=0
0.000594 [D6] testvar_reloadable: found var=noscanlangid,
val='(null)' => '(null)', vartype=1 => 1, found=0,
reloadable=0, reload_flag=0
0.000597 [D6] testvar_reloadable: verdict for (re)loading var=noscanlangid
value: 1
0.000599 [D5] send_to_all: SETINFO driver.flag.noscanlangid
"enabled"
0.000603 [D5] do_upsconf_args: confupsname=ups1, var=desc, val=My local UPS
0.000605 [D5] do_upsconf_args: call main_arg()
0.000607 [D3] main_arg: var='desc' val='My local UPS'
0.000617 [D3] main_arg: var='subdriver' val='hunnox'
0.000621 [D5] send_to_all: SETINFO driver.parameter.subdriver
"hunnox"
0.000623 [D1] Network UPS Tools version 2.8.4.983-983+ge439012cd (development
iteration after 2.8.4), 64-bit build for x86_64, built with gcc (GCC) 14.3.1
20250617 (Red Hat 14.3.1-2) and configured with flags: --with-all --with-cgi
--with-usb=libusb-1.0 --with-modbus=no --with-gpio=no --with-snmp=no
0.000630 [D1] debug level is '6'
0.000634 [D5] send_to_all: SETINFO driver.debug "6"
0.000637 [D5] send_to_all: SETFLAGS driver.debug RW NUMBER
0.001736 [D1] Succeeded to become_user(nut): now UID=57 GID=57
0.001784 Can't chdir to /var/state/ups (but we do not require that to
dump data): No such file or directory
0.001788 [D1] Signalling UPS [ups1]: driver.exit (quietly, no fuss if no
driver is running or responding)
0.001796 Can't open /var/state/ups/nutdrv_qx-ups1: No such file or
directory
0.001799 [D1] Request for other driver to exit returned code -1
0.001802 [D1] Socket dialog with the other driver instance (may be absent)
failed: No such file or directory
0.001823 [D5] send_to_all: SETINFO device.type "ups"
0.001829 [D5] send_to_all: SETINFO driver.state "init.device"
0.001832 [D1] upsdrv_initups...
0.008179 [D2] Checking device 1 of 8 (1D6B/0003)
0.008231 [D1] Failed to open device (1D6B/0003), skipping: Access denied
(insufficient permissions)
0.008240 [D2] Checking device 2 of 8 (17EF/6190)
0.008253 [D1] Failed to open device (17EF/6190), skipping: Access denied
(insufficient permissions)
0.008257 [D2] Checking device 3 of 8 (17EF/608D)
0.008267 [D1] Failed to open device (17EF/608D), skipping: Access denied
(insufficient permissions)
0.008271 [D2] Checking device 4 of 8 (0001/0000)
0.009711 [D1] nut_usb_get_string: Broken language identifier, assuming en_US
0.010990 [D6] nut_usb_get_string: from nut_usb_get_string_descriptor() got 16
useful bytes
0.011014 [D6] ...into buffer, presumably in simple UTF-16LE encoding: (16
bytes) => 10 03
0.011022 [D6] 4d 00 45 00 43 00 30 00 30 00 30 00 33 00
0.011027 [D6] nut_usb_get_string: converted into 7 data bytes as: [MEC0003]
0.011033 [D6] ...should be in 8-bit encoding: (7 bytes) => 4d 45 43 30 30
30 33
0.011039 [D2] - VendorID: 0001
0.011043 [D2] - ProductID: 0000
0.011047 [D2] - Manufacturer: unknown
0.011051 [D2] - Product: MEC0003
0.011056 [D2] - Serial Number: unknown
0.011060 [D2] - Bus: 003
0.011064 [D2] - Bus Port: 006
0.011068 [D2] - Device: 006
0.011072 [D2] - Device release number: 0100
0.011076 [D2] Trying to match device
0.011081 [D3] match_function_regex: matching a device...
0.011138 [D2] Device matches
0.011143 [D2] Reading configuration descriptor 1 of 1
0.011157 [D3] libusb_kernel_driver_active() returned 0: Success
0.011193 [D2] Claimed interface 0 successfully
0.011201 [D3] nut_libusb_set_altinterface: skipped
libusb_set_interface_alt_setting(udev, 0, 0)
0.011217 [D5] send_to_all: SETINFO ups.vendorid "0001"
0.011237 [D5] send_to_all: SETINFO ups.productid "0000"
0.011245 [D2] Skipping protocol Voltronic 0.12
0.011250 [D2] Skipping protocol Voltronic-Axpert 0.01
0.011255 [D2] Skipping protocol Voltronic-QS 0.10
0.011259 [D2] Skipping protocol Voltronic-QS-Hex 0.11
0.011265 [D2] Skipping protocol Mustek 0.08
0.011269 [D2] Skipping protocol Megatec/old 0.08
0.011273 [D2] Skipping protocol BestUPS 0.08
0.011278 [D2] Skipping protocol Mecer 0.09
0.011282 [D2] Skipping protocol Megatec 0.09
0.011286 [D2] Skipping protocol Zinto 0.07
0.011290 [D2] Skipping protocol Masterguard 0.05
0.011298 [D3] send: Q1
0.011304 [D4] command index: 0x03
0.011308 [D3] asking for: 00
0.026383 [D3] read: Input/Output Error (-1)
0.026436 [D5] send_to_all: SETINFO driver.state "reconnect.trying"
0.026721 [D4] qx_process: failed to preprocess answer [input.voltage]
0.034120 [D2] Checking device 1 of 8 (1D6B/0003)
0.034168 [D1] Failed to open device (1D6B/0003), skipping: Access denied
(insufficient permissions)
0.034175 [D2] Checking device 2 of 8 (17EF/6190)
0.034186 [D1] Failed to open device (17EF/6190), skipping: Access denied
(insufficient permissions)
0.034190 [D2] Checking device 3 of 8 (17EF/608D)
0.034198 [D1] Failed to open device (17EF/608D), skipping: Access denied
(insufficient permissions)
0.034202 [D2] Checking device 4 of 8 (0001/0000)
0.035446 [D1] nut_usb_get_string: Broken language identifier, assuming en_US
0.036741 [D6] nut_usb_get_string: from nut_usb_get_string_descriptor() got 16
useful bytes
0.036835 [D6] ...into buffer, presumably in simple UTF-16LE encoding: (16
bytes) => 10 03
0.036843 [D6] 4d 00 45 00 43 00 30 00 30 00 30 00 33 00
0.036848 [D6] nut_usb_get_string: converted into 7 data bytes as: [MEC0003]
0.036854 [D6] ...should be in 8-bit encoding: (7 bytes) => 4d 45 43 30 30
30 33
0.036860 [D2] - VendorID: 0001
0.036864 [D2] - ProductID: 0000
0.036868 [D2] - Manufacturer: unknown
0.036871 [D2] - Product: MEC0003
0.036874 [D2] - Serial Number: unknown
0.036878 [D2] - Bus: 003
0.036881 [D2] - Bus Port: 006
0.036885 [D2] - Device: 006
0.036888 [D2] - Device release number: 0100
0.036892 [D2] Trying to match device
0.036896 [D3] match_function_exact: matching a device...
0.036901 [D3] match_function_regex: matching a device...
0.036917 [D2] Device matches
0.036922 [D2] Reading configuration descriptor 1 of 1
0.036935 [D3] libusb_kernel_driver_active() returned 0: Success
0.036983 [D2] Claimed interface 0 successfully
0.036992 [D3] nut_libusb_set_altinterface: skipped
libusb_set_interface_alt_setting(udev, 0, 0)
0.037009 [D5] send_to_all: SETINFO driver.state
"reconnect.updateinfo"
0.037016 [D3] send: Q1
0.037021 [D4] command index: 0x03
0.037024 [D3] asking for: 0D
0.039654 [D3] read: Input/Output Error (-1)
0.039676 [D5] send_to_all: SETINFO driver.state "reconnect.trying"
0.039900 [D4] qx_process: failed to preprocess answer [input.voltage]
0.045788 [D2] Checking device 1 of 8 (1D6B/0003)
0.045836 [D1] Failed to open device (1D6B/0003), skipping: Access denied
(insufficient permissions)
0.045844 [D2] Checking device 2 of 8 (17EF/6190)
0.045852 [D1] Failed to open device (17EF/6190), skipping: Access denied
(insufficient permissions)
0.045856 [D2] Checking device 3 of 8 (17EF/608D)
0.045861 [D1] Failed to open device (17EF/608D), skipping: Access denied
(insufficient permissions)
0.045864 [D2] Checking device 4 of 8 (0001/0000)
0.047067 [D1] nut_usb_get_string: Broken language identifier, assuming en_US
0.048286 [D6] nut_usb_get_string: from nut_usb_get_string_descriptor() got 16
useful bytes
0.048293 [D6] ...into buffer, presumably in simple UTF-16LE encoding: (16
bytes) => 10 03
0.048298 [D6] 4d 00 45 00 43 00 30 00 30 00 30 00 33 00
0.048302 [D6] nut_usb_get_string: converted into 7 data bytes as: [MEC0003]
0.048306 [D6] ...should be in 8-bit encoding: (7 bytes) => 4d 45 43 30 30
30 33
0.048322 [D2] - VendorID: 0001
0.048325 [D2] - ProductID: 0000
0.048328 [D2] - Manufacturer: unknown
0.048331 [D2] - Product: MEC0003
0.048333 [D2] - Serial Number: unknown
0.048335 [D2] - Bus: 003
0.048338 [D2] - Bus Port: 006
0.048341 [D2] - Device: 006
0.048343 [D2] - Device release number: 0100
0.048346 [D2] Trying to match device
0.048349 [D3] match_function_exact: matching a device...
0.048352 [D3] match_function_regex: matching a device...
0.048362 [D2] Device matches
0.048365 [D2] Reading configuration descriptor 1 of 1
0.048372 [D3] libusb_kernel_driver_active() returned 0: Success
0.048397 [D2] Claimed interface 0 successfully
0.048403 [D3] nut_libusb_set_altinterface: skipped
libusb_set_interface_alt_setting(udev, 0, 0)
0.048413 [D5] send_to_all: SETINFO driver.state
"reconnect.updateinfo"
0.048417 [D3] send: Q1
0.048420 [D4] command index: 0x03
0.049580 [D3] read: Input/Output Error (-1)
0.049587 [D5] send_to_all: SETINFO driver.state "reconnect.trying"
0.049711 [D4] qx_process: failed to preprocess answer [input.voltage]
0.049718 [D2] Skipping protocol Ablerex 0.02
0.049722 [D2] Skipping protocol INNOVART31 0.02
0.049725 [D2] Skipping protocol INNOVART33 0.01
0.049728 [D2] Skipping protocol INNOVATAE 0.01
0.049732 [D2] Skipping protocol Q2 0.01
0.049735 [D2] Skipping protocol Q6 0.01
0.049738 [D2] Skipping protocol Gtec 0.01
0.049741 [D2] Skipping protocol Q1 0.08
0.049744 Device not supported!
0.049747 Device not supported!
0.049759 [D5] send_to_all: SETINFO driver.state "cleanup.exit"