Arducam IMX678 USB camera: excessive noise, VLC only shows snapshots on Pi 5

Hey everyone, I’m having a really frustrating noise problem with my Arducam IMX678 USB module. The image quality is just not usable — excessive chroma noise everywhere. VLC can’t even display a live stream, it only works with snapshots. And v4l2 barely gives me any controls to adjust anything related to noise reduction.

I’m running this on a Raspberry Pi 5 with Bookworm. The camera is the Arducam IMX678 USB UVC module.

Firmware details from the board:

  • Firmware: B0496_B0497_3Lane_DPC_2024.03.28_A.bin
  • DKU: DKU_B0497_UC_A48_RevC_UVC3.0_2024-05-09_26.img

Here are some screenshots showing what I’m dealing with:

VLC noise:
IMX678_VLC_noise

qv4l2 view:
IMX678_noise_qv4l2

And here’s some weird green/pink color artifacts:
IMX678_VLC_green_pink

The chroma noise is so bad I can’t even use this for photography. Any ideas what’s going on?

Thanks for the detailed report and screenshots — that helps a lot. Looking at your firmware version, it looks like you’re running an older build, and that’s very likely contributing to the noise issues you’re seeing.

There are a couple of things going on here:

  1. Outdated firmware — the version you’re on (B0496_B0497 from March 2024) is known to have suboptimal noise handling. A newer firmware should improve things.

  2. Software on Linux — VLC has known issues with UVC stream handling on Raspberry Pi, and plain v4l2 doesn’t expose many of the camera’s controls. For better control over the sensor on Pi, I’d recommend using qv4l2 instead.

Here’s what I’d like you to try:

  1. Update the camera firmware — you’ll need to do this on a Windows machine. I’ve sent you the firmware update package and guidance via private message. Please check your messages.

  2. Use qv4l2 on your Pi to open and control the camera — the setup instructions are here: Start USB3 UVC Camera on Linux - Arducam Wiki

  3. After the firmware update, enable Ultra Low Light mode — this improves light sensitivity in low illumination and can help with noise. Instructions: Ultra Low Light Mode - Arducam Wiki

Give those a shot and let me know how it goes.

Okay, I followed the firmware update instructions and got the newer firmware flashed. Unfortunately, the chroma noise is basically unchanged.

I’ve been trying to use this for photography and even with max denoise settings in my photo processing software, the chroma noise won’t clean up. And if I push denoise too high, the image just turns to mush — lose all the detail.

I’ve seen example photos online from the IMX678 sensor and they look nothing like what I’m getting. Mine are way noisier.

One question: is there a MIPI adapter available for this module? I’m wondering if moving away from USB and going to the MIPI/CSI interface on the Pi would actually improve the image quality. I’ve used other cameras on MIPI (IMX519 and IMX708) and they look great. Could the USB path be the problem?

Before we go down the MIPI route, I’d like to verify something first. Can you share comparison screenshots — one with Ultra Low Light mode turned ON and one with it turned OFF? I want to see if the mode is actually taking effect and what difference it’s making (if any).

This will help narrow down whether the issue is related to the mode switching or if it’s something more fundamental with the sensor configuration. Just two side-by-side caps under the same lighting conditions would be perfect.

So I’ve been doing more research and it seems like chroma noise might just be a characteristic of the IMX678 sensor in general — I’ve seen reports from astrophotography users across different manufacturers mentioning the same thing. So it might not be specific to the Arducam module.

I’m planning to try using Siril (the astrophotography stacking/processing software) to clean up the noise in post. Also considering experimenting with the Hailo AI low-light enhancement model, though I haven’t tried that yet.

But here’s what’s really bugging me: I have an IMX519 and an IMX708, both connected via MIPI on the same Raspberry Pi 5, and they produce really clean, great-looking images. The IMX678 is USB and looks terrible in comparison. Is the MIPI connection the reason for the quality gap? Like, is the USB interface somehow degrading the image data before it reaches the Pi?

Good question — but no, the MIPI interface itself is not the reason for the image quality difference. MIPI is just a high-speed data pipe; it doesn’t process or enhance image quality in any way. Think of it like a different type of cable — it moves bits, it doesn’t improve them.

The real difference comes down to the Image Signal Processor (ISP) on the Raspberry Pi and the tuning files that go with it. Here’s what’s happening:

The IMX519 and IMX708 have custom ISP tuning files (JSON configuration files) that were developed specifically for those sensors by Raspberry Pi Foundation and Arducam engineers. These tuning files tell the Pi’s hardware ISP exactly how to handle denoising, demosaicing, color correction, white balance, and a whole bunch of other processing parameters for those specific sensors. That’s why they look great — the ISP is optimized for them.

The IMX678 UVC camera module doesn’t have equivalent optimized ISP tuning files. It’s using a more generic UVC pipeline that doesn’t benefit from the same level of sensor-specific tuning. That’s where the quality gap comes from, not from USB vs MIPI.

The good news: we’re planning to optimize the ISP tuning file for the IMX678 UVC camera module to get better performance out of it. I don’t have a timeline yet, but I’ll update this thread when there’s progress on that front.

That makes a lot of sense — thanks for the detailed explanation about the ISP tuning files. I hadn’t realized how much heavy lifting those JSON tuning profiles do behind the scenes.

I’ll wait for the optimized ISP file for the IMX678 then. In the meantime I’ll play around with Siril for noise cleanup and maybe try the Hailo route if I get a chance. Please do post back here when there’s an update on that tuning file. Really hoping it brings the IMX678 USB module up to the level of the MIPI cameras.