Arducam USB3 108MP camera not appearing as /dev/video* on Fedora Linux despite lsusb detection

Hey everyone, I’m having trouble getting my Arducam USB3 108MP camera working on Fedora Linux. The camera shows up in lsusb but I can’t get it recognized as a video/capture device at all — no /dev/video* entry and v4l2-ctl doesn’t see it either. I’ve already tried everything listed on the Arducam webpage and wiki but no luck. Has anyone run into this before?

Let’s dig into this. The fact that it appears in lsusb means the USB enumeration is happening, but it sounds like the proper kernel driver isn’t binding to expose the /dev/video* interface. Can you run the following and post the output?

  1. ls /dev/video* — run it before and after plugging the camera in
  2. v4l2-ctl --list-devices — same, before and after
  3. dmesg — capture the tail end right after you plug the camera in

Also, what’s the USB ID you’re seeing in lsusb? That’ll help identify the controller it’s using.

Thanks for the quick reply. Here’s what I’m seeing:

lsusb shows: Bus 004 Device 006: ID 04b4:03f2 Cypress Semiconductor Corp. FX3

ls /dev/video* only shows my laptop’s built-in webcam (video0 and video1). Plugging/unplugging the Arducam makes no difference — no new devices appear.

Same story with v4l2-ctl --list-devices — I only see the built-in camera, nothing changes when I connect or disconnect the 108MP.

Here’s the dmesg output from a few unplug/replug cycles. It clearly detects something on the USB bus but nothing video-related ever shows up:

[265441.586902] usb 4-2: new SuperSpeed USB device number 3 using xhci_hcd
[265441.601222] usb 4-2: LPM exit latency is zeroed, disabling LPM.
[265441.601757] usb 4-2: New USB device found, idVendor=04b4, idProduct=03f2, bcdDevice= 0.00
[265441.601760] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265441.601761] usb 4-2: Product: FX3
[265441.601762] usb 4-2: Manufacturer: Arducam
[265474.781239] usb 4-2: USB disconnect, device number 3
[265482.003307] usb 4-2: new SuperSpeed USB device number 4 using xhci_hcd
[265482.015705] usb 4-2: LPM exit latency is zeroed, disabling LPM.
[265482.016245] usb 4-2: New USB device found, idVendor=04b4, idProduct=03f2, bcdDevice= 0.00
[265482.016258] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265482.016261] usb 4-2: Product: FX3
[265482.016263] usb 4-2: Manufacturer: Arducam
[265508.954332] usb 4-2: USB disconnect, device number 4
[265721.580627] usb 4-2: new SuperSpeed USB device number 5 using xhci_hcd
[265721.592044] usb 4-2: LPM exit latency is zeroed, disabling LPM.
[265721.592568] usb 4-2: New USB device found, idVendor=04b4, idProduct=03f2, bcdDevice= 0.00
[265721.592572] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265721.592574] usb 4-2: Product: FX3
[265721.592576] usb 4-2: Manufacturer: Arducam
[265756.888953] usb 4-2: USB disconnect, device number 5
[265764.035012] usb 4-2: new SuperSpeed USB device number 6 using xhci_hcd
[265764.047417] usb 4-2: LPM exit latency is zeroed, disabling LPM.
[265764.047954] usb 4-2: New USB device found, idVendor=04b4, idProduct=03f2, bcdDevice= 0.00
[265764.047957] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265764.047958] usb 4-2: Product: FX3
[265764.047960] usb 4-2: Manufacturer: Arducam

No driver binding at all, just the raw USB device detection and disconnect events.

One more thing — the board is Rev.D. Here are some photos of the camera module:

front

Alright, I can see the issue now. Here’s what’s happening:

Looking at your diagnostics:

  • ls /dev/video* and v4l2-ctl --list-devices show no new device when the camera is connected
  • dmesg confirms the USB device is detected correctly (idVendor=04b4, idProduct=03f2, Manufacturer: Arducam, Product: FX3) on SuperSpeed bus 4-2
  • But no V4L2 driver ever binds to it

And based on the photos you posted, what you have there is actually the 108MP Evaluation Kit (EVK), not the 108MP UVC 3.0 kit. These are two different products.

The UVC 3.0 kit runs firmware that presents the camera as a standard USB Video Class device — plug-and-play, shows right up as /dev/video*. The EVK, on the other hand, uses the Cypress FX3 controller in a non-UVC mode. That’s why lsusb reports it as “FX3” and not something like “Arducam USB Camera.” It won’t create a /dev/video* node because it’s simply not speaking the UVC protocol. A standard V4L2 driver has nothing to bind to here.

So the standard UVC instructions and wiki pages won’t apply to your kit — that’s why nothing you tried worked. You’ll need to follow the EVK-specific setup instead.

The EVK requires custom host software to communicate with the camera over the FX3’s proprietary interface. Head over to the ArduCam EVK Demo repository:

Clone that and follow the build/run instructions there. The SDK includes the userspace library and demo applications that talk to the EVK firmware running on the FX3. Once you have that set up, you should be able to capture from the 108MP sensor.

TL;DR — the dmesg output looks exactly right for an EVK unit. No driver is missing, no kernel config is wrong. You just need the EVK software stack instead of expecting a standard UVC webcam.