Archived:Open Camera Control Board


The Open CCB is not yet commercially available - we are actively seeking manufacturers. (even though this topic is archived!) If you want to start making and selling this board please contact CraigElder@uniserve.

The Open Camera Control Board (OpenCCB) is a camera remote control interface for aerial photography. It has many features, including: FTDI USB/UART adapter, USB HOST, Digital IO, Analog IO, Optocoupled IO, etc.



The main camera control protocol used is known as PTP (Picture Transfer Protocol), which was originally standardized as PIMA 15740:2000, ISO 15740:2005(V1.0), and ISO 15740:2008(V1.1).

The PTP has been supported by almost all cameras since 2005, but often in a limited fashion. Only few cameras have the “PTP Remote Control” feature. Canon, for example, removed the remote control feature from their compact line (PowerShot models) in the last PS SDK in 2009 (PS-ReCSDK 1.1.0e).

Fortunately the PTP hacking extension in the CHDK project allows us to extend the PTP control to newer, smaller and lighter Canon PowerShot models.

The CHDK PTP interface is described below:


Port Mapping

Telemetry UART (Auto Pilot)
1 2 3 4 5 6
I2C (3V3)
1 2 3 4
Digital IO
1 2 3 4
GND D2 D8 D7
Analog IO
1 2 3 4
GND A1 A2 A3
Optocoupled IO (LANC-C Control)
1 2 3
Optocoupled IO (Contact Closure Triggering)
1 2 3
NC Shutter Ground

USB Connector Types


Computer Wiring - Table Tests and Firmware Uploading


Flight Control Wiring - Aerial Photography


The firmware can be found here on GitHub.

There is also a zip file of the repository.

After getting the source code, just follow the steps below:

Step 1: Set your Arduino SketchBook path to the main folder

Step 2: Select the sketch “ArduCAMPTP_CHDK_APM26”


If you want the camera showing lenses when connected, you need to change the file __defines.h by setting AUTOSTART to 1, like here:

#define AUTOSTART 1 //Expose lens on start (Start on Record Mode)

Step 3: Compile and upload it to CCB board

Step 4: Copy the file geoshot.lua to camera’s SD card (folder: /CHDK/SCRIPTS/)

Step 5: While the Flight Control board is connected to MissionPlanner, do set the shutter just like here:


Step 6: Test shooting


After that... any other command should work... because it acts just like a servo.

Contact Closure - Example: Canon XTi