# VOXL camera configuration

Source: https://forum.modalai.com/topic/2011/voxl-camera-configuration
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2023-03-29 04:55:34 UTC by Kris
Replies: 28 · Views: 8273

## Kris · 2023-03-29 04:55:34 UTC

Is it possible to have Hires + Stereo camera configuration only, for the Seeker? The configuration listed for the #13 option.

```
available camera configurations are as follows:

0  None
1  Tracking + Stereo(OV7251)
2  Tracking Only
3  Hires + Stereo(OV7251) + Tracking
4  Hires + Tracking
5  TOF + Tracking
6  Hires + TOF + Tracking
7  TOF + Stereo(OV7251) + Tracking
8  Hires Only
9  TOF Only
10 Stereo(OV7251) only
11 Tracking + Hires + Dual Stereo(OV7251) Pairs
12 Stereo(OV9782) only
13 Hires + Stereo(OV7251)
```
If so, is it possible to use one of the stereo cameras as a tracking camera? 
The reason why I am asking is because I would like to use the Seeker solely indoors and am having way too much trouble recording/capturing UVC frames to an SD card.
Would both the IMX412 and the IMX377 image sensors work for this type of setup. I understand that the IMX412 would not fit inside the VOXL, but could the MIPI cables be extended to mount the camera between the VOXL flight and the battery of the Seeker?

## Reply by Chad Sweet (ModalAI staff) · 2023-03-29 05:06:48 UTC

Please do not try to modify the Seeker, it is unlikely you will be successful. 

Have you tried to log your UVC camera on a linux computer? can you use that same method on VOXL?

## Reply by Kris · 2023-03-30 23:36:04 UTC (in reply to Chad Sweet)

@Chad-Sweet 
I apologize if I gave the impression that I am trying to modify the Seeker.
I am just wondering if it is possible to use Hires + TOF + Stereo, with one of the stereo cameras acting as a tracking camera. If it is possible I would gladly purchase one of ModalAi's Hires cameras. At the moment, I am using TOF + Tracking + Stereo and attempting to stream and record a UVC camera.

Yes, I have tried viewing my UVC camera on my linux PC with several programs like OBS, guvcview, and Gstreamer.
I am able to log my UVC video using gstreamer on my linux PC as well.
However, when I try to connect my UVC camera on VOXL1 for the voxl-uvc-server, I receive this error;
```
voxl:~$ voxl-uvc-server -d
Enabling debug messages
voxl-uvc-server starting
UVC initialized
Device found
uvc_open failed
UVC exited
voxl-uvc-server ending
```
I have also tried using Gstreamer on the VOXL but I am not able to get a connection. 
Here is the pipeline I used to stream the UVC camera on VOXL;
```
gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,format=YUY2 ! videoconvert ! omxh264enc speed-preset=ultrafast tune=zerolatency ! rtph264pay name=pay0 ! udpsink host=192.168.110.152 port=8554
```
I am not able to get a successful connection to the UVC camera on the VOXL. The led on the camera lets me know when there is a successful connection, and only the power led was on.
I have tried a simple capture and send video command but this did not work either. I have tried all my dev/video options (video0~video3) but none of them work.
```
gst-launch-1.0 v4l2src device=/dev/video0 ! decodebin ! omxh264enc ! rtph264pay ! udpsink port=8554
```

Is there a way to install v4l2-utils on the VOXL1?
Since the VOXL is not able to communicate/recognize the attached UVC h264 camera, than I think that VOXL might be missing the v4l2-utils package that my UVC camera needs.
Does the voxl-utils ipk contain the v4l2 parameters?

## Reply by Chad Sweet (ModalAI staff) · 2023-03-30 23:49:23 UTC

To change the image sensor on Seeker, you would have to disassemble the front end which would likely result in damage. It is really not recommended.

gstreamer should work similar to your USB setup on your Linux PC. Do you have a gstreamer command that is working on your PC?

if you type ```ls -la /dev/video*``` with your camera plugged in and unplugged, you should easily see which device it is enumerating to

What is the exact module number of the camera you are trying to install?

## Reply by Kris · 2023-03-31 00:01:07 UTC (in reply to Chad Sweet)

@Chad-Sweet 
The gstreamer commands work on my Linux PC.
I am able to stream and record video when my UVC 2.0 camera is plugged directly into my Linux PC.
I just have to change some of the pipeline, because x264enc is not recognized on the VOXL. I use x264enc on my PC and omxh264enc on the VOXL.
I am using the e-CAM83 UVC 2.0 camera.
There is detailed information about this camera in this [post.](https://forum.modalai.com/topic/1881/uvc_get_stream_ctrl_format_size-failed/30)

## Reply by Kris · 2023-03-31 00:06:55 UTC (in reply to Chad Sweet)

@Chad-Sweet 
If it’s possible to configure the Seeker with Hires + TOF + Stereo, where one stereo camera is acting as a tracking camera, can I send my Seeker back to ModalAi for this setup?
Would the Seeker still have the VIO and VOA capabilities with this kind of setup?

## Reply by Kris · 2023-03-31 00:13:52 UTC (in reply to Chad Sweet)

@Chad-Sweet 
My UVC camera is recognized on the VOXL but the voxl-uvc-server will not connect to it.
```
voxl:~$ show-video-device-info.sh
/dev/video2: e-CAM83_USB 2560:c184
/dev/video3: e-CAM83_USB 2560:c184
```

Here is the ```ls -la /dev/video*``` command output from my Linux PC.
```
crw-rw----+ 1 root video 81, 0  3月 31 09:20 /dev/video0
crw-rw----+ 1 root video 81, 1  3月 31 09:20 /dev/video1
crw-rw----+ 1 root video 81, 2  3月 31 09:20 /dev/video2
crw-rw----+ 1 root video 81, 3  3月 31 09:20 /dev/video3

```

## Reply by Chad Sweet (ModalAI staff) · 2023-03-31 00:39:27 UTC

voxl-uvc-server only supports a few data types. You may need to modify the code to support the format of the e-CAM83

If you have a gstreamer command that works on your linux box, it should work on VOXL as well though.

## Reply by Kris · 2023-03-31 01:00:47 UTC (in reply to Chad Sweet)

@Chad-Sweet 
Thank you so much for looking into this for me.

Can I ask for some assistance with modifying the voxl-uvc-server?

Do I modify the voxl-uvc-server  C file, then make it into an ipk and push it into the VOXL?

## Reply by Chad Sweet (ModalAI staff) · 2023-03-31 01:06:59 UTC

The instructions are in the readme here: https://gitlab.com/voxl-public/voxl-sdk/services/voxl-uvc-server

## Reply by Chad Sweet (ModalAI staff) · 2023-03-31 01:07:27 UTC (in reply to Chad Sweet)

@Chad-Sweet But yes, you modify the code, build it, and push the IPK to VOXL

## Reply by Kris · 2023-03-31 01:09:31 UTC (in reply to Chad Sweet)

@Chad-Sweet 
Is the Hires + TOF + Stereo (one stereo configured as the tracking camera) configuration possible?
In case the e-CAM83 will not work with the Seeker.

## Reply by Kris · 2023-03-31 01:21:16 UTC (in reply to Chad Sweet)

@Chad-Sweet 
Just to confirm, 
If I modify the voxl-uvc-server/src/main.c file, to allow H264 format, would this work?
Or does the modification need to happen somewhere else in the main.c?
I’m just not exactly sure what or where I need to modify the voxl-uvc-server to make my UVC camera work.

## Reply by Eric Katzfey (ModalAI staff) · 2023-03-31 14:59:19 UTC (in reply to Kris)

@Kris H264 is not supported in voxl-uvc-server. See https://gitlab.com/voxl-public/voxl-sdk/services/voxl-uvc-server/-/blob/dev/src/main.c#L64. You may be able to add support for it but there are some tricky aspects to H264 streaming that you would need to be aware of before attempting it. Seems like you should start with the video3 interface since it supports 640x480 YUYV

## Reply by Kris · 2023-04-01 03:29:47 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Ok, thank you.
I will start with attempting /dev/video3 first.

## Reply by Kris · 2023-04-04 01:21:17 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
It seems as if VOXL1 is not able to connect with my UVC camera.
Output when UVC camera is connected to the Seeker;
```
voxl:~$ gst-device-monitor-1.0 Video/Source
Probing devices...

(gst-device-monitor-1.0:4152): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4152): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4152): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4152): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4152): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed
No devices found!
voxl:~$ gst-device-monitor-1.0             
Probing devices...

(gst-device-monitor-1.0:4157): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4157): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4157): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4157): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

(gst-device-monitor-1.0:4157): GStreamer-CRITICAL **: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed

Device found:

	name  : msm_fd
	class : Video/Sink
	caps  : video/x-raw, format=(string)GRAY8, width=(int)[ 320, 854 ], height=(int)[ 240, 480 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ bt601, smpte240m, bt709, 2:4:5:2, 2:4:5:3, 1:4:7:1, 2:4:7:1, 2:4:12:8, 2:6:5:7, 2:0:0:0 };
	properties:
		device.path = /dev/video1
		udev-probed = false
		device.api = v4l2
		v4l2.device.driver = msm_fd
		v4l2.device.card = msm_fd
		v4l2.device.bus_info = ""
		v4l2.device.version = 201287 (0x00031247)
		v4l2.device.capabilities = 69206018 (0x04200002)
		v4l2.device.device_caps = 2097152 (0x00200000)
```

Output when my UVC camera is connected to my Linux PC;
```
seeker3@seeker3-VirtualBox:~$ gst-device-monitor-1.0 Video/Source
Probing devices...

Device found:

	name  : e-CAM83_USB
	class : Video/Source
	caps  : video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 };
	        video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
	properties:
		udev-probed = true
		device.bus_path = pci-0000:00:0c.0-usb-0:2:1.0
		sysfs.path = /sys/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0/video4linux/video0
		device.bus = usb
		device.subsystem = video4linux
		device.vendor.id = 2560
		device.vendor.name = e-ConSystems
		device.product.id = c184
		device.product.name = e-CAM83_USB
		device.serial = e-ConSystems_e-CAM83_USB_00.00.01
		device.capabilities = :capture:
		device.api = v4l2
		device.path = /dev/video0
		v4l2.device.driver = uvcvideo
		v4l2.device.card = e-CAM83_USB
		v4l2.device.bus_info = usb-0000:00:0c.0-2
		v4l2.device.version = 328933 (0x000504e5)
		v4l2.device.capabilities = 2225078273 (0x84a00001)
		v4l2.device.device_caps = 69206017 (0x04200001)
	gst-launch-1.0 v4l2src ! ...

Device found:

	name  : e-CAM83_USB
	class : Video/Source
	caps  : video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)15/1;
	        image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
	properties:
		udev-probed = true
		device.bus_path = pci-0000:00:0c.0-usb-0:2:1.0
		sysfs.path = /sys/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0/video4linux/video2
		device.bus = usb
		device.subsystem = video4linux
		device.vendor.id = 2560
		device.vendor.name = e-ConSystems
		device.product.id = c184
		device.product.name = e-CAM83_USB
		device.serial = e-ConSystems_e-CAM83_USB_00.00.01
		device.capabilities = :capture:
		device.api = v4l2
		device.path = /dev/video2
		v4l2.device.driver = uvcvideo
		v4l2.device.card = e-CAM83_USB
		v4l2.device.bus_info = usb-0000:00:0c.0-2
		v4l2.device.version = 328933 (0x000504e5)
		v4l2.device.capabilities = 2225078273 (0x84a00001)
		v4l2.device.device_caps = 69206017 (0x04200001)
	gst-launch-1.0 v4l2src device=/dev/video2 ! ...

seeker3@seeker3-VirtualBox:~$ gst-device-monitor-1.0
Probing devices...

Device found:

	name  : Monitor of Built-in Audio Analog Stereo
	class : Audio/Source
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	properties:
		device.description = "Monitor\ of\ Built-in\ Audio\ Analog\ Stereo"
		device.class = monitor
		alsa.card = 0
		alsa.card_name = "Intel\ 82801AA-ICH"
		alsa.long_card_name = "Intel\ 82801AA-ICH\ with\ AD1980\ at\ irq\ 21"
		alsa.driver_name = snd_intel8x0
		device.bus_path = pci-0000:00:05.0
		sysfs.path = /devices/pci0000:00/0000:00:05.0/sound/card0
		device.bus = pci
		device.vendor.id = 8086
		device.vendor.name = "Intel\ Corporation"
		device.product.id = 2415
		device.product.name = "82801AA\ AC\'97\ Audio\ Controller"
		device.form_factor = internal
		device.string = 0
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-pci
	gst-launch-1.0 pulsesrc device=alsa_output.pci-0000_00_05.0.analog-stereo.monitor ! ...

Device found:

	name  : Built-in Audio Analog Stereo
	class : Audio/Source
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	properties:
		alsa.resolution_bits = 16
		device.api = alsa
		device.class = sound
		alsa.class = generic
		alsa.subclass = generic-mix
		alsa.name = "Intel\ 82801AA-ICH"
		alsa.id = "Intel\ ICH"
		alsa.subdevice = 0
		alsa.subdevice_name = "subdevice\ \#0"
		alsa.device = 0
		alsa.card = 0
		alsa.card_name = "Intel\ 82801AA-ICH"
		alsa.long_card_name = "Intel\ 82801AA-ICH\ with\ AD1980\ at\ irq\ 21"
		alsa.driver_name = snd_intel8x0
		device.bus_path = pci-0000:00:05.0
		sysfs.path = /devices/pci0000:00/0000:00:05.0/sound/card0
		device.bus = pci
		device.vendor.id = 8086
		device.vendor.name = "Intel\ Corporation"
		device.product.id = 2415
		device.product.name = "82801AA\ AC\'97\ Audio\ Controller"
		device.form_factor = internal
		device.string = front:0
		device.buffering.buffer_size = 17632
		device.buffering.fragment_size = 4408
		device.access_mode = mmap
		device.profile.name = analog-stereo
		device.profile.description = "Analog\ Stereo"
		device.description = "Built-in\ Audio\ Analog\ Stereo"
		alsa.mixer_name = "Analog\ Devices\ AD1980"
		alsa.components = AC97a:41445370
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-pci
	gst-launch-1.0 pulsesrc device=alsa_input.pci-0000_00_05.0.analog-stereo ! ...

Device found:

	name  : Built-in Audio Analog Stereo
	class : Audio/Sink
	caps  : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	        audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
	properties:
		alsa.resolution_bits = 16
		device.api = alsa
		device.class = sound
		alsa.class = generic
		alsa.subclass = generic-mix
		alsa.name = "Intel\ 82801AA-ICH"
		alsa.id = "Intel\ ICH"
		alsa.subdevice = 0
		alsa.subdevice_name = "subdevice\ \#0"
		alsa.device = 0
		alsa.card = 0
		alsa.card_name = "Intel\ 82801AA-ICH"
		alsa.long_card_name = "Intel\ 82801AA-ICH\ with\ AD1980\ at\ irq\ 21"
		alsa.driver_name = snd_intel8x0
		device.bus_path = pci-0000:00:05.0
		sysfs.path = /devices/pci0000:00/0000:00:05.0/sound/card0
		device.bus = pci
		device.vendor.id = 8086
		device.vendor.name = "Intel\ Corporation"
		device.product.id = 2415
		device.product.name = "82801AA\ AC\'97\ Audio\ Controller"
		device.form_factor = internal
		device.string = front:0
		device.buffering.buffer_size = 19188
		device.buffering.fragment_size = 6396
		device.access_mode = mmap
		device.profile.name = analog-stereo
		device.profile.description = "Analog\ Stereo"
		device.description = "Built-in\ Audio\ Analog\ Stereo"
		alsa.mixer_name = "Analog\ Devices\ AD1980"
		alsa.components = AC97a:41445370
		module-udev-detect.discovered = 1
		device.icon_name = audio-card-pci
	gst-launch-1.0 ... ! pulsesink device=alsa_output.pci-0000_00_05.0.analog-stereo

Device found:

	name  : e-CAM83_USB
	class : Video/Source
	caps  : video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction){ 30/1, 15/1 };
	        video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
	properties:
		udev-probed = true
		device.bus_path = pci-0000:00:0c.0-usb-0:2:1.0
		sysfs.path = /sys/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0/video4linux/video0
		device.bus = usb
		device.subsystem = video4linux
		device.vendor.id = 2560
		device.vendor.name = e-ConSystems
		device.product.id = c184
		device.product.name = e-CAM83_USB
		device.serial = e-ConSystems_e-CAM83_USB_00.00.01
		device.capabilities = :capture:
		device.api = v4l2
		device.path = /dev/video0
		v4l2.device.driver = uvcvideo
		v4l2.device.card = e-CAM83_USB
		v4l2.device.bus_info = usb-0000:00:0c.0-2
		v4l2.device.version = 328933 (0x000504e5)
		v4l2.device.capabilities = 2225078273 (0x84a00001)
		v4l2.device.device_caps = 69206017 (0x04200001)
	gst-launch-1.0 v4l2src ! ...

Device found:

	name  : e-CAM83_USB
	class : Video/Source
	caps  : video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)15/1;
	        image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
	properties:
		udev-probed = true
		device.bus_path = pci-0000:00:0c.0-usb-0:2:1.0
		sysfs.path = /sys/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0/video4linux/video2
		device.bus = usb
		device.subsystem = video4linux
		device.vendor.id = 2560
		device.vendor.name = e-ConSystems
		device.product.id = c184
		device.product.name = e-CAM83_USB
		device.serial = e-ConSystems_e-CAM83_USB_00.00.01
		device.capabilities = :capture:
		device.api = v4l2
		device.path = /dev/video2
		v4l2.device.driver = uvcvideo
		v4l2.device.card = e-CAM83_USB
		v4l2.device.bus_info = usb-0000:00:0c.0-2
		v4l2.device.version = 328933 (0x000504e5)
		v4l2.device.capabilities = 2225078273 (0x84a00001)
		v4l2.device.device_caps = 69206017 (0x04200001)
	gst-launch-1.0 v4l2src device=/dev/video2 ! ...
```

A simple video test will not work either.
```
voxl:~$ gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0: Resource not found.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/gst/autodetect/gstautodetect.c(347): gst_auto_detect_find_best (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0:
Failed to find a usable video sink
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:17.998587815
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
```

Are there any plugins that I could be missing?

## Reply by Kris · 2023-04-04 01:39:58 UTC (in reply to Kris)

Keeps failing to find a usable video sink.
```
voxl:~$ show-video-device-info.sh
/dev/video2: e-CAM83_USB 2560:c184
/dev/video3: e-CAM83_USB 2560:c184
voxl:~$ gst-launch-1.0 v4l2src device=/dev/video3 ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0: Resource not found.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/gst/autodetect/gstautodetect.c(347): gst_auto_detect_find_best (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0:
Failed to find a usable video sink
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not open device '/dev/video3' for reading and writing.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/sys/v4l2/v4l2_calls.c(625): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
system error: Device or resource busy
Setting pipeline to NULL ...
Freeing pipeline ...
voxl:~$ gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0: Resource not found.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/gst/autodetect/gstautodetect.c(347): gst_auto_detect_find_best (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0:
Failed to find a usable video sink
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not open device '/dev/video2' for reading and writing.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/sys/v4l2/v4l2_calls.c(625): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
system error: Device or resource busy
Setting pipeline to NULL ...
Freeing pipeline ...
voxl:~$ 
```

Output when debug command is used.
```
voxl:~$ GST_DEBUG=3 gst-launch-1.0 v4l2src device=/dev/video3 ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
0:00:00.229741613  4689    0xdf500 WARN              autodetect gstautodetect.c:347:gst_auto_detect_find_best:<autovideosink0> warning: Failed to find a usable video sink
0:00:00.277135238  4689    0xdf500 WARN                    v4l2 v4l2_calls.c:625:gst_v4l2_open:<v4l2src0> error: Could not open device '/dev/video3' for reading and writing.
0:00:00.277213207  4689    0xdf500 WARN                    v4l2 v4l2_calls.c:625:gst_v4l2_open:<v4l2src0> error: system error: Device or resource busy
ERROR: Pipeline doesn't want to pause.
WARNING: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0: Resource not found.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/gst/autodetect/gstautodetect.c(347): gst_auto_detect_find_best (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0:
Failed to find a usable video sink
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not open device '/dev/video3' for reading and writing.
Additional debug info:
/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-plugins-good/1.10.4-r0/gst-plugins-good-1.10.4/sys/v4l2/v4l2_calls.c(625): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
system error: Device or resource busy
Setting pipeline to NULL ...
Freeing pipeline ...
```

## Reply by tom (ModalAI staff) · 2023-04-04 17:26:21 UTC

@Kris You can't use autovideosink on VOXL because it doesn't have a display

## Reply by Eric Katzfey (ModalAI staff) · 2023-04-04 22:52:27 UTC (in reply to Kris)

@Kris Maybe try fakesink instead?

## Reply by Kris · 2023-04-04 23:07:20 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
I have tried both fakesink and playbin.
Neither of them work either.
Has anyone gotten gstreamer to successfully work on VOXL1?

## Reply by Kris · 2023-04-04 23:27:12 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
I also have another UVC camera, but it only outputs MJPG (compressed) and YUY2 (uncompressed 640x480 30fps) formats.

It works for streaming, but I am trying to record the video to the Seeker’s SD card.
Is there a way to do this with Gstreamer or a similar program?

## Reply by Kris · 2023-04-04 23:31:22 UTC (in reply to tom)

@tom 
Could this be the reason why no devices are found when I use ```gst-device-monitor-1.0 Video/Source``` on the VOXL1?

## Reply by Kris · 2023-04-04 23:52:53 UTC

I see that the VOXL1 has the ```gst-plugins-good```.
Is it possible to also add the ```gst-plugins-bad``` and ```gst-plugins-ugly```?

## Reply by Eric Katzfey (ModalAI staff) · 2023-04-04 23:56:04 UTC (in reply to Kris)

@Kris We use GStreamer in our voxl-streamer application. It does work on VOXL1.

## Reply by Kris · 2023-04-04 23:56:48 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Ok, thank you for the confirmation.

## Reply by Kris · 2023-04-05 00:14:28 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
If possible, could you please provide me with a VOXL1 working pipeline (streaming or recording) using any UVC camera of your choice?

## Reply by Eric Katzfey (ModalAI staff) · 2023-04-05 00:24:50 UTC (in reply to Kris)

@Kris That's not how it works on VOXL1. The voxl-uvc-server application places frames into an MPA pipe and the voxl-streamer application (based on gstreamer) reads those frames and processes them for output using RTSP. However, I do believe that I did try command line gst-launch-1.0 style pipelines with UVC cameras in the past and they worked. I don't have an example of one though. You may want to start with one of our supported UVC cameras first and then try to get your particular UVC camera working. I always start with the Logitech C270. We list the specific cameras that we support because each one caused us some issues and required code changes to make it work. We even had to fork the libuvc library in order to make changes to that to get some of the cameras working properly.

## Reply by Kris · 2023-04-05 00:37:21 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Ok, I understand.
Thank you for all your help and support with this issue.
I will try one of your tested & supported UVC cameras.

## Reply by Kris · 2023-04-11 23:14:22 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
I bought the Logitech C270 and tried testing it with some Gstreamer commands.
So far I have been able to use it on my Linux PC with these commands.

Connected to PC and viewing video;
```
gst-launch-1.0 -v v4l2src ! video/x-raw,format=YUY2 ! videoconvert ! autovideosink
```

Connected to PC and recording to PC;
```
gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=640,height=480,framerate=30/1 ! jpegdec ! x264enc ! qtmux ! filesink location=C270.mp4 -e
```

However, when I connect the C270 to the Seeker I cannot get any of these to work.
I have tried different video devices 0-3 and I have also substituted the ```autovideosink``` with ```fakesink``` but these changes are still not working.

Could you please show me a Gstreamer example for this Logitech C270 camera that works on the Seeker?
I would like to either stream, record, or stream+record (possibly using tee) the video using gst-launch-1.0.
Thank you
