networkupstools / nut

The Network UPS Tools repository. UPS management protocol Informational RFC 9271 published by IETF at https://www.rfc-editor.org/info/rfc9271 Please star NUT on GitHub, this helps with sponsorships!
https://networkupstools.org/
Other
1.96k stars 347 forks source link

Info about unsupported device: MicroUPS 300 #2493

Open mickeyreg opened 3 months ago

mickeyreg commented 3 months ago

Hi,

I have the "no name" device, called "MicroUPS 3000": https://voltpolska.pl/zasilanie-awaryjne/micro-ups-3000-4x9ah-1800-3000w-komputerowy-zasilacz-awaryjny.html

According to product information it is supported by ViewPower software, so it is possible, that it should be supported by nutdrv_qx. But I have an info "Device not supported!" :(

Maybe somebody can take a look in below logs to check if the support is possible.

After testing in NUT from pkg on FreeBSD 14.0 I downloaded the latest mater from GitHub, compiled and tested: git clone -b master https://github.com/networkupstools/nut

Scanner shows:

# tools/nut-scanner/nut-scanner -U
Scanning USB bus.
[nutdev-usb1]
        driver = "nutdrv_qx"    # alternately: blazer_usb nutdrv_atcl_usb
        port = "auto"
        vendorid = "0001"
        productid = "0000"
        product = "MEC0003"
        vendor = "MEC"
        # bus = "000"
        # device = "003"
        # busport = "011"

So in the ups.conf I have:

[microups]
  driver = nutdrv_qx
  port = auto
  desc = "MicroUPS 3000"
  vendorid = 0001
  productid = 0000

Log from nutdrv_qx:

# ./drivers/nutdrv_qx -a microups -DDDDDD -d1
   0.000002     [D5] send_to_all: SETINFO driver.state "init.starting"
Network UPS Tools - Generic Q* USB/Serial driver 0.36 (2.8.2-382-gd683bc1da)
USB communication driver (libusb 1.0) 0.48
   0.000173     [D1] upsdrv_makevartable...
   0.000254     [D5] send_to_all: SETINFO driver.version.usb "libusb-1.0.0 (API: 0x1000102)"
   0.000269     [D1] Using USB implementation: libusb-1.0.0 (API: 0x1000102)
   0.000609     [D5] do_upsconf_args: confupsname=(null), var=maxretry, val=3
   0.000621     [D5] do_upsconf_args: call do_global_args()
   0.000632     [D3] do_global_args: var='maxretry' val='3'
   0.001039     [D5] do_upsconf_args: confupsname=smartups, var=driver, val=dummy-ups
   0.001055     [D5] do_upsconf_args: confupsname=smartups, var=port, val=ups@192.168.80.244
   0.001069     [D5] do_upsconf_args: confupsname=smartups, var=desc, val=APC Smart-UPS 1500
   0.001084     [D5] do_upsconf_args: confupsname=microups, var=driver, val=nutdrv_qx
   0.001094     [D5] do_upsconf_args: call main_arg()
   0.001104     [D3] main_arg: var='driver' val='nutdrv_qx'
   0.001114     [D5] do_upsconf_args: not a main_arg()
   0.001124     [D5] do_upsconf_args: this is a 'driver' setting, may we proceed?
   0.001136     [D6] testval_reloadable: var=driver, oldval=nutdrv_qx, newval=nutdrv_qx, reloadable=0, reload_flag=0
   0.001147     [D6] testval_reloadable: verdict for (re)loading var=driver value: -1
   0.001157     [D5] do_upsconf_args: 'driver' setting already applied with this value
   0.001175     [D5] do_upsconf_args: confupsname=microups, var=port, val=auto
   0.001184     [D5] do_upsconf_args: call main_arg()
   0.001194     [D3] main_arg: var='port' val='auto'
   0.001205     [D6] testinfo_reloadable: var=port, infoname=driver.parameter.port, newval=auto, reloadable=0, reload_flag=0
   0.001215     [D6] testinfo_reloadable: verdict for (re)loading var=port value: 1
   0.001228     [D5] send_to_all: SETINFO driver.parameter.port "auto"
   0.001242     [D5] do_upsconf_args: confupsname=microups, var=desc, val=MicroUPS 3000
   0.001251     [D5] do_upsconf_args: call main_arg()
   0.001261     [D3] main_arg: var='desc' val='MicroUPS 3000'
   0.001274     [D5] do_upsconf_args: confupsname=microups, var=vendorid, val=0001
   0.001283     [D5] do_upsconf_args: call main_arg()
   0.001293     [D3] main_arg: var='vendorid' val='0001'
   0.001303     [D5] do_upsconf_args: not a main_arg()
   0.001312     [D5] do_upsconf_args: process as value
   0.001323     [D6] testvar_reloadable: searching for var=vendorid, vartype=2, reload_flag=0
   0.001336     [D6] testvar_reloadable: found var=vendorid, val='(null)' => '0001', vartype=2 => 2, found=0, reloadable=0, reload_flag=0
   0.001347     [D6] testvar_reloadable: verdict for (re)loading var=vendorid value: 1
   0.001368     [D5] send_to_all: SETINFO driver.parameter.vendorid "0001"
   0.001382     [D5] do_upsconf_args: confupsname=microups, var=productid, val=0000
   0.001391     [D5] do_upsconf_args: call main_arg()
   0.001401     [D3] main_arg: var='productid' val='0000'
   0.001411     [D5] do_upsconf_args: not a main_arg()
   0.001420     [D5] do_upsconf_args: process as value
   0.001430     [D6] testvar_reloadable: searching for var=productid, vartype=2, reload_flag=0
   0.001442     [D6] testvar_reloadable: found var=productid, val='(null)' => '0000', vartype=2 => 2, found=0, reloadable=0, reload_flag=0
   0.001452     [D6] testvar_reloadable: verdict for (re)loading var=productid value: 1
   0.001467     [D5] send_to_all: SETINFO driver.parameter.productid "0000"
   0.001494     [D5] do_upsconf_args: confupsname=nutdev-usb1, var=driver, val=nutdrv_atcl_usb
   0.001506     [D5] do_upsconf_args: confupsname=nutdev-usb1, var=port, val=auto
   0.001540     [D1] Network UPS Tools version 2.8.2-382-gd683bc1da (release/snapshot of 2.8.2.1) built with gcc (FreeBSD Ports Collection) 13.2.0 and configured with flags: --sysconfdir=/usr/local/etc/nut --program-transform-name= --localstatedir=/var/db/nut --datadir=/usr/local/etc/nut --with-devd-dir=/usr/local/etc/devd --with-drvpath=/usr/local/libexec/nut --with-statepath=/var/db/nut --with-altpidpath=/var/db/nut --with-pidpath=/var/db/nut --with-pkgconfig-dir=/usr/local/libdata/pkgconfig --with-user=nut --with-group=nut --with-python=/usr/local/bin/python3.9 --without-python2 --with-python3=/usr/local/bin/python3.9 --without-nut_monitor --with-ltdl --with-nut-scanner --with-avahi --with-cgi --with-cgipath=/usr/local/www/cgi-bin/nut --with-htmlpath=/usr/local/www/nut --with-gd-includes=-I/usr/local/include --with-gd-libs='-L/usr/local/lib -lgd' --without-dev --with-freeipmi --without-ipmi --with-doc=man=auto --with-modbus --with-neon --without-nss --with-openssl --with-powerman --with-serial --with-snmp --with-usb=auto --prefix=/usr/local --mandir=/usr/local/share/man --disable-silent-rules --infodir=/usr/local/share/info/ --build=amd64-portbld-freebsd14.0 --sbindir=/usr/local/sbin --bindir=/usr/local/bin --enable-Wcolor --enable-warnings --enable-Werror --enable-keep_nut_report_feature --with-all=auto --with-cgi=auto --with-serial=auto --with-dev=auto --with-doc=skip --with-nut_monitor=auto --with-pynut=auto --disable-force-nut-version-header --enable-check-NIT --enable-maintainer-mode --with-debuginfo=auto --enable-inplace-runtime='2.8.2 (release/snapshot of 2.8.2) built with FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152); Target: x86_64-unknown-freebsd14.0; Thread model: posix and'
   0.001562     [D1] debug level is '6'
   0.001576     [D5] send_to_all: SETINFO driver.debug "6"
   0.001590     [D5] send_to_all: SETFLAGS driver.debug RW NUMBER
   0.002091     [D1] Succeeded to become_user(nut): now UID=316 GID=316
   0.002106     [D1] Signalling UPS [microups]: driver.exit (quietly, no fuss if no driver is running or responding)
   0.002167     Can't open /var/db/nut/nutdrv_qx-microups: No such file or directory
   0.002178     [D1] Request for other driver to exit returned code -1
   0.002191     [D1] Socket dialog with the other driver instance (may be absent) failed: No such file or directory
   0.002206     [D5] send_to_all: SETINFO device.type "ups"
   0.002220     [D5] send_to_all: SETINFO driver.state "init.device"
   0.002230     [D1] upsdrv_initups...
   0.002512     [D2] Checking device 1 of 1 (0001/0000)
   0.006799     [D2] - VendorID: 0001
   0.006810     [D2] - ProductID: 0000
   0.006817     [D2] - Manufacturer: MEC
   0.006823     [D2] - Product: MEC0003
   0.006830     [D2] - Serial Number: unknown
   0.006836     [D2] - Bus: 000
   0.006843     [D2] - Bus Port: 011
   0.006849     [D2] - Device: 003
   0.006856     [D2] - Device release number: 0100
   0.006862     [D2] Trying to match device
   0.006869     [D3] match_function_regex: matching a device...
   0.006889     [D2] Device matches
   0.006896     [D2] Reading configuration descriptor 1 of 1
   0.006924     [D3] libusb_kernel_driver_active() returned 0: Success
   0.006933     [D2] Claimed interface 0 successfully
   0.006942     [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 0, 0)
   0.006954     [D5] send_to_all: SETINFO ups.vendorid "0001"
   0.006963     [D5] send_to_all: SETINFO ups.productid "0000"
   0.006987     [D3] send: QGS
   0.006998     [D3] read: QGS
   0.007018     [D2] qx_process_answer: short reply (input.voltage)
   0.007030     [D3] send: QGS
   0.007037     [D3] read: QGS
   0.007044     [D2] qx_process_answer: short reply (input.voltage)
   0.007053     [D3] send: QGS
   0.007059     [D3] read: QGS
   0.007066     [D2] qx_process_answer: short reply (input.voltage)
   0.007074     [D3] send: M
   0.007081     [D3] read: M
   0.007094     [D2] voltronic_qs_protocol: invalid protocol [M]
   0.007102     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007109     [D3] send: M
   0.007116     [D3] read: M
   0.007123     [D2] voltronic_qs_protocol: invalid protocol [M]
   0.007129     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007136     [D3] send: M
   0.007143     [D3] read: M
   0.007150     [D2] voltronic_qs_protocol: invalid protocol [M]
   0.007156     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007164     [D3] send: M
   0.007170     [D3] read: M
   0.007183     [D2] voltronic_qs_hex_protocol: invalid protocol [M]
   0.007189     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007196     [D3] send: M
   0.007203     [D3] read: M
   0.007210     [D2] voltronic_qs_hex_protocol: invalid protocol [M]
   0.007216     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007223     [D3] send: M
   0.007230     [D3] read: M
   0.007237     [D2] voltronic_qs_hex_protocol: invalid protocol [M]
   0.007243     [D4] ups_infoval_set: failed to preprocess value [ups.firmware.aux: M]
   0.007251     [D3] send: QS
   0.007258     [D3] read: QS
   0.007269     [D2] qx_process_answer: short reply (input.voltage)
   0.007276     [D3] send: QS
   0.007283     [D3] read: QS
   0.007289     [D2] qx_process_answer: short reply (input.voltage)
   0.007296     [D3] send: QS
   0.007303     [D3] read: QS
   0.007309     [D2] qx_process_answer: short reply (input.voltage)
   0.007316     [D3] send: D
   0.007323     [D3] read: D
   0.007334     [D2] qx_process_answer: short reply (input.voltage)
   0.007341     [D3] send: D
   0.007347     [D3] read: D
   0.007354     [D2] qx_process_answer: short reply (input.voltage)
   0.007361     [D3] send: D
   0.007368     [D3] read: D
   0.007374     [D2] qx_process_answer: short reply (input.voltage)
   0.007382     [D3] send: Q1
   0.007389     [D4] command index: 0x03
   0.314976     [D3] read: Other error (-99)
   0.314997     [D4] qx_process: failed to preprocess answer [input.voltage]
   0.315009     [D3] send: Q1
   0.315019     [D4] command index: 0x03
   0.447317     [D3] read: Other error (-99)
   0.447357     [D4] qx_process: failed to preprocess answer [input.voltage]
   0.447373     [D3] send: Q1
   0.447385     [D4] command index: 0x03
   0.581973     [D3] read: Other error (-99)
   0.581988     [D4] qx_process: failed to preprocess answer [input.voltage]
   0.582002     [D3] send: Q1
   0.582012     [D4] command index: 0x03
   0.889981     [D3] read: Other error (-99)
   0.890035     [D4] qx_process: failed to preprocess answer [input.voltage]
   0.890050     [D3] send: Q1
   0.890061     [D4] command index: 0x03
   1.019975     [D3] read: Other error (-99)
   1.020022     [D4] qx_process: failed to preprocess answer [input.voltage]
   1.020040     [D3] send: Q1
   1.020051     [D4] command index: 0x03
   1.153972     [D3] read: Other error (-99)
   1.153990     [D4] qx_process: failed to preprocess answer [input.voltage]
   1.154003     [D3] send: Q1
   1.154014     [D4] command index: 0x03
   1.459348     [D3] read: Other error (-99)
   1.459402     [D4] qx_process: failed to preprocess answer [input.voltage]
   1.459420     [D3] send: Q1
   1.459431     [D4] command index: 0x03
   1.593975     [D3] read: Other error (-99)
   1.593997     [D4] qx_process: failed to preprocess answer [input.voltage]
   1.594011     [D3] send: Q1
   1.594022     [D4] command index: 0x03
   1.727971     [D3] read: Other error (-99)
   1.727984     [D4] qx_process: failed to preprocess answer [input.voltage]
   1.727996     [D3] send: Q1
   1.728006     [D4] command index: 0x03
   2.035991     [D3] read: Other error (-99)
   2.036051     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.036069     [D3] send: Q1
   2.036081     [D4] command index: 0x03
   2.169972     [D3] read: Other error (-99)
   2.169988     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.170000     [D3] send: Q1
   2.170011     [D4] command index: 0x03
   2.303977     [D3] read: Other error (-99)
   2.304001     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.304029     [D3] send: WH
   2.304041     [D3] read: WH
   2.304068     [D2] qx_process_answer: short reply (experimental.series)
   2.304079     [D2] claim: cannot process experimental.series
   2.304094     [D3] send: WH
   2.304104     [D3] read: WH
   2.304114     [D2] qx_process_answer: short reply (experimental.series)
   2.304124     [D2] claim: cannot process experimental.series
   2.304138     [D3] send: WH
   2.304148     [D3] read: WH
   2.304158     [D2] qx_process_answer: short reply (experimental.series)
   2.304167     [D2] claim: cannot process experimental.series
   2.304178     [D3] send: Q1
   2.304188     [D4] command index: 0x03
   2.611973     [D3] read: Other error (-99)
   2.612007     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.612021     [D3] send: Q1
   2.612033     [D4] command index: 0x03
   2.745972     [D3] read: Other error (-99)
   2.745989     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.746001     [D3] send: Q1
   2.746010     [D4] command index: 0x03
   2.879973     [D3] read: Other error (-99)
   2.879999     [D4] qx_process: failed to preprocess answer [input.voltage]
   2.880012     [D3] send: Q1
   2.880026     [D4] command index: 0x03
   3.187976     [D3] read: Other error (-99)
   3.188010     [D4] qx_process: failed to preprocess answer [input.voltage]
   3.188022     [D3] send: Q1
   3.188035     [D4] command index: 0x03
   3.321995     [D3] read: Other error (-99)
   3.322041     [D4] qx_process: failed to preprocess answer [input.voltage]
   3.322061     [D3] send: Q1
   3.322072     [D4] command index: 0x03
   3.455975     [D3] read: Other error (-99)
   3.456006     [D4] qx_process: failed to preprocess answer [input.voltage]
   3.456021     [D3] send: Q1
   3.456034     [D4] command index: 0x03
   3.763990     [D3] read: Other error (-99)
   3.764046     [D4] qx_process: failed to preprocess answer [input.voltage]
   3.764063     [D3] send: Q1
   3.764074     [D4] command index: 0x03
   3.897986     [D3] read: Other error (-99)
   3.898023     [D4] qx_process: failed to preprocess answer [input.voltage]
   3.898041     [D3] send: Q1
   3.898053     [D4] command index: 0x03
   4.031979     [D3] read: Other error (-99)
   4.032022     [D4] qx_process: failed to preprocess answer [input.voltage]
   4.032037     Device not supported!
   4.032047     Device not supported!
   4.032088     [D5] send_to_all: SETINFO driver.state "cleanup.exit"

I've also run usbdump in the same time and it showed:

12:42:55.538792 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.539264 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.539284 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.539726 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.539744 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 01 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.540189 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  08 03 4D 00 -- -- -- --  -- -- -- -- -- -- -- --  |..M.            |
12:42:55.540206 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 01 03 09 00 08 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 8 bytes
12:42:55.540710 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  08 03 4D 00 45 00 43 00  -- -- -- -- -- -- -- --  |..M.E.C.        |
12:42:55.540732 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.541176 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.541195 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.541640 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.541670 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 02 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.542111 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  10 03 4D 00 -- -- -- --  -- -- -- -- -- -- -- --  |..M.            |
12:42:55.542128 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 02 03 09 00 10 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 16 bytes
12:42:55.542929 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=16,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 16 bytes
 0000  10 03 4D 00 45 00 43 00  30 00 30 00 30 00 33 00  |..M.E.C.0.0.0.3.|
12:42:55.543555 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.543997 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.544011 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.544453 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.544470 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.575059 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:55.575079 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:55.784960 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 31 00  -- -- -- -- -- -- -- --  |`.(.2.1.        |
12:42:55.851195 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.851920 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:55.918132 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:55.918909 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:55.983570 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:55.984296 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.051136 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:56.051911 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.118187 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.118613 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.118632 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.119073 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.119090 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.149643 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.149664 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:56.359525 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 31 00  -- -- -- -- -- -- -- --  |`.(.2.1.        |
12:42:56.426238 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.426964 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.489207 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:56.489934 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.556228 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.556955 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.623135 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:56.623917 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:56.690192 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.690638 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.690656 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.691099 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.691116 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.721771 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:56.721792 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:56.931683 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 31 00  -- -- -- -- -- -- -- --  |`.(.2.1.        |
12:42:56.995613 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:56.996338 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.063136 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:57.063922 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.130199 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.130924 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.197133 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:57.197924 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.264179 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.264643 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.264661 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.265102 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.265120 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.295977 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.295999 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:57.505856 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 32 00  -- -- -- -- -- -- -- --  |`.(.2.2.        |
12:42:57.572262 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.572987 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.639135 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:57.639929 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.706184 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.706927 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.773137 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:57.773930 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:57.840366 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.840810 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.840828 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.841418 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.841435 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:57.871818 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:57.871841 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:58.081698 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 32 00  -- -- -- -- -- -- -- --  |`.(.2.2.        |
12:42:58.148212 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.148937 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.215136 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:58.215935 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.282187 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.282934 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.349138 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:58.349936 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.416201 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.416656 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:58.416675 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.417117 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:58.417135 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.447628 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:58.447647 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:58.657491 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 32 00  -- -- -- -- -- -- -- --  |`.(.2.2.        |
12:42:58.724210 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.724938 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.791135 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:58.791941 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.858254 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.858979 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.925143 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:58.925942 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:58.992210 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.992643 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:58.992663 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:58.993106 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  04 03 09 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:58.993124 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:59.023893 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=4,IVAL=0,ERR=0
 frame[0] WRITE 8 bytes
 frame[1] READ 4 bytes
 0000  0A 03 E0 00 -- -- -- --  -- -- -- -- -- -- -- --  |....            |
12:42:59.023913 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 03 03 09 00 0A 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 10 bytes
12:42:59.233875 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0,ERR=IOERROR
 frame[0] WRITE 8 bytes
 frame[1] READ 8 bytes
 0000  60 03 28 00 32 00 32 00  -- -- -- -- -- -- -- --  |`.(.2.2.        |
12:42:59.300254 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:59.300980 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:59.367135 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:59.367947 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:59.434234 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 04 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 4 bytes
12:42:59.434959 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes
12:42:59.501159 usbus0.3 SUBM-CTRL-EP=00000080,SPD=LOW,NFR=2,SLEN=8,IVAL=0
 frame[0] WRITE 8 bytes
 0000  80 06 00 03 00 00 FF 00  -- -- -- -- -- -- -- --  |........        |
 frame[1] READ 255 bytes
12:42:59.501948 usbus0.3 DONE-CTRL-EP=00000080,SPD=LOW,NFR=1,SLEN=0,IVAL=0,ERR=IOERROR
 frame[0] WRITE 0 bytes

Regards, Mickey

jimklimov commented 3 months ago

Hello, just in case: did you check also with nutdrv_atcl_usb and for kicks with usbhid-ups (probably need to do some guesswork about subdriver option there)?

mickeyreg commented 3 months ago

I tested all subdrivers from nutdrv_qx changind options like norating and novendor if applicable. I tested also: blazer_usb, usbhid-ups and nutdrv_atcl_usb - all without success.

As I found there is a lot 0001/0000 UPSes, which theoretically should work with NUT, but does not work :(

In the NUTDRV_QX documentation can be read:

norating Some UPSes will lock up if you attempt to read rating information from them. Setting this flag will make the driver skip this step. novendor Some UPSes will lock up if you attempt to read vendor information from them. Setting this flag will make the driver skip this step.

What means "UPSes will lock up"? Do I have to disconnect/reconnect USB to unlock?

jimklimov commented 3 months ago

Well, with vendors not even caring to identify their devices properly (so you get a proverbial "cat in a sack"), the "theoretically should work with NUT" part is a big leap of faith :\

jimklimov commented 3 months ago

I believe "UPSes will lock up" means that unexpected input can wedge their on-board controller. Whether it un-freezes after some time or requires some replug or even UPS power-cycling to clear this up, wholly depends on the firmware (and bugs of its particular build, possibly).

mickeyreg commented 2 months ago

Well, with vendors not even caring to identify their devices properly (so you get a proverbial "cat in a sack"), the "theoretically should work with NUT" part is a big leap of faith :\

After reading above I think I understood the nature of the problem. We have a lot of devices, which identifies itself as 0001/0000 and uses unidentified protocol. VID & PID is not enough to recognize the type of the protocol :(

Some of these 0001/0000 devices have software for Windows or Linux. It is possible to record USB communication between this software and the device? On Linux? On Windows? Can such a recording be useful in extending the capabilities of the specific driver in NUT?

jimklimov commented 2 months ago

Yes, some platforms have native tools like usbdump, others have modules for WireShark and relatives. I suppose that some drivers were written by reverse-engineering, where sniffing the protocol of vendor's software could play a part.

Unfortunately, this would likely need a programmer ready to dig into the USB protocol (or serial-over-USB) and make sense of it, which I myself am not. I'll post a query on the mailing list, perhaps someone would have at least suggestions about this...

jimklimov commented 2 months ago

Just in case, did you check https://github.com/networkupstools/nut/issues?q=label%3AViewPower for other devices supported by ViewPower - if those discussions led to a working driver?