Czurtek CZUR scanner - FreeBSD

More details on main page.

links

ET16 support,

local links

u35jc,

History / work log

2016-11-21: a quick test with xcam revealed that the scanner works in color mode. Now try that with scanimage:

tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 --mode=Color -T
scanimage: scanning image of size 640x480 pixels at 24 bits/pixel
scanimage: acquiring RGB frame, 8 bits/sample
scanimage: reading one scanline, 1920 bytes...    PASS
scanimage: reading one byte...        PASS
scanimage: stepped read, 2 bytes...     PASS
scanimage: stepped read, 4 bytes...     PASS
scanimage: stepped read, 8 bytes...     PASS
scanimage: stepped read, 16 bytes...     PASS
scanimage: stepped read, 32 bytes...     PASS
scanimage: stepped read, 64 bytes...     PASS
scanimage: stepped read, 128 bytes...     PASS
scanimage: stepped read, 256 bytes...     PASS
scanimage: stepped read, 512 bytes...     PASS
scanimage: stepped read, 1024 bytes...     PASS
scanimage: stepped read, 2048 bytes...     PASS
scanimage: stepped read, 2047 bytes...     PASS
scanimage: stepped read, 1023 bytes...     PASS
scanimage: stepped read, 511 bytes...     PASS
scanimage: stepped read, 255 bytes...     PASS
scanimage: stepped read, 127 bytes...     PASS
scanimage: stepped read, 63 bytes...     PASS
scanimage: stepped read, 31 bytes...     PASS
scanimage: stepped read, 15 bytes...     PASS
scanimage: stepped read, 7 bytes...     PASS
scanimage: stepped read, 3 bytes...     PASS

try an image

tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 --mode=Color --format=jpg > test1.jpg
tingo@kg-u35jc$ ll t*
-rw-r--r--  1 tingo  tingo  - 921635 Nov 21 23:20 test1.jpg
tingo@kg-u35jc$ file test1.jpg
test1.jpg: Netpbm image data, size = 640 x 480, rawbits, pixmap

ok, the format option should be '--format=jpeg'

tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 --mode=Color --format=jpeg > test2.jpg
tingo@kg-u35jc$ file t*
test1.jpg: Netpbm image data, size = 640 x 480, rawbits, pixmap
test2.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 640x480, frames 3

nice! It doesn't look like I can't change x and y (scan area size)

tingo@kg-u35jc$ scanimage -d v4l:/dev/video1 --mode=color --format=jpeg > test4.jpg
tingo@kg-u35jc$ file test4.jpg
test4.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 640x480, frames 3
tingo@kg-u35jc$ scanimage -d v4l:/dev/video1 --mode=color --format=jpeg -x 767 -y 511 > test5.jpg
tingo@kg-u35jc$ file test5.jpg
test5.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 640x480, frames 3

strange.

tingo@kg-u35jc$ scanimage -d v4l:/dev/video1 --mode=color --format=jpeg -l 0 -t 0 -x 767 -y 511 > test6.jpg
scanimage: attempted to set inactive option tl-x

and it didn't like the -l option try this

tingo@kg-u35jc$ scanimage -d v4l:/dev/video1 --mode=color --format=jpeg -x 320 -y 240 > test7.jpg
tingo@kg-u35jc$ file test7.jpg
test7.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 640x480, frames 3

still strange.

2016-11-21: scanimage - testing with debug to full, video1 device

tingo@kg-u35jc$ SANE_DEBUG_V4L=128 scanimage -d v4l:/dev/video1 -T
[sanei_debug] Setting debug level of v4l to 128.
[v4l] SANE v4l backend version 1.0 build 5 from sane-backends 1.0.25
[v4l] attach: trying to open /dev/bttv0
[v4l] attach: failed to open device `/dev/bttv0': No such file or directory
[v4l] attach: trying to open /dev/video0
[v4l] attach: found videodev `CZUR' on `/dev/video0'
[v4l] attach: trying to open /dev/video1
[v4l] attach: found videodev `CZUR' on `/dev/video1'
[v4l] attach: trying to open /dev/video2
[v4l] attach: failed to open device `/dev/video2': No such file or directory
[v4l] attach: trying to open /dev/video3
[v4l] attach: failed to open device `/dev/video3': No such file or directory
[v4l] sane_open: device /dev/video1 found in devlist
[v4l] sane_open: 1 channels, 0 audio devices
[v4l] sane_open: minwidth=320, minheight=240, maxwidth=2304, maxheight=1728
[v4l] sane_open: V4L device can capture to memory
[v4l] sane_open: channel 0 (Camera 1), tuners=0, flags=0x0, type=2, norm=0
[v4l] sane_open: input is camera input
[v4l] sane_open: brightness=0, hue=0, colour=0, contrast=0
[v4l] sane_open: whiteness=0, depth=16, palette=8
[v4l] sane_open: ioctl VIDIOCSPICT failed (Invalid argument)
[v4l] sane_open: x=0, y=0, width=640, height=480
[v4l] sane_get_option_descriptor: option 0 (Number of options)
[v4l] sane_control_option: get option 0 (Number of options)
[v4l] sane_get_option_descriptor: option 0 (Number of options)
[v4l] sane_control_option: get option 0 (Number of options)
[v4l] sane_get_option_descriptor: option 1 (Scan Mode)
[v4l] sane_get_option_descriptor: option 2 (mode)
[v4l] sane_get_option_descriptor: option 3 (channel)
[v4l] sane_get_option_descriptor: option 4 (Geometry)
[v4l] sane_get_option_descriptor: option 5 (tl-x)
[v4l] sane_get_option_descriptor: option 6 (tl-y)
[v4l] sane_get_option_descriptor: option 7 (br-x)
[v4l] sane_get_option_descriptor: option 8 (br-y)
[v4l] sane_get_option_descriptor: option 9 (Enhancement)
[v4l] sane_get_option_descriptor: option 10 (brightness)
[v4l] sane_get_option_descriptor: option 11 (hue)
[v4l] sane_get_option_descriptor: option 12 (color)
[v4l] sane_get_option_descriptor: option 13 (contrast)
[v4l] sane_get_option_descriptor: option 14 (white-level)
[v4l] sane_control_option: get option 7 (br-x)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 5 (tl-x)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 8 (br-y)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 6 (tl-y)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 5 (tl-x)
[v4l] sane_control option: option is inactive
[v4l] sane_get_option_descriptor: option 7 (br-x)
[v4l] sane_control_option: get option 6 (tl-y)
[v4l] sane_control option: option is inactive
[v4l] sane_get_option_descriptor: option 8 (br-y)
[v4l] sane_start
[v4l] sane_start: mmap frame, buffersize: 67108864 bytes, buffers: 4, offset 0 0
[v4l] sane_start: mmapped frame, capture 1 pict into 0x803608000
[v4l] sane_start: mmapped frame 640 x 480 with palette 1
[v4l] sane_start: ioctl VIDIOCMCAPTURE failed: Invalid argument
scanimage: sane_start: Invalid argument
[v4l] sane_cancel
[v4l] sane_close: trying to close handle 0x803267000
[v4l] sane_exit: all devices freed

same problem as video0.

2016-11-21: scanimage - testing with debug to full, video0 device

tingo@kg-u35jc$ SANE_DEBUG_V4L=128 scanimage -d v4l:/dev/video0 -T
[sanei_debug] Setting debug level of v4l to 128.
[v4l] SANE v4l backend version 1.0 build 5 from sane-backends 1.0.25
[v4l] attach: trying to open /dev/bttv0
[v4l] attach: failed to open device `/dev/bttv0': No such file or directory
[v4l] attach: trying to open /dev/video0
[v4l] attach: found videodev `CZUR' on `/dev/video0'
[v4l] attach: trying to open /dev/video1
[v4l] attach: found videodev `CZUR' on `/dev/video1'
[v4l] attach: trying to open /dev/video2
[v4l] attach: failed to open device `/dev/video2': No such file or directory
[v4l] attach: trying to open /dev/video3
[v4l] attach: failed to open device `/dev/video3': No such file or directory
[v4l] sane_open: device /dev/video0 found in devlist
[v4l] sane_open: 1 channels, 0 audio devices
[v4l] sane_open: minwidth=320, minheight=240, maxwidth=640, maxheight=480
[v4l] sane_open: V4L device can capture to memory
[v4l] sane_open: channel 0 (Camera 1), tuners=0, flags=0x0, type=2, norm=0
[v4l] sane_open: input is camera input
[v4l] sane_open: brightness=0, hue=0, colour=0, contrast=0
[v4l] sane_open: whiteness=0, depth=16, palette=8
[v4l] sane_open: ioctl VIDIOCSPICT failed (Invalid argument)
[v4l] sane_open: x=0, y=0, width=640, height=480
[v4l] sane_get_option_descriptor: option 0 (Number of options)
[v4l] sane_control_option: get option 0 (Number of options)
[v4l] sane_get_option_descriptor: option 0 (Number of options)
[v4l] sane_control_option: get option 0 (Number of options)
[v4l] sane_get_option_descriptor: option 1 (Scan Mode)
[v4l] sane_get_option_descriptor: option 2 (mode)
[v4l] sane_get_option_descriptor: option 3 (channel)
[v4l] sane_get_option_descriptor: option 4 (Geometry)
[v4l] sane_get_option_descriptor: option 5 (tl-x)
[v4l] sane_get_option_descriptor: option 6 (tl-y)
[v4l] sane_get_option_descriptor: option 7 (br-x)
[v4l] sane_get_option_descriptor: option 8 (br-y)
[v4l] sane_get_option_descriptor: option 9 (Enhancement)
[v4l] sane_get_option_descriptor: option 10 (brightness)
[v4l] sane_get_option_descriptor: option 11 (hue)
[v4l] sane_get_option_descriptor: option 12 (color)
[v4l] sane_get_option_descriptor: option 13 (contrast)
[v4l] sane_get_option_descriptor: option 14 (white-level)
[v4l] sane_control_option: get option 7 (br-x)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 5 (tl-x)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 8 (br-y)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 6 (tl-y)
[v4l] sane_control option: option is inactive
[v4l] sane_control_option: get option 5 (tl-x)
[v4l] sane_control option: option is inactive
[v4l] sane_get_option_descriptor: option 7 (br-x)
[v4l] sane_control_option: get option 6 (tl-y)
[v4l] sane_control option: option is inactive
[v4l] sane_get_option_descriptor: option 8 (br-y)
[v4l] sane_start
[v4l] sane_start: mmap frame, buffersize: 67108864 bytes, buffers: 4, offset 0 0
[v4l] sane_start: mmapped frame, capture 1 pict into 0x803608000
[v4l] sane_start: mmapped frame 640 x 480 with palette 1
[v4l] sane_start: ioctl VIDIOCMCAPTURE failed: Invalid argument
scanimage: sane_start: Invalid argument
[v4l] sane_cancel
[v4l] sane_close: trying to close handle 0x803267000
[v4l] sane_exit: all devices freed

interesting.

2016-11-21: scanimage - testing

tingo@kg-u35jc$ scanimage -d v4l:/dev/video0  > test1.jpg
scanimage: sane_start: Invalid argument
tingo@kg-u35jc$ scanimage -d v4l:/dev/video0  --channel Camera 1 > test1.jpg
scanimage: attempted to set inactive option channel
tingo@kg-u35jc$ scanimage -d v4l:/dev/video0  --channel=Camera 1 > test1.jpg
scanimage: attempted to set inactive option channel
tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 --mode Gray  > test1.jpg
scanimage: sane_start: Invalid argument
tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 --format=jpg  > test1.jpg
scanimage: sane_start: Invalid argument
tingo@kg-u35jc$
tingo@kg-u35jc$ scanimage -d v4l:/dev/video0 -T
scanimage: sane_start: Invalid argument
tingo@kg-u35jc$ su
Password:
root@kg-u35jc# scanimage -d v4l:/dev/video0 -T
scanimage: sane_start: Invalid argument
root@kg-u35jc# scanimage -d v4l:/dev/video1 -T
scanimage: sane_start: Invalid argument

ok, so it doesn't work. test SANE with the "test" backend

tingo@kg-u35jc$ scanimage -d test -T
scanimage: scanning image of size 157x196 pixels at 8 bits/pixel
scanimage: acquiring gray frame, 8 bits/sample
scanimage: reading one scanline, 157 bytes...    PASS
scanimage: reading one byte...        PASS
scanimage: stepped read, 2 bytes...     PASS
scanimage: stepped read, 4 bytes...     PASS
scanimage: stepped read, 8 bytes...     PASS
scanimage: stepped read, 16 bytes...     PASS
scanimage: stepped read, 32 bytes...     PASS
scanimage: stepped read, 64 bytes...     PASS
scanimage: stepped read, 128 bytes...     PASS
scanimage: stepped read, 256 bytes...     PASS
scanimage: stepped read, 255 bytes...     PASS
scanimage: stepped read, 127 bytes...     PASS
scanimage: stepped read, 63 bytes...     PASS
scanimage: stepped read, 31 bytes...     PASS
scanimage: stepped read, 15 bytes...     PASS
scanimage: stepped read, 7 bytes...     PASS
scanimage: stepped read, 3 bytes...     PASS

that works.

2016-11-21: try to get the scanner recognized as a usb video class device. I have installed webcamd. the scanner is still at ugen1.4

root@kg-u35jc# usbconfig -d ugen1.4
ugen1.4: <CZUR iCatchtek Co Ltd> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)

start webcamd:

root@kg-u35jc# service webcamd onestatus
webcamd is not running.
root@kg-u35jc# service webcamd onestart ugen1.4
Attached to ugen1.4[0]

verify

root@kg-u35jc# service webcamd onestatus
webcamd is running as pid 60542.

check for video devices

root@kg-u35jc# ls -l /dev/video*
crw-rw----  1 webcamd  webcamd  0x96 Nov 21 22:07 /dev/video0
crw-rw----  1 webcamd  webcamd  0x97 Nov 21 22:07 /dev/video1

and see what scanimage -L thinks

root@kg-u35jc# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

nothing? hmm, strange.

root@kg-u35jc# cd /usr/ports/graphics/sane-backends
root@kg-u35jc# make showconfig
===> The following configuration options are available for sane-backends-1.0.25:
     AVAHI=off: Zeroconf support via Avahi
     DOCS=on: Build and/or install documentation
     GPHOTO=off: Digital cameras support via libgphoto2
     IEEE1284=off: Parallel port support via libieee1284
     IPV6=on: IPv6 protocol support
     NLS=on: Native Language Support
     SNMP=off: SNMP network protocol support
     USB=on: USB support
     V4L=off: Video 4 Linux support
===> Use 'make config' to modify these settings

Ok, v4l support missing. So i changed V4L=on and reinstalled sane-backends. New check with scanimage -L

root@kg-u35jc# scanimage -L
device `v4l:/dev/video1' is a Noname CZUR virtual device
device `v4l:/dev/video0' is a Noname CZUR virtual device

looks better. What options does video0 support?

root@kg-u35jc# scanimage --help --device-name v4l:/dev/video0
Usage: scanimage [OPTION]...

Start image acquisition on a scanner device and write image data to
standard output.

Parameters are separated by a blank from single-character options (e.g.
-d epson) and by a "=" from multi-character options (e.g. --device-name=epson).
-d, --device-name=DEVICE   use a given scanner device (e.g. hp:/dev/scanner)
    --format=pnm|tiff|png|jpeg  file format of output file
-i, --icc-profile=PROFILE  include this ICC profile into TIFF file
-L, --list-devices         show available scanner devices
-f, --formatted-device-list=FORMAT similar to -L, but the FORMAT of the output
                           can be specified: %d (device name), %v (vendor),
                           %m (model), %t (type), %i (index number), and
                           %n (newline)
-b, --batch[=FORMAT]       working in batch mode, FORMAT is `out%d.pnm' `out%d.tif'
                           `out%d.png' or `out%d.jpg' by default depending on --format
    --batch-start=#        page number to start naming files with
    --batch-count=#        how many pages to scan in batch mode
    --batch-increment=#    increase page number in filename by #
    --batch-double         increment page number by two, same as
                           --batch-increment=2
    --batch-print          print image filenames to stdout
    --batch-prompt         ask for pressing a key before scanning a page
    --accept-md5-only      only accept authorization requests using md5
-p, --progress             print progress messages
-n, --dont-scan            only set options, don't actually scan
-T, --test                 test backend thoroughly
-A, --all-options          list all available backend options
-h, --help                 display this help message and exit
-v, --verbose              give even more status messages
-B, --buffer-size=#        change input buffer size (in kB, default 32)
-V, --version              print version information

Options specific to device `v4l:/dev/video0':
  Scan Mode:
    --mode Gray|Color [Gray]
        Selects the scan mode (e.g., lineart, monochrome, or color).
    --channel Camera 1 [inactive]
        Selects the channel of the v4l device (e.g. television or video-in.
  Geometry:
    -l 0..320pel (in steps of 1) [inactive]
        Top-left x position of scan area.
    -t 0..240pel (in steps of 1) [inactive]
        Top-left y position of scan area.
    -x 320..640pel (in steps of 1) [inactive]
        Width of scan-area.
    -y 240..480pel (in steps of 1) [inactive]
        Height of scan-area.
  Enhancement:
    --brightness 0..255 [0]
        Controls the brightness of the acquired image.
    --hue 0..255 [0]
        Controls the "hue" (blue-level) of the acquired image.
    --color 0..255 [0]
        Sets the picture's color.
    --contrast 0..255 [0]
        Controls the contrast of the acquired image.
    --white-level 0..255 [0]
        Selects what radiance level should be considered "white".

Type ``scanimage --help -d DEVICE'' to get list of all options for DEVICE.

List of available devices:
    v4l:/dev/video1 v4l:/dev/video0

and options for video1?

root@kg-u35jc# scanimage --help -d v4l:/dev/video1
Usage: scanimage [OPTION]...

Start image acquisition on a scanner device and write image data to
standard output.

Parameters are separated by a blank from single-character options (e.g.
-d epson) and by a "=" from multi-character options (e.g. --device-name=epson).
-d, --device-name=DEVICE   use a given scanner device (e.g. hp:/dev/scanner)
    --format=pnm|tiff|png|jpeg  file format of output file
-i, --icc-profile=PROFILE  include this ICC profile into TIFF file
-L, --list-devices         show available scanner devices
-f, --formatted-device-list=FORMAT similar to -L, but the FORMAT of the output
                           can be specified: %d (device name), %v (vendor),
                           %m (model), %t (type), %i (index number), and
                           %n (newline)
-b, --batch[=FORMAT]       working in batch mode, FORMAT is `out%d.pnm' `out%d.tif'
                           `out%d.png' or `out%d.jpg' by default depending on --format
    --batch-start=#        page number to start naming files with
    --batch-count=#        how many pages to scan in batch mode
    --batch-increment=#    increase page number in filename by #
    --batch-double         increment page number by two, same as
                           --batch-increment=2
    --batch-print          print image filenames to stdout
    --batch-prompt         ask for pressing a key before scanning a page
    --accept-md5-only      only accept authorization requests using md5
-p, --progress             print progress messages
-n, --dont-scan            only set options, don't actually scan
-T, --test                 test backend thoroughly
-A, --all-options          list all available backend options
-h, --help                 display this help message and exit
-v, --verbose              give even more status messages
-B, --buffer-size=#        change input buffer size (in kB, default 32)
-V, --version              print version information

Options specific to device `v4l:/dev/video1':
  Scan Mode:
    --mode Gray|Color [Gray]
        Selects the scan mode (e.g., lineart, monochrome, or color).
    --channel Camera 1 [inactive]
        Selects the channel of the v4l device (e.g. television or video-in.
  Geometry:
    -l 0..447pel (in steps of 1) [inactive]
        Top-left x position of scan area.
    -t 0..271pel (in steps of 1) [inactive]
        Top-left y position of scan area.
    -x 320..767pel (in steps of 1) [inactive]
        Width of scan-area.
    -y 240..511pel (in steps of 1) [inactive]
        Height of scan-area.
  Enhancement:
    --brightness 0..255 [0]
        Controls the brightness of the acquired image.
    --hue 0..255 [0]
        Controls the "hue" (blue-level) of the acquired image.
    --color 0..255 [0]
        Sets the picture's color.
    --contrast 0..255 [0]
        Controls the contrast of the acquired image.
    --white-level 0..255 [0]
        Selects what radiance level should be considered "white".

Type ``scanimage --help -d DEVICE'' to get list of all options for DEVICE.

List of available devices:
    v4l:/dev/video1 v4l:/dev/video0

are both the same?

2016-11-21: firmware upgrade mode - if you hold the "zoom in" button while powering on the scanner, it starts up as a usb disk device, used for firmware upgrade. From /var/log/messages:

Nov 21 20:34:37 kg-u35jc kernel: ugen1.4: <iCatchtek Co Ltd> at usbus1
Nov 21 20:34:37 kg-u35jc kernel: umass0 on uhub3
Nov 21 20:34:37 kg-u35jc kernel: umass0: <iCatchtek Co Ltd CZUR, class 0/0, rev 2.00/1.00, addr 4> on usbus1
Nov 21 20:34:37 kg-u35jc kernel: umass0:  SCSI over Bulk-Only; quirks = 0xc100
Nov 21 20:34:37 kg-u35jc kernel: umass0:2:0: Attached to scbus2
Nov 21 20:34:37 kg-u35jc kernel: da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Nov 21 20:34:37 kg-u35jc kernel: da0: <iCatchte CZUR 1.00> Removable Direct Access SPC-2 SCSI device
Nov 21 20:34:37 kg-u35jc kernel: da0: Serial Number 01.00.00
Nov 21 20:34:37 kg-u35jc kernel: da0: 40.000MB/s transfers
Nov 21 20:34:37 kg-u35jc kernel: da0: 7639MB (15644672 512 byte sectors)
Nov 21 20:34:37 kg-u35jc kernel: da0: quirks=0x2<NO_6_BYTE>

list it

root@kg-u35jc# ls -l /dev/da0*
crw-r-----  1 root  operator  0x92 Nov 21 20:34 /dev/da0
crw-r-----  1 root  operator  0x93 Nov 21 20:34 /dev/da0s1

what does disktype think about it?

root@kg-u35jc# disktype /dev/da0

--- /dev/da0
Character device, size 7.460 GiB (8010072064 bytes)
DOS/MBR partition map
Partition 1: 7.460 GiB (8010055680 bytes, 15644640 sectors from 32)
  Type 0x0C (Win95 FAT32 (LBA))
  FAT32 file system (hints score 5 of 5)
    Volume size 7.458 GiB (8008073216 bytes, 244387 clusters of 32 KiB)
    Volume name ""

FAT32. mount it (readonly for now)

root@kg-u35jc# mount -t msdosfs -r /dev/da0s1 /mnt

examine

root@kg-u35jc# df -h /mnt
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/da0s1    7.5G    288K    7.5G     0%    /mnt

check contents

root@kg-u35jc# ll /mnt
total 228
drwxr-xr-x   1 root  wheel  32768 Jan  1  1980 ./
drwxr-xr-x  18 root  wheel   1024 Nov  6 20:48 ../
drwxr-xr-x   1 root  wheel  32768 Jun  1  2012 EVENT/
drwxr-xr-x   1 root  wheel  32768 Jun  1  2012 JPG/
-rwxr-xr-x   1 root  wheel  41508 Jun  1  2012 LASTER.txt*
-rwxr-xr-x   1 root  wheel     22 Jun  1  2012 UID.txt*
drwxr-xr-x   1 root  wheel  32768 Jun  1  2012 VIDEO/

ok, a couple of text files and some directories

root@kg-u35jc# ll /mnt/EVENT
total 64
drwxr-xr-x  1 root  wheel  32768 Jun  1  2012 ./
drwxr-xr-x  1 root  wheel  32768 Jan  1  1980 ../
root@kg-u35jc# ll /mnt/JPG
total 64
drwxr-xr-x  1 root  wheel  32768 Jun  1  2012 ./
drwxr-xr-x  1 root  wheel  32768 Jan  1  1980 ../
root@kg-u35jc# ll /mnt/VIDEO
total 64
drwxr-xr-x  1 root  wheel  32768 Jun  1  2012 ./
drwxr-xr-x  1 root  wheel  32768 Jan  1  1980 ../

directories are empty.

root@kg-u35jc# file /mnt/*txt
/mnt/LASTER.txt: data
/mnt/UID.txt:    data

and "text" files are data. Use hexdump on the small one:

root@kg-u35jc# hd /mnt/UID.txt
00000000  6a 6c 7b 6b 54 57 6c 2f  3e 07 66 7c 1a 1e 50 47  |jl{kTWl/>.f|..PG|
00000010  3a 54 53 25 3d 3d                                 |:TS%==|
00000016

hmm, ok. The LASTER.txt file doesn't have any recognizable text strings in it, perhaps the data is compressed. I unmount the scanner

root@kg-u35jc# umount /mnt

then I unplug the usb cable - nothing happens on the scanner side (no visual activity). Turning the scanner off then on again verifies that it works as before.

2016-11-20: I connected the scanner to my U35jc laptop, running FreeBSD 11.0-stable.

root@kg-u35jc# uname -a
FreeBSD kg-u35jc.kg4.no 11.0-STABLE FreeBSD 11.0-STABLE #0 r307748: Sun Oct 23 19:17:49 CEST 2016     root@kg-u35jc.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64

from /var/log/messages:

Nov 20 20:58:35 kg-u35jc kernel: ugen1.4: <iCatchtek Co Ltd> at usbus1
Nov 20 20:58:35 kg-u35jc root: Unknown USB device: vendor 0x04fc product 0x6333 bus uhub3
Nov 20 20:58:36 kg-u35jc last message repeated 3 times
Nov 20 20:58:36 kg-u35jc kernel: uaudio0 on uhub3
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: <iCatchtek Co Ltd CZUR, class 239/2, rev 2.00/1.00, addr 4> on usbus1
Nov 20 20:58:36 kg-u35jc root: Unknown USB device: vendor 0x064e product 0xa136 bus uhub2
Nov 20 20:58:36 kg-u35jc root: Unknown USB device: vendor 0x064e product 0xa136 bus uhub2
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: No playback.
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: Record: 48000 Hz, 1 ch, 16-bit S-LE PCM format, 2x8ms buffer.
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: Record: 24000 Hz, 1 ch, 16-bit S-LE PCM format, 2x8ms buffer.
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: Record: 16000 Hz, 1 ch, 16-bit S-LE PCM format, 2x8ms buffer.
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: No MIDI sequencer.
Nov 20 20:58:36 kg-u35jc kernel: pcm2: <USB audio> on uaudio0
Nov 20 20:58:36 kg-u35jc kernel: uaudio0: No HID volume keys found.
Nov 20 20:58:36 kg-u35jc root: Unknown USB device: vendor 0x04fc product 0x6333 bus uhub3
Nov 20 20:58:36 kg-u35jc last message repeated 2 times
Nov 20 20:58:36 kg-u35jc root: Unknown USB device: vendor 0x0b05 product 0x1788 bus uhub2
Nov 20 20:58:36 kg-u35jc root: Unknown USB device: vendor 0x0b05 product 0x1788 bus uhub2

usbconfig output

root@kg-u35jc# usbconfig
ugen0.1: <EHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen1.1: <EHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen0.2: <product 0x0020 vendor 0x8087> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen1.2: <product 0x0020 vendor 0x8087> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
ugen0.3: <USB 2.0 UVC 0.3M Webcam SuYin> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
ugen1.3: <product 0x05da MLK> at usbus1, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen0.4: <BT-270 Broadcom Corp> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (0mA)
ugen1.4: <CZUR iCatchtek Co Ltd> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)

the scanner is at ugen1.4 usb device descriptor

root@kg-u35jc# usbconfig -d ugen1.4 dump_device_desc
ugen1.4: <CZUR iCatchtek Co Ltd> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x00ef  <Miscellaneous device>
  bDeviceSubClass = 0x0002
  bDeviceProtocol = 0x0001
  bMaxPacketSize0 = 0x0040
  idVendor = 0x04fc
  idProduct = 0x6333
  bcdDevice = 0x0100
  iManufacturer = 0x0001  <iCatchtek Co Ltd >
  iProduct = 0x0002  <CZUR>
  iSerialNumber = 0x0003  <01.00.00>
  bNumConfigurations = 0x0001

current config

root@kg-u35jc# usbconfig -d ugen1.4 dump_curr_config_desc
ugen1.4: <CZUR iCatchtek Co Ltd> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x050b
    bNumInterfaces = 0x0005
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00c0
    bMaxPower = 0x0032

    Additional Descriptor

    bLength = 0x08
    bDescriptorType = 0x0b
    bDescriptorSubType = 0x00
     RAW dump:
     0x00 | 0x08, 0x0b, 0x00, 0x03, 0x0e, 0x03, 0x00, 0x00


    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x0e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0e, 0x24, 0x01, 0x00, 0x01, 0x5a, 0x00, 0x00,
       0x08 | 0x6c, 0xdc, 0x02, 0x02, 0x02, 0x01


      Additional Descriptor

      bLength = 0x12
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x12, 0x24, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00,
       0x08 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x2e,
       0x10 | 0x00, 0x02


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x0b, 0x24, 0x05, 0x02, 0x01, 0x00, 0x00, 0x02,
       0x08 | 0x40, 0x20, 0x00


      Additional Descriptor

      bLength = 0x1d
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump:
       0x00 | 0x1d, 0x24, 0x06, 0x03, 0x82, 0x06, 0x61, 0x63,
       0x08 | 0x70, 0x50, 0xab, 0x49, 0xb8, 0xcc, 0xb3, 0x85,
       0x10 | 0x5e, 0x8d, 0x22, 0x1d, 0x00, 0x01, 0x02, 0x04,
       0x18 | 0xff, 0xff, 0xff, 0xff, 0x00


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x04, 0x01, 0x01, 0x00, 0x03,
       0x08 | 0x00

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x05, 0x01, 0x01, 0x00, 0x03,
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0087  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0020
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x25
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x05, 0x25, 0x03, 0x20, 0x00



    Interface 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x0e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0e, 0x24, 0x01, 0x01, 0xc5, 0x00, 0x88, 0x00,
       0x08 | 0x04, 0x01, 0x00, 0x00, 0x01, 0x00


      Additional Descriptor

      bLength = 0x1b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x04
       RAW dump:
       0x00 | 0x1b, 0x24, 0x04, 0x01, 0x03, 0x59, 0x55, 0x59,
       0x08 | 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00,
       0x10 | 0xaa, 0x00, 0x38, 0x9b, 0x71, 0x10, 0x01, 0x00,
       0x18 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x32, 0x24, 0x05, 0x01, 0x01, 0x80, 0x02, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x32, 0x24, 0x05, 0x02, 0x01, 0x40, 0x01, 0xf0,
       0x08 | 0x00, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x80, 0x32,
       0x10 | 0x02, 0x00, 0x58, 0x02, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x32, 0x24, 0x05, 0x03, 0x01, 0x80, 0x01, 0xd8,
       0x08 | 0x00, 0x00, 0x40, 0x65, 0x00, 0x00, 0x80, 0x5f,
       0x10 | 0x02, 0x00, 0x88, 0x02, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0d
       RAW dump:
       0x00 | 0x06, 0x24, 0x0d, 0x01, 0x01, 0x04



    Interface 1 Alt 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0001
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0080
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0002
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0180
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0003
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0200
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1 Alt 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0004
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x1280
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x0f
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x0f, 0x24, 0x01, 0x02, 0xc7, 0x01, 0x81, 0x00,
       0x08 | 0x05, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump:
       0x00 | 0x0b, 0x24, 0x06, 0x02, 0x05, 0x01, 0x01, 0x00,
       0x08 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x32, 0x24, 0x07, 0x01, 0x00, 0x80, 0x02, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x32, 0x24, 0x07, 0x02, 0x00, 0x40, 0x01, 0xf0,
       0x08 | 0x00, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x80, 0x32,
       0x10 | 0x02, 0x00, 0x58, 0x02, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x32, 0x24, 0x07, 0x03, 0x00, 0x00, 0x05, 0xd0,
       0x08 | 0x02, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x1e, 0x24, 0x07, 0x04, 0x00, 0x00, 0x06, 0x80,
       0x08 | 0x04, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x15, 0x16, 0x05, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x07
       RAW dump:
       0x00 | 0x32, 0x24, 0x07, 0x05, 0x00, 0x00, 0x09, 0xc0,
       0x08 | 0x06, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x16
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x16, 0x24, 0x03, 0x00, 0x04, 0x00, 0x12, 0x80,
       0x08 | 0x0d, 0x80, 0x02, 0xe0, 0x01, 0x00, 0x05, 0xd0,
       0x10 | 0x02, 0x20, 0x0a, 0x98, 0x07, 0x00


      Additional Descriptor

      bLength = 0x1b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x04
       RAW dump:
       0x00 | 0x1b, 0x24, 0x04, 0x01, 0x04, 0x59, 0x55, 0x59,
       0x08 | 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00,
       0x10 | 0xaa, 0x00, 0x38, 0x9b, 0x71, 0x10, 0x01, 0x00,
       0x18 | 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x01, 0x00, 0x80, 0x02, 0xe0,
       0x08 | 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x2a, 0x2c, 0x0a,
       0x18 | 0x00, 0x01, 0x2a, 0x2c, 0x0a, 0x00


      Additional Descriptor

      bLength = 0x32
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x32, 0x24, 0x05, 0x02, 0x00, 0x40, 0x01, 0xf0,
       0x08 | 0x00, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x80, 0x32,
       0x10 | 0x02, 0x00, 0x58, 0x02, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x06, 0x15, 0x16, 0x05, 0x00, 0x80, 0x1a,
       0x20 | 0x06, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x2a, 0x2c,
       0x28 | 0x0a, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x30 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x22
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x22, 0x24, 0x05, 0x03, 0x00, 0x00, 0x05, 0xd0,
       0x08 | 0x02, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x80, 0x84, 0x1e,
       0x18 | 0x00, 0x02, 0x40, 0x42, 0x0f, 0x00, 0x80, 0x84,
       0x20 | 0x1e, 0x00


      Additional Descriptor

      bLength = 0x1e
      bDescriptorType = 0x24
      bDescriptorSubType = 0x05
       RAW dump:
       0x00 | 0x1e, 0x24, 0x05, 0x04, 0x00, 0x00, 0x09, 0xc0,
       0x08 | 0x06, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xca,
       0x10 | 0x08, 0x00, 0x60, 0x09, 0x00, 0x15, 0x16, 0x05,
       0x18 | 0x00, 0x01, 0x80, 0x84, 0x1e, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0d
       RAW dump:
       0x00 | 0x06, 0x24, 0x0d, 0x01, 0x01, 0x04



    Interface 2 Alt 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0001
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0080
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2 Alt 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0002
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0180
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2 Alt 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0003
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0200
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2 Alt 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0004
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x000e  <Video device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x1280
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x08
      bDescriptorType = 0x0b
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x08, 0x0b, 0x03, 0x02, 0x01, 0x02, 0x00, 0x00



    Interface 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0003
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x09, 0x24, 0x01, 0x00, 0x01, 0x26, 0x00, 0x01,
       0x08 | 0x04

      Additional Descriptor

      bLength = 0x0c
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0c, 0x24, 0x02, 0x01, 0x01, 0x02, 0x00, 0x01,
       0x08 | 0x00, 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x03, 0x01, 0x01, 0x00, 0x05,
       0x08 | 0x00

      Additional Descriptor

      bLength = 0x08
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump:
       0x00 | 0x08, 0x24, 0x06, 0x05, 0x01, 0x01, 0x03, 0x00



    Interface 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>


    Interface 4 Alt 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0001
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0x80, 0x3e, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0020
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0002
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0xc0, 0x5d, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0040
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0003
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0xc0, 0x5d, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0060
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0004
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0x80, 0xbb, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0080
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 5
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0005
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0x80, 0xbb, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x00a0
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 6
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0006
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0x80, 0xbb, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x00c0
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00



    Interface 4 Alt 7
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0007
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0001  <Audio device>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0000
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x24, 0x01, 0x03, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x0b
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x0b, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x01,
       0x08 | 0x80, 0xbb, 0x00


     Endpoint 0
        bLength = 0x0009
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x00e0
        bInterval = 0x0004
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00

very long.