Hi, I can’t get the Raspberry Pi HQ Camera Module (IMX477) to run with the Arducam USB 3.0 camera shield (UC593 Rev C). The Raspberry Pi Camera V2.1 works perfectly on the exact same setup, so the shield and cables seem fine. But as soon as I start the stream from the GUI with the IMX477 attached, I always get a “USB transfer timeout error”. There are a lot of CfgFiles available for the IMX477 sensor and I suspect I’m picking the wrong one. Has anyone got the HQ camera running on this shield, and which config should I be using?
The IMX477 definitely needs the right CfgFile - a wrong one can make the stream fail, so that’s a good thing to check first. To narrow it down, could you open the GUI, go to “About” and then “Tools”, and show me the “datainfo” information it reports? That tells us which firmware/config the shield is actually running. A photo of how the camera is connected to the shield would help too. In the meantime, please try this config for the UC593 Rev C / IMX477 / Channel A / 2Lane 2016x1520 RAW8:
Let me know if the timeout changes at all.
Here is the datainfo from “About” and “Tools”:
[datainfo]
…
[/datainfo]
I attached photos of the hardware connections as well. Unfortunately the config you linked (IMX477_2Lane_2016x1520_RAW8.cfg) did not solve it - same “USB transfer timeout error” when I start the stream. One more thing I came across: I read that for using the Raspberry Pi HQ camera on Jetson devices the R8 resistor needs to be removed, because MIPI Power En is only 1.5 V on Jetson compared to 3.3 V on a Raspberry Pi. I measured the MIPI Power En on the Arducam USB shield and it’s only 2.5 V. Could that also be part of the problem?
Good catch on the MIPI Power En. 2.5 V on the USB shield is lower than the 3.3 V the HQ camera normally expects from a Raspberry Pi, so the R8 modification is likely relevant here too, especially since the 2016x1520 config didn’t help. Two things to try together:
- Remove the R8 resistor from the Raspberry Pi HQ camera board.
- Switch to the full-resolution Channel A 2Lane config instead of the 2016x1520 one: IMX_477_2Lane_2032x3040_RAW8_A.
The 2032x3040 RAW8 variant is the one that matches the HQ camera, so please use that after the R8 mod.
That did it! I removed the R8 resistor from the Raspberry Pi HQ camera board and used the IMX_477_2Lane_2032x3040_RAW8_A configuration file, and I finally get a running video stream with the UC593 Rev C. The 2016x1520 RAW8 config that was suggested earlier never worked for me on this setup. Attached updated photos of the setup. Thanks a lot!
Great to hear it’s streaming now. To write down what actually fixed it:
- The R8 resistor on the HQ camera board has to be removed, because the MIPI Power En on the USB shield is only about 2.5 V (and 1.5 V on Jetson devices), while the HQ camera expects the 3.3 V it gets from a normal Raspberry Pi.
- Config selection matters for the IMX477: IMX_477_2Lane_2032x3040_RAW8_A is the correct file for the HQ camera, while the previously suggested 2Lane 2016x1520 RAW8 file (IMX477_2Lane_2016x1520_RAW8.cfg) is not the one for this sensor/setup.
So the combination of removing R8 and using IMX_477_2Lane_2032x3040_RAW8_A is what gets rid of the “USB transfer timeout error”. If it comes back, check those two first.
Now I have a new problem, but this time it’s with the documentation. The links to the readme for Python3 and Windows in the ArduCAM_SDK GitHub repo don’t work for me. For example ArduCAM_USB_Camera_Shield/Windows/README.md at master · ArduCAM/ArduCAM_USB_Camera_Shield · GitHub and the Python3 readme link are both dead/unreachable. Could you send me the file or point me to a working link?
Sorry about the broken links - the documentation has been updated. Please follow the steps in the new Python demo README here:
That replaces the old Python3 readme. If you still need the Windows readme specifically, let me know and I’ll get it to you.
Thanks, the demo works fine now. A couple of follow-up questions: is there a way to set the values for the exposure time and gain from Python? And do you have any examples for white balance? The documentation for the Software Python_SDK is very short - is there more documentation available somewhere? I already looked at Redirecting... but it doesn’t cover much.
Quick recap of where we are: the original “USB transfer timeout error” is solved - the HQ camera (IMX477) works on the UC593 Rev C once the R8 resistor is removed and IMX_477_2Lane_2032x3040_RAW8_A is used, and the updated Python demo docs are at ArduCAM_USB_Camera_Shield_Python_Demo/README.md at main · ArduCAM/ArduCAM_USB_Camera_Shield_Python_Demo · GitHub.
On your new questions: exposure and gain are set through the Python SDK’s camera control functions (set/read them after opening the camera), and white balance goes through the same control API - the demo repo is the best reference we have right now, since the public Python_SDK docs are still quite thin. If you tell me exactly which controls you want (exposure, gain, white balance values), I’ll point you to the specific calls. I haven’t confirmed a dedicated extra doc set beyond the demo README yet, so treat that as the current reference.