Arducam B0499 video feed fails in OpenCV with VIDIOC_REQBUFS errno 19 on Ubuntu 24

Hey everyone, I’m having a lot of trouble getting my Arducam USB3 UVC Camera (model B0499) working on Ubuntu 24. Here’s what’s going on:

  • I can’t open the video feed at all with OpenCV. Every time I try, I get a VIDIOC_REQBUFS failure with errno=19 (“No such device”).
  • It gets stuck in a loop trying to reopen the camera — keeps failing over and over.
  • The only available format seems to be YUYV, and the memory usage on that stream is way too high.
  • I can’t change the resolution at all.
  • I also tried installing the Python SDK so I could use from arducam_usb3 import Camera, but I couldn’t get that to install successfully either.

I’ve tried all the tutorials I could find, basic OpenCV VideoCapture, and messed around with different formats, but nothing works. The device shows up as /dev/video0 but it’s basically unusable. Anyone seen this before?

Thanks for the detailed report. Let’s start with a controlled test to rule out any configuration issues in your own code. Can you run the official Arducam OpenCV demo script from our docs?

Here’s the guide: Start USB3 UVC Camera on Linux - Arducam Wiki

Grab the demo, run it, and if it still fails — please paste the full error log here. That’ll help narrow down whether this is a code-level issue or something deeper with the driver/hardware.

Alright, I ran the official demo script at /home/sensingfeeling/bridgeguard/ArducamUVCPythonDemo/arducam_demo.py and it fails the same way. Here’s everything:

Environment:

  • Platform: Ubuntu 24
  • Device: /dev/video0 (V4L2)
  • Product: Arducam B0499

Relevant code path:

  • arducam_demo.py, line 47: ret, frame = cap.read()
  • camera.py, line 37: return self.cap.read()

Full log:

[ WARN:[email protected]] global cap_v4l.cpp:804 requestBuffers VIDEOIO(V4L2:/dev/video0): failed VIDIOC_REQBUFS: errno=19 (No such device)
Unable to read video frame
reopen 1 times
[ WARN:[email protected]] global cap_v4l.cpp:804 requestBuffers VIDEOIO(V4L2:/dev/video0): failed VIDIOC_REQBUFS: errno=19 (No such device)
Unable to read video frame
reopen 1 times
[ WARN:[email protected]] global cap_v4l.cpp:804 requestBuffers VIDEOIO(V4L2:/dev/video0): failed VIDIOC_REQBUFS: errno=19 (No such device)
^CTraceback (most recent call last):
  File "/home/sensingfeeling/bridgeguard/ArducamUVCPythonDemo/arducam_demo.py", line 47, in <module>
    ret, frame = cap.read()
  File "/home/sensingfeeling/bridgeguard/ArducamUVCPythonDemo/camera.py", line 37, in read
    return self.cap.read()

Same errno=19 across multiple reopen attempts. And just to recap what I’ve already tried before this:

  • Went through every tutorial I could find
  • Basic cv2.VideoCapture(0) — same error
  • Attempted the Arducam SDK install, wouldn’t go through
  • Tried forcing YUYV mode in OpenCV but memory blows up and I can’t change resolution

Thanks for running the demo — really helpful. So here’s what’s happening:

The VIDIOC_REQBUFS: errno=19 (No such device) error is triggered deep in the V4L2 stack. It means the /dev/video0 device node exists (so the kernel sees something), but when OpenCV (via the uvcvideo driver) asks the kernel to allocate DMA buffers for the video stream, the ioctl call fails with ENODEV. The hardware isn’t responding correctly at the buffer allocation stage, which is why cap.read() can never succeed.

The fact that it repeats identically across multiple reopen attempts confirms this isn’t a transient glitch. The likely culprits are:

  • USB bandwidth or resource conflicts (especially if this is a USB3 camera on a shared controller)
  • The uvcvideo driver not fully initializing the camera firmware
  • USB link training issues or insufficient power delivery on the port

Since we’re dealing with something at the kernel/driver level that standard troubleshooting isn’t catching, we’ll need to take a closer look at your system live. I’ve sent you the remote support setup details via private message — please check your inbox and we can get a session scheduled.