Complete MIPI camera MT9J001 shutdown to control heat

Hello there!

Using a USB3 Camera Shield Plus, I’m trying to get the attached MIPI camera to completely shut down and later restart it using Python. I want to do that because I have to limit the amount of heat generated by the sensor (I can’t use a fan nor a heatsink). I have a MT9J001 camera attached to MIPI port A using a ribbon cable adapter.

With the MT9J001 camera, I can get it into low-power mode by editing bit 9 of register 0x3040. I can also manually lower clocks by editing other registers. No matter what I try it still emits heat (albeit a bit less).
ArducamSDK.Py_ArduCam_writeSensorReg(handle, 0x3040, value)

I then tried to change bit 1 of the arduchip register 0x01 to put the MIPI interface to standby but it doesn’t appear to do anything.
ArducamSDK.Py_ArduCam_writeReg_8_8(handle, 0x46, 0x01, 0b01000101)

Now, is there another way to do it? Would a IMX219 or IMX477 MIPI camera change anything?

I can also use a relay to disconnect and reconnect the shield, but I would rather not do that if avoidable. Speed also matters, ideally it would be possible to turn it on and off every few seconds.

Thanks!

Hi,
The sensor you are using is DVP interface instead of MIPI interface. Please refer to USB3.0 Camera Shield Plus Datasheet - Arducam Wiki datasheet to make the sensor go into standby mode.
Just set the 0x01 bit[3]. 0: normal 1: standby

Yeah my bad you’re right, it’s a DVP and not a MIPI camera. But even setting bit 3 to 1 doesn’t change anything.

Can you confirm what the bit order would be? Is it MSb 0 or LSb 0?

Default value of register 0x01 is 0b00000101.
Changing it with ArducamSDK.Py_ArduCam_writeReg_8_8(self.camera.handle, 0x46, 0x01, 0b00010101) (MSb 0) or ArducamSDK.Py_ArduCam_writeReg_8_8(self.camera.handle, 0x46, 0x01, 0b00001101) (LSb 0) doesn’t do anything.

I noticed that if the camera sensor is plugged in but no image has been read, it doesn’t heat up. Is it possible to revert to this initial state without physically unplugging and replugging?

@Heatbot
Hello,
Thanks for your info again. Can you tell me more detail about the mean that it does not change anything? When you write 1 the the bit[3] of the 0x01 register,can you get the video streaming normal?
As normal, if the camera work on standby mode, you can’t get any image data from the sensor.
About the second issue, you can make it by controlling the standby pin. But you can control the Arducam USB 3.0 PLUS’s baseboard.
Feel free to let me know if you need more help.

Using the MT9J001 VDP camera, I can still stream videos normally after setting bit[3] of the 0x01 register to 1 so that’s weird.

Now, I repeated the same procedure using the IMX219 MIPI sensor and streaming correctly stops when setting the MIPI standby bit this time.

@Heatbot
OK, Get it, the phenomenon is so wired. It seems the firmware’s bug.
Our engineer will test it and reply you as soon as possible.
Please attach me some detail pictures about your hardware and your camera module.
We need to check the version of the camera shield and test it using the same environment.

@Heatbot
Hello,
I have tested it and found the standby control is disable.It is due to the sensor configuration. you can make it by writing 0x301a bit[2] to make the sensor come into soft standby mode.

Thanks for the answer! I’m away for a few days and I’ll test it when I get back. I’ll make sure to report back my findings :slight_smile:

@Heatbot
OK, Waiting your latest progress. Feel free to let me know if you need more help.