Tragic Lantern for 6D

Started by 1%, December 24, 2012, 07:07:02 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


You can build from source and look for bugs. Taking off the pitch did not fix it. Its like FS buffer address is off.

Threw my commits in here:

You can copy into ML repository whatever is good.


Which firmware version are you using the fir on?
Merry Christmas :)


Quote from: sparedog on December 25, 2012, 12:17:58 PM
Which firmware version are you using the fir on?
Merry Christmas :)
good rule of thumb for ML: always asume we're using the latest FW version ;) v1.1.2


I've fixed MZ vsync using 5d3 method.

On 600D I can use either 5d3 or 60D vsync method and get "acceptable" results in 24p and 30p.

I had to change
    msg_queue_receive(vsync_msg_queue, (struct event**)&msg, XXX);

to 10. Its still not perfect with either one and I get a flicker seemingly randomly or sometimes it seems to get off sync and go crazy for a few seconds. I can't get this value right, I've tried 1-10 and 24, 12, 30, 60, etc. The signal appears right, just not the timing of it.

Audio should at least play, it records already. I think I've got the functions right on the latest commit. There are 2 options for some functions like SetAudioVolumeOut. I made  a log, audio_ic_write is right, I don't know about read. Stuff is happening but I hear nothing or audio locks up. Supposed to be AK4646 like the older cameras just can't override sound dev task in new firmware the same way.

For new stuff:
FF6D2A00:   '***** ConvertKeyEventToLvDZoomKey(%d)'
FF1A98D4:   '***** GUI_SetLvDZoomKey handle NULL'

Is this for regular zoom or dzoom?

NSTUB(0xFF35E2CC, str:X3_current_x1_x3_x10_X10_X1)

How does this work? These all look the same as 600D.


I guess this property has to be changed to enable movie AF?

All the touch screen stuff is there too.


Fixed MLU, HTP, ALO and put/relocate things on the info screen.
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.:


Nice, I found dma_memcpy, need to find the rest of the jpeg stuff. I wonder if it will save them with wifi on.


Quote from: 1% on December 29, 2012, 07:48:11 PM
I had to change
    msg_queue_receive(vsync_msg_queue, (struct event**)&msg, XXX);

to 10.

Don't change that, use msleep instead. If you use msg_queue_receive, make sure you send the sync message from the other end (from some LV state object). That call should not timeout in normal operation.


I used the 5d3 EVF sync from the other end. Msleep makes it flicker worse. 6D didn't need anything changed at least.

There are 2 dma memcpy, both look like the 600D one but neither seems to work.

NSTUB(0xFFCD0ABC, dma_memcpy) // V1: FFCD0998 V2:FFCD0ABC

Maybe the parameters are switched arround. When I was decompiling I saw arguments listed in the function names but now I can't find them, its like they got cut off. I even dumped the names to a file.

I tried changing slices and again nothing happens. Qscale and current slice show 0 everywhere I look. I/P numbers change too but nothing seems affected. Could be somewhat like 7D and video runs on slave processor? I figured out how to activate dzoom like on 600D but camera freezes and then "bricks".  I can't find the value of PROP_MOVIE_SERVO_AF, seems like an easy one to activate.

Logs show:
1204:   969.786 [LV] PROP_MOVIE_SERVO_AF_OFF
1197:   967.956 [GUI] PROP_MOVIE_SERVO_AF [0x0]

Dzoom now has dzoom ratio and dzoom step and property manager makes it seem like video_mode property is longer with 7 entries and size of 24.

Log still shows:
968.287 [PRP] mode 0 size 0x0 , framerate 0x1e , type 0xf zoom 0x0

The last 2 entries seem to be same as video_mode[3] and video_mode[4] but it didn't allow me to write with len of 20.

Fixed the assert. 6D has a X1 zoom mode that makes lv_dispsize == 129.
#if defined(CONFIG_6D)
ASSERT(buf[0] == 1 || buf[0]==129 || buf[0] == 5 || buf[0] == 10);
   ASSERT(buf[0] == 1 || buf[0] == 5 || buf[0] == 10);
    if (buf[0] == 1) zoom_was_triggered_by_halfshutter = 0;

Went back to EVF "60D" style sync for MZ because 5d3 sync was flashing while recording.


Beeps work.

Sometimes I get error 70 after multiple beep sounds. Play test tone seems to work repeatedly. Wavs also get error 70 on playback. It worked better with LV off.... I think its a memory issue. Only 42k free. Trying to relocate memory pool like 600D failed, LV/GUI doesn't come up. Camera still starts and takes pictures.


Good news!

6D will load H264.ini files. The settings actually take effect. Encoding mode changes, DRF changes Slice hacking set the DRF, this lets you set a range at least. Maybe these parameters can be changed on the fly too. So far tested all-I without issues with a DRF of 7-20. Most frames were 7. No stops yet, wonder if it will on a full scene or static. Cache hacks will probably do wonders here. Probably can go till the camera freezes.

Even Better, DRF of 1 is possible. There is CBR, VBR and buffer save written by canon. Needs more experimentation.
You can even change the profile level lower.

I can record 120mbps (constant, cbr is mostly CBR) at drf 1.

I don't think qscale and the cbr numbers will work on this camera. Better to expand 5d3 config to auto load different configs or directly change IVA parameters.


Dma Memcpy works on all new cameras. Just have to rename:

AJ_HP_Copy_n_DMA_channel_n_BLTDMA which has the ram offset.

I found the actual function and using it without the offset did not work. I wonder if this holds true for the get jpeg buffer functions too.

High res silent pics work.


Hey 1%,
i'm absolutely amazed by your fast progress, and i'm following with a lot of interest all your posts about 6d developing, keep the good work, i'm your fan ;)))
always trying to use the 100% of magic lantern..
Canon 60D, all the samyang lenses, Canon 50 mm 1.4, Canon 60mm macro, Canon 70-300 usm, Sigma 4.5mm fisheye, Sigma 17-70 2.8, Canon 40mm f2.8 pancake, all the Lensbabies and a lot of other pieces, Flash metz 58 af2



and thanks a lot for the work so far!!! i have one short question:
- will it be possible with the 6d ML to customize the 'magnifying button' function in live-view, as it is in ML for 5d2? precisely, change it so you press ONE time and it magnifies (5x OR 10x) and one more time for it to go back to 'normal'?? (because by now they changed it to be pressed 4x to get back to 'normal' again, and that's a real pain when you work with manual focus)

thanks from berlin!!, and looking forward -



It should be possible with zoom shortcuts. Right now I have it bringing up magic zoom. MZ on half shutter is super annoying.

If you turn of MZ right now and disable 5x or 10x it will zoom to the one you have enabled.


QuoteMZ on half shutter is super annoying.
nooooooooooooo.................... :(


You rather have it on half shutter and then zoom button doesn't do anything while recording and only brings up regular zoom?

Right now:
Zoom button can be configured to either magic zoom or no MZ and regular zoom.
You can still regular zoom on half shutter.

I'd rather be able to zoom with the old star buttons, maybe its possible to remap it.


Here are my plans for the bit rate menu.

*Auto Loading of 4 configs.
CBR - CBR Mode ml/cbr.ini
VBR - VBR Mode ml/vbr.ini
RC  - Canon rate control /ml/rc.ini
H264.ini - User config with load button.

We can override InitialQP and target Bit rate. Yes it does work, yes it will freeze camera on IPB if you go over 60mbps and violate the spec until you load a level 5.1 config.

I will make an auto loader with OFF, ON, Override.

Without the auto loader on you can adjust target bit rate *OR* record at a fixed qp with the initqp toggle.
Everything else can be set in the text files, following what I wrote in the RE thread. This puts video quality on par with 600D and cache hacks, maybe a bit better if you pixel peep. When the matrix loading is figured out this will be an ideal setup. I can't find where the other parameters can be adjusted on the fly, I think they get sent to a second proc or are in registers/ram. Maybe buffer save can be ported over for another rate control mechanism if initQP can be changed on the fly, mine seems to be better at stopping stops than canon's.

You an set the predictors like the old X values too but the scaling is different and they are sent to the jpcore like the old JPCORE set I/P function which i wasn't able to figure out. It had pointers to an address when being called.

What do you think?

What I need to fix before alpha:
*ASIF will not stop and causes error when its done playing. I don't think it stops well even recording.
*Frame ISO seems like the right address, I think eos M has the values backwards but changing them doesn't seem to be working. When I spy that address after dereferencing it changes the numbers when I move shutter/iso/aperture,etc.
*Zoom with focus ring doesn't want to work. Lens is reporting no changes to focus distance.
*ISO changing is (slightly)broken. Hitting ISO while recording just displays it, it will have to bring up ML menu now. ISO changing also stops at 6400 and it should do 10000. Canon is changing and using the digital component now just like ML So I so 640, etc are regular isos you can use. You can even take off more from the canon digic or ml digic menu and make funny ones.

I'd like to get audio monitoring working so audio is useful. Gain can be turned off from canon menu, volume can be set too. Some of this stuff can be done with canon functions now too, no need for low level IC access. But this stuff isn't needed for the alpha.


New Bit Rate Menu.

Time is displayed where qscale was right now. The display bar makes time flicker if placed in the upper right corner. It covers up free space which shows all the time. I'm thinking maybe put active config in place of qscale or Initial QP.

Also I think QP/BR and autoload options can go in submenu. Load Config and Config loaded should be visible with 1 click, otherwise it gets annoying.


I'd make it simple for the user, without complications.

For example:

Bit Rate: click to adjust the main parameter (usually bit rate). Display the preset name and the bitrate + unit (12 what?)
- Preset: CBR / VBR / Canon default / User / etc -> this will choose the config file
- Target bit rate: X mbps (what about saving the new value in the config file, every time you change it?)
- InitQP
- other parameters

Loading should be automatic, maybe from a background task. Too many overrides will confuse the users (I'm already confused). Keep it simple.


Problem is they're all exclusionary.

I.e initqp and bitrate will override what is in the configs. But they behave differently depending on which mode you're in.
In CBR mode this means everything at QP you set. This is as good as setting the config.
In VBR mode it might block flipping of QPs too, then VBR is broken.
In RC mode everything will be at that QP too, I think and recording will overrun as it won't be able to kick it down.

Wish we could just set the parameters from the screen and not load anything from the card but I only found the 2 in memory.

I have to do more testing to find out exactly what blocks what and go from there.


great progress! hope to join you again soon :D


Hehehe, new bug. Zoom box is trapped on "x1" canon zoom.


Seems to be working again. Added flexinfo but need to add more infos like 600D has.


ASSERT: pSuite
at ./PackMemory/PackMem.c:511, task RscMgr
lv:0 mode:16

Magic Lantern version : v2.3.NEXT.2013Jan09.6D112
Mercurial changeset   : 7066eb7b8af6+b27fff222522+ (unified) tip
Built on 2013-01-10 00:57:04 by user@D610.
Free Memory  : 0K + 2928K

*HDR is fixed.


Very fast work you are doing, well done!


Free memory 0K?!

Check ML binary size, it's probably too big. What are the numbers under normal usage?