We have tested 7 m5stack camera modules we have bought from a vendor at AliExpress.
We see an odd behaviour sometimes they work, sometimes not, some show image artefacts some do not even start AP.
Digging deeper we probably found the cause and this is what we also found on Espressif Wroverkit as a real bug – there are no pullup resistors on the I2C bus !!!
The GPIOs for SDA/SCL are programmed as open collector with internal pullup but this is much too weak for I2C bus.
This has also been posted already in the ESP32 forum, it is absolutely necessary to have pullups (<= 10k) on SDA and SCL.
Looking into the schematics of m5stack camera module. I2C signals SIO_D and SIO_C are connected to GPIO25 and GPIO23 respectively (Pin3 and Pin5 of the FPC connector). You can see in the schematics that these GPIOs are connected to
the ESP32 (Pin 36 and Pin14) but do not have a pullup resistor.
If you are running I2C only with weak internal pullup of ESP32 you will have a very unreliable system, if you are lucky the OV2640 get setup but maybe some bytes are not transmitted correctly. And this is exactly what we see, sometimes it is working (but with issues) sometimes not at all.
As there is no rework possible m5stack should consider to do a new harware revision