User Tools

Site Tools


unbricking

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
unbricking [2012/07/09 17:19] – created a1exunbricking [2012/07/09 17:23] (current) – [Solution 1] a1ex
Line 22: Line 22:
   * PROP_VIDEO_MODE (0x80000039 on 5D Mark III 1.1.2)   * PROP_VIDEO_MODE (0x80000039 on 5D Mark III 1.1.2)
  
-==== **Solution 0** ====+==== Solution 0 ====
 **Simply reboot the camera without a card and clear the settings.** **Simply reboot the camera without a card and clear the settings.**
  
-==== **Solution 0.5** ====+==== Solution 0.5 ====
 **Go to C mode, change the affected setting back and forth from Canon menu, reboot in CA mode, then reboot in M mode. [[http://www.reikan.co.uk/photography/blog/?p=1550]]** **Go to C mode, change the affected setting back and forth from Canon menu, reboot in CA mode, then reboot in M mode. [[http://www.reikan.co.uk/photography/blog/?p=1550]]**
  
Line 33: Line 33:
 If you know what property you have changed last time, should be easy (you need to know a valid value to restore it). If you know what property you have changed last time, should be easy (you need to know a valid value to restore it).
  
-If you don't know... save a debug log (call "dumpf", see [[Debugging|Magic Lantern]]) and look for failed asserts. You'll see something like:+If you don't know... save a debug log (call "dumpf", see [[Debugging Magic Lantern]]) and look for failed asserts. You'll see something like:
  
      11:    50.637 [[STARTUP]] ERROR ASSERT : PropertySatellite.c, Task = PropMgr      11:    50.637 [[STARTUP]] ERROR ASSERT : PropertySatellite.c, Task = PropMgr
Line 39: Line 39:
      13:    50.779 [[STARTUP]] ERROR ASSERT : TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON      13:    50.779 [[STARTUP]] ERROR ASSERT : TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON
  
-So... let's look at the code (with [[GPL|Tools/ARM console]]):+So... let's look at the code (with [[GPL Tools/ARM console]]):
  
- **s TempMovSoundRecord** +    s TempMovSoundRecord 
- ff85e364: 'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON'+    ff85e364: 'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON'
    
- **r ff85e364:** +    r ff85e364: 
- PROP_HANDLER:str:PROP_MOVIE_SOUND_RECORD_FOR_CREAT+420: +    PROP_HANDLER:str:PROP_MOVIE_SOUND_RECORD_FOR_CREAT+420: 
-  ff85e22c: 028f0e13 addeq r0, pc, #304 ; *'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON' +     ff85e22c: 028f0e13 addeq r0, pc, #304 ; *'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON' 
-  'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON'+     'TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON'
  
 Let's decompile this: Let's decompile this:
  
- **dec PROP_HANDLER:str:PROP_MOVIE_SOUND_RECORD_FOR_CREAT** +    dec PROP_HANDLER:str:PROP_MOVIE_SOUND_RECORD_FOR_CREAT 
-  +   
- [[...]]  +    [...] 
-    if arg0 == 67764263/2: +       if arg0 == 67764263/2: 
-        DebugMsg(129, 3, msg='PROP_MOVIE_SOUND_RECORD %d %d %d %d ######', *0x2708, *(arg2), *0x270C, *0x2710, *(arg2), ...) +           DebugMsg(129, 3, msg='PROP_MOVIE_SOUND_RECORD %d %d %d %d ######', *0x2708, *(arg2), *0x270C, *0x2710, *(arg2), ...) 
-        if *(arg2) == 0: +           if *(arg2) == 0: 
-            TH_assert('TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON', 'PropertySatellite.c', 0x270) +               TH_assert('TempMovSoundRecord != PROP_MOV_SOUND_RECORD_ON', 'PropertySatellite.c', 0x270) 
- [[...]+    [...]
  
 Looks like property 67764263/2 = 0x2050013 should not be zero. Valid values are 1,2,3 (with property spy on a healthy camera, or with guesswork if you don't have one). Looks like property 67764263/2 = 0x2050013 should not be zero. Valid values are 1,2,3 (with property spy on a healthy camera, or with guesswork if you don't have one).
Line 69: Line 69:
 What to do? What to do?
  
- In [[276]]: dec TH_assert +  In [276]: dec TH_assert 
- if aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0 == 0 /*EQ*/: +  if aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0 == 0 /*EQ*/: 
-     TH_con_puts('x07Assert: File %s,  Expression %s,  Line %dn', arg1, arg0, arg2) => ret_TH_con_puts_FF814D00 +      TH_con_puts('x07Assert: File %s,  Expression %s,  Line %dn', arg1, arg0, arg2) => ret_TH_con_puts_FF814D00 
-     AJ_msleep_sub1_assert_fail(arg1, arg1, arg0, arg2) => ret_AJ_msleep_sub1_assert_fail_FF814D0C +      AJ_msleep_sub1_assert_fail(arg1, arg1, arg0, arg2) => ret_AJ_msleep_sub1_assert_fail_FF814D0C 
- if aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0 != 0 /*NE*/: +  if aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0 != 0 /*NE*/: 
-     JUMP(aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0)+      JUMP(aAJ_TH_assert_struct_0x19C8_0x00_to_0x08.off_0)
  
 If you really have cojones, [[https://bitbucket.org/hudson/magic-lantern/changeset/9876df05a784|install your own assertion handler]] in order to ignore failed asserts. This should give you access to the menu. But... the consequences of doing this might be **arbitrarily bad** in theory. If you really have cojones, [[https://bitbucket.org/hudson/magic-lantern/changeset/9876df05a784|install your own assertion handler]] in order to ignore failed asserts. This should give you access to the menu. But... the consequences of doing this might be **arbitrarily bad** in theory.
unbricking.1341847149.txt.gz · Last modified: 2012/07/09 17:19 by a1ex