[Nut-upsuser] Digitech support

Stephen Davies sdavies at sdc.com.au
Thu Dec 25 23:48:23 GMT 2025


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"


More information about the Nut-upsuser mailing list