Hi, I’m having trouble with a USB Camera Shield (model B0317) running an IMX477 sensor on a PC. The debayering of the raw image isn’t correct — the raw output seems to be shifted by one pixel every other pixel. If I zoom into a checker pattern image, the edges come out serrated instead of clean. I’m using the ArduCAM USB GUI tool and I want to know how to update the config file with it. Is there an updated config file I can use? I also noticed the device works intermittently and feels unstable overall.
Hi, Dion here from the ArduCam Support Team. Happy to dig into this with you. A few things will help me narrow it down:
- Which resolution/framerate .cfg file are you currently loading in the USB GUI tool?
- What format are you capturing the raw dump in (10-bit packed, 12-bit, 8-bit)?
- Which version of the ArduCAM USB GUI tool are you running?
- Are you debayering with the tool’s built-in function, or converting the raw externally (e.g. in OpenCV / a script)?
The “shifted every other pixel” + serrated edges symptom usually points at a bayer order mismatch (RG/GB vs BG/GR) or the wrong sensor mode in the config, so the cfg is the first thing I’d check.
Sure:
- Platform: PC
- Sensor: IMX477
- Product: USB Camera Shield, model B0317
- I don’t have an order number handy.
The odd part is I’m not seeing this on other setups — when I use it on an RPi I don’t get the serrated edges at all. It’s only on the PC with the USB GUI tool that the raw comes out shifted and the checker pattern looks jagged. I’m honestly not 100% sure which cfg is being loaded — I think it’s whatever shipped with the tool.
Also, just to add — it’s not consistent. Sometimes it looks correct, other times it’s off again. That’s the “intermittent” part I mentioned. Here’s a zoomed-in shot of the checker pattern, you can see the edges are serrated:

Thanks, that helps a lot. Since the RPi path looks fine and only the PC + GUI tool shows it, I’d focus on the .cfg the tool is actually loading.
The config file defines the sensor mode, the output format, and the pixel packing. If the mode doesn’t match the sensor’s readout, the raw data gets shifted and the debayer comes out wrong — which is exactly the one-pixel-off/serrated pattern you’re seeing. The checker pattern is a good test because any bayer misalignment shows up as those jagged edges.
Can you do me a favor and confirm the exact filename of the cfg currently in your tool’s config folder, and also try capturing a fresh raw dump of a plain checkerboard and tell me if the shift is exactly 1 pixel or more? While you check that, I’ll point you to the config repository we maintain.
Here’s the repo with the configuration files:
Grab the cfg that matches your IMX477 resolution and load it via the USB GUI tool’s config option. These cfg files are all tested before release, so they should be no problem and give you the correct bayer order / sensor mode. Once the matching cfg is in place, the debayering should line up and those serrated edges should go away.
If you want a second reference, the forums and docs are here:
OK, downloaded a cfg from that repo for my IMX477 resolution and loaded it in the GUI tool. It’s better in some captures, but I still get the shift sometimes — and the intermittent/unstable behavior is still there. Is it possible the config I picked is the wrong mode, or is there something about the raw packing that I need to set too?
Possible, yes — there are usually a few cfg variants per sensor depending on resolution and framerate, and the mode has to match. A couple of quick checks:
- Try each IMX477 cfg for your resolution one at a time and re-run the checkerboard capture. Note which ones give clean, aligned edges.
- Double check the bayer order setting in the tool (RG/GB vs BG/GR). Even with the right mode, the wrong order flips the colors and can look jagged.
- For the “unstable/intermittent” part — this is often USB bandwidth or power related on PC. Try a different USB port (directly on the rear I/O, not through a hub), use a short good-quality cable, and lower the resolution/framerate to see if it stabilizes. That will tell us if instability is config-related or USB/power-related.
If you can, tell me the exact cfg filename that’s currently loaded and the raw format setting you’re using.
I went through the IMX477 cfgs — one of them gives me a correct checkerboard most of the time, so that seems like the right mode. The bayer order was indeed off before. But even on the good cfg I still occasionally get instability, and if I push the resolution up it gets worse. On the RPi it stays solid regardless.
Got it, and that’s a useful clue. Summary of where we are:
- The debayering/shift issue is a config mismatch — loading the correct IMX477 cfg from the config repository (GitHub - ArduCAM/ArduCAM_USB_Camera_Shield_Config · GitHub) plus the right bayer order fixed the main problem. Those cfg files are tested before release and should work without issues once you have the matching mode.
- The remaining instability appears tied to the PC USB path and seems to scale with resolution, since the RPi doesn’t show it. That points toward USB bandwidth/power rather than the cfg itself.
For next steps: stay on the cfg that gave you the clean checkerboard, verify the bayer order matches, and for the intermittent behavior try a direct rear USB port, a short quality cable, and a lower resolution/framerate to confirm whether it’s bandwidth limited. Reference material is here if you need it:
I’ve also sent over some additional diagnostic details through private message — please check your messages. Let me know how it behaves after the USB port/cable change and we can take it from there.