# Canon Hack Development Kit

Das Canon Hack Development Kit (CHDK) ist ein unabhängiger Firmware-Aufsatz für digitale Kompaktkameras des japanischen Unternehmens Canon mit DIGIC-II, -III-, -IV-, -V- oder -VI-Prozessor. CHDK wird als Open-Source-Projekt betrieben, der Quellcode und die fertig kompilierte Software sind unter GNU-GPL-Bedingungen verfügbar. Die Software erweitert den Funktionsumfang der digitalen Kameras. Auch wird die originale Firmware der Kamera dazu weder ersetzt noch verändert.

## Entwicklungsgeschichte

Die Geschichte von CHDK begann in der zweiten Hälfte des Jahres 2006. Der Programmierer VitalyB konnte eine offizielle Datei zur Ixus-Firmware-Aktualisierung („update“) soweit analysieren, dass er die Aktualisierungsprozedur verstand. Mit diesem Wissen schrieb er ein Programm zum Auslesen der Firmware. Dabei wurden die Daten an eine der Kamera-LEDs geschickt und per optischer Kopplung übertragen.
Mit den Erkenntnissen aus der Auswertung der Daten wurde ein Programm geschrieben, das 10-Bit-RAW-Dateien der PowerShot A610 speichern konnte. Es erhielt den Namen RAW-Enabler.
Im nächsten Entwicklungsschritt erfolgte die Integration eines Interpreters für den BASIC-Dialekt uBasic. Damit waren einfache Skripte zur Steuerung der Kamera möglich.
Die Kamera-Modelle PowerShot A620, A630 und A710 wurden in das Projekt einbezogen. Als neue Funktionen kamen eine Histogramm-Anzeige, erste Möglichkeiten für Belichtungsreihen, OSD-Anzeigen und ein Layout-Editor zur Positionierung der OSD-Elemente hinzu.
Ab Anfang 2007 fügte der Programmierer GrAnd die Anzeige diverser Kamera-Werte, Über- und Unterbelichtung im Histogramm, einen DOF-Rechner, eine Batterie-Anzeige, einen Datei-Browser, einen Text-Anzeiger, die Organisation der RAW-Speicherung sowie eine Autostart-Funktion hinzu und nannte das Projekt CHDK.
Im September 2007 entwickelte der Programmierer MX3 eine Bewegungserkennung für den Firmware-Aufsatz. Ein weiterer Programmierer, Fingalo, erweiterte uBasic wesentlich durch eine Vielzahl von Kamera-spezifischen Befehlen. Die nächsten acht Kameramodelle konnten CHDK nutzen. Lange Belichtungszeiten und Belichtungsreihen im Serienmodus folgten als neue Funktionen.
Erstmals gelang es, DIGIC-III-Kameras mit VxWorks- und DRYOS-Betriebssystem erfolgreich anzupassen. USB-Fernbedienmöglichkeiten entstanden.
Anfang 2008 ging eine Vielzahl neuer Funktionen in der Version ALLBEST auf. Mitte 2008 entwickelte sich die Experimental-Version Juciphox mit einer ganzen Reihe an neuen Funktionen, u. a. der Skriptsprache Lua, zum heutigen Standard. Die letzte wichtige Neuerung war die kamerainterne Unterstützung von DNG-Dateien.
Im Laufe der Zeit bildete sich eine große Gemeinschaft heraus, die die Weiterentwicklung von CHDK gemeinsam betreibt. Gegenwärtig werden mehr als 80 Kamera-Modelle der Ixus- und PowerShot-Serien unterstützt.

## Arbeitsweise

Die notwendigen Binär-Daten werden auf die in der Kamera benutzte Speicherkarte kopiert. Zum Start von CHDK ruft man die Firmware-Update-Funktion im Kamera-Menü auf, um die Daten in den Arbeitsspeicher der Kamera zu laden. Per Kamera-Taste kann nun ein zusätzliches Konfigurationsmenü aufgerufen werden, in dem sämtliche Einstellungen von CHDK organisiert werden. Wird die Update-Funktion nicht ausgeführt, arbeitet die Kamera ganz normal ohne CHDK.
Bei Bedarf kann CHDK bei Einschalten der Kamera auch automatisch gestartet werden. Dazu macht man die Speicherkarte bootfähig und setzt den Schreibschutzschalter auf „schreibgeschützt“.

## Funktionsüberblick

CHDK bietet sehr viele Funktionen an. Diese können hier nur als Überblick zusammengefasst werden.
* Aufnahme von RAW/DNG-Bildern.
* Schnelle Belichtungsreihen mit frei einstellbaren Belichtungswerten.
* Manuell einstellbare Belichtungszeit von 1/100.000 s bis 65 s (bei einigen Kameras ist die max. Belichtungszeit unbegrenzt)
* Manuell einstellbare Fokusdistanz
* Manuell einstellbare Blendenwerte/ND-Filter-Stellung (in Abhängigkeit von der Kamera-Hardware)
* Manuell bestimmbare ISO-Werte (Ober- und Untergrenze sind abhängig von der Hardware)
* Einstellbare Auto-ISO-Werte für unterschiedliche Aufgaben
* Erweiterte einstellbare Belichtungskorrektur (Ev)
* Viele weitere Zusatzinformationen und Einstellungen für den ambitionierten Fotografen (z. B. Schärfentiefe-Rechner, Einstellung der hyperfokalen Entfernung)
* Mehrfachbelichtung und Weiterverarbeitung zu einem Bild in der Kamera
* Erweiterte Video-Funktionen (Zoomen und Fokussieren während der Aufnahme)
* Stufenlos einstellbare Videoqualität für die Videoaufnahme
* Tonwertkurven können direkt in der Kamera eingerechnet werden.
* Konturenüberlagerungen als Hilfsmittel für Trickaufnahmen
* Fernauslösung mit Hilfe einer Fernbedienung (Selbstbau)
* Erweiterte Funktionen durch Skripte (uBasic und Lua)
** Belichtungsreihen für HDR
** Zeitintervall-Aufnahmen für Zeitraffer
** automatisches Focus stacking
** Kamera löst aus, wenn Bewegung im Bild erkannt wird.
** Zeitgesteuerte Abläufe
** Virtuelle Kameramodi und Funktionen, die die Kamera werkseitig nicht unterstützt (z. B. Tv-Modus für Kameras ohne diesen Modus).
** Fernbedienung-gesteuerte Abläufe (Selbstbau-Fernbedienung für USB-Anschluss der Kamera)
** Dateimanagement, Logdateien erstellen, zusätzliche Informationen in Exif-Daten schreiben
* Autostart für Skripte, ermöglicht bestimmte persönliche Voreinstellungen beim Einschalten der Kamera.
* Live-Histogramm mit gesonderter Einstellung für RGB und Luminanz.
* Markiert Flächen ohne Bildinformationen („Zebra-Modus“, Anzeige von Über- und Unterbelichtung) vor der Aufnahme.
* Anzeige der aktuellen Kapazität von Akku und Speicherkarte
* Anzeige von Uhrzeit und Sensortemperatur
* Anzeige eigener Gitternetze zur besseren Orientierung auf dem LCD
* Kleine Zusatzprogramme, wie zum Beispiel Kalender, Textbetrachter, Datei-Browser und Spiele
* Alle Funktionen sind über ein einheitliches Menü einstellbar.
* Persönliches Benutzermenü zur Zusammenfassung der wichtigsten Funktionen
* Persönliche Einstellungen für CHDK-OSD-Elemente (Farbe, Position) und das CHDK-Menü (Farbe, Zeichensatz).
* Tastaturkürzel zur schnellen Bedienbarkeit der wichtigsten CHDK-Funktionen über die Bedientasten der Kamera

## Funktionale Abgrenzung

Es sind, mit Ausnahme von Rohdaten, keine anderen als von der Kamera vorgegebenen Bild- und Video-Formate möglich. CHDK eignet sich nicht als Abspielprogramm für diverse Multimedia-Formate wie z. B. MP3.

## Varianten

Neben der allgemeinen internationalen CHDK-Version gibt es weitere Varianten.
Speziell für den deutschen Sprachraum wurde eine Version entwickelt, die alle Voreinstellungen für eine deutsche Benutzerführung sowie einen erweiterten Umfang von Skript-Befehlen beinhaltet. Die deutsche CHDK-Nutzergemeinschaft hat sich besonders auf die Anwendung von Skripten spezialisiert.
Eine weitere Variante nennt sich Stereo Data Maker (SDM). Hier geht es vorrangig um die Erstellung von Stereo-Bildern. SDM unterstützt dabei die Synchronisation mehrerer Kameras, beinhaltet aber auch die wesentlichen CHDK-Funktionen. SDM steht in der Kritik, da es sich nicht an die Lizenzbedingungen von CHDK hält.
Es gibt diverse Ansätze, Spiegelreflexkameras der Canon-EOS-Digitalkamera-Reihe mit zusätzlichen Funktionen auszustatten. Diese Entwicklungen unterscheiden sich deutlich vom CHDK für digitale Kompaktkameras. Führendes Projekt ist hier Magic Lantern.