voxl-streamer client repetitive connect/disconnect
-
There is a known issue with UVC streaming. I'm not sure when it will be fixed. We'll try to investigate and get back to you in a few days.
-
Right on. I will try some troubleshooting from my end as well. Will let you know if I find anything interesting.
Thanks!
-
@wilkinsaf UVC camera support was developed against QGroundControl v3.5.6 and using a Logitech C270 camera. Newer versions of QGroundControl do not wait long enough for the connection to come up and try to restart. Also, cameras that do not support a raw format won't work. I would try with QGoundControl v3.5.6 first and see if your camera works with that.
-
An update to UVC camera support has been started. It will increase number of supported cameras by allowing MJPEG and will increase number of supported viewers including latest QGroundControl versions. Target availability is mid-December.
-
@Eric-Katzfey Thank you for the update Eric!
Also, is there a format/guide on how to modify the camera configuration file? For example if a camera was giving off a different format, framerate, size, etc...
I was trying to find a guide on how to modify that file, but could not.
I figured it would be helpful for developers.
-
@wilkinsaf The configuration file for voxl-streamer is documented here: https://docs.modalai.com/voxl-streamer/#configuration-file-format
-
@wilkinsaf The configuration for voxl-camera-server is discussed here: https://docs.modalai.com/voxl-camera-server/#configuration
-
@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