Curiouser and curiouser!
I changed the driver line in ups.conf to nutdrv_atcl_usb but still get the below:

./drivers/nutdrv_atcl_usb -a ups1 -d1 -DDDDDD
   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) - 'ATCL FOR UPS' USB driver 1.22
Warning: This is an experimental driver.
Some features may not function correctly.

   0.000246     [D5] do_upsconf_args: confupsname=(null), var=maxretry, val=3
   0.000263     [D5] do_upsconf_args: call do_global_args()
   0.000268     [D3] do_global_args: var='maxretry' val='3'
0.000389 [D5] do_upsconf_args: confupsname=ups1, var=driver, val=nutdrv_qx
   0.000397     [D5] do_upsconf_args: call main_arg()
   0.000407     [D3] main_arg: var='driver' val='nutdrv_qx'
   0.000412     [D5] do_upsconf_args: not a main_arg()
0.000416 [D5] do_upsconf_args: this is a 'driver' setting, may we proceed? 0.000424 [D6] testval_reloadable: var=driver, oldval=nutdrv_atcl_usb, newval=nutdrv_qx, reloadable=0, reload_flag=0 0.000429 [D1] testval_reloadable: setting 'driver' exists and differs: new value 'nutdrv_qx' vs. 'nutdrv_atcl_usb' 0.000434 [D6] testval_reloadable: verdict for (re)loading var=driver value: 1 0.000439 [D3] do_upsconf_args: collected 1 bad hits and 0 good hits for 'nutdrv_qx' in 'nutdrv_atcl_usb' 0.000447 Error: UPS [ups1] is for driver 'nutdrv_qx', but I'm 'nutdrv_atcl_usb'!

   0.000466     [D5] send_to_all: SETINFO driver.state "cleanup.exit"

Then:

usbhid-ups -s test -x port=auto -x productid=0000 -x vendorid=0001 -DDDDDD -d1
   0.000004     [D5] send_to_all: SETINFO driver.state "init.starting"
Network UPS Tools - Generic HID driver 0.54 (2.8.2.1)
USB communication driver (libusb 1.0) 0.48
   0.000093     [D1] upsdrv_makevartable...
0.000127 [D5] send_to_all: SETINFO driver.version.usb "libusb-1.0.28 (API: 0x100010a)"
   0.000140     [D1] Using USB implementation: libusb-1.0.28 (API: 0x100010a)
   0.000151     [D3] main_arg: var='port' val='auto'
0.000163 [D6] testinfo_reloadable: var=port, infoname=driver.parameter.port, newval=auto, reloadable=0, reload_flag=0 0.000171 [D6] testinfo_reloadable: verdict for (re)loading var=port value: 1
   0.000180     [D5] send_to_all: SETINFO driver.parameter.port "auto"
   0.000190     [D3] main_arg: var='productid' val='0000'
   0.000200     [D5] send_to_all: SETINFO driver.parameter.productid "0000"
   0.000206     [D3] main_arg: var='vendorid' val='0001'
   0.000215     [D5] send_to_all: SETINFO driver.parameter.vendorid "0001"
0.000220 [D1] Network UPS Tools version 2.8.2.1 (release/snapshot of 2.8.2.1) built with gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7) and configured with flags: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --runstatedir=/run --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-all --without-modbus --without-gpio --without-powerman --with-libltdl --without-wrap --with-cgi --with-python=/usr/bin/python3 --with-python3=/usr/bin/python3 --without-python2 --datadir=/usr/share/nut --with-user=nut --with-group=dialout --with-statepath=/run/nut --with-pidpath=/run/nut --with-altpidpath=/run/nut --sysconfdir=/etc/ups --with-cgipath=/var/www/nut-cgi-bin --with-drvpath=/usr/sbin --with-systemdsystemunitdir=/usr/lib/systemd/system --with-systemdshutdowndir=/lib/systemd/system-shutdown --with-pkgconfig-dir=/usr/lib64/pkgconfig --disable-static --with-udev-dir=/usr/lib/udev --libdir=/usr/lib64
   0.000269     [D1] debug level is '6'
   0.000277     [D5] send_to_all: SETINFO driver.debug "6"
   0.000286     [D5] send_to_all: SETFLAGS driver.debug RW NUMBER
   0.001493     [D1] Succeeded to become_user(nut): now UID=57 GID=57
0.001508 [D1] Signalling UPS [test]: driver.exit (quietly, no fuss if no driver is running or responding)
   0.001526     Can't open /run/nut/usbhid-ups-test: No such file or directory
   0.001531     [D1] Request for other driver to exit returned code -1
0.001535 [D1] Socket dialog with the other driver instance (may be absent) failed: No such file or directory
   0.001541     [D5] send_to_all: SETINFO device.type "ups"
   0.001546     [D5] send_to_all: SETINFO driver.state "init.device"
   0.001549     [D1] upsdrv_initups (non-SHUT)...
0.001553 [D2] Initializing an USB-connected UPS with library libusb-1.0.28 (API: 0x100010a) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.48')
   0.006084     [D2] Checking device 1 of 8 (1D6B/0003)
0.006104 [D1] Failed to open device (1D6B/0003), skipping: Access denied (insufficient permissions)
   0.006108     [D2] Checking device 2 of 8 (17EF/6190)
0.006114 [D1] Failed to open device (17EF/6190), skipping: Access denied (insufficient permissions)
   0.006116     [D2] Checking device 3 of 8 (17EF/608D)
0.006121 [D1] Failed to open device (17EF/608D), skipping: Access denied (insufficient permissions)
   0.006124     [D2] Checking device 4 of 8 (0001/0000)
   0.007337     [D1] nut_libusb_open get iProduct failed, retrying...
   0.008513     [D1] nut_libusb_open get iProduct failed, retrying...
   0.009670     [D1] nut_libusb_open get iProduct failed, retrying...
   0.009675     [D2] - VendorID: 0001
   0.009678     [D2] - ProductID: 0000
   0.009681     [D2] - Manufacturer: unknown
   0.009683     [D2] - Product: unknown
   0.009685     [D2] - Serial Number: unknown
   0.009688     [D2] - Bus: 003
   0.009690     [D2] - Bus Port: 006
   0.009693     [D2] - Device: 008
   0.009695     [D2] - Device release number: 0100
   0.009697     [D2] Trying to match device
0.009702 [D2] match_function_subdriver (non-SHUT mode): matching a device... 0.009708 [D2] match_function_subdriver (non-SHUT mode): failed to match a subdriver to vendor and/or product ID
   0.009711     [D2] Device does not match - skipping
   0.009723     [D2] Checking device 5 of 8 (0BDA/4853)
0.009738 [D1] Failed to open device (0BDA/4853), skipping: Access denied (insufficient permissions)
   0.009742     [D2] Checking device 6 of 8 (1D6B/0002)
0.009747 [D1] Failed to open device (1D6B/0002), skipping: Access denied (insufficient permissions)
   0.009750     [D2] Checking device 7 of 8 (1D6B/0003)
0.009756 [D1] Failed to open device (1D6B/0003), skipping: Access denied (insufficient permissions)
   0.009759     [D2] Checking device 8 of 8 (1D6B/0002)
0.009764 [D1] Failed to open device (1D6B/0002), skipping: Access denied (insufficient permissions)
   0.009768     [D2] libusb1: No appropriate HID device found
0.009779 libusb1: Could not open any HID devices: insufficient permissions on everything
   0.009785     No matching HID UPS found
   0.009798     [D5] send_to_all: SETINFO driver.state "cleanup.exit"

On 26/12/25 21:46, Jim Klimov wrote:
Thanks, yes (now :-} )

So at least the string language index issue is solved, it sees the common "MEC0003" name.

In the log I see you also setting "subdriver=hunnox" which is not listed in the HCL comments:

$ git grep -i digitech
data/driver.list.in <http://driver.list.in>:"DigiTECH"  "ups"   "2" "Computer 650VA"        "USB"   "nutdrv_qx port=auto vendorid=0001 productid=0000 protocol=hunnox langid_fix=0x0409 novendor noscanlangid"      # https://github.com/networkupstools/nut/pull/638 <https:// github.com/networkupstools/nut/pull/638> caveats at https://github.com/ networkupstools/nut/issues/674 <https://github.com/networkupstools/nut/ issues/674> (may need longer pollinterval)

Parameter names are a bit messed up historically, "subdriver" in nutdrv_qx refers to USB connection nuances (vs. serial which has no such concept), and "protocol" is the actual variant of some dialect derived from a Megatec Q<x> protocol. It may be that the USB subdriver for hunnox is in fact not what digitech wants, and that's why connection setup fails?

One other idea is to make a shell loop trying all protocols and subdrivers until something returns a reasonable response. You can see the values to loop over in help message of the driver.

Finally, there is a chance that they released a device not talking Megatec but something else. You can try `nutdrv_atcl_usb` (at least it also fits the no-name 0000:0001 IDs), or `usbhid-ups -s test  -x port=auto -x productid=0000 -x vendorid=0001 -DDDDDD -d1`

The I/O error message seems to come out of the blue, so NUT just has it with little context... You can also try your chances with LIBUSB_DEBUG, see https://github.com/networkupstools/nut/wiki/Changing-NUT-daemon- debug-verbosity#nut-v283-and-newer <https://github.com/networkupstools/ nut/wiki/Changing-NUT-daemon-debug-verbosity#nut-v283-and-newer> for details.

Hope this helps,
Jim Klimov



_______________________________________________
Nut-upsuser mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to