Rozšíření možností fotoaparátu díky Canon Hack Development Kitu

CHDK logoPokud si budeme pořizovat digitální fotoaparát, můžeme si vybrat z rozsáhlého množství různých výrobců a jejich modelů. Často záleží jakou užitnou hodnotu převedenou na vstupní cenu pro nás takový přístroj má, neboli jaký je poměr cena/výkon vztažený k našim potřebám. Dnes sice není problém pořídit s moderním mobilním telefonem relativně kvalitní fotografii, ale pokud jsou naše nároky vyšší, pravděpodobně se zaměříme na fotoaparáty typu kompakt nebo DSLR. Kompakty, jak již název napovídá, jsou víceméně univerzální alternativou digitálních zrcadlovek za poměrově nižší cenu. Jako je tomu u jiné spotřební elektroniky, i fotoaparáty lze díky softwarovým rozhraním určeným pro servisní úkony modifikovat a přidávat nové funkce. Pokud je náš přístroj značky Canon, můžeme k tomuto účelu použít komunitní nástroj CHDK neboli Canon Hack Development Kit.

Tento software přidává ke stávajícím funkcím nové, které nemusí být v naší modelové řadě dostupné.

CHDK - Canon_710_backV mém případě se soustředím na model Canon PowerShot A710 IS. Jedná se o typ, který byl vyráběn v průběhu minulého desetiletí, ale přesto poskytuje kvalitní základ pro rozšíření portfolia funkcí. Jen zrychleně, obsahuje čip s rozlišením 7,1 MP, 6x optický zoom s integrovaným stabilizátorem obrazu, 2,5“ LCD, slot pro SD a pro CHDK důležitý prvek, kterým je obrazový procesor DIGIC II. Operačním systémem je VxWorks.

Co ale přinese CHDK

Je to zejména vlastnosti jako živý histogram, indikace podexponování a přeexponování Zebra, vylepšený nástroj pro fotografování panoramat, možnost ukládání do formátu RAW (konkrétně DNG) a možnost spouštět uživatelské skripty. Uživatelské skripty slouží k dalšímu rozšiřování funkcí, namátkově HDR, detektoru pohyby, atd.

Obrovskou výhodou je, že CHDK pracuje vedle originálního firmware a jako takový jej nenahrazuje. Či přesněji, je do paměti RAM natažen z SD karty. Při použití se tedy nemusíme obávat, že nějakým způsobem zasáhne do původního programového vybavení a tím pádem ztratíme záruku.

V praxi celý proces funguje tak, že speciálně upravená SD karta s příznakem BOOTABLE obsahuje již zmíněný CHDK. Ten je originálním SW spuštěn při inicializaci zařízení. V tu chvíli se ale přístroj chová víceméně stejně jako v případě, kdy karta CHDK neobsahuje. Na LCD nám ale přibydou další indikační prvky a máme možnost zobrazit speciální menu CHDK, kde měníme nastavení všech rozšíření, spouštíme skripty, atd. Toto menu zobrazíme tlačítkem <ALT>. Funkci tohoto tlačítka přebírá od originálního SW právě CHDK. O které tlačítko se jedná, záleží na konkrétním modelu fotoaparátu. V případě PowerShot A710 IS je to tlačítko <Print>, které bývá při práci s fotoaparátem často nepoužívané. Stitkem <ALT> se tedy dostaneme do speciálního režimu, který je indikován červeným nápisem <ALT> na středu spodku LCD. Na levé straně je uveden název scriptu, který se v tomto režimu spouští a zastavuje tlačítkem spouště <SHOOT>. Pokud není žádný script vybrán je zobrazen nápis „Default Script“. Tlačítkem <Menu> je zobrazeno hlavní menu CHDK. V něm se pohybujeme pomocí kurzorových kláves a volby potvrzujeme tlačítkem <FUNC./SET>. Pokud se chceme vrátit do běžného pracovního režimu, stiskneme opět <ALT>.

CHDK nám dovoluje jednu úžasnou věc, a tou je vzdálené ovládání fotoaparátu z počítače přes USB kabel. Pro tuto funkci je nutné přepnout fotoaparát do režimu prohlížení – Play. Pouze v tomto režimu je totiž aktivováno USB rozhraní. Je to sice trochu matoucí, ale v tomto případě lze fotoaparát za pomoci speciálních programů vzdáleně ovládat, a to nezávisle na nastavení hardwarových tlačítek. Pod operačním systémem Windows ale musíme nainstalovat ovladač LibUSB (libusb-win), bez kterého není zmíněná funkcionalita dostupná. Tím pádem ale ztratíme možnost připojit fotoaparát jako PTP zařízení a pracovat s ním např. jako s diskem. Nemusíme mít ale obavy, že z fotoaparátu fotografie přes USB nestáhneme/nevymažeme. I tyto funkce jsou dostupné z klientských programů, nicméně ne přímo z operačního systému. Co nám dále funkce vzdáleného ovládání poskytne je přenesení obrazu z LCD přímo na display počítače. Na fotoaparát tedy nemusíme při práci přímo vidět. Tuto vlastnost lze použít pro spojení s různými drony, které komunikují s pozemní stanicí přes WiFi. V takovém případě je dron vybaven např. Rasberry Pi, které pracuje jako mediátor. Toto je ale má teoretická domněnka, jelikož techniku UAV nevlastním a znám pouze namátkově. Ovládat CHDK lze z OS Windows, Linux i MacOSX.

CHDK je k dispozici pro velké množství fotoaparátů Canon, včetně digitálních zrcadlovek, více na internetových stránkách projektu. Mezi podporovanými jazyky je i jazyk český.

Jak jsem již předeslal, CHDK nemodifikuje původním software, a proto se provozu nemusíme obávat. Nejdůležitějším předpokladem ale je, aby byl náš model fotoaparátu podporovaný.

Instalace na SD

Pro pořádek ještě jednou, CHDK nemodifikuje žádnou část originálního programového vybavení, jelikož je spuštěn v paměti RAM. Po novém zapnutí přístroje je program z SD nahrán znovu. Pokud jej tedy z karty vymažeme (nebo nastavíme příslušné příznaky – více dále), máme k dispozici plně funkční originální software.

CHDK můžeme instalovat několika způsoby. V každém případě musíme SD kartu předpřipravit. I přes podporu souborového formátu FAT32, zavádění (provoz) CHDK na fotoaparátu PowerShot A710 IS lze pouze z oblasti formátované jako FAT (FAT16) – některé fotoaparáty umí zavádění i z FAT32. Tím pádem můžeme být ochuzeni o některé vlastnosti FAT32, kterými jsou např. maximální velikost souborového systému nebo maximální velikost souboru. Pokud máme SD větší než 4 GB, musí být karta rozdělena na jednu menší oblast FAT a zbytek FAT32. Jelikož mám ve fotoaparátu vloženu kartu pouhých 2 GB, tato nutnost se mě netýká (Edit: už ji mám také viz).

Formátování SD lze provést přímo ve fotoaparátu nebo v operačním systému (ve čtečce karet). Vždy je ale nutné formátovat příslušnou oblast jako FAT (FAT16).

Karta musí být nastavena jako BOOTABLE. Jedná se o speciální příznak, kterému rozumí originální software fotoaparátu a informuje jej, že karta obsahuje další software, který je možno spustit. Nejedná se o příznak využívaný BIOSem PC pro zavedení systému při startu počítače.

Příznak BOOTABLE lze nastavit ručně pomocí HEX editoru úpravou příslušného fyzického sektoru na kartě nebo specializovaným programem. Těch existuje hned několik a některé z nich jsou schopné na SD stáhnout aktuální verzi CHDK. Tento způsob se mi však na mých Windows 10 nepodařil, nicméně spolehlivě pracoval program EOScardWiki. Po spuštění a výběru karty stačí stisknout grafické tlačítko „CHDK RAW“ a následně Save. (V ojedinělých případech  nastavení BOOTABLE příznaku nepomůže – např. pokud máme SD formátovanou souborovým systémem FAT32/vFat. Zde je další možností provést v menu/režimu prohlížení fotoaparátu „upgrade firmware“. Nemusíme se ale bát, žádný upgrade ve skutečnosti neprovedeme, pouze se do paměti zavede CHDK. Po vypnutí/zapnutí fotoaparátu je zaveden opět původní firmware bez CHDK.)

Nyní stačí stáhnout příslušný softwarový balíček a kompletně i se všemi adresáři rozbalit na kartu do kořenového adresáře. Stahujeme verzi, která je příslušná našemu fotoaparátu. Správnou verzi originálního firmware zjistíme např. módu prohlížení současným stiskem tlačítek <FUNC./SET> a <DISP.>. V případě PowerShot A710 IS je k dispozici pouze jedna verze, a to 1.0.0.0. Stahovat můžeme buď stabilní verzi (momentálně 1.4.1) nebo vývojovou (momentálně 1.5). Samozřejmě doporučuji stabilní. Stabilní i vývojové verze jsou dále rozděleny dle velikosti – „small“ (pouze vlastní program CHDK) a „complete“ (CHDK včetně dalších jazyků a scriptů – cca 2 MB).

Máme-li kartu formátovanou souborovým systémem FAT (FAT16), nastaven příznak BOOTABLE a rozbalený software, kartu uzamkneme. Zamknutí provedeme přesunutím zámku na SD do polohy „Lock“. Tím informujeme originální firmware, kromě nastaveného příznaku BOOTABLE, že mám program CHDK uložený na kartě při startu zavést do paměti RAM. Nemusíme se obávat toho, že na kartu nebude ve fotoaparátu možné zapisovat. CHDK toto nastavení interně obejde. Pokud budeme chtít CHDK v budoucnu jednoduše deaktivovat, přesuneme zámek z polohy „Lock“ zpět – směrem k pinům karty.

Start CHDK

Takto připravenou kartu vložíme do fotoaparátu a zapneme. Po zapnutí by se nám na několik sekund mělo zobrazit červené logo CHDK. Stiskem tlačítka <ALT> (Print) se dostaneme do režimu práce s CHDK. Tlačítko <Menu> slouží pro zobrazení již zmíněného hlavního menu CHDK. Opětovným stiskem <ALT> se vrátíme zpět ke standartnímu ovládání.

V režimu fotografování/video bychom měli na LCD vidět několik nových ikonek.

Neduhy

CHDK pracuje na fotoaparátu PowerShot A710 IS takřka bez chyby. Jedinou výtkou může být překrytí některých informačních ikon originálního firmware ikonkami CHDK, ale ty lze vypnut.

V případě ručního ovládání z PC v režimu fotografování není v případě zaslání příkazu „Shutdown“ zasunut objektiv.

Pokud je SD formátována souborovým systémem FAT32, neproběhne automatické zavedení CHDK po spuštění (viz Instalace na SD).

Vzdálené ovládání

Vzdáleným ovládáním mohou být myšleny dvě funkce. Tou první je ovládání tlačítkem zapojeným do USB portu fotoaparátu v módu fotografování, druhou je vzdálené ovládání z PC.

Pokud chceme fotoaparát ovládat z PC, musíme mít nainstalovaného příslušného klienta. V prostředí OS Windows je zapotřebí zaměnit příslušný ovladač za LibUSB. Nejlepší možností jak tento ovladač nainstalovat a přiřadit k zařízení je program Zadig. Ten lze použít i v případě, že operační systém vyžaduje ovladače podepsané certifikátem.

Instalace je jednoduchou záležitostí. Připojíme fotoaparát přes USB port k počítači. Fotoaparát přepneme do režimu prohlížení – play a zapneme. Pod privilegovaným uživatelem spustíme Zadig a z menu Options vybereme volbu „List All Devices“. Následně vybereme z rozbalovacího menu „Canon Digital Camera“ a vpravo vedle zelené šipky zvolíme ovladač s názvem „libusb-win32“. Tlačítkem „Replace Driver“ zaměníme aktuální ovladač za libusb-win32. Odebrání ovladače provedeme jeho odinstalací ve správci zařízení.

Jak jsem již uvedl, ztratíme možnost připojit fotoaparát jako PTP zařízení a pracovat s ním např. jako s diskem. Nemusíme mít ale obavy, že z fotoaparátu fotografie přes USB nestáhneme/nevymažeme. I tyto funkce jsou dostupné z klientských programů, nicméně ne přímo z operačního systému.

Jedním z takových klientských programů je chdkptp. Tento program umožňuje ovládání přes GUI (grafické rozhraní) i CLI (příkazový řádek), zobrazení LCD fotoaparátu, spouštění skriptů v jazyce LUA a přenosy souborů.

CHDK - chdkptp

V pravém horním rohu vybereme příslušné podporované zařízení a stiskneme tlačítko Connect. Přepínání mezi módy fotografování/video (rec) a prohlížení (play) se provádí v menu napravo tlačítky nad rozbalovacím výběrem režimu.

Pro práci s klientskými programy musí být fotoaparát přepnut do módu prohlížení. Následné přepnutí do módů fotografování a video se provádí z počítače.

Skripty

Skripty jsou jednou z předností CHDK. K dispozici jich máme takřka nepřeberné množství. Jejich spouštění se provádí jak z paměťové karty, tak z klientských programů z PC. Samozřejmě máme možnost napsat vlastní. K tomu nám pomůže obsáhlá referenční příručka.

Pokud spouštíme skripty z SD, můžeme po výběru jednoho z nich (vždy může být spuštěn pouze jeden) v menu měnit jeho parametry. Spuštění a ukončení provádíme v režimu <ALT> stiskem tlačítka spouště. Chceme-li skript vypnout, vybereme skript „DEFAULT.LUA“, který nevykonává žádnou funkci.

Závěr

CHDK dokáže rozšířit možnosti fotoaparátu o velké množství užitečných funkcí. Je ale otázka, zda některé z nich využijeme. Obsáhlý popis nalezneme na internetových stránkách projektu.

V mém případě využívám zejména živý histogram a Zebru, nicméně jsem rád i za zobrazení stavu baterie. Takže by se dalo říci, že jsou pro mě nejdůležitější pasivní funkce CHDK.

1 komentář u „Rozšíření možností fotoaparátu díky Canon Hack Development Kitu

  1. Pingback: Odstranění Bayerovy mřížky ze senzoru kamery nebo fotoaparátu | brichacek.net

Leave a Reply