GStreamer pipeline

I am trying to control a Genicam camera from Allied Vision using GStreamer. I am curious if your project will allow this.

I have installed your project (0.6) as described in the readme on my Nvidia Jetson TX2 dev kit (ARM v8) with Ubuntu 18. Upon running ./configure, both USB and GStreamer-1.0 support are listed as completed. I have GStreamer-1.14.

I see under aravis/gst on the Git repo there are pipeline examples utilizing ./gst-aravis-launch. This command is not working for me. ‘command not found’ is returned. It should be noted that the files gst-aravis-inspect.in, gst-aravis-launch.in, and pipelines.md were not included in the 0.6 version that I downloaded.

How might I run this command? Should I install the newest (yet possibly unstable?) 0.7 version of Aravis?

Kind regards

Hi Richard,

Welcome here.

Which Readme, the one here: aravis/README.md at master · AravisProject/aravis · GitHub ?

What is the exact version you have installed ? Did you download it from here ? I’m asking because you are speaking about aravis 0.6, but the question below is about files that are only present in the 0.7 series, and are not distributed in the 0.6 tarballs.

If you have compiled and installed aravis in /usr, these helper scripts found on git are not required. You just have to use the regular gstreamer tools, gst-inspect-1.0 and gst-launch-1.0.

If you have installed aravis in /usr/local, which is the default location, you have to tell GStreamer where to find the aravis plugin, using the GST_PLUGIN_PATH environment variable. Something like:

export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0

or

export GST_PLUGIN_PATH=/usr/local/lib64/gstreamer-1.0

If everything is installed correctly, the plugin should be listed in the gst-inspect-1.0 command.

Cheers,

Emmanuel.

Thanks Emmanuel for such a quick response

I have now compiled and installed aravis 0.7.3 at /usr. After doing so, a libgstaravis.0.8.so appears under /usr/local/lib/aarch64-linux-gnu/gstreamer-1.0 with all my other standard gst plugin libraries. However, gst-inspect-1.0 does not find the aravis or aravissrc plugin, nor is it blacklisted.

Under usr/aravis-0.7.3/builddir/gst/ i am able to run the commands ./gst-aravis-launch and ./gst-aravis-inspect fine. I haven’t attempted to call these within a .c application yet, but perhaps they will work fine.

A question I have is how to use the launch command and element ‘aravissrc’ to connect to my Allied Vision Genicam camera. For example, when using Allied Vision’s Vimba API, I open the camera with the camera ID, for example, DEV_1AB22C000759. Opening the camera as such returns the proper camera handle for setting features and controlling acquisition. Using this camera ID with the aravissrc camera and camera-name properties yielded only errors.

Any suggestions?

PC - Running ./gst-aravis-launch aravissrc ! fakesink negotiated caps of format=GRAY8, width=2592, height=1944, framerate=38 which are my camera’s default settings. However properly setting the exposure and gain, and then adding ! videoconvert ! ximagesink to the pipeline only showed a black window.

And thanks again for the help thus far.

Please check GStreamer debug output, using export GST_DEBUG=4. aravissrc is probably not listed because gstreamer does not find libaravis-0.8.so. You may have to tell the system where to find this library using LD_LIBRARY_PATH, or may be, as you are using Ubuntu, run ldconfig as root in order to update ld cache.

Aravis uses its own id format. Please find your device using arv-tool-0.8, which will list available devices.

What is the exact pipeline you tried ?

What is the exact pipeline you tried ?

Initially :

./gst-aravis-launch aravissrc ! fakesink

The caps feedback is when I noticed that the pipeline was set to my cameras exact default feature settings.

Then I tried the following, which gave only a black window:

./gst-aravis-launch aravissrc exposure=40000 gain=10 ! video/x-raw, format=GRAY8,width=640,height=480,framerate=4/1' !  videoconvert ! ximagesink

These r camera settings that I know display a video with other programs

Did you try arv-viewer ?

Also, you can check if the streaming works by using tests/arv-camera-test.

Sometimes, it is necessary to set ximagesink sync property to false. Your pipeline becomes:

. /gst-aravis-launch aravissrc exposure=40000 gain=10 ! video/x-raw,format=GRAY8,width=640,height=480,framerate=4/1’ ! videoconvert ! ximagesink sync="false"

Hi again Emmanuel,

Here is an update:

Initiating the plugin via gst-launch-1,0 aravissrc camera-name=“my camera name” … now works. Your tip was correct, the libaravis-0.8.so was in the wrong directory. I have also used arv-tool-0.8 to find my camera name.

I have attemped to use arv-viewer-0.8 to output a test stream, but the tool is unable to change the framerate of my camera. The pixel format, width, height, etc can be changed, but not the framerate. The framerate is stuck at about 67 Hz. When playing, no frames are passed and only errors accumulate. From what I know of using this camera setup of mine, the errors are likely from too much data being sent through my USB port. To test this, I reduced the width and height to 104x104. With such a small window, all frames were received with no errors.

When running:

gst-launch-1.0 aravissrc camera-name=“Allied Vision-001G9” exposure=40000 gain=10 ! ‘video/x-raw,format=GRAY8,width=640,hight=480,framerate=4/1’ ! videoconvert ! ximagesink sync=“false” -e

Only a black window appears. I’m thinking that the framerate=4/1 is not successfully setting the camera’s framerate, leaving it at around 67 fps, and thus too much data for the USB. Testing again with the command below successfully displays the stream.

gst-launch-1.0 aravissrc camera-name=“Allied Vision-001G9” exposure=40000 gain=10 ! ‘video/x-raw,format=GRAY8,width=104,hight=104,framerate=4/1’ ! videoconvert ! ximagesink sync=“false” -e

Any suggestions?

Regards,
Richard

The way frame rate is set depends on the device. There is some device dependent code in arvcamera.c.

Please refer to your camera user manual, and see what and how features need to be set.

What is the model you are using ?

I am using an Allied Vision Alvium 1800 U-500c. 2592x1944 max res.

I have added a short bit of code to arvcamera.c under the UNKOWN vedor case to set AcquisitionFrameRateEnable to true when framerate is used with the capsfilter. This has allowed easy setting of the framerate.

I have been able to achieve a good stream at various framerates, but only when the resolution is very very low, f. ex. 200x200. Above and the result shows similar symptoms of when my USB port bandwidth is maxed (either just a black screen with ximagesrc or gstreamer freezing).

With a simple Vimba example code which captures frame but cannot display them (or do anything else), I’m able to achieve a stable stream with full resolution. I’m a curious if perhaps there is something going on with the buffer, but that is a total guess. I’m not too experienced with such things.

Before I did too deep, I’m curious if you have had similar issues before and thus can point me in the right direction for solving this.

PC - I have been using usbtop to monitor the data flow over my usb port. When I attempt to stream with max res (or anything over 200-300 width/height), the usbtop tool shows an initial spike of data which quickly drops down to zero. When streaming with 200x200 width/height, the stream generates a approx 0.7-0.8 KiB/s to and from the USB camera.

I’ve pushed a patch to master that sets AcquisitionFrameRateEnable to TRUE in the generic case.

The video display can be the reason you can not receive the stream at full resolution. Please try with tests/arv-camera-test, which does only the streaming part.

First run or arv-camera-test:
Looking for the first available camera
vendor name = Allied Vision
model name = 1800 U-500c
device id = (null)
image width = 200
image height = 200
horizontal binning = 0
vertical binning = 0
payload = 40000 bytes
exposure = 39997.3 µs
gain = 16 dB
uv bandwidth limit = 200000000 [32750000…450000000]
Frame rate = 25 Hz
Frame rate = 25 Hz
Frame rate = 25 Hz
Frame rate = 25 Hz
Frame rate = 25 Hz
^CFrame rate = 25 Hz
Completed buffers = 150
Failures = 0
Underruns = 0

Second run with higher resolution:
Looking for the first available camera
vendor name = Allied Vision
model name = 1800 U-500c
device id = (null)
image width = 1200
image height = 1200
horizontal binning = 0
vertical binning = 0
payload = 1440000 bytes
exposure = 39997.3 µs
gain = 18 dB
uv bandwidth limit = 200000000 [32750000…450000000]
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
^CFrame rate = 0 Hz
Completed buffers = 0
Failures = 0
Underruns = 133

What does ‘underruns’ mean?

And just to add it, when building Aravis, I get these warnings:

Building documentation for aravis
html/ArvBuffer.html:571: warning: no link for: “GDestroyNotify” -> (GDestroyNotify).
html/ArvBuffer.html:696: warning: no link for: “NULL:CAPS” -> (NULL).
html/ArvBuffer.html:731: warning: no link for: “TRUE:CAPS” -> (TRUE).
html/ArvCamera.html:1385: warning: no link for: “GError” -> (GError).
html/ArvCamera.html:3118: warning: no link for: “g-free” -> (g_free()).
html/ArvCamera.html:3780: warning: no link for: “FALSE:CAPS” -> (FALSE).
html/ArvDevice.html:262: warning: no link for: “G-SIGNAL-RUN-LAST:CAPS” -> (Run Last).
html/ArvDomDocument.html:271: warning: no link for: “GType” -> (GType).
html/ArvDomDocument.html:359: warning: no link for: “GOutputStream” -> (GOutputStream).
html/ArvFakeCamera.html:390: warning: no link for: “GInetAddress” -> (GInetAddress).
html/ArvFakeCamera.html:440: warning: no link for: “GSocketAddress” -> (GSocketAddress).
html/ArvXmlSchema.html:103: warning: no link for: “GFile” -> (GFile).

It happens when there is no available buffer in the input queue of the stream receiving thread. Which should not happen in arv-camera-test. Could you re-run the test with ARV_DEBUG=all ?

When gtk-doc build a documentation, it tries to create links to external documentations (in this case Glib). You probably don’t have the Glib documentation installed, hence the warnings.

Hmm…running export ARV_DEBUG=all just before arv-camera-test did not provide any extra debugging information. However it did provide more info with a gst-launch command:

$ GST_DEBUG=aravissrc:6 gst-launch-1.0 aravissrc camera-name="Allied Vision-001G9" exposure=40000 gain=10 ! video/x-raw,format=GRAY8,width=200,height=200,framerate=4/1 ! videoconvert ! ximagesink -e

Found 1 USB3Vision device (among 3 USB devices)
[UvDevice::new] Vendor  = Allied Vision
[UvDevice::new] Product = ALVIUM 1800 U-500c
[UvDevice::new] S/N     = 001G9
[UvDevice::new] Using control endpoint 1, interface 0
[UvDevice::new] Using data endpoint 5, interface 1
Get genicam
MANUFACTURER_NAME =        'Allied Vision'
MAX_DEVICE_RESPONSE_TIME = 0x0000012c
DEVICE_CAPABILITY        = 0x0000000000000f09
SRBM_ADDRESS =             0x0000000000010000
MANIFEST_TABLE_ADDRESS =   0x0000000000100000
U3VCP_CAPABILITY =         0x00000001
MAX_CMD_TRANSFER =         0x00000400
MAX_ACK_TRANSFER =         0x00000400
SIRM_OFFSET =              0x0000000000020000
SI_INFO =                  0x0a000000
SI_CONTROL =               0x00000000
SI_REQ_PAYLOAD_SIZE =      0x00000000004ce300
SI_REQ_LEADER_SIZE =       0x00000034
SI_REQ_TRAILER_SIZE =      0x00000020
SI_MAX_LEADER_SIZE =       0x00000400
SI_PAYLOAD_SIZE =          0x00100000
SI_PAYLOAD_COUNT =         0x00000004
SI_TRANSFER1_SIZE =        0x000ce400
SI_TRANSFER2_SIZE =        0x00000000
SI_MAX_TRAILER_SIZE =      0x00000400
MANIFEST_N_ENTRIES =       0x0000000000000001
MANIFEST ENTRY
00000000 00 00 00 01 00 04 01 01 00 00 20 00 00 00 00 00  .......... .....
00000010 54 c5 00 00 00 00 00 00 25 81 6f 8c 3b dc a7 08  T.......%.o.;...
00000020 39 9a 0a d9 6c 15 62 6e 9b f7 81 59 00 00 00 00  9...l.bn...Y....
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

genicam address =          0x0000000000200000
genicam size    =          0x000000000000c554
zip file =                 GenICam_Default.xml
[GcFeature::set_attribute] Unknown attribute 'ToolTip'
[GcFeature::set_attribute] Unknown attribute 'StandardNameSpace'
[GcFeature::set_attribute] Unknown attribute 'ProductGuid'
[GcFeature::set_attribute] Unknown attribute 'VersionGuid'
[GcFeature::set_attribute] Unknown attribute 'xmlns'
[GcFeature::set_attribute] Unknown attribute 'xmlns:xsi'
[GcFeature::set_attribute] Unknown attribute 'xsi:schemaLocation'
[Genicam::create_element] Unknown tag (Visibility)
*...many many repeated lines of the former...*
*occassionally amoung all the lines of "Unknown attribute (Visibility) is there:*
[Genicam::create_element] Unknown tag (DisplayPrecision)
*and*
[Genicam::create_element] Unknown tag (Sreamable)
*and*
[Genicam::create_element] Unknown tag (Representation)
*Followed by many many repeated lines of:*
[GcFeature::set_attribute] Unknown attribute 'Comment'
*and finally...*
[Genicam::create_element] Unknown tag (Visibility)
[Genicam::create_element] Unknown tag (Visibility)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[ArvCamera:_update_status] [ArvDevice::read_memory] Timeout (Status changed)
0:00:00.352473925  7888   0x55889c8010 LOG                aravissrc gstaravis.c:524:gst_aravis_set_property:<aravis0> Set camera name to Allied Vision-001G9
0:00:00.391261542  7888   0x55889c8010 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = ANY
0:00:00.391429283  7888   0x55889c8010 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = ANY
0:00:00.394196179  7888   0x55889c8010 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = ANY
0:00:00.396501419  7888   0x55889c8010 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = ANY
0:00:00.396824582  7888   0x55889c8010 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = ANY
Setting pipeline to PAUSED ...
0:00:00.397521946  7888   0x55889c8010 LOG                aravissrc gstaravis.c:309:gst_aravis_start:<aravis0> Open camera 'Allied Vision-001G9'
0:00:00.397562937  7888   0x55889c8010 LOG                aravissrc gstaravis.c:88:gst_aravis_get_all_camera_caps:<aravis0> Get all camera caps
[PixelFormat::to_gst_caps_string] 0x010a0046 not found
[PixelFormat::to_gst_caps_string] 0x0110000c not found
[PixelFormat::to_gst_caps_string] 0x010a0056 not found
[PixelFormat::to_gst_caps_string] 0x02180015 not found
[PixelFormat::to_gst_caps_string] 0x0218003a not found
[PixelFormat::to_gst_caps_string] 0x020c003c not found
[PixelFormat::to_gst_caps_string] 0x02100043 not found
Pipeline is live and does not need PREROLL ...
0:00:00.421091106  7888   0x5588e63370 LOG                aravissrc gstaravis.c:140:gst_aravis_get_caps:<aravis0> Available caps = video/x-raw, format=(string)GRAY8, width=(int)[ 8, 2592 ], height=(int)[ 8, 1944 ], framerate=(fraction)[ 9879345/8388608, 818201/32768 ]; video/x-raw, format=(string)GRAY16_LE, width=(int)[ 8, 2592 ], height=(int)[ 8, 1944 ], framerate=(fraction)[ 9879345/8388608, 818201/32768 ]; video/x-bayer, format=(string)grbg, width=(int)[ 8, 2592 ], height=(int)[ 8, 1944 ], framerate=(fraction)[ 9879345/8388608, 818201/32768 ]; video/x-raw, format=(string)RGB, width=(int)[ 8, 2592 ], height=(int)[ 8, 1944 ], framerate=(fraction)[ 9879345/8388608, 818201/32768 ]
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.425521846  7888   0x5588e63370 LOG                aravissrc gstaravis.c:444:gst_aravis_fixate_caps:<aravis0> Fixate caps
0:00:00.425575733  7888   0x5588e63370 LOG                aravissrc gstaravis.c:158:gst_aravis_set_caps:<aravis0> Requested caps = video/x-raw, format=(string)GRAY8, width=(int)200, height=(int)200, framerate=(fraction)4/1
0:00:00.492096247  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:195:gst_aravis_set_caps:<aravis0> Frame rate = 4 Hz
[[UvDevice::write_memory] Unexpected answer (0x8004)
[[UvDevice::write_memory] Unexpected answer (0x8004)
[[UvDevice::write_memory] Unexpected answer (0x8004)
[[UvDevice::write_memory] Unexpected answer (0x8004)
[[UvDevice::write_memory] Unexpected answer (0x8004)
[ArvCamera:_update_status] [ArvDevice::write_memory] Timeout
0:00:00.504752060  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:206:gst_aravis_set_caps:<aravis0> Buffer timeout = 2000000 µs
0:00:00.504995416  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:208:gst_aravis_set_caps:<aravis0> Actual frame rate = 24,9832 Hz
0:00:00.506553725  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:212:gst_aravis_set_caps:<aravis0> Auto Gain = continuous
0:00:00.506581660  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:227:gst_aravis_set_caps:<aravis0> Exposure = 40000 µs
0:00:00.508768278  7888   0x5588e63370 DEBUG              aravissrc gstaravis.c:231:gst_aravis_set_caps:<aravis0> Actual exposure = 39997,3 µs
SI_INFO            =       0x0a000000
SI_REQ_PAYLOAD_SIZE =      0x0000000000009c40
SI_REQ_LEADER_SIZE =       0x00000034
SI_REQ_TRAILER_SIZE =      0x00000020
Required alignment =       1024
SI_PAYLOAD_SIZE =          0x00100000
SI_PAYLOAD_COUNT =         0x00000000
SI_TRANSFER1_SIZE =        0x0000a000
SI_TRANSFER2_SIZE =        0x00000000
SI_MAX_LEADER_SIZE =       0x00000400
SI_MAX_TRAILER_SIZE =      0x00000400
0:00:00.512269722  7888   0x5588e63370 LOG                aravissrc gstaravis.c:273:gst_aravis_set_caps:<aravis0> Start acquisition
**USB transfer error: LIBUSB_ERROR_IO**

...

A stream is played fine despite that final error message

Then playing with height and width = 1200, I receive repeated:

Incomplete image received, dropping

I have begun using the code with the framerate update. Your code edit was very similar to mine, and therefor has a similar result…

It for awhile worked to set the framerate. After repeated pipeline runs, however, it no longer sets the framerate, with the fps remaining at the previously set value. I can begin adding cases for Allied Vision cameras with regards to feature settings.

Yes, sorry. The debug output is enabled by the -d option: arv-camera-test -d all.

Output after running arv-camera-test -d all:

Looking for the first available camera
Found 1 USB3Vision device (among 3 USB devices)
[UvDevice::new] Vendor  = Allied Vision
[UvDevice::new] Product = ALVIUM 1800 U-500c
[UvDevice::new] S/N     = 001G9
[UvDevice::new] Using control endpoint 1, interface 0
[UvDevice::new] Using data endpoint 5, interface 1
Get genicam
MANUFACTURER_NAME =        'Allied Vision'
MAX_DEVICE_RESPONSE_TIME = 0x0000012c
DEVICE_CAPABILITY        = 0x0000000000000f09
SRBM_ADDRESS =             0x0000000000010000
MANIFEST_TABLE_ADDRESS =   0x0000000000100000
U3VCP_CAPABILITY =         0x00000001
MAX_CMD_TRANSFER =         0x00000400
MAX_ACK_TRANSFER =         0x00000400
SIRM_OFFSET =              0x0000000000020000
SI_INFO =                  0x0a000000
SI_CONTROL =               0x00000000
SI_REQ_PAYLOAD_SIZE =      0x000000000015f900
SI_REQ_LEADER_SIZE =       0x00000034
SI_REQ_TRAILER_SIZE =      0x00000020
SI_MAX_LEADER_SIZE =       0x00000400
SI_PAYLOAD_SIZE =          0x00100000
SI_PAYLOAD_COUNT =         0x00000001
SI_TRANSFER1_SIZE =        0x0005fc00
SI_TRANSFER2_SIZE =        0x00000000
SI_MAX_TRAILER_SIZE =      0x00000400
MANIFEST_N_ENTRIES =       0x0000000000000001
MANIFEST ENTRY
00000000 00 00 00 01 00 04 01 01 00 00 20 00 00 00 00 00  .......... .....
00000010 54 c5 00 00 00 00 00 00 25 81 6f 8c 3b dc a7 08  T.......%.o.;...
00000020 39 9a 0a d9 6c 15 62 6e 9b f7 81 59 00 00 00 00  9...l.bn...Y....
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

genicam address =          0x0000000000200000
genicam size    =          0x000000000000c554
zip file =                 GenICam_Default.xml
[GcFeature::set_attribute] Unknown attribute 'ToolTip'
[GcFeature::set_attribute] Unknown attribute 'StandardNameSpace'
[GcFeature::set_attribute] Unknown attribute 'ProductGuid'
[GcFeature::set_attribute] Unknown attribute 'VersionGuid'
[GcFeature::set_attribute] Unknown attribute 'xmlns'
[GcFeature::set_attribute] Unknown attribute 'xmlns:xsi'
[GcFeature::set_attribute] Unknown attribute 'xsi:schemaLocation'
[Genicam::create_element] Unknown tag (Visibility)
*...previous line repeats...*
[GcFeature::set_attribute] Unknown attribute 'Comment'
*...previous line repeats...*
[ArvCamera:_update_status] node 'ChunkModeActive' not found (Status changed)
[[UvDevice::write_memory] Unexpected answer (0x8002)
[[UvDevice::write_memory] Unexpected answer (0x8002)
[[UvDevice::write_memory] Unexpected answer (0x8002)
[[UvDevice::write_memory] Unexpected answer (0x8002)
[[UvDevice::write_memory] Unexpected answer (0x8002)
[ArvCamera:_update_status] [ArvDevice::write_memory] Timeout
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[[UvDevice::read_memory] Unexpected answer (0x8006)
[ArvCamera:_update_status] [ArvDevice::read_memory] Timeout
vendor name           = Allied Vision
model name            = 1800 U-500c
[ArvCamera:_update_status] node 'DeviceID' not found
device id             = (null)
image width           = 1200
image height          = 1200
horizontal binning    = 0
vertical binning      = 0
payload               = 1440000 bytes
exposure              = 39997.3 µs
gain                  = 13 dB
uv bandwidth limit     = 200000000 [32750000..450000000]
SI_INFO            =       0x0a000000
SI_REQ_PAYLOAD_SIZE =      0x000000000015f900
SI_REQ_LEADER_SIZE =       0x00000034
SI_REQ_TRAILER_SIZE =      0x00000020
Required alignment =       1024
SI_PAYLOAD_SIZE =          0x00100000
SI_PAYLOAD_COUNT =         0x00000001
SI_TRANSFER1_SIZE =        0x0005fc00
SI_TRANSFER2_SIZE =        0x00000000
SI_MAX_LEADER_SIZE =       0x00000400
SI_MAX_TRAILER_SIZE =      0x00000400
USB transfer error: LIBUSB_ERROR_IO
Incomplete image received, dropping
*previous line repeats with the occasional:*
Frame rate = 0 Hz
...
Completed buffers = 0
Failures          = 0
Underruns         = 52
Incomplete image received, dropping
[UvStream::finalize] n_completed_buffers    = 0
[UvStream::finalize] n_failures             = 0
[UvStream::finalize] n_underruns            = 53
[Stream::finalize] Flush 49 buffer[s] in input queue
[Stream::finalize] Flush 1 buffer[s] in output queue