Hi all, hoping someone can point me in the right direction. I’m trying to use the Arducam 108MP USB 3.0 Dev Kit with a Raspberry Pi 5 to capture still images at full resolution, but I can’t get it to actually capture anything. The camera gets detected, it starts up and reads the cfg file, but the capture step fails. I’m using the Python Arducam SDK on the Pi — installed the Linux drivers through the configure_udev_rules script, and modified arducam_demo to run inside an IDE. My version reads the cfg, starts the camera, then captures an image. The log just says ‘Capture Began, Error: USB_CAMERA_NO_ERROR’ and no image shows up. I also tried the newest Windows GUI install with the cfg ArduCAM_108MP_MIPI_2Lane_RAW8_12000x9000_1.4fps. The camera scans and the cfg loads fine, but hitting play to capture gives USB TIMEOUT ERROR. Anyone run into this?
Thanks for the detailed info. So on both Linux and Windows the EK030 enumerates and loads the cfg, but it fails exactly at the capture call — that points me toward the cfg file itself rather than the camera hardware. Did you use the cfg files we provide for the EK030, or the ones bundled with the SDK? If you haven’t tried our cfg files yet, please do — I’ve sent them to you via private message. Try those and let me know if the error changes.
I tested the cfg files you sent. Interesting result: on Windows the camera works now, but I see ‘bad frames’ printed twice before the proper image appears. On the Pi 5 with the Python SDK it still fails after the camera starts and reads the cfg. I changed arducam_demo to pass the cfg directly into the openCamera function. My code uses Arducam.py and imageConvert.py. Now I get USB_CAMERA_DATA_LEN_ERROR and occasionally USB_CAMERA_FRAME_INDEX_ERROR. I also made a simplified version that only calls the read function once, and it throws the same error. Here are my files: demo.py and demo_Simplified.py.
Another update. I tried the 12000x9000 cfg at 1.4fps and the 4000x3000 cfg at 12fps on the Pi 5. Now it does show images, but they’re corrupted — lines running through them and weird colors. With the 12000x9000 cfg I get repeated USB_CAMERA_DATA_LEN_ERROR and occasional timeouts. The 4000x3000 cfg gives the same errors and lines, but far less often. The exact same code on Windows works fine with both cfgs, so the module really doesn’t seem to run well on the Pi 5 specifically. Side questions: would the UVC version (SKU: BO494) work better on a Pi 5? The documentation I saw was tested on Ubuntu 22.04. And does the 64MP camera module work on the Pi 5, and which library controls it?
Let’s try the newer ArduCam_EVK_Demo for the EV kit and see if it handles the Pi 5 better. Setup: git clone GitHub - ArduCAM/ArduCam_EVK_Demo · GitHub, then cd ArduCam_EVK_Demo/python/, run python -m pip install -r requirements.txt, cd project, and launch it with python async.py -c EK035_Mira220_124MHz_RGBIR/Mira220_MIPI_2Lane_640x480_12b_80fps.cfg. Run that and let me know how the 12000x9000 and 4000x3000 cfgs behave.
Thanks — the new demo does display an image on the Pi 5 now. But the 12000x9000 cfg at 1.4fps still gives repeated USB_CAMERA_DATA_LEN_ERROR and occasional timeouts, and the image is corrupted with lines and weird coloring. The 4000x3000 cfg at 12fps shows the same errors and lines, just way less often. Same code on Windows is clean on both. I also ran sync.py and noticed it skips every other frame. That’s not a huge problem because I only need a single frame at a time, but I’m curious what causes it. Also, is it possible to modify camera parameters like exposure time and gain after the cfg file is loaded?
I’ve reproduced that frame skipping on the Pi 5 in our own testing too, and I didn’t see it on a Windows PC. My guess is the Pi 5’s processing performance — we’ve tested UVC cameras on the Pi 5 as well and they didn’t reach their ideal frame rate either, so it’s not something specific to your module. For the control parameters: yes, you can adjust exposure, gain, and similar settings after the cfg loads. The controls code is here: ArduCam_EVK_Demo/python/function/controls.py at master · ArduCAM/ArduCam_EVK_Demo · GitHub. Since you only need a single frame, you can work around the skipping by just grabbing the frame you need instead of relying on continuous preview.