Just got new board to my not-turning-on 50d. It's giving me error 50, doesn't matter if with card or without.
I was able to put ML on card, I'm getting main log: http://pastebin.com/eGGfk3Fp, but no error/asset log.
I'm wondering if it's possible to use ML to get at least approximation of exactly what is causing this problem?
I got an idea to compile ML that will somehow bypass this error and call create_factory_menu_app(), there I would be able to test all stuff and find what's wrong, right?
Well its not an assert:
[MC] Disp Error : 50
You can try to disable those and see if it boots but you probably won't have much luck. Besides that you can try to patch the specific error with a cache hack at startup. Everything got seated correctly when you were putting it back together?
Yep, everything seems to be connected correctly. On original camera state it had burned DC board (replaced), and mainboard with broken CF pins (i believe that here short-circuit happened).
For a short while (only when card with ML is inside) I can switch all parameters on top LCD (iso, shutter, etc) but there's no AF, nor IS sounds (and as I have 28-135 IS, it's very noticeable). That's why I thought about factory menu to find out what's wrong.
Power is going to lens, I compared voltages with my 30d, but when I attach lens/battery there's no "shutter click" when it opens wide open, so I believe that problem is now somewhere on bottom pcb, as all signals goes through it.
I just double-checked all inside connections and even attached old board back (but here no miracles happend), so if it's not some ribbon damaged (i checked connection between main and bottom board using multimeter, it's ok) then I don't have any ideas right now.
Could you direct me how to patch this error in cache hack? I already found solution for assets handler, but as I thought and you confirmed, that's not my case.
First you have to find where the error 50 is called in firmware. Then you patch that to a NOP at startup.
cache_fake(0xaddress, 0xE1A00000, TYPE_ICACHE);
The problem could be that the err 50 comes from some board on the camera. Someone had an err 30 that they couldn't patch like this. If you're lucky its just like an assert in canon firmware though.
see:https://bitbucket.org/hudson/magic-lantern/pull-request/423/bypass-err30-5d2
but I think he deleted the repo.
this is what its related to per canon:
Err 50
Description:
A malfunction related to the electric control has been detected.
Quote from: kitor on April 24, 2015, 12:21:42 AM
(http://i.imgur.com/3Dx2JGy.jpg)
My broken ERR50 50D
That's good, so it may have a chance to be fixed.
Are you able to compile ML? Can you get a detailed log from the dm-spy-experiments branch?
You need to compile with CONFIG_DEBUG_INTERCEPT_STARTUP = y in Makefile.user, and find the stub for GetTaskName.
I don't have time right now to compile stuff, but yes, I'm able to do this :)
It's laying on my desk since 6 months now so can wait another week. I'll post results when I find some time.
Ok, took me a bit more, I just replaced 550d with 5d2 so I have a new toy to play with ;)
About GetTaskName, as I don't see it in stubs.S, I understand that I need to find it using this method? (http://www.magiclantern.fm/forum/index.php?topic=12177.0)
I think I found it: loc_ff06709c (by comparing to 5D2 code, called in another function 2 instructions before string "[JOB ERROR] GetJobID failed"
Left - "known" 5D2, right is 50D
(http://i.imgur.com/8rXykd4.png) (http://i.imgur.com/8rXykd4.png)
I got dm.log: http://pastebin.com/RC0pAdpE
Is it OK?
That's correct.
The log stops pretty early though, without showing any obvious error. To get a more complete log, increase the buffer size (by default it's 64K).
For reference, here's a 60D startup log:
http://a1ex.magiclantern.fm/bleeding-edge/qemu/60D-startup-large.log
Now, full log: http://pastebin.com/Zx1fhWuh
Line 2068: DispConEmergencyStop (PUB)
I compared logs from 60D with mine, and while your looks even more detailed, it fails somewhere there:
Startup:ff860c28:82:02: DispConEmergencyStop (PUB)
Startup:ff963d48:19:03: (PUB) UnlockImagePlayDiriver
Startup:ff963da0:19:03: SetLockState 321
PropMgr:ff86a500:00:01: [PM] DisablePowerSave (Counter = 2)
PropMgr:ff86a570:00:01: [PM] EnablePowerSave (Counter = 1)
**INTERRUP:ff86a500:00:01: [PM] DisablePowerSave (Counter = 2)
**INTERRUP:ff86a570:00:01: [PM] EnablePowerSave (Counter = 1)
MainCtrl:ff820eb8:9c:01: ID:80010000(0)
**INTERRUP:ff86a500:00:01: [PM] DisablePowerSave (Counter = 2)
**INTERRUP:ff86a570:00:01: [PM] EnablePowerSave (Counter = 1)
PropMgr:ff81f050:89:03: PROP_PERMIT_ICU_EVENT (SW = 1, 1)
**INTERRUP:ff86a500:00:01: [PM] DisablePowerSave (Counter = 2)
**INTERRUP:ff86a570:00:01: [PM] EnablePowerSave (Counter = 1)
PropMgr:ff822ad8:85:03: GUI_Control:42 0x0
PropMgr:ff822ad8:85:03: GUI_Control:43 0x1
MainCtrl:ff820eb8:9c:01: ID:80030023(1)
MainCtrl:ff87777c:9c:16: Disp Error : 50
DispConEmergencyStop (PUB) is in both logs. Just after UNlockImagePlayDiriver, there's "SetLockState", call I can't find in 60d log.