Hi all, I’m stuck trying to get an Arducam B0459 (USB3 12MP) working on Ubuntu 22.04. The camera shows up in lsusb, but I can’t capture any video from it. qv4l2 and the ArducamUVCPythonDemo both work fine with my laptop’s built-in webcam (/dev/video0), but not with the Arducam (/dev/video2). Do I need a driver for this camera?
Before we dig in, could you share a few details? Which exact product/model do you have, what’s your OS version, and how are your video devices currently mapped? Also list anything you’ve already tried so we don’t repeat it.
It’s a B0459C with the IMX477P sensor. I’m on Ubuntu 22.04.4 LTS. The video devices look like this:
- /dev/video0: laptop built-in webcam
- /dev/video1: V4L metadata for video0
- /dev/video2: Arducam B0459
- /dev/video3: V4L metadata for video2
I haven’t tried much beyond running the demo, honestly.
Here’s the lsusb output:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 04f2:b52c Chicony Electronics Co., Ltd Integrated Camera
Bus 001 Device 002: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
Bus 001 Device 010: ID 04b4:0459 Cypress Semiconductor Corp. Arducam B0459 (USB3 12MP)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
And v4l2-ctl --list-devices gives:
Synaptics RMI4 Touch Sensor (rmi4:rmi4-00.fn54):
/dev/v4l-touch0
Arducam B0459 (USB3 12MP) (usb-0000:00:14.0-4):
/dev/video2
/dev/video3
/media1
Integrated Camera: Integrated C (usb-0000:00:14.0-8):
/dev/video0
/dev/video1
/media0
When I run python arducam_demo.py -i 2, this is what I get:
[ WARN:[email protected]] global cap_v4l.cpp:1136 tryIoctl VIDEOIO(V4L2:/dev/video2): select() timeout.
Unable to read video frame
reopen 1 times
Thanks, that gives us a good picture. Your camera is definitely detected — lsusb shows it as Arducam B0459 (USB3 12MP) with Cypress ID 04b4:0459, and it’s enumerated as /dev/video2 plus /dev/video3. But capture fails with a select() timeout and ‘Unable to read video frame’, which means the device node is there but no frame data is actually coming through. From what we’ve seen with this model, this points to the camera needing a firmware update/re-flash to fix the video capture failure.
I’ve sent you the firmware package and the guide video link through private message — please check your inbox. Follow the flashing steps in the video. After that, run the demo with:
python arducam_demo.py -i 1
And when you open qv4l2, pick video1 instead of video0.
One more note so it’s clear: re-flashing the firmware is the main fix. But you also need to select the right device afterwards — use demo index -i 1 and choose video1 in qv4l2, not video0.
Thanks for sending that over. One issue — I’m on Linux and the guide looks like it’s for Windows. Is there a Linux version of the firmware burning procedure?
Good question. Unfortunately there’s no firmware tool available for Linux. The flashing utility only runs on Windows OS.
So to wrap this up: the fix requires flashing the firmware using the Windows-only tool. You’ll need to borrow or use a computer with Windows to run the firmware burning tool, then the camera should be back to normal. There’s no Linux version of the tool available, so a Windows machine is required for that step.