Arducam Mega: cannot set exposure

  1. Where did you get the camera module(s)?

Direct from Arducam presale.

  1. Model number of the product(s)?

BO436 - Arducam Mega 3MP-NoIR

  1. What hardware/platform were you working on?

Raspberry Pi Pico - C SDK

  1. Instructions you have followed. (link/manual/etc.)

Quick start guide on Arducam site.

  1. Problems you were having?

Cannot adjust manual exposure. I’m using the 3MP model on a Raspberry Pi Pico with the full_featured example. Setting manual exposure via the Ardulink app does not change the output image at all, and the image data is returned instantly. Changing the manual gain, values seem very on/off, with huge jumps in sensitivity between integer steps between 1 and 10. Both of these actions are performed after turning off auto exposure / gain.

  1. The dmesg log from your hardware?


  1. Troubleshooting attempts you’ve made?

Wrote a quick Web Serial interface and attempted to send various exposure settings there, first turning off auto exposure. Gain also behaves oddly - the camera reports it supports values up to 1023 but tends to white out around 200/300.

  1. What help do you need?

Are the correct registers defined for setting exposure? They seem to vary between files in the Arducam Mega repository. What exposure values are actually supported? Are any extra steps necessary after disabling auto exposure, and setting the manual time?



Would it be possible for you to record a video of the operation process and phenomenon, so that I can better understand it? This would be greatly appreciated.

Sure - screen recording, or is recording from my phone camera good enough?

Also, the advert for the Mega says that exposure is fully controllable. I can’t figure out how to set exposure for a long time. If I want to set exposure for 60 seconds, how can I do that?



Both are okay.Thank you.

You can follow the link below:

Great, thanks - please can you tell me what exposureValue is equivalent to 60 seconds?

I’m sorry that our description may mislead you. For the mega series cameras, we don’t have an API interface for exposure time. The entry parameter of setAbsoluteExposure is the exposure line, not the exposure time. In other words, users can adjust the exposure time by changing the Exposure row. If you want to accurately set the exposure time, it is not an easy task for MEGA’s current architecture. Users need to read information such as frame length, line length, and frame rate to calculate the pixel clock, and then map the exposure line to the exposure time. if needed please contact our [email protected]
for customization. Feel free to let me know if you need more help.

Many for your reply, I really appreciate it! I only just got the notification, please forgive me for taking so long to reply to you :slight_smile:

I do not need accurate exposure time, 60 seconds was a simple convenient example time.

I -do need- the ability to set long exposure times. Please can you give me an example of how to set an arbitrarily long exposure time?

As I have mentioned in the last reply. users can adjust the exposure time by changing the Exposure row.
in order to get more exposure time. you can set more exposure row.

OK, back of envelope maths suggests around 100ms maximum exposure time. Please can you share a datasheet of the camera’s registers so I can explore further?

Also, don’t know if you guys are interested, I have a proof-of-concept Web Serial client for ArduLink that runs in the browser. Might save some effort creating a cross-platform version?

Directly setting the exposure time through the use of registers can be quite challenging, as my colleague previously mentioned. Instead, you will need to use the setAbsoluteExposure API to adjust the exposure rows and control the exposure time accordingly.

Moreover, we are very interested in your Web Serial client for ArduLink, and we would like to schedule a video conference to discuss this feature further. We appreciate your hard work and would like to explore this opportunity in greater detail. You can contact the [email protected] and we will send the meeting link via email.
Many thanks

Hehe, my only other option is to write some code that probes registers with random values and try to figure out controls from that. A datasheet would save a lot of time :slight_smile:

Oh cool, really pleased that you’re interested. I’m swamped this week, I’ll get in touch next week and we can go from there.

1 Like


Let’s chat in email :smiley:

What about the latest progress about the Web Serial client for ArduLink?

Heya - wow that month went fast :joy: The exposure issue rather killed my coding mojo for this project. Lemme see if I can get back on it this week and go from there :slight_smile:

:joy: OK. Maybe we can schedule a video meeting or build an quick connection such as skype in order to make it is easy to communication. my skype ID:[email protected]