voxl-streamer client repetitive connect/disconnect
-
@wilkinsaf There is an initial version of a new UVC camera server application now available from our "dev" package repo. The application voxl-uvc-server works in conjunction with voxl-streamer to better support UVC cameras. It has been tested with the Logitech C270 and Videology 5MP Micro USB 2.0 Board Camera. The documentation is at https://docs.modalai.com/voxl-uvc-server/ and the code is at https://gitlab.com/voxl-public/modal-pipe-architecture/voxl-uvc-server. To try it out, install the latest Voxl platform release voxl_platform_3-3-0-0.5.0-a. On target, configure the opkg package manager to use the modalai dev repo (https://docs.modalai.com/configure-opkg/). Then use
opkg install voxl-streamer
to upgrade voxl-streamer from 0.2.6 to 0.2.7 (and libmodal_pipe from 2.1.1 to 2.1.2). Thenopkg install voxl-uvc-server
to install the new voxl-uvc-server application v0.0.5. Runvoxl-uvc-server -d
to start the application with debug messages. Then run voxl-streamer withvoxl-streamer -f /usr/share/modalai/voxl-streamer/voxl-streamer.conf -c uvc-server
to use the new configuration file and record type for the uvc server. Let me know if this works for you. -
quick comment for anyone reading this, it is
voxl-uvc-server -d
when running -
@wilkinsaf Thanks! I fixed the typo in the original post.
-
I am seeing that this failed for MJPEG
voxl:~$ voxl-uvc-server -d
Enabling debug messages
voxl-uvc-server starting
UVC initialized
Device found
Device opened
uvc_get_stream_ctrl_format_size failed for MJPEG
uvc_get_stream_ctrl_format_size failedIs there a config file for this that I can modify to change the format?
-
@wilkinsaf That shows a failure of the camera to support either MJPEG or YUV422. In order to support that camera you need to know what formats it supports. The best way to do that is to query it's capabilities on the command line. First of all use the
lsusb
command to find out the device id and product id of the camera. For example:Ubuntu18$ lsusb Bus 001 Device 090: ID 046d:0825 Logitech, Inc. Webcam C270 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
This shows you that the UVC webcam has device id and product id
046d:0825
. You can use that to query it's capabilities withlsusb -v -d 046d:0825
. This will dump all of the camera capabilities to the output. Can you respond with the output from your camera? -
Apologies for the delay. Some other things came up.
I was able to pull down the camera information. We have 2 cameras we are trying to get up.Cam 1: https://pastebin.com/qHvHKXay
Cam 2: https://pastebin.com/7DgvP58kThey appear to be able to post in MJPEG
-
Not sure if voxl-uvc-server got removed.
I can not seem to find it in the public repo: -
-
@wilkinsaf The current voxl-uvc-server capabilities only cover uncompressed frames, not mjpeg. The two cameras that you are looking at both have uncompressed formats but the guidFormat is slightly different than the cameras I have tested with. Let me look into this a little deeper.
-
@wilkinsaf The formats should be compatible. I'll have to dig into the libuvc code to see why they are not accepted.
-
@wilkinsaf Are either of these cameras cheap and easy to purchase?
-
I believe so. Let me find them online really quick. I was able to get the video's from the cameras streaming using the directions here: https://docs.modalai.com/uvc-streaming/
I moved over the ffmpeg ipk and executed
ffmpeg -i /dev/video2 -f mpegts udp://QCS_IP:4242So I know that they are working.
-
@wilkinsaf There are some clues here: https://github.com/gregkh/usbutils/issues/42. It seems like there are some endian issues with interpretation of the guidFormat field. For example, for my Logitech C270 test camera, lsusb reports the guidFormat as
32595559-0000-0010-8000-00aa00389b71
but libuvc (which voxl-uvc-server uses) reports the guidFormat as59555932-0000-1000-8000-00aa00389b71
. So, my guess is that since lsusb reports the guidFormat of your camera as59555932-0000-1000-8000-00aa00389b71
, libuvc (and hence voxl-uvc-server) will see it as32595559-0000-0010-8000-00aa00389b71
which doesn't match any valid formats. I think I can hack libuvc to add the extra guidFormat and then your cameras will work but I won't be able to test it without one of your cameras. But I will post it and you can try it. For reference this is where libuvc needs to be modified to add the extra guidFormat: https://github.com/libuvc/libuvc/blob/37f00abd32b083a3d748f2a25c1c794578b51c16/src/stream.c#L109 -
@wilkinsaf There is a new version of libuvc available at http://voxl-packages.modalai.com/dev/libuvc_1.0.2_202112182223.ipk with the changes. If you rebuild the dev branch of voxl-uvc-server and install build deps from dev you should pick up the new libuvc. Then you can rebuild and test with your camera.
-
@Eric-Katzfey roger that. thank you for your support here Eric
-
@Eric-Katzfey will post results after run
-
@Eric-Katzfey Sorry for being such a pain, but it seems like this repo keeps moving.
I went to https://gitlab.com/voxl-public/modal-pipe-architecture/voxl-uvc-server
but got this
I keep searching around for the repo, but can not find it
-
@wilkinsaf Sorry, it was setup as private. I changed it to public. Can you try again?
-
@Eric-Katzfey Got it, thank you!
Will download and play with
-
@Eric-Katzfey Will it remain public?