Revision as of 18:57, September 8, 2013 by ReyalP (Talk | contribs)

593pages on
this wiki


This page collects resources and techniques for testing a CHDK build or port. See also Debugging

this is a work in progress, please expand!

General guidelines

The CHDK User Manual gives an good overview of many features. Working through this list and verifying that your port matches the documented behavior.

Note that many CHDK features are poorly documented or poorly defined. When in doubt, consult the source.

Testing overrides

When testing overrides from script or the override menu, it is important to know Canon firmware displays and EXIF information may not reflect the actual value used. The functionality of the override should be determined from the image.

Testing RAW/DNG

Verify DNGs validate with Adobe's DNG validator. dng_validate is included with the DNG SDK

Take a series of shots and verify that each DNG contains the correct image data, to ensure raw buffers are all identified correctly.

Viewport buffers

To verify that the "viewport" is identified correctly, you can use the zebra, edge overlay and PTP live view functions

Zebra test

  • Aim the camera at a bright light. The over exposed indicator should match the light, regardless of where the light appears on the screen.
  • If it is offset, the viewport dimensions are probably wrong.
  • If the zebra has no obvious relationship to the scene, the viewport address is probably wrong.

Testing with scripts

There are some scripts which exercise various CHDK capabilities


Tests the lua standard libraries. This also exercises many C library functions.

Test procedure

  • run the script, with all of the 'skip' options set to zero.
  • If all test succeeded, it will print "end ... OK" for each item.
  • If any tests failed, examine A/llibtst.log


Tests the capture mode switching functions and mode map.

Test procedure

  • start the camera in play mode
  • run the script with all options set to zero
  • the camera should switch to record, and switch rapidly between each known shooting mode
  • If everything was OK, it will print pass
  • If something failed, examine A/setmode.log


General purpose ubasic test.

Test procedure

  • Start the camera in play mode
  • Start the script with interactive = 1 and sleep between tests = 5
  • The message "key test - set to end" will appear
  • If you press up/down/left/right/menu/erase the corresponding key name should be printed.
  • Press set to go to the next test
  • The canon menu should open and selection change a couple times
  • The camera will switch to record mode, and switch to P mode
  • The camera will take shots as follows:
    • auto exposure, using get_shooting, press shoot_half, press shoot_full etc
    • auto exposure + or - 2 stops Tv, using shoot
    • auto exposure + or - 2 stops Sv, using shoot
    • If ND filter is present, one shot each with ND forced in and out, using shoot
  • If no failures were identified, prints "ok", otherwise failed.
  • Output is logged to CHDK/LOGS/LOG_0001.TXT. The log will indicate whether the shots above were + or -, with the corresponding exposure number. Compare the jpegs to ensure the images show the expected variation in exposure.


Tests the reaction speed of motion detection. This can be used find the optimal implementation of vid_get_viewport_live_fb()


  • Live view buffers functions return pointers to valid data (see other frame viewport buffers above)
  • CAM_AF_LED is defined as camera_set_led identifier for AF in platform_camera.h
  • camera_set_led is implemented and supports trigger AF

Test procedure

  • Put the camera in record mode, aimed at a nearby subject in an environment dark enough for the AF led to show up well
  • Run the script
  • Check that MD is triggering reliably when the AF blinks and note the min/max/and average values.
  • If alternative implementations of vid_get_viewport_live_fb are available (i.e. using active_viewport_buffer as the current, next or previous frame), try each one and use the one that gives the best results.

Note - statistics are cleared only on reboot.

Around Wikia's network

Random Wiki