Magic Lantern Forum

Magic Lantern Releases => Camera-specific discussion => Topic started by: a1ex on May 14, 2014, 03:09:19 PM

Title: Canon 500D / T1i
Post by: a1ex on May 14, 2014, 03:09:19 PM
As you know, a while ago I've got a used 500D (http://magiclantern.fm/forum/index.php?topic=2317) for the purpose of studying how to reflash it (that is, brick it somehow and then attempt to recover it). I'm not exactly there yet with understanding Canon's startup process (some progress here (https://bitbucket.org/hudson/magic-lantern/commits/branch/dm-spy-experiments) and here (http://www.magiclantern.fm/forum/index.php?topic=2388.0)), so meanwhile I've ironed out some ML bugs.

The new installer is working (starting from April 22, 2014), so you can install it directly from nightly builds (http://builds.magiclantern.fm/). Therefore, the install process is now as simple as:


Installation:
1) Format the card from the camera.
2) Make sure you are running Canon firmware 1.1.1 (http://www.canon-europe.com/Support/Consumer_Products/products/cameras/Digital_SLR/EOS_500D.aspx?type=download&page=1).
3) Copy ML files (http://builds.magiclantern.fm/) on the card and run Firmware Update.

Uninstallation:
1) Run Firmware Update from your ML card.
2) Follow the instructions.

(http://a1ex.magiclantern.fm/bleeding-edge/new-installer.png)


Raw video (the old-style raw_rec (http://www.magiclantern.fm/forum/index.php?topic=5247.0)) is also working (starting from today, May 14). Please discuss raw recording usage in the Raw Video (http://www.magiclantern.fm/forum/index.php?board=49.0) section, not here.

You should not expect ML for 500D to be as polished as on the larger cameras, but it's pretty good as a development platform, and fairly cheap if you want to do dangerous experiments on it.

Don't just report issues. Go ahead and fix them!

(start here (http://www.magiclantern.fm/forum/index.php?topic=991), and once you fix or improve something, follow this tutorial (http://www.magiclantern.fm/forum/index.php?topic=7940.0) to submit your contribution)
Title: Re: Magic Lantern for 500D
Post by: Hey on May 18, 2014, 12:01:01 PM
Hi a1ex, thank you for making ML available for the 500D.

Using a recent nighlty, I can't use the video mode; as soon as I start recording it crashes and I have to restart the camera (err 70). I'm sorry but I won't be able to fix that as I don't have any programming skills (except html :P). So yeah here are the logs.

Also, it would be good to update the feature comparison matrix with "unofficial" modules; for example the 500D is the only camera to not support the bolt trigger one, and I wouldn't know it without asking the developer/scrolling through all the reply.

Thank you for your time. Hopefully this will help.

CRASH00_500D_Video.LOG
https://mega.co.nz/#!UAYzlYJC!TvRepZ52jtCtEFAbPtNirOS7wh-85K8mhT6KtdbjfkU (https://mega.co.nz/#!UAYzlYJC!TvRepZ52jtCtEFAbPtNirOS7wh-85K8mhT6KtdbjfkU)

log000_500D_Video.log
https://mega.co.nz/#!cBg2nITD!syFqKSjfj-h6PnaDTO3EKR6LimK_T4S4kfKQc8E-P4U
Title: Re: Magic Lantern for 500D
Post by: a1ex on May 19, 2014, 11:36:03 PM
This is a strange bug triggered on 500D by simply drawing on the screen. Therefore, it can't be solved (at least not with my current knowledge).

Last time I've checked it was working though (recording for at least 30 seconds). Try turning off Global Draw, then turn overlays back on one by one until you find the buggy one, then slowdown the corresponding drawing code by adding asm("nop") calls.

Sure, if anyone finds a better solution, would be great.
Title: Re: Magic Lantern for 500D
Post by: josepvm on July 18, 2014, 11:38:15 AM
 Full HD H.264 video recording works now with Global Draw enabled, using the new Nightly Builds.

So you can use Focus Peaking, see the live histogram, etc.  Great !  :)

And raw recording is also working (both raw_rec and mlv_rec).  With 864x486 maximum resolution, if you want continuous shooting, inside the 21 MB/s data transfer limit for SD bus  (I mean "continuous" with  4GB max file size, of course, as 500D uses FAT32 formatted cards).

For raw video disabling global draw is needed. If you try to enable it, recording will fail after a few seconds. 


Title: Re: Magic Lantern for 500D
Post by: a1ex on July 18, 2014, 12:55:05 PM
... which confirms this bug is very unpredictable; with the same build and same settings, I bet you'll get a crash sooner or later.
Title: Re: Magic Lantern for 500D
Post by: kyrobb on August 23, 2014, 08:10:59 PM
Will the 500D shoot 23.976 fps at full 1080 with fps override? In h.264 compressed mode of course?
Title: Re: Magic Lantern for 500D
Post by: josepvm on August 29, 2014, 12:06:14 AM
Will the 500D shoot 23.976 fps at full 1080 with fps override? In h.264 compressed mode of course?

No, It's not possible.

See this post from Greg:
http://www.magiclantern.fm/forum/index.php?topic=10111.msg125888#msg125888 (http://www.magiclantern.fm/forum/index.php?topic=10111.msg125888#msg125888)
Title: Re: Canon 500D / T1i
Post by: musartsmitty on January 10, 2015, 08:29:04 PM
 Are the BMH (on camera help files) available for the Jan 03, 2015 nightly build? They were not in the /ml/doc directory of the zip file I downloaded!

Also is there a reason for ISO 25600 being removed from ML v.2.3.500d.111?

Tks
Title: Re: Canon 500D / T1i
Post by: Greg on January 10, 2015, 09:02:36 PM
Analog ISO 500D is 1600, any higher value no make sense. This can be done in postprocess.
Title: Re: Canon 500D / T1i
Post by: Tralfaz on February 09, 2015, 04:52:00 PM
Hope this is the right spot.

Just picked up a used Canon T1I - 500D.  Verified my firmware was 1.1.1 and installed Magic Lantern on it.  While going through the menus checking everything out, it showed the Internal Temp as "157 raw (help needed)".

Does anyone know what this means and is it dangerous for my camera?

Thanks in advance...
Al
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on February 09, 2015, 05:25:06 PM
Does anyone know what this means

You may help spending some time and effort
http://www.magiclantern.fm/forum/index.php?topic=9673.0

Title: Re: Canon 500D / T1i
Post by: Tralfaz on February 09, 2015, 06:08:15 PM
Thank you Walter.  I had tried searching for 'internal temp' and 'help needed', but didn't find anything like the link you provided.  Even looked in the ML manual.  I didn't realize the 'help needed' was a way to ask for my help for this camera.  I thought it meant I needed to get help for my camera! LOL

Anyway, I am in the process right now of putting together the temp values to post in the other link when everything is done. 

Thanks once again for the quick response.
Title: Re: Canon 500D / T1i
Post by: od4g on March 29, 2015, 03:12:33 AM
Is it just me or is there no Bulb Ramping on the 500D/T1i? I had 1.1.1 installed before I installed ML. Everything seems fine, no errors, however I just have no option for Bulb Ramping. Searching Google and these forums hasn't led me nowhere. Intervalometer and Bulb Timer are there and working, but Ramping is nowhere to be found. I was really looking forward to trying it out. If it's not just me, is it in the works or never going to happen? Should I try a previous nightly and/or uninstall and reinstall Canon 1.1.1 and then ML (Edit: tried a few back to January with no luck)? Oh yea I just started with the 3/28 nightly. Any input would be appreciated. Thanks for everything else that's included though! Cheers.
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on March 29, 2015, 08:59:42 AM
Bulb ramping has gone. http://www.magiclantern.fm/forum/index.php?topic=5705.0
Title: Re: Canon 500D / T1i
Post by: nate01 on August 16, 2015, 01:28:50 PM
Does anyone thing that there will be a forthcoming fix for continuous recording on the 500d at any point? I wish I could do it myself, but I lack the necessary skills... sadly!
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on August 16, 2015, 01:36:40 PM
What are you missing?
Seamless recording beyond 29:59 in MLV/RAW was implemented in nightly builds about 6 months ago.
Seamless recording in H.264 is not possible. Limit is coded in Canon firmware (at time of writing) and you will loose about half a second at 29:59.
Title: Re: Canon 500D / T1i
Post by: Arubeto on August 29, 2015, 05:52:23 PM
Hi there,

I read about Magic Lantern in a magazine about digital photography ("ct Digitale Fotografie" in Germany) and wanted to try out ML with my Canon EOS 500D.

The article in the magazine said there were nightly builds and stable release for most cameras, but as far as I understand, this differentiation is not the case anymore. If I got the opening post in the thread right, installing "nightly builds" only is the way to go now. On https://builds.magiclantern.fm/#/ there is an option to show older builds. Since atm. I only want to use the additional function ML unlocks/provides, I'd be very interested in which of those previous versions/builds for the 500D could be considered the last "stable" version which a user should install.

Thanks in advance!

Arubeto
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on August 29, 2015, 05:59:45 PM
http://www.magiclantern.fm/forum/index.php?topic=15045
Title: Re: Canon 500D / T1i
Post by: thepianoneedswater on January 25, 2016, 07:56:13 PM
Can the 500D actually go above 1/4000 shutter speed with still photography? I was attempting to take wide aperture photos outside in the snow, but there's too much light. I've put it in live view and enabled exposure override, but above 1/4000 I see no difference in live view or in the photos. The resulting photo reports 1/4000 as the shutter speed when ML shutter is set for 1/8000.

Thanks
Title: Re: Canon 500D / T1i
Post by: Greg on January 25, 2016, 09:24:12 PM
Mechanical shutter - 1/4000 (photo)
Electronic shutter - 1/8000 (video)
Title: Re: Canon 500D / T1i
Post by: zcream on March 20, 2016, 08:41:06 PM
I got two contradictory comments on 1080p video. One suggested I can only do 1080p at 21fps. Another said that 1080p 30fps in working. Can we do 1080p at 24 or 25p ? At what max bitrate ?
Thanks!
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on March 20, 2016, 09:03:14 PM
RAW or H.264?

RAW: Maximum bitrate (card interface limit) is about 21 MByte/s and 1080p30 requires about 5 x 21 MByte/s for continuous recording.
Title: Re: Canon 500D / T1i
Post by: Quba on April 04, 2016, 05:27:03 PM
Hi everyone!

Is there some news about this crash?
With my camera I can shoot video until I make ML menu appear (in order to change expo setting, eventually). Then the ERR 70 crash happen.
I tried with all Expo override, GlobalDraw, movie tweaks and even energy saving disabled, the same thing happens everytime.

I wrote an Issue here : https://bitbucket.org/hudson/magic-lantern/issues/2487/eos-500d-crash-when-recording-video-err-70

Then I found old builds of ML here : https://bitbucket.org/hudson/magic-lantern/downloads
But I don't have all features I had before update... Such as Stack focus, Movie Tweaks and others....

Where can I find ALL older versions of ML in order to find the one I had before?

Thanks
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on April 04, 2016, 05:32:16 PM
https://builds.magiclantern.fm/jenkins/job/500D.111/
Title: Re: Canon 500D / T1i
Post by: a1ex on April 05, 2016, 06:16:16 PM
That crash can be triggered by simply drawing on the screen while recording, even with a minimal autoexec that does nothing else. So... I have no idea how to fix it.
Title: Re: Canon 500D / T1i
Post by: gwhite0992 on December 26, 2016, 06:15:27 PM
I am new to ML and use it mostly for bracketing. Recently I wanted to take video and to my surprise, the software crashed after a minute and a half repeatedly. (err 70) I noticed that the display has so much info that I didn't need so I used the disp button to reduce the clutter(small movie camera bottom right). The crashing stopped. Hope this is helpful  (nightly 20160ct9)
All settings were the default settings. Has anyone else has success with this change?
Title: Re: Canon 500D / T1i
Post by: thearczoro on December 31, 2016, 12:50:29 PM
Yeah, I notice that error while recording with default setting.

CRASH00.log
Code: [Select]
ASSERT: FALSE
at SoundDevice\SoundDevice_CODEC.c:1080, task ASIF
lv:1 mode:20


Magic Lantern version : Nightly.2016Dec19.500D111
Mercurial changeset   : 4f72a0eabb16 (unified) tip
Built on 2016-12-19 00:14:22 UTC by [email protected]
Free Memory  : 134K + 2985K
Title: Re: Canon 500D / T1i
Post by: Applenet on January 10, 2017, 10:47:25 PM
Just trying out video, and thought I'd look to ML.

I'm down at the first hurdle. The T1i firmware on my camera is 1.1.0 and on the Canon site it's 1.1.2. ML require 1.1.1, right?

What's a noob to do?
Title: Re: Canon 500D / T1i
Post by: thearczoro on January 14, 2017, 12:54:09 AM
Just trying out video, and thought I'd look to ML.

I'm down at the first hurdle. The T1i firmware on my camera is 1.1.0 and on the Canon site it's 1.1.2. ML require 1.1.1, right?

What's a noob to do?

Just download ML Nightly, it's included firmware 1.1.1. PM me if you need FW 1.1.1.
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on January 14, 2017, 09:07:52 AM
You may want to correct this statement.
FIR in nightly: ML-SETUP.FIR, 65916 Bytes
Used to install/deinstall cam's bootflag and making card bootable/non-bootable.
Title: Re: Canon 500D / T1i
Post by: thearczoro on January 14, 2017, 01:34:38 PM
You may want to correct this statement.
FIR in nightly: ML-SETUP.FIR, 65916 Bytes
Used to install/deinstall cam's bootflag and making card bootable/non-bootable.
You're correct. I got it wrong. Btw, if someone need firmware v1.1.1 you can PM me, I have a copy of it. I will send FW by email. Later @a1ex maybe update ML for 500D with FW 1.1.2.  :)
Title: Re: Canon 500D / T1i
Post by: Applenet on January 20, 2017, 08:09:30 PM
Thanks thearczoro, but no offence, you're new to the forum, so am I. I'm not comfortable installing firmware provided by a total stranger.

Is 1.1.1 available from a trusted source? (again, don't mean to offend thearczoro). And is that my only option?
Title: Re: Canon 500D / T1i
Post by: thearczoro on January 23, 2017, 03:40:35 PM
Thanks thearczoro, but no offence, you're new to the forum, so am I. I'm not comfortable installing firmware provided by a total stranger.

Is 1.1.1 available from a trusted source? (again, don't mean to offend thearczoro). And is that my only option?
That's okay, I'm just a newbie here lol. Just because I'm a silent reader with few posts over 2 years. Just helping a total stranger too, who need help. http://builds.magiclantern.fm/ (http://builds.magiclantern.fm/) all here is a trusted source with full of explanation. Do It At Your Own Risk!  8) 8) 8)
Title: Re: Canon 500D / T1i
Post by: Greg on April 01, 2017, 02:08:56 PM
End of 500D support.
Title: Re: Canon 500D / T1i
Post by: thearczoro on April 04, 2017, 06:17:02 AM
End of 500D support.

 :'( Thanks for your hard work @Greg, @A1ex, and the dev team for supporting our device.
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on April 04, 2017, 07:53:42 AM
Happy April Fools' Day, thearczoro!
Title: Re: Canon 500D / T1i
Post by: thearczoro on April 05, 2017, 04:03:18 AM
Happy April Fools' Day, thearczoro!

 ;D Sssstt... Make it more dramatic. Lol..  :D :D :D Btw, any news about firmware v1.1.2?
Title: Re: Canon 500D / T1i
Post by: Greg on April 05, 2017, 02:08:15 PM
I do not plan future support 500D. This is an old camera, for me it has too many limitations.
Title: Re: Canon 500D / T1i
Post by: GenerallyNerdy on April 23, 2017, 12:36:05 AM
New to ML and I have recently had issues with crashing. The error it puts on screen says something about missing a sound file. I only use my T1i in video mode. It seems that if I drop the frame rate to about 15fps the issue goes away, but anything 25fps and up throws the error. HELP?

ASSERT: FALSE
at SoundDevice\SoundDevice_CODEC.c:1080, task ASIF
lv:1 mode:20


Magic Lantern version : Nightly.2016Dec19.500D111
Mercurial changeset   : 4f72a0eabb16 (unified) tip
Built on 2016-12-19 00:14:22 UTC by [email protected]
Free Memory  : 141K + 2816K
Title: Re: Canon 500D / T1i
Post by: thearczoro on April 28, 2017, 08:54:12 AM
New to ML and I have recently had issues with crashing. The error it puts on screen says something about missing a sound file. I only use my T1i in video mode. It seems that if I drop the frame rate to about 15fps the issue goes away, but anything 25fps and up throws the error. HELP?

ASSERT: FALSE
at SoundDevice\SoundDevice_CODEC.c:1080, task ASIF
lv:1 mode:20


Magic Lantern version : Nightly.2016Dec19.500D111
Mercurial changeset   : 4f72a0eabb16 (unified) tip
Built on 2016-12-19 00:14:22 UTC by [email protected]
Free Memory  : 141K + 2816K


Change your display for video with minimal info.
Title: Re: Canon 500D / T1i
Post by: cbeard7693 on July 12, 2017, 05:15:44 PM
I just updated my 500D firmware to 1.1.2, as there is no 1.1.1 available from Canon. Will ML not work with the newest FW update?
Title: Re: Canon 500D / T1i
Post by: Walter Schulz on July 12, 2017, 08:36:44 PM
Please read installation instructions: Top of page -> Downloads -> Download Nightly Builds -> Select your cam.
Title: Re: Canon 500D / T1i
Post by: thearczoro on July 31, 2017, 03:35:20 AM
I just updated my 500D firmware to 1.1.2, as there is no 1.1.1 available from Canon. Will ML not work with the newest FW update?
You need to downgrade first to FW v1.1.1: http://pel.hu/down/v111-t1i-500d-x3-win.exe
Title: Re: Canon 500D / T1i
Post by: dfort on December 08, 2017, 01:54:41 AM
Knock knock, Hello? Any 500D users still out there? @a1ex - have you managed to brick yours? We're making some progress with 10bit/12bit raw recording on Digic IV cameras that use LVState which includes the 500D. If one of you could run a test build to get the SRM_BUFFER_SIZE for this camera we could give it a try.

Test builds are on my downloads page:

https://bitbucket.org/daniel_fort/magic-lantern/downloads/

Look for this file:

find-SRM_BUFFER_SIZE.2017Dec06.500D111.zip

Limited time offer. I prefer keeping my downloads page free of obsolete builds.
Title: Re: Canon 500D / T1i
Post by: Danne on December 08, 2017, 03:06:47 AM
Got two of these babies atcwork. Will test tomorrow.
Title: Re: Canon 500D / T1i
Post by: a1ex on December 08, 2017, 08:15:10 AM
Ran it in QEMU - it flashes too fast (you have replaced the printf with a bmp_printf, right?), but it's 1AE followed by some zeros. That should give around 27 MB, so it's 0x1ae0000.

NotifyBox will redraw the message in background, should it get erased, while bmp_printf just prints it once.
Title: Re: Canon 500D / T1i
Post by: dfort on December 08, 2017, 09:02:29 PM
I was using bmp_printf because of the control over where to print on the screen. I moved it around so it wouldn't interfere with the other overlays but I suppose that on some cameras they still clash. Switched over to NotifyBox and gave it a timeout value of 10000 so it should stay on the screen long enough to read it.

Posted a new build on my downloads page (https://bitbucket.org/daniel_fort/magic-lantern/downloads/).

Off topic--how did you shoot a silent still in QEMU? According to the documentation (https://bitbucket.org/hudson/magic-lantern/src/46f2e6e1cbb045f34c05581c6fa1270a8982297d/contrib/qemu?at=qemu):

Quote
What does not work (yet):
  • LiveView (WIP, very hard);
  • Still photo capture (WIP - the capture process itself works);
Title: Re: Canon 500D / T1i
Post by: dfort on December 08, 2017, 09:55:37 PM
Got two of these babies atcwork. Will test tomorrow.

Try the new and improved find-SRM_BUFFER_SIZE build I posted and see how it works on the camera.

By the way I made these builds so anyone who can install ML can help find SRM_BUFFER_SIZE for their camera. The way it works is like this, check consts.h file for a camera that has SRM_BUFFER_SIZE working (look in either crop_rec_4k or raw_video_10bit_12bit branches) and you'll see a hint at how to find it:

Code: [Select]
#define SRM_BUFFER_SIZE 0x1AE0000   /* print it from srm_malloc_cbr */
The srm_malloc_cbr function lives in src/exmem.c - I just added that last line that uses NotifyBox to print the SRM_BUFFER_SIZE onto the screen:

Code: [Select]
static void srm_malloc_cbr(void** dst_ptr, void* raw_buffer, uint32_t raw_buffer_size)
{
    if (!srm_buffer_size)
    {
        /* we can't tell how much to allocate; the allocator tells us */
        srm_buffer_size = raw_buffer_size;
    }
    else
    {
        /* it should tell us the same thing every time */
        ASSERT(srm_buffer_size == raw_buffer_size);
    }
   
    /* return the newly allocated buffer in the output variable */
    *dst_ptr = raw_buffer;
   
    /* announce it's done */
    give_semaphore(srm_alloc_sem);
   
    NotifyBox(10000, "SRM_BUFFER_SIZE 0x%x", srm_buffer_size);
}

@a1ex - I didn't replaced the printf with a bmp_printf, because there was no printf there to begin with. I didn't use printf in my builds because that involves using the console and I wanted to make this as easy as possible to use.
Title: Re: Canon 500D / T1i
Post by: a1ex on December 08, 2017, 11:49:50 PM
To get this value, I didn't even have to take a picture - just went to the Free Memory dialog, which does a test allocation.

Taking an emulated full-res capture with the vanilla silent module is doable, but requires a gdb script (or a custom build) to fake the LiveView status. One such test is ran on the nightly builds (see this screenshot (http://builds.magiclantern.fm/jenkins/job/QEMU-nightly-tests/383/artifact/qemu/magiclantern-Nightly.2017Dec08.1200D101/15-silent-capture.png) and this animation (http://builds.magiclantern.fm/jenkins/view/QEMU/job/QEMU-nightly-tests/383/artifact/qemu/magiclantern-Nightly.2017Dec08.1200D101/test_silent_pic.gif), or this (http://builds.magiclantern.fm/jenkins/job/QEMU-nightly-tests/377/artifact/qemu/magiclantern-Nightly.2017Dec07.500D111/11-silent-capture.png) and this (http://builds.magiclantern.fm/jenkins/job/QEMU-nightly-tests/377/artifact/qemu/magiclantern-Nightly.2017Dec07.500D111/test_silent_pic.gif) for 500D, although not all models can run it that well) and another one (with a minimal codebase) is ran with the QEMU test suite (qemu-frsp).

In the crop_rec_4k branch there is a printf commented out.
Title: Re: Canon 500D / T1i
Post by: dfort on December 09, 2017, 12:54:16 AM
To get this value, I didn't even have to take a picture - just went to the Free Memory dialog, which does a test allocation.

Interesting. The new build with NotifyBox is working great with the Free Memory dialog trick.

Thanks for posting those QEMU tips. Hum, a gdb script (or a custom build) to fake the LiveView status? So much to learn here.

In the crop_rec_4k branch there is a printf commented out.

That figures. I did it using the raw_video_10bit_12bit branch and only printed out the SRM_BUFFER_SIZE. Looks like there's more information in the crop_rec_4k branch code.

Code: [Select]
//printf("srm_malloc_cbr(%x, %x, %x)\n", dst_ptr, raw_buffer, raw_buffer_size);
Now if I could only get all this stuff for the Digic IV 10bit/12bit stuff working in the crop_rec_4k branch. Back on topic -- and that includes the 500D.
Title: Re: Canon 500D / T1i
Post by: jonnybel on March 01, 2018, 10:20:40 PM
You need to downgrade first to FW v1.1.1: http://pel.hu/down/v111-t1i-500d-x3-win.exe
This download link is dead and I can't find the 1.1.1 firmware update anywhere :(

My 500D is still running 1.0.9 and I just found out about ML :D
Title: Re: Canon 500D / T1i
Post by: dfort on March 02, 2018, 05:31:26 AM
This download link is dead and I can't find the 1.1.1 firmware update anywhere :(

This: http://pel.hu/eoscard/ is the place where you should be able to get pretty much any Canon firmware updater but you are right, the link to the 500D 1.1.1 firmware isn't working. I have a "500D Canon Firmware for Testers" that contains the 1.1.1 and 1.1.2 Canon updaters on my downloads page as a backup.

https://bitbucket.org/daniel_fort/magic-lantern/downloads/

If someone has a dump of the 1.1.2 firmware I'd appreciate a PM.
Title: Re: Canon 500D / T1i
Post by: dfort on April 13, 2018, 05:27:51 AM
Got my hands on a 500D so I did the 1.1.2 firmware dump myself. The portable dumper didn't work so we ended up using the "blind dumper" - more details in this post (https://www.magiclantern.fm/forum/index.php?topic=16534.msg199730#msg199730).

That was about the only glitch, the rest of the update went like butter!

(https://farm1.staticflickr.com/790/27550022648_28a01d8b81.jpg) (https://flic.kr/p/HYv4Uu)

Firmware signature showed up fine in QEMU:

(https://farm1.staticflickr.com/869/41421481421_30abe6baa6.jpg) (https://flic.kr/p/267gVjM)

Worked first time in camera:

(https://farm1.staticflickr.com/894/41421482921_9093abe853.jpg) (https://flic.kr/p/267gVLD)

It also got a perfect score with the Stubs API test:

11999 passed, 0 failed
Code: [Select]
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x4211c0d0
[Pass] dst = fio_malloc(size) => 0x429200dc
[Pass] memcmp(dst, src, 4097) => 0x3f
[Pass] edmac_memcpy(dst, src, 4097) => 0x429200dc
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x429200dc
[Pass] memcmp(dst, src, size) => 0xcc
[Pass] edmac_memcpy(dst, src, size) => 0x429200dc
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffc3
[Pass] edmac_memcpy_start(dst, src, size) => 0x429200dc
       dt => 0x3388
[Pass] copied => 0x400e24
[Pass] copied => 0x400e24
[Pass] copied => 0x400e24
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x43
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xfd5c0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x83f
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x114
[Pass] tries[1] => 0x109
[Pass] tries[2] => 0xec
[Pass] tries[3] => 0xdf
[Pass] failr[0] => 0x90
[Pass] failw[0] => 0x8c
[Pass] failr[1] => 0x8a
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0x77
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x16
       times[1] / tries[1] => 0x16
       times[2] / tries[2] => 0x18
       times[3] / tries[3] => 0x18
Cache tests finished.

[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x40a41b38
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x4211c0d0
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x839e
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x5
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x83a0
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x614
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x12d
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfa
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xffffffd0
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x616
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x86
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x51
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xffffffec
       t0 = *(uint32_t*)0xC0242014 => 0x5cdd1
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x988ca
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x6
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x1d
       Date/time: 2018/04/12 22:05:29
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x1e
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x271a8
[Pass] p = (void*)_malloc(50*1024) => 0xff308
[Pass] CACHEABLE(p) => 0xff308
       m1 = MALLOC_FREE_MEMORY => 0x1a9a8
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x271a8
[Pass] ABS((m0-m1) - 50*1024) => 0x0
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x2e5cd8
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xa41af8
[Pass] CACHEABLE(p) => 0xa41af8
       m1 = GetFreeMemForAllocateMemory() => 0x2a5ccc
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x2e5cd8
[Pass] ABS((m0-m1) - 256*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x271a8
       m02 = GetFreeMemForAllocateMemory() => 0x2e5cd8
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40a41b38
[Pass] UNCACHEABLE(p) => 0x40a41b38
[Pass] CACHEABLE(p) => 0xa41b38
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40a41b38
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x4c000068
[Pass] UNCACHEABLE(p) => 0x4c000068
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x271a8
       m12 = GetFreeMemForAllocateMemory() => 0x2e5cd8
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xfbe98
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xfbeb8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4c000064
[Pass] UNCACHEABLE(p) => 0x4c000064
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xfbd88
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1ae0000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xfbda8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1ae0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46000064
[Pass] UNCACHEABLE(p) => 0x46000064
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xfbd88
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xfbda8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1324000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4210c088
[Pass] UNCACHEABLE(p) => 0x4210c088
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbdf8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1328000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbe28
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2e08000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4c000064
[Pass] UNCACHEABLE(p) => 0x4c000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbe58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46000064
[Pass] UNCACHEABLE(p) => 0x46000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xfbd88
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x9
[Pass] suite->size => 0x5f00000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xfbda8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1324000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4210c088
[Pass] UNCACHEABLE(p) => 0x4210c088
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbdf8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1328000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbe28
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2e08000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46000064
[Pass] UNCACHEABLE(p) => 0x46000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbe58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x48e8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4c000064
[Pass] UNCACHEABLE(p) => 0x4c000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbe88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4e04000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x47ae00e4
[Pass] UNCACHEABLE(p) => 0x47ae00e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbeb8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x5320000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4dae00e4
[Pass] UNCACHEABLE(p) => 0x4dae00e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbee8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x583c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bae00e4
[Pass] UNCACHEABLE(p) => 0x4bae00e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbf18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x5d58000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x49ae00e4
[Pass] UNCACHEABLE(p) => 0x49ae00e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0xfbf48
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x5f00000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x45ae00e4
[Pass] UNCACHEABLE(p) => 0x45ae00e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x5f00000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x1b2474
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x1b2440
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x1b2420
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x60400ac
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x6060080
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x60801b8
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x60a0062
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[Pass] HALFSHUTTER_PRESSED => 0x1
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0

Test build on my downloads page (https://bitbucket.org/daniel_fort/magic-lantern/downloads/), pull request coming soon.

[EDIT] Pull request is open: https://bitbucket.org/hudson/magic-lantern/pull-requests/916/update-to-500d112/diff
Title: Re: Canon 500D / T1i
Post by: dfort on May 03, 2018, 02:14:00 AM
I've been pushing several users into doing tests on these firmware updates and since nobody seems to be responding on the 500D.112 and I happened to have my hands on one I guess it is up to me to run these tests.

Made a lua_fix build for the new firmware and these tests failed:

Code: [Select]
test_keys
test_lv failed
test_lens_focus
test_camera_exposure

All the others were fine. Of course the first thing I ask testers to do on a firmware update is to regress to the previous firmware version to see if this is a new issue or inherited from the previous version. Same issues on 1.1.1.

The lens focus test is interesting because it the lens will go from infinity to closest distance before failing. If the lens is focused at the closest setting to begin with it will fail right away. The 500D might be a camera that the lens can only be controlled by lua when in LiveView so I hacked up the script a bit, set the camera in LiveView and it completed this test using an old 28-105mm lens:

Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-2 19:05:13
===============================================================================

Module tests...

Testing lens focus functionality...
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 0
Focusing forward with step size 3, wait=true...
...
Focus distance: 470
Focus motor position: -1974
Focusing backward with step size 3, wait=true...
...
Focus distance: 655350
Focus motor position: -69
Focus range: 520 steps forward, 366 steps backward.
Motor steps: 1974 forward, 1905 backward, 69 lost.
Focusing forward with step size 3, wait=false...
....................................
Focus distance: 470
Focus motor position: -1974
Focusing backward with step size 3, wait=false...
......................................
Focus distance: 655350
Focus motor position: -77
Focus range: 36 steps forward, 38 steps backward.
Motor steps: 1905 forward, 1897 backward, 8 lost.
Focusing forward with step size 2, wait=true...
...
Focus distance: 470
Focus motor position: -1967
Focusing backward with step size 2, wait=true...
...
Focus distance: 655350
Focus motor position: -69
Focus range: 840 steps forward, 770 steps backward.
Motor steps: 1890 forward, 1898 backward, 8 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 470
Focus motor position: -1971
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: -76
Focus range: 168 steps forward, 161 steps backward.
Motor steps: 1902 forward, 1895 backward, 7 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 470
Focus motor position: -1983
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: -106
Focus range: 1737 steps forward, 1477 steps backward.
Motor steps: 1907 forward, 1877 backward, 30 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 470
Focus motor position: -2002
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: -108
Focus range: 462 steps forward, 444 steps backward.
Motor steps: 1896 forward, 1894 backward, 2 lost.

Focus test completed.
Done!

The only key that test_keys is checking for is the half-shutter press.

platform/500D.111/gui.h
Code: [Select]
#define BGMT_PRESS_HALFSHUTTER 0x23
Checking this against the results of Debug -> Show GUI events

(https://farm1.staticflickr.com/824/40958398485_18a9bd1393.jpg) (https://flic.kr/p/25pmuUe)

Well 0x3f definitely didn't work and neither did 0x24 so maybe this is somewhere else?

The test_lv does put the camera in LiveView then dies.

Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-2 19:55:31
===============================================================================

Module tests...
Testing module 'lv'...
Starting LiveView...

Looks like there's some doubt in the code.

platform/500D.111/gui.h
Code: [Select]
#define BGMT_LV 0xf // idk?

Finally, test_camera_exposure starts off well outside LiveView but dies when trying to set ISO values.

Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-2 19:58:31
===============================================================================

Module tests...
Testing exposure settings...
Camera    : Canon EOS REBEL T1i (500D) 1.1.2
Lens      : EF28-105mm f/3.5-4.5 USM
Shoot mode: 3
Shutter   : Ç125 (raw 112, 0.007812s, 8ms, apex 7.)
Aperture  : Å5.6 (raw 48, f/5.6, apex 5.)
Av range  : Å3.5..Å22 (raw 37..80, f/3.5..f/22.6, apex 3.625..9.)
ISO       : ÄAuto (raw 0, 0, apex 0)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...

However, if the exposure test is done in LiveView:

Code: [Select]
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-2 20:15:51
===============================================================================

Module tests...
Testing exposure settings...
Camera    : Canon EOS REBEL T1i (500D) 1.1.2
Lens      : EF28-105mm f/3.5-4.5 USM
Shoot mode: 3
Shutter   : Ç125 (raw 112, 0.007812s, 8ms, apex 7.)
Aperture  : Å5.6 (raw 48, f/5.6, apex 5.)
Av range  : Å3.5..Å22 (raw 37..80, f/3.5..f/22.6, apex 3.625..9.)
ISO       : Ä3200 (raw 112, 3200, apex 10.)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Error: shutter set to value=0.009291, got 0.010132s, expected 0.009291s
Error: shutter set to value=0.009291, got 10ms, expected 9ms
Error: shutter set to value=0.009291, got Tv6.625, expected Tv6.75
Error: shutter set to value=0.009291, got 109, expected 110 (raw)
Error: shutter 0.010132s != Tv6.625, expected 6.75
Error: shutter 5.187358s != Tv-2.375, expected -2.25
Error: shutter set to value=0.000581, got 142, expected 141 (raw)
Error: shutter set to ms=115, got 0.125s, expected 0.114626s
Error: shutter set to ms=115, got 125ms, expected 115ms
Error: shutter set to ms=115, got Tv3., expected Tv3.125
Error: shutter set to ms=115, got 80, expected 81 (raw)
Error: shutter set to value=14.672065, got 16s, expected 14.672065s
Error: shutter set to value=14.672065, got 16000ms, expected 14672ms
Error: shutter set to value=14.672065, got Tv-4., expected Tv-3.875
Error: shutter set to value=14.672065, got 24, expected 25 (raw)
Error: shutter set to value=32, got Tv-5., expected Tv-4.875
Error: shutter set to ms=7336, got 8.s, expected 7.336032s
Error: shutter set to ms=7336, got 8000ms, expected 7336ms
Error: shutter set to ms=7336, got Tv-3., expected Tv-2.875
Error: shutter set to ms=7336, got 32, expected 33 (raw)
Error: shutter set to value=0.028656, got Tv5., expected Tv5.125
Error: shutter set to value=0.028656, got 96, expected 97 (raw)
Error: shutter set to value=3.668016, got 4.s, expected 3.668016s
Error: shutter set to value=3.668016, got 4000ms, expected 3668ms
Error: shutter set to value=3.668016, got Tv-2., expected Tv-1.875
Error: shutter set to value=3.668016, got 40, expected 41 (raw)
Error: shutter set to value=19.027313, got 20.749433s, expected 19.027313s
Error: shutter set to value=19.027313, got 20749ms, expected 19027ms
Error: shutter set to value=19.027313, got Tv-4.375, expected Tv-4.25
Error: shutter set to value=19.027313, got 21, expected 22 (raw)
Error: shutter set to value=0.000488, got Tv11.000001, expected Tv11.125001
Error: shutter set to value=0.000448, got 145, expected 144 (raw)
Error: shutter set to value=19.027313, got 20.749433s, expected 19.027313s
Error: shutter set to value=19.027313, got 20749ms, expected 19027ms
Error: shutter set to value=19.027313, got Tv-4.375, expected Tv-4.25
Error: shutter set to value=19.027313, got 21, expected 22 (raw)
Error: shutter set to value=3.668016, got 4.s, expected 3.668016s
Error: shutter set to value=3.668016, got 4000ms, expected 3668ms
Error: shutter set to value=3.668016, got Tv-2., expected Tv-1.875
Error: shutter set to value=3.668016, got 40, expected 41 (raw)
Error: shutter set to value=0.007164, got 0.007812s, expected 0.007164s
Error: shutter set to value=0.007164, got 8ms, expected 7ms
Error: shutter set to value=0.007164, got Tv7., expected Tv7.125
Error: shutter set to value=0.007164, got 112, expected 113 (raw)
Error: shutter set to value=29.344129, got 29344ms, expected 32000ms
Error: shutter set to value=29.344129, got 17, expected 16 (raw)
Error: shutter set to value=29.344129, got 17, expected 16 (raw)
Setting ISO to random values...

And once again dies when setting ISO values.
Title: Re: Canon 500D / T1i
Post by: rafaelbf on June 13, 2018, 01:01:08 AM
Hi @dfort

Thanks for your tip about 500D dumping. I was also searching for new stubs and noticed some changes not present in your stubs.S

update-to-500d112
Code: [Select]
NSTUB(0xFF0234B4,  gui_init_end)
NSTUB(    0x1E8C,  mvr_config)               // please re-check
NSTUB(0xFF33030C,  fsuDecodePartitionTable)

Not sure, I have little experience with this. Can you check please?
Maybe this help your API_TEST.LUA tests.
thanks
Title: Re: Canon 500D / T1i
Post by: dfort on June 22, 2018, 07:17:28 AM
@rafaelbf -- catching up after 3 weeks on vacation. Thanks for this, will look into it when I get some time. Please send me a reminder if I flake out.
Title: Re: Canon 500D / T1i
Post by: dfort on June 23, 2018, 03:30:36 PM
@rafaelbf -- Thanks for pointing out the problem with fsuDecodePartitionTable. Looks like I didn't update it from the previous firmware version. However, the other values seem to be fine. How did you come up with those addresses?
Title: Re: Canon 500D / T1i
Post by: rafaelbf on July 16, 2018, 03:51:10 AM
How did you come up with those addresses?

@dfort
opening 2 simultaneous IDA sessions and comparing each Stub address in 111 and 112
"mvr_config" is not an address, I've noticed a change in old value.
Title: Re: Canon 500D / T1i
Post by: dfort on July 16, 2018, 02:20:03 PM
Have you tried changing those values to see if it makes any difference when running the tests?

The problems with the tests that the 500D.112 firmware update isn't passing is also present on the 500D.111 so we're in a situation where we need to do some bug hunting using 1.1.1 then see if those changes translate to the 1.1.2 firmware--it should. Not a high priority for me at this time because I don't use this camera much and when I do it seems to be fine even though it can't pass the lua API tests.