How to display video captured by OS08A20 camera via HDMI with TorizonOS

Diagnosing the Memory Allocation Error

The error “Failed to allocate required memory” and “Buffer pool activation failed” indicates a memory allocation issue with the V4L2 source element(1)(2). This is a common problem when working with multiple cameras or insufficient memory buffers.

1. Verify Camera Device Capabilities

First, check if /dev/video0 is actually your OS08A20 camera and what formats it supports(3)(4):

# v4l2-ctl --device=/dev/video0 -D
# v4l2-ctl --device=/dev/video0 --list-formats-ext

(3)(4)

Look for devices with “Video Capture” capability in the output(4).

2. Memory Buffer Configuration

The memory allocation error suggests the V4L2 buffer pool cannot be activated. Try reducing the memory requirements by specifying smaller buffer sizes(1):

# gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=10 ! videoconvert ! waylandsink sync=false

(1)

3. Alternative Pipeline Approaches

Try these progressive troubleshooting steps:

Step 1: Test with explicit format constraints(3)(4):

# gst-launch-1.0 v4l2src device='/dev/video0' ! "video/x-raw, format=YUY2, framerate=5/1, width=640, height=480" ! waylandsink

(3)(4)

Step 2: If that fails, try without videoconvert(3):

# gst-launch-1.0 v4l2src device=/dev/video0 ! waylandsink sync=false

(3)

Step 3: Use a simpler sink for testing(5):

# gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink

(5)

4. Container Memory and Device Access

The issue might be related to container memory limits or device access. Try running the container with additional memory and device permissions(1)(2):

# docker run --rm -it -v /tmp:/tmp -v /var/run/dbus:/var/run/dbus -v /dev:/dev -v /sys:/sys \
    --device /dev/video0 \
    --device-cgroup-rule='c 226:* rmw' --device-cgroup-rule='c 199:* rmw' \
    --privileged --memory=1g --memory-swap=2g \
    torizon/gst_example

(1)(2)

5. Check for USB Bandwidth Issues

Similar to the medical device example, you might be experiencing USB bandwidth limitations(1). The documentation shows this error pattern:

[10768.346378] usb 1-1.3: Not enough bandwidth for new device state.
[10768.346391] usb 1-1.3: Not enough bandwidth for altsetting 11

(1)

Check your kernel logs for similar messages:

# dmesg | grep -i bandwidth
# dmesg | grep -i usb

6. Debugging with GST_DEBUG

Enable GStreamer debugging to get more detailed information(3):

# export GST_DEBUG=2
# gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! waylandsink sync=false

(3)

7. Verify Camera Driver and Device Tree

Since the test signal works but the camera doesn’t, ensure your OS08A20 camera driver is properly loaded and the device tree overlay is correctly applied(4). The camera module needs proper hardware setup and driver support(4).

The successful videotestsrc pipeline confirms that your Weston display and container setup are working correctly - the issue is specifically with camera access and memory allocation.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.