"Hacka" Canon 500D

Planering och tankar kring eventuella framtida projekt.
Barry_Lyndon
Inlägg: 558
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

"Hacka" Canon 500D

Inlägg av Barry_Lyndon »

Hej!

Jag har lite lösa planer på att försöka "hacka" en Canon EOS 500D.
Första steget är att på något sätt "ta sig in" och på något sätt påverka exekveringen på kameran.
Andra steget vore att få kameran att köra egen kod, t.ex. blinka en LED.
Tredje steget är att dumpa firmware från kameran, så att den i sin tur kan analyseras för vidare utveckling.

För den som inte redan vet finns ett projekt som heter CHDK som är en sekundär mjukvara som laddas från minneskortet. Än så länge är CHDK mest inriktat på P&S-kameror, men vissa framsteg har gjorts på DSLR-fronten också.

Min kamera är dock såpass ny att det inte (vad jag vet) finns någon som lyckats köra kod på den.
Det underlättar stort att ha en officiell mjukvaruupdatering att analysera, eftersom man därifrån kan plocka en hel del information om hur uppdateringsrutinen fungerar, och det finns ingen sån till 500D ännu (av naturliga skäl).

Jag har gjort några stapplande försök att ta mig in via minneskortet, men inte lyckats ännu.

Till saken hör att jag inte har nån direkt vana av att koda hårdvarunära, så bara att fixa en fungerande "toolchain" har visat sig lite trassligt... Det är ungefär det jag pysslar med just nu.

Anledning till den här tråden är att få lite feedback på idéer om att komma åt mjukvaran hårdvaruvägen, via t.ex. USB/RS-232/JTAG. Eftersom jag har liten erfarenhet av sånt här tänkte jag bolla lite med er på forumet om saker som är värda att testa och vad som kan vara direkt skadligt för kameran.

Så vitt jag kan se finns det några olika möjligheter att "ta sig in":
1. Autoboot från SD-kort. Verkar inte möjligt utan smärre modifiering av firmware, kameran svara inte på mina försök.
2. Via "firmware update". Verkar lovande, men jag har inte kommit så långt än. Det jag siktar på i första hand.
3. Via USB. Långsökt kanske? Har inte satt mig in i detta så mycket, mest testat gphoto2 som tillåter viss styrning via USB.
4. RS-232/JTAG/I2C eller likn. I batterifacket finns det 2x8 kontakter för ett batterigrepp som jag misstänkter även innehåller kommunikationskanaler.

Kan tilläga att jag så långt som möjligt vill undvika ingrepp i kameran som kan skada den eller nolla garantin (den är inte billig direkt).

Min tanke med 4 ovan är att först utesluta de pinnar som hör till batterigreppets funktioner (slutare, fokus etc.) och sen "lyssna" på övriga pinnar för att se om det möjligtvis finns aktivitet på dem. Förmodligen mha ett modifierat (tredjeparts) batterigrepp. Hur går man bäst tillväga för något sånt? Hur försiktig behöver/bör man vara? Vilka spänningar kan man förvänta sig? Kamerans DC-in är specad till 8.1 V, men det är ju inte omöjligt att det omvandlas upp/ner. Jag vill inte riskera att kortsluta/spänningssätta pinnar som inte tål det. Hur vanligt är det att det finns "booby traps" eller fuse-bitar som låser/dödar kameran? Är det dödsdömt utan att öppna kameran? Även tips om vidare läsning mottages tacksamt.

Jag är fullt medveten att jag tar mig lite vatten över huvudet mtp förkunskaperna, men jag lär mig inget på att inte försöka ;). Vill samtidigt helst undvika att det blir alltför dyrköpta kunskaper...

/Andreas
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av blueint »

En del kameror kör en form av x86 MS-DOS vad jag förståt. Gissar att det är ROM-DOS som avses. Kan ju vara värt att formatera upp en dosvolym med FAT16 och t.ex. v2-v3 som inte innehåller massa konstigheter.
Barry_Lyndon
Inlägg: 558
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av Barry_Lyndon »

Kanske skulle noterat det, men kameran kör (antagligen) Canons internt utvecklade DryOS och processorn är en DIGIC 4 med en ARM9-kärna för styrningen. Jag har testat att köra FAT16/FAT32 med de modifikationer i bootsektor/volymetikett som fungerat på andra EOS-kameror, men det funkar inte på min. Antagligen beror det på en bootflagga som inte är satt i firmware (finns en tråd om liknande problem på 350D i CHDK-forumet).

Som jag nämnde i CHDK-tråden kommer jag försöka utgå från Magic Lantern, eftersom 5D mkII är ganska lik hårdvaru/mjukvarumässigt.

/Andreas
Användarvisningsbild
Calle
Inlägg: 656
Blev medlem: 14 mars 2006, 19:52:56
Ort: Malmö
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av Calle »

Har för mig liknade diskutioner vart aktuella på fotosidan.se och vill minnas man kom fram till att allt va garantier var kört om man vart på å micklat med programvaran i kameran som inte va canons egna grejjes. Bara för upplysnins skull.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av blueint »

Ett tips är annars att kika på firmware uppgradering, och definitivt dissassemblera den. För att se hur det fungerar.
tgr
Inlägg: 726
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Re: "Hacka" Canon 500D

Inlägg av tgr »

Jag satt och läste lite om de grejerna igår fast då med min 20D i åtanke. Lyckades hitta allt som behövs till 400D tror jag.
Dock tycker jag inte det framgick riktigt vad Testfir.fir och autoexec.bin ska göra och hur jag fixar dom för min 20D...
Barry_Lyndon
Inlägg: 558
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av Barry_Lyndon »

Calle: Jo, garantin är nog pantad om man uppdaterar kameran med tredjeparts firmware, det syns ju vid eventuell reparation. Det fina med CHDK:s metod är att den inte påverkar firmwarekoden i kameran. "Firmware update" (inbyggt menyval i kameran) som jag talar om ovan funkar så att den lämnar över exekveringen till den .fir-fil som man anger att man vill uppdatera med. Själva flashningen är i de officiella uppdateringarna integrerad i .fir-filen, den skippar man i CHDK och skriver aldrig till flash, programmen laddas i RAM.

Det är visserligen lite trassel med att .fir-filen skall ha rätt produkt-ID, en checksumma som stämmer och vara krypterad på ett visst sätt för att den skall laddas, men det finns sätt att ordna detta (funkar för andra kameror, bör gå att ordna till 500D).

Om man skulle behöva utnyttja garantin är det bara att plugga ur minneskortet och starta som vanligt, så är kameran i samma skick som innan. Förutsatt att man inte kört något program som sabbar hårdvaran på ett sätt som inte är möjligt i den normala mjukvaran, då kanske servicepersonalen börjar ana ugglor i mossen...

tgr: Det finns ingen färdig port av CHDK för någon av EOS-kamerorna, men det finns folk som jobbar på det och experimentfiler för vissa modeller. Kolla CHDK-forumet för mer info, jag har dålig koll på dina modeller. Informationen är tyvärr lite utspridd mellan trådarna, men jag har för mig jag såg nåt om "farlig" kod för 400D (kan ha vart nån annan modell, ska se om jag hittar tråden). Wikin är tyvärr ganska inriktad på P&S, så en del av instruktionerna där funkar inte på en EOS. Tänk också på att det finns viss risk att "bricka" kameran eftersom DSLR-koden antagligen inte är utförligt testad.

blueint: Skall givet kolla in firmware för besläktade kameror, det mesta borde vara likt när det är likadan processor och OS.

/Andreas
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av blueint »

En sak som jag funderar på är hur man får kameran att göra något när man väl exekverar koden?, I/O, systemanrop etc.. är ju inte direkt dokumenterade.
Canon är ökända för att motarbeta öppenkällkods projekt genom att hålla inne med dokumentation.
Barry_Lyndon
Inlägg: 558
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av Barry_Lyndon »

Ahh, har hittat lite (torftig) info om en debug-port på 300D, skall tydligen vara en vanlig serieport med TTL-nivåer. Då är ju chansen stor att en sån finns på 500D med. Med lite flyt kanske det tom. finns en konsoll! Men det är nog att hoppas lite för mycket, den är förmodligen skyddad på ett eller annat sätt...

blueint: Det enda vettiga sättet verkar vara att dumpa firmware (på ett eller annat sätt, i värsta fall via led->ljudkort), disassemblera och analysera koden. Som tur är finns en del av grovjobbet redan gjort via tidigare släppt/dumpad firmware, så det går att bygga vidare på. Tråden code you HAVE RUN on your dslr innehåller en del godbitar.

tgr: glöm min kommentar om farlig kod, det var ang 40D och en liten snutt kod utvecklarna testade för att få en ordentlig omstart, förmodligen inget du träffar på i ena kompilerad .fir eller .bin.

/Andreas
JanErik
Inlägg: 3191
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: "Hacka" Canon 500D

Inlägg av JanErik »

blueint skrev:En del kameror kör en form av x86 MS-DOS vad jag förståt. Gissar att det är ROM-DOS som avses. Kan ju vara värt att formatera upp en dosvolym med FAT16 och t.ex. v2-v3 som inte innehåller massa konstigheter.
DiGiC II/III kör VxWorks.
Barry_Lyndon
Inlägg: 558
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

Re: "Hacka" Canon 500D

Inlägg av Barry_Lyndon »

Här är en översikt på vilka modeller som kör vilka processorer och OS. Inte säker på att allt stämmer, men i de fall det finns en firmwaredump/uppdatering kan man vara helt säker.

/Andreas
Skriv svar