The factory firmware is stored in flash memory built into the Camera. On rare occasions, this memory can suffer corruption due to age ("bit rot") or other defects unrelated to CHDK.

In some cases, it is possible to repair these errors using CHDK or Canon Basic.

Known cases

  • An A710IS which crashed in rec mode was found to have one bit flipped and was successfully repaired by re-writing the affected byte. Forum thread
  • An SX260 with a non-functional jogdial was found to have one bit flipped. This was worked around by adding the correct code to the CHDK jogdial hook. Forum thread

Additionally, the onboard memory memory is used for camera settings, which have been found to be corrupted and repaired in at least on case. Forum thread

Detecting corruption

As of CHDK 1.5 build 5535, CHDK has functionality to detect corruption in some parts of the firmware for most supported models. By default, this check is only done on the first boot after a fresh install. A progress bar will briefly show "ROM CRC". If corruption is detected, a dialog starting with "Possible Canon ROM corruption" will appear and prompt to dump the firmware.

The check can be controlled in the CHDK menu in Miscellaneous - Debug settings - Checksum ROM at boot.

Because the onboard flash also contains dynamic data like settings and camera specific calibration, this built in check only applies to a subset (typically 20-75% depending on model) of the firmware believed to be constant. If a camera behaves unexpectedly while not running CHDK, but corruption isn't reported, you can make a dump using the Canon Basic dumper.

You can compare a dump from your camera with dumps from the dumps archive, but analysis is required to identify whether differences are corruption or are areas that are expected to vary between cameras.

Reporting corruption

If you see the "Possible Canon ROM corruption" message or otherwise suspect corruption, please report it in the forum.