Sida 1 av 1

"Hacka" Canon 500D

Postat: 11 oktober 2009, 15:42:34
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

Re: "Hacka" Canon 500D

Postat: 11 oktober 2009, 16:07:37
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.

Re: "Hacka" Canon 500D

Postat: 11 oktober 2009, 16:40:30
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

Re: "Hacka" Canon 500D

Postat: 11 oktober 2009, 16:43:28
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.

Re: "Hacka" Canon 500D

Postat: 11 oktober 2009, 16:45:14
av blueint
Ett tips är annars att kika på firmware uppgradering, och definitivt dissassemblera den. För att se hur det fungerar.

Re: "Hacka" Canon 500D

Postat: 11 oktober 2009, 22:08:12
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...

Re: "Hacka" Canon 500D

Postat: 12 oktober 2009, 01:00:12
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

Re: "Hacka" Canon 500D

Postat: 12 oktober 2009, 01:14:22
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.

Re: "Hacka" Canon 500D

Postat: 12 oktober 2009, 01:59:13
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

Re: "Hacka" Canon 500D

Postat: 12 oktober 2009, 07:01:38
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.

Re: "Hacka" Canon 500D

Postat: 12 oktober 2009, 21:52:04
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