Raspberry Pi HQ Camera IMX477 on Arducam UC593 Rev C USB Transfer Timeout

Hi, I can’t get my Raspberry Pi HQ Camera Module (IMX477) to work with the Arducam USB 3.0 camera shield (UC593 Rev C).

Whenever I start the stream from the GUI with the IMX477 I always get a “USB transfer timeout error”.

My setup:

  • Arducam USB 3.0 camera shield (UC593 Rev C)
  • Raspberry Pi HQ Camera Module (IMX477)
  • Raspberry Pi Camera V2.1 (this one works perfectly fine)

So I’m fairly sure the shield itself is OK, since the V2.1 streams without any issue. I already tried the config file that was suggested to me, but it didn’t solve the problem:

There are so many CfgFiles for the IMX477 sensor that I’m wondering if I’m just using the wrong one. Is there a “correct” one for this exact setup? Any help appreciated.

Hi, thanks for the details.

I have some guesses and I need some information to verify my thoughts.

First, can you please show me the “datainfo” information in “about” and “tools”? That will tell us exactly what the tool sees on the USB side (sensor id, resolution, mode, etc.) and whether the board is enumerated correctly with the IMX477 attached.

Also, for the config file, you can try this one:

Please capture the datainfo output first (before changing the config), then try the file above and let us know if the timeout is still there.

OK, I grabbed the datainfo from “about” and “tools” and tried the config file you linked.

Unfortunately it did not solve the problem. Same behaviour - I hit start in the GUI and it still ends with the “USB transfer timeout error”. So the 2016x1520 RAW8 config doesn’t seem to fix it for me.

Is there anything else I should check before trying the other CfgFiles? I’d rather not guess among all of them.

Thanks for testing that - so the config file alone isn’t the answer here. Let’s not chase random CfgFiles yet.

Can I see your hardware connections? A photo of both ends of the FPC/ribbon (sensor side and shield side), plus how the shield is powered and how it’s plugged into the host, would help me verify my hypotheses.

Also note which channel you’re plugged into and which lane setting you’re using on the shield.

Still not working with the IMX477 on the UC593 Rev C. I’ve attached photos of the setup - as far as I can tell everything is connected correctly, ribbon seated, shield on its own USB 3.0 port.

But I have a suspicion about the power-enable voltage. I read that when using the Raspberry Pi HQ camera on Jetson devices the R8 resistor needs to be removed, because the MIPI Power En is only 1.5 V on those devices compared to the Raspberry Pi’s 3.3 V.

So I measured the MIPI Power En on the Arducam USB shield with a multimeter and it’s only at 2.5 V, not 3.3 V. Could that 2.5 V on the MIPI Power En also be part of the problem here? That would fit with the sensor not powering up properly and the transfer just timing out.

Sorry, I didn’t notice you were using the official imx477, which does have this problem on jetson.

Your analysis is very correct, and that is exactly why the problem is occurring. This is actually a fairly frequently asked question.

The official IMX477 (Raspberry Pi HQ camera) has a known issue when driven from a platform whose MIPI Power En is below the Pi’s 3.3 V - on Jetson it’s 1.5 V, and you measured 2.5 V on the Arducam USB shield, which is the same class of problem. Because the enable line doesn’t reach the level the sensor expects, the sensor never comes up cleanly and you get the USB transfer timeout in the GUI instead of a stream.

Please refer to this write-up:
https://www.hackster.io/SaadTiwana/embedded-diaries-how-to-use-rpi-hq-camera-with-jetson-e2063e

In short: remove the R8 resistor from the Raspberry Pi HQ camera board so the power-enable behaves correctly, and use the IMX_477_2Lane_2032x3040_RAW8_A configuration file. (And if you need to re-check anything on the tool side, the datainfo under “about” and “tools” is still the place to look.) Let us know how it goes.

That fixed it, thank you!

I removed the R8 resistor from the Raspberry Pi HQ camera board and used the IMX_477_2Lane_2032x3040_RAW8_A configuration file. I finally got a running video stream - no more USB transfer timeout error.

Final setup working:

  • Arducam USB 3.0 camera shield (UC593 Rev C)
  • Raspberry Pi HQ camera board with the R8 resistor removed
  • IMX_477_2Lane_2032x3040_RAW8_A config file

So it was the MIPI Power En voltage after all. Thanks again for pointing me at the R8 and the correct config.

Great to hear - glad you’re up and running!

To sum up where we landed: the official IMX477 (Raspberry Pi HQ camera) has a known issue on Jetson due to the MIPI Power En voltage difference (Jetson 1.5 V vs the Raspberry Pi’s 3.3 V, and you measured 2.5 V on the Arducam USB shield). The power-enable never reaches what the sensor expects, so the camera doesn’t come up and the GUI just reports a USB transfer timeout.

Workaround that resolved it:

  1. Remove the R8 resistor from the Raspberry Pi HQ camera board.
  2. Use the IMX_477_2Lane_2032x3040_RAW8_A configuration file.

Reference: https://www.hackster.io/SaadTiwana/embedded-diaries-how-to-use-rpi-hq-camera-with-jetson-e2063e

If anyone else hits the same timeout with an IMX477 on the UC593 Rev C, check the MIPI Power En level first and then apply the R8 removal plus the config above.