Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - dlrpgmsvc

#26
Many thanks !
So, beside starting simple debug on 50D in first place, if I want to start debugging with adtg_gui on the master, do it is as simple as to compile it (producing a BIN) and then sign it (if I manage to find how) (producing a FIR) ? Do this automatically tells to the 7D to load and execute the code on MASTER processor ? Or do this involves other operations and steps ?
#27
Many thanks dmilligan and 1% for all this info! I'm reporting and organizing all this hints in the head post! Another question: if, as dmilligan say, ML is running on slave processor, how can dual iso for photo be up and working if (as 1% say) it must be programmed on master proc?
#28
@ dmilligan : many thanks for this hint ! I will try it surely in first place ! I updated the head post


@ 1% :

[1] About "signing" 7D code, I found this thread : http://www.magiclantern.fm/forum/index.php?topic=7795.0, where it's stated that we can't sign a .BIN to make it a .FIR. Do this is correct ? But I don't understand if the tool to sign the BIN is a thing that only some ML coders knows, or if it's a thing that no one in ML pool knows or have in his hands. Also, if we can compile regular official 2.3 ML and nightly BINs for the 7D branch, and they works, this implies that all we know how to sign 7D BINs, right ? And this should be clearly written inside a makefile, right ? Here there is written that we CAN sign BINs for 7d : http://magiclantern.wikia.com/wiki/FAQ. So ? What is the thing that can stop us (and me) into trying to sign a bin, as you wrote "you probably won't be able to do master side on 7D since it has to be a SIGNED bin... ie a fir" ? Can you head me to a link where I can learn the process to sign a BIN for 7D ? Many thanks !

[2] We are currently debugging the MASTER processor (as the branch name implies). How to debug the (secondary? slave?) one ? If no one knows how, do there are clues on how to hook it ? Do it would be of interest ?
#29
Great !


Some confirmation requests, just to not take the wrong files up :

[1] So, do I have to use your branch here: https://bitbucket.org/OtherOnePercent/tragic-lantern-2.0/src/fe768c4e30178ab7625346d8530e6b135c92a11d/platform/7D_MASTER.203/?at=unified (do this is your current and right repo?)
or do I have to use the official repo branch here : https://bitbucket.org/hudson/magic-lantern/src/a27e3b9df491d1bfa2cba70def5fb873486980e1/platform/7D_MASTER.203/?at=unified   ?

[2] What do you mean by "sign a bin so it runs" ? Do you mean to simply compile it ?

[3] For 50D addresses where all functions are, Do you mean here: https://bitbucket.org/OtherOnePercent/tragic-lantern-2.0/src/fe768c4e30178ab7625346d8530e6b135c92a11d/modules/adtg_log/?at=unified   -->  inside "adtg_log.c" source file ? (just to be sure not to take the wrong repo)


And some other questions :

[4] We are currently debugging the MASTER processor (as the branch name implies). How to debug the (secondary? slave?) one ? If no one knows how, do there are clues on how to hook it ?

[5] Do there are chances to find interesting actions into the secondary processor, even perhaps these dual iso registries manipulations ? Or do it has been cleared that slave proc is uninteresting ?
#30
@ mk11174 : Hi ! Many thanks for your intervention ! Don't worry if you don't remember, it's normal. Many thanks anyway !

@ 1% : Many thanks for the GDB hint and for the findings updates so far ! I updated the head post ! On the link I posted on the head here, I read that GDB ML part have to be changed in order to be adapted for different cameras. Do you have the modifications to be done in order to make it working for 7D ? Do you have hints on how to debug the master and the (slave?) processor separately ? Also: do exists a debugger for this GDB (for the Windows PC side) that works in Windows OS instead of the one proposed that works inside Linux OS ? Do you have more info on the 50D single register found and, if already discovered, more info on the 7D register ? Many thanks again ! 50D is another interesting camera, and I will soon open a "dual_iso for movie mode porting" thread also for her ! Because, like you said, if one developer can break-in in 7D or 50D solution, then the other camera can benefit immediately of the discoveries made: same display filter method. So they can be paralleled.
#31
For 1% :

The addresses was found by mk11174 more than one year ago. You can find his post here: http://www.magiclantern.fm/forum/index.php?topic=5582.900 and scroll down towards the end of the page. How they was found I don't know, and for this reason I wrote to him a PM. When he will reply, I will post here the method he used. I don't know if he logged these values or if he simply reviewed the sources for some clues, and where. I'm waiting a reply from him.

Do you have a link or hints on how to discover changing regs for LV for ISO? Also: do you think that an absence of changing regs when changing ISO is a sure clue that the camera cannot use dual iso in movie mode, or is it simply a lack of clear grips on where we can hang in order to achieve this feature? In the first case we will cease to put efforts on this, but in the latter we can still search, even with more difficulties, perhaps by manually searching the sources for clues. If dual_iso module works by manipulanting registers, then the lack of changing registers is a clear sign that it will never work if no registers are changing, but what if another method can be implemented for those cameras that have no changing registers? What is your thinking?

550D has LCD state, you can find it here: http://magiclantern.wikia.com/wiki/Properties/550D by searching for "LCD STATE" inside the page. How this register can be involved into this finding problem ?
#32
This thread is for concentraring all the findings, discoveries, and tries to port the dual_iso feature in movie mode for the 50D and 7D (currently it works only in photo mode on both cameras).
All bits of useful informations on how to obtain this goal are welcome here.

Why 50D and 7D together in a single thread ? Just because 50D has the same display filter method used on 7D, so, if someone discovers something on 50D or 7D, then the other camera can benefit immediately of the same findings.

Everyone that tried or is currently active into porting this feature on the above cameras, is invited to post here his current efforts, in order to be of help for others and to be helped from others also.

This first post is kept updated with the last findings highlights and with the current porting status.


50D CURRENT STATUS : NOT PORTED YET
7D CURRENT STATUS   : NOT PORTED YET


GENERAL UP-TO-DATE FINDINGS :

[1] The unified method used into current "dual_iso" module, regarding dual iso in MOVIE mode, seems not applicable for 50D and 7D.
     A completely NEW method seems to be discovered and developed for these cameras. But works are in progress to validate this thinking.
     As stated by 1% : "the only real hope would be finding other regs for dual ISO that directly configure the digic/sensor".

[2] 50D has the same display filter method used on 7D, so, if someone discovers something on 50D or 7D, then the other camera can benefit immediately
      of the same findings. So, feel free to take advantage of findings found on both cameras, without concentrating only on a specific one when reading there.

[3] Starting from 7D to discover how to do dual iso for movies, is the hard but only way if you own only the 7D. Instead, based on point [2] of the findings section,
     it is a better and easier way to find how to do this on 50D, and then, once discovered, the porting on 7D will be likely an (almost) copy-paste matter.


7D UP-TO-DATE FINDINGS :

[1] Based on 1% and other valuable developers current experiences, SLAVE debugging will get you nowhere : Dual_ISO for photo on the 7D is on the master, so likely it is also for video.
                                     

GENERAL UP-TO-DATE DIRECTIONS :

[1] You can find the dual_iso module sources by following this source path : " Magic Lantern / modules / dual_iso / "

[2] You can open the file " dual_iso.c " and find the line number 675 where the function " static unsigned int isoless_init() " is defined.
     Inside this function, you can find all the constants definitions subdivided by camera model. Concentrate on the block that is for 50D or 7D.
     You can see there is a constant declaration serie named " PHOTO_CMOS_ISO_xxxx ", where " xxxx " are various names: these are for PHOTO mode.
    We have to find the constants named " FRAME_CMOS_ISO_xxx ", present on other camera models blocks definitions, that are for VIDEO mode.

[3] The values to find are the following (WARNING: be careful trying to find them, it seems that a new method must be developed, read further down) :
     FRAME_CMOS_ISO_START = it is the CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
     FRAME_CMOS_ISO_COUNT = it is the number of different ISO values from ISO 100 to xxxx, where xxxx is the max ISO value allowed for 50D or 7D
     FRAME_CMOS_ISO_SIZE  = it is the distance between ISO 100 and ISO 200 CMOS registers addresses, in bytes
     You can simply add these constants declarations into the 50D or 7D block and compile, then you can see if the values found are right or not by running ML on camera,
     by activating dual iso in movie mode and start recording, then evaluating the resulting recorded video file. Beware: possible camera brickings are your
     responsability only. Nor me or ML can be held responsible for any damage caused by these experimentations on your camera or equipment.

[4] Example PHOTO findings for 550D (WARNING: be careful reading this, because it seems that a new method must be developed, read further down) :
     By examining the disassembly of the 550D ROM, the following was found :
                  ADDRESS
     00 0000 406941E4               = 100     ISO
     00 0024 406941F6               = 200     ISO
     00 0048 40694208               = 400     ISO
     00 006C 4069421A               = 800     ISO
     00 0090 4069422C               = 1600   ISO
     00 00B4 4069423E               = 3200   ISO
     Hence, the registers values are :
     PHOTO_CMOS_ISO_START = 0x406941E4;  // CMOS register 0000 - for photo mode, ISO 100
     PHOTO_CMOS_ISO_COUNT = 6;                 // from ISO 100 to 3200
     PHOTO_CMOS_ISO_SIZE  = 18;                 // distance between ISO 100 and ISO 200 addresses, in bytes

[5] On 50D or 7D SLAVE, just compile with the switch GDB=Y and use the ADTG_LOG module. 1% have the addresses in his repo where all the functions are :
      https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/80d0d727990254e45184b2a4e57aef5ae182a23b/modules/adtg_log/adtg_log.c?at=unified
      Copy the 50D or 7D addresses to whatever ML you are compiling and get rid of whats there. the modules only work for one camera at a time.
      As per 1%, uncomment whatever the ones you need. The reg on 50D or 7D should show up in the logs pretty quickly, ISO value matches photo mode values. Changing it did nothing
      so you need to find a completely new method to dual ISO or see what is going on. For more info on this method, see point [3] under "INSTRUMENTS YOU CAN USE IN GENERAL
      (50D AND 7D SLAVE MODE ONLY)" under here. However, if you are on a 7D, BEWARE on point [1] under "7D UP-TO-DATE FINDINGS": in SLAVE mode there is nothing to find, so you
      have to use this method under MASTER processor, but in this case you have to "sign" the BIN (see point [1] on "7D UP-TO-DATE DIRECTIONS" just here below).


7D UP-TO-DATE DIRECTIONS :

[1] Please, note that 7D has TWO processors inside. So, debugging is a bit more complicated: two different processors (the "master" and
     the "slave") must be debugged separately in order to find complete informations.
     The processor on which ML is based is the SLAVE. It can run ML code with a simple compiled BIN file, like for the majority of the other cams.
     The MASTER processor, on the other hand, can run ML code only if the BIN file is "signed" with a particular private "signing key" (known only to few
     ML developers, because it cannot be of public domain, peraphs for Canon copyright reasons). So, if you want to debug the MASTER processor,
     you have not only to compile the BIN as usual (by using the same procedures for the SLAVE processor), but you have, as the final step, to
     "sign" it, making it becoming a file with .FIR extension. You can try to ask devs for the key, or you can ask them to sign your BIN for you, but
     they have to agree to your request, and this is not assured by any way. Compiling for MASTER is useful (for now) only to find registers changes and others
     manipulations done by the master, but then, once discovered these operations, you can implement them down to the SLAVE without problems.
     Like 1% says, you can read/write small amounts of data to the master through canon provided mechanisms (using the SLAVE processor), and this is enough
     for headphone/fps and few registers. Taking over canon functions (ie: to do GDB or registers logging on MASTER) needs our own code running there (on MASTER).
     You can follow directions and you can start compiling for the MASTER processor in the 7D MASTER processor branch here:
     https://bitbucket.org/hudson/magic-lantern/src/a27e3b9df491d1bfa2cba70def5fb873486980e1/platform/7D_MASTER.203/?at=unified

                                             
INSTRUMENTS YOU CAN USE IN GENERAL (50D AND 7D SLAVE MODE ONLY) :
                                                       
[1]  On dmilligan advice, you can use a more visually engaging and immediate debug method by using ADTG_GUI module you can find here:
       https://bitbucket.org/hudson/magic-lantern/src/a27e3b9df491d1bfa2cba70def5fb873486980e1/modules/adtg_gui/?at=unified
       you can compile it and then you can put the compiled files inside the other modules directory, then you can select it from the ML modules menu.
       Also, you need a special compilation switch when compiling the main BIN file: follow the directions inside the above link.

[2]  As on 1% advice, GDB (a log file debugging method) can be used in order to discover behaviors and registers on 50D and 7D. GDB is a debugging
      environment that is loaded into camera like the normal ML main program and in LIEU of it. This writes debug data to a
      log file inside the memory card, from which you can analyze data inside it by downloading and reading it through a PC and a card reader.
      More info and files to download in order to get started can be found here: http://www.magiclantern.fm/forum/index.php?topic=2940.0.

[3] You can use ADTG_LOG module. It's similar to ADTG_GUI module as on point [1], but it's not visual, and instead of writing registers on screen, it
     writes results on a log file inside a directory located on camera memory card. Also, you cannot write into register as you can do in ADTG_GUI.
     You can find 1% version on his repository here (disregard it's for 6D):
     https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/80d0d727990254e45184b2a4e57aef5ae182a23b/modules/adtg_log/adtg_log.c?at=unified
     or, alternatively, you can find it on the unified original ML repository here:
     https://bitbucket.org/hudson/magic-lantern/src/a27e3b9df491d1bfa2cba70def5fb873486980e1/modules/adtg_log/?at=unified


INSTRUMENTS YOU CAN USE FOR 7D MASTER ONLY :

[1] Same as point [2] under previous section (read it for more info) but there is a difference:
      in order to work inside the 7D MASTER processor, based on 1% instructions, you need to set up code in the 7D master branch
      (there are skeletons in there for other registers), but then you need to "sign" the bin in order for it to be run on MASTER: more info on this
      can be found above under "7D UP-TO-DATE DIRECTIONS" at point [1]. The 7D MASTER branch can be found on 1% repository there:
      https://bitbucket.org/OtherOnePercent/tragic-lantern-2.0/src/fe768c4e30178ab7625346d8530e6b135c92a11d/platform/7D_MASTER.203/?at=unified
      or it can be found also under the official ML repository there :
      https://bitbucket.org/hudson/magic-lantern/src/a27e3b9df491d1bfa2cba70def5fb873486980e1/platform/7D_MASTER.203/?at=unified

[2] Same as point [3] under previous section (read it for more info) but there is a difference:
      in order to work inside the 7D MASTER processor, based on 1% instructions, you need to "sign" the resulting BIN in order to make it running on
      MASTER processor: more info on this process can be found above under "7D UP-TO-DATE DIRECTIONS" at point [1].
#33
Camera-specific Development / Re: Canon 7D
October 13, 2014, 05:36:46 PM
Up...
#34
Camera-specific Development / 3d for features porting
October 12, 2014, 04:14:28 PM
Where I can open a technical topic on a specific 7D porting feature (for example dual_iso for video) where to discuss and share programming results until the goal is reached ?
Many thanks !
#35
Forum and Website / Re: ML features page lack
October 08, 2014, 12:11:23 PM
Many thanks!

In order to prepare a local development/debug environment, I proceded as follow :

[1] I forked the ML repository to my repository
[2] I downloaded the repository to my Windows PC and unzipped to a directory
[3] I downloaded and installed Python 2.7 to my PC
[4] I downloaded and installed Mako 1.0.0 to my PC

However, By launching features-html.py, the output is incorrect and incomplete, you can see an example here : http://www.ufo.verona.it/prova.html

I can see there are some external shell commands... Linux ? They cannot be executed in Windows... Do it's this the problem ?

How to proceed ?

Many thanks !
#36
Forum and Website / ML features page lack
October 02, 2014, 10:30:11 PM
The ML features page here: http://builds.magiclantern.fm/#/features

[1] Lacks into the differentiation of "dual_iso" module use for photo and for video: some cameras can use dual iso both for photos and videos, and some others can only use dual iso feature only for photos. But there is no indication here.
Do it is possible for someone to add this differentiation ? Many thanks !

[2] Lacks into the differentiation of "fps_override" feature for RAW and for H264 modes. For example, 7D is only able (for now) to use fps override only in RAW mode and not in H264 mode.
Do it is possible for someone to add this differentiation ? Many thanks !

I can help maintaining this features page for my small contribution (limited to 50D and 7D) if needed. Let me know !
#37
Camera-specific Development / Re: Canon 7D
September 27, 2014, 03:27:59 PM
Quote from: vyskocil on September 27, 2014, 03:10:47 PM
With the latest sources I could record about 1 mn 40s (2423 frames) of full HD raw video at 1920x1080@24p (FPS override) in 5x crop mode with Canon Liveview, sound and global draw ON with Zebras and Focus Peak !
I think this is outstanding, a great achievement :-)
My CF is a Komputer Bay 64GB 1000x.
Wow! Magic or tragic lantern? Can you give us the download link? Many thanks!
#38
Camera-specific Development / Re: Canon 50D
September 07, 2014, 12:02:47 AM
My 50D goes up to 82mbps with no problems. Some data in the spreadsheet is not updated...
#39
Camera-specific Development / Re: Canon 50D
July 08, 2014, 10:04:12 PM
Good job PhilK! Many thanks!
#40
Camera-specific Development / Re: Canon 50D
July 04, 2014, 09:44:13 PM
Great philk! Yeah! And great kolen for your idea! I think devs could try to implement this menu call to prolong recording! Please, chime in someone! :-)
#41
Camera-specific Development / Re: Canon 50D
July 04, 2014, 08:23:49 AM
@kolen : when 30 secs countdown starts I dunno. Also I didn't tried to go into the menu trying to fool  and reset the timer because I don't have a large enough card. Can you try and report? It would be very interesting! Many thanks if you can!
#42
Camera-specific Development / Re: Canon 50D
July 01, 2014, 03:15:32 PM
Quote from: kolen on June 28, 2014, 01:02:11 PM
For the 12 min limit, do you refer to h.264 video?
Yes. In reality it is a 4gb limit, that using h264 is reached in 12mins. Raw does not have this limitation but there is a 30min timeout hardcoded into the canera that shuts down the lcd screen and so it stops raw recording. No ML overrideable. However, at any decent resolution, recording raw will fill up any nowadays most biggest cf cards far before reaching the 30mins limit...
#43
Camera-specific Development / Re: Canon 50D
June 28, 2014, 12:32:01 PM
Yes, there is also a 12min time limit that is not overridable by ml. You can only set to resume automatically the recording after each 12min time chunk, but you will lose some recording seconds. So, definitely: if you need very long continuous recording, head for a more classical video-camera...
#44
Camera-specific Development / Re: Canon 50D
June 27, 2014, 02:43:03 PM
@kolen: with the latest tragic build it is technically possible to fullfill any card size with continuous raw video. On the other hand, so much time you indicated brings so much heat buildup  that record will stop. Also, battery  cannot last so much time in raw mode, even with a battery grip. For these reasons, no one so far tried to see if there would be audio sync problems  for so much recording time.
#45
Camera-specific Development / Re: Canon 50D
June 26, 2014, 09:22:51 AM
Quote from: kolen on June 26, 2014, 09:17:09 AM
Hi. Sorry I couldn't confirm it by googling it: Does RAW video on 50D has 4GB limit? Will it span automatically? What's the largest card that it support?
Thanks.
it spans autobeautyfully. There is no limit about the maximum capacity of the CF card you can use on the 50D.
#46
Feature Requests / USB keystrokes sender / receiver
February 26, 2014, 02:09:24 PM
There should be a "simplified" version of "ML controller for Android" where we use an android tablet only to simulate the camera keystrokes, and we can see the results on a HDMI external monitor. Not a full ML menus replication on the tablet: this full replication will require a continuous updating effort to catch-up with the latest ML version: unfeasible.
Also not a canon lcd-to-tablet replication with full ML overlays, because also this will require a continuous versions catch-up. For monitoring with full ML overlays, we will use a simple HDMI monitor.

This "only keystrokes sender/receiver" will be useful for jib cranes operations and other similar cases where a remote controller station is a must.

I'm thinking we can arrange an "Android/pc USB keystrokes sender" on the remote side, and a "usb keystrokes listener" process inside ML (as a module will be perfect), based on a polling or (best) on interrupt.
We can arrange a standard "USB command-to-camera key" mapping table, and then all the subsequent new ML versions will be 100% compatible with the unified "Android/PC - to - Canon camera" remote protocol.

Obviously, we can add also the classic PTP protocol part, used for follow-focusing, changing the aperture and so on with a single command.

The setup will be : external HDMI monitor + Tablet pc / Android canon camera remote control surface (there will be only depicted on screen the various camera buttons, each pushable by a tap).

Programmatically speaking: for the receiver side (ML code), we can write a USB-command listener routine (activated by interrupt) that, upon receiving the key-press command from remote party (pc or android, via USB), triggers artificially the corresponding canon body key-press event interrupt routine. So that the rest of the ML code will remain untouched. Do some ML coders here can confirm that this is feasible ?

What I have found so far that can be useful : http://www.magiclantern.fm/forum/index.php?topic=10554.0
                                                                  http://magiclantern.wikia.com/wiki/GUI_Events/550D
#47
Moved to fetures requests  ;)
#48
RAW or H264 ?
#49
Great! Many thanks mk11174 !
#50
Quote from: dafassi on January 14, 2014, 08:38:57 PM
I think developing for the EOS550D has been stopped, hasnĀ“t it?

It apparently seems so...  :-\