[size=14pt][u]Magic Lantern Installation & Updating Guide[/u][/size]
[u][size=12pt]for Canon EOS 600D/Rebel T3i[/size][/u]
This guide will help you install and update your Canon EOS 600D/Rebel T3i to the lastest Magic Lantern Nightly builds.
[size=8pt][color=red]Warning! Magic Lantern is not approved nor endorsed by Canon in any way, and using it will probably void your warranty. We are not responsible for any damages to your camera.[/color][/size]
[u][size=10pt]Before you start:[/size][/u]
- Make sure your battery is fully charged.
- Remove unnecessary accessories (battery grip/flash/etc).
- Have a sd card reader or laptop with integrated sd card reader.
- Use a sd card of 32GB or smaller for first install.
- Understand that you may lose your warranty and brick your camera.
[u][size=10pt]Updating Canon firmware:[/size][/u]
- Make sure you are running Canon firmware v1.0.2 before you install ML, if you are you may skip this step.
- If not, download it [url=http://pel.hu/down/eos600d-v102.zip]here[/url].
- Follow included instructions and update your camera.
[u][size=10pt]Magic Lantern Install:[/size][/u]
- Download the last nightly version [url=https://builds.magiclantern.fm/#/]here[/url]
- Format your SD card in camera first, then put it in your SD card reader connected to your PC.
- Unzip 'ML' directory, 'autoexec.bin' and 'ml-setup.fir' from the downloaded ZIP file onto your sd card.
- Put your sd card in your camera, switch camera to M-mode and power it up.
- Launch firmware update and install ML.
- After the green confirmation screen, turn off your camera.
- Power your camera back up and enjoy Magic Lantern!
[u][size=10pt]Updating Magic Lantern with new build in the future (on camera and sd card with ML installed):[/size][/u]
- When new nightly is available (see [url=https://builds.magiclantern.fm/#/]here[/url] for last build), download it onto your PC.
- Put your sd card (running the old build) into your PC and delete (NO format!) the 'ML' directory and 'autoexec.bin' file.
- Extract the content of the zip from the new build onto your sd card.
- Repeat this process for all sd card with old ML builds you want to update.
[u][size=10pt]Uninstalling Magic Lantern from SD card:[/size][/u]
- You cannot simply delete the files from the sd card to uninstall ML from it (as the boot flag will remain set).
- Format the SD card in the camera (select this option: Format card, remove Magic Lantern).
[u][size=10pt]Uninstalling Magic Lantern from camera:[/size][/u]
- You cannot simply reinstall the canon firmware to remove ML.
- With a ML sd card, launch the Firmware Update process and follow the instructions on-screen to uninstall ML.
[u][size=10pt]Boot without loading Magic Lantern:[/size][/u]
- If you want to boot your camera without ML, all you have to do is hold down the "SET" button while switching your camera "ON".
[u][size=10pt]Updated user Guide for ML nightly builds:[/size][/u]
- [url=http://magiclantern.fm/forum/index.php?topic=11269]User Guide[/url]
[img width=300]http://a1ex.magiclantern.fm/bleeding-edge/new-installer.png[/img]
Edit: Modified install procedure for new nightly and installer.
I'd also like to maintain this thread. I've been around the forum for almost 3 years now and my 600D is still ticking and still running Magic Lantern. So let's DO THIS THANG!Thanks :) Same here, using ML almost 3 years now, but only recently moved to the nightly builds. And glad I did, because the new builds are just so more stable and feature-rich.
Looks like 600D has the updated installer.
ARM_PATH=/home/edgar/Software/MagicLantern/gcc-arm-none-eabi-4_9-2015q1
GCC_VERSION=-4.9.3
HOST_CFLAGS = -g -O3 -m32 -W -Wall -fms-extensions -std=c99
HOST_LFLAGS = -m32
CONFIG_SITE = n
CONFIG_PICOC = n
CONFIG_TCC = y
CONFIG_MEMCHECK = y
CONFIG_MODULES = y
...not have to be told I'm "worse than useless"...
Since the official nightly build is still not being updated, I created a small cronjob that pulls the unified branch from the magic-lantern repository and builds a new version if there have been any changes.
It is available here: https://hege.cc/magic-lantern/ (https://hege.cc/magic-lantern/)
I use the gcc-arm-embedded toolchain from this repository (https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded) and the build seems to work fine. I have not had any obvious problems with it on my 600D, but I have not done any thorough testing. So, as always:USE AT YOUR OWN RISK
I will probably stop providing these builds once the official nightly builds are available again.
ok so card uper than 32 gig won't work on 600d. Is it working on 60D? (A friend of myne have one, I could trade )Hey, I bought one and had the same problem. I solved using the EOScard app http://pel.hu/eoscard , like Walter Schulz said
Only a short part of the distance between the current focus point and the stored focus point is triggered when I press "play"I just have bought a new lense (Tokina 11-16 dx II ) and I notice exactly the same problem with this lens
Why firmware for EOS 600D is not updated from April 19?Apparently for a number of reasons, including that the current code doesn't always compile for the 600D, the programmer who was coordinating 600D builds has disappeared (?), and the main dev for the project is very busy.
What I wanted to say to irvcobb: If the ML/600d hasn't changed from April 9, maybe it's because it works. That's a testimony to the quality those dev deliver: No complaints in 5 months.
The topic or board you are looking for appears to be either missing or off limits to you.
There are newer builds here:
https://hege.cc/magic-lantern/
No new features, but possibly some bug fixes.
e5cc80d | Gr3g01
Fullres silent pics: max exposure for 500D/550D/600D is 15 seconds :)
Any ideas?
// disabled, because autoexec.bin gets to big and 600D does not boot
#undef FEATURE_DONT_CLICK_ME
#undef FEATURE_SHOW_TASKS
#undef FEATURE_SHOW_CPU_USAGE
#undef FEATURE_SHOW_GUI_EVENTS
#undef FEATURE_SHOW_IMAGE_BUFFERS_INFO
#undef FEATURE_SHOW_EDMAC_INFO
#undef CONFIG_TSKMON
hg merge patchmgr
hg update -C
edgar@linux-pzco:~/ML/escho-magiclantern> hg branch
reenable-600D
edgar@linux-pzco:~/ML/escho-magiclantern> hg merge patchmgr
abort: merging with a working directory ancestor has no effect
edgar@linux-pzco:~/ML/escho-magiclantern> hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
edgar@linux-pzco:~/ML/escho-magiclantern>
abort: merging with a working directory ancestor has no effect
I did install ML now but the user interface is still Canon and is somewhat ML,
Please help me with this.
ML enabled cams will access card *after* opening card slot. It doesn't matter if there is an ML enabled card inserted or a "dumb" one. And it doesn't matter if "Power switch" is in OFF position.:o
Your incident may be related to this access mimic or not. Always wait some time after opening card door before removing cards from ML cams.
[ 401.948949] mmc0: new SDHC card at address 1234
[ 401.968919] Driver 'mmcblk' needs updating - please use bus_type methods
[ 401.969048] mmcblk0: mmc0:1234 SA04G 3.70 GiB
[ 401.971195] mmcblk0: p1
[ 402.336852] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[ 546.713246] mmc0: card 1234 removed
[ 546.749369] FAT-fs (mmcblk0p1): unable to read boot sector to mark fs as dirty
[ 554.570100] mmc0: card never left busy state
[ 554.570110] mmc0: error -110 whilst initialising SD card
[ 556.216025] mmc0: card never left busy state
[ 556.216034] mmc0: error -110 whilst initialising SD card
[ 557.861903] mmc0: card never left busy state
[ 557.861914] mmc0: error -110 whilst initialising SD card
[ 559.507737] mmc0: card never left busy state
[ 559.507746] mmc0: error -110 whilst initialising SD card
[ 964.423396] mmc0: new SDHC card at address 0002
[ 964.423777] mmcblk0: mmc0:0002 00000 7.41 GiB
[ 964.425486] mmcblk0: p1
[ 964.777148] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[ 1060.984609] mmc0: card 0002 removed
[ 1061.016661] FAT-fs (mmcblk0p1): unable to read boot sector to mark fs as dirty
[ 1153.950719] mmc0: card never left busy state
[ 1153.950729] mmc0: error -110 whilst initialising SD card
[ 1155.596602] mmc0: card never left busy state
[ 1155.596612] mmc0: error -110 whilst initialising SD card
[ 1157.242471] mmc0: card never left busy state
[ 1157.242483] mmc0: error -110 whilst initialising SD card
[ 1158.888373] mmc0: card never left busy state
[ 1158.888384] mmc0: error -110 whilst initialising SD card
- looks like the card is dead and some trick with low-level access via camera is the only chance...keeping fingers crossedEric J. Russell
Yesterday at 1:55pm
Two Identical SDXC cards. One boots ML fine, the other puts my 700D in a brickatose state that can only be broken by ejecting the SD card and pulling the battery in and out, and even then the brickatosing SD card can't be in the slot or else the camera stays dead.
Recently had the same "Card cannot be accessed. Reinsert/change the card or format card with camera" message on my 650D (with Meike battery grip) twice.
Both times the camera was switched on and several photos had been taken already.
The SD card was a SanDisk 64 GB Extreme (90 MB/s) class 3.
On site there was nothing I could do. So I removed and locked the card, and replaced it with a 32 GB card without ML.
First time I could recover all photos with Recuva from Pirisoft (https://www.piriform.com/recuva). This is freeware.
After this I formatted the SD card with SD Card Formatter (https://www.sdcard.org/downloads/formatter_4/index.html). This little freeware program will restore the hidden partition on the SD card also in case it's lost.
Than I added ML to the SD card again.
Two weeks later it happened again. Same SD card.
This time I wasn't able to recover my photos, but a quick format first did the trick.
After this I could recover all photos with Recuva again.
Since the second 'crash' I haven't use ML anymore and use the 32 GB card only.
I'm still not sure what caused the error, but both times the card was in the camera, camera switched on and in use.
../../src/raw.c: At top level:
../../src/raw.c:1510:26: error: 'PREFERRED_RAW_TYPE' undeclared here (not in a function)
static int lv_raw_type = PREFERRED_RAW_TYPE;
^
../../src/raw.c:1510:12: warning: 'lv_raw_type' defined but not used [-Wunused-variable]
static int lv_raw_type = PREFERRED_RAW_TYPE;
^
../../Makefile.filerules:23: recipe for target 'raw.o' failed
make: *** [raw.o] Error 1
A big thing I've read in all my research is that the camera will *not* turn on without an sd with ml files installed.Wrong.
...My older version of ML from a couple of years ago DOES have 1/48 shutter speed as an option...
How long has this been around? Would it be realy difficult to get rid of it?
Who would have thunk that a 600D could actually be used to shoot 10 bit raw video, 1280 cinemascope (2:35), 24fps continuous.
Hi I find that I have to go into the normal canon menu and tweak the sound level there then when I come out to live view the level metering is working but it is so un reliable [...]
A -12dB tone recorded with my 60D (only the tip of the meters was yellow) resulted in a perfect -12dB tone. I checked all signals on our calibrated system.
it even states on the ML page that audio features for the 600D (not 60D) are unavailable.
Install instructions in download page are up to date.
@bpv5P - Yes, it is strange that we're directed to Pelican's website for old firmware versions but he's got the most complete collection.
@bpv5P: I have to say that I'm not happy with your view on user pelican who is around us for more than 5 years.
You're aware this kind of argument does apply to the devs, contributors, anyone offering a link, too?
I'm fine with all ideas trying to get rid of single points of failure.
BTW: There are some prominent examples where big web based services failed, their user databases got public or - like recent - got unusable by changing terms of use.
why not mirror the files?
I can easily demonstrate that the audio meters do not engage until you hit record or enter the ML menus and leave, playback a video, etc. I can repeat it each time I turn my camera off to on. After you do that you can see levels while non-recording which is what I want to do (want to nail settings before starting to record an interview for example).
...
/* some models require the audio to be enabled using audio_configure() */
#if defined(CONFIG_650D) || defined(CONFIG_700D) || defined(CONFIG_EOSM)
int reconfig_audio = 0; // Needed to turn on Audio IC at boot, maybe neeed for 100D
#else
int reconfig_audio = 1;
#endif
Hi guys,
I can not get my 600d with san disk ultra 64GB 80MB/s exfat and latest experimental build to run continuously in 10 bit raw, 1280 @ 2:35 / 24fps mode with sound. Recording stops after 10-12 seconds.
Is there something special I should be aware of?
Thanks.
The maximum speed of 600D is about 25MB/s. That's the bus interface limitation. You can test your card using the benchmark tool inside ML.
You can probably stretch some more seconds disabling Global Draw (using HacKeD preview on MLV menu) and disabling sound rec (use external recorder).
So what is the highest continuous resolution you get from 600D with 10bits?
If you want seriously experiment with MLV, try some camera with CompactFlash support (50D, for example).
I could give it a try by telling me what to do.
Lately, I've taken many pictures with long exposure with ISO160.
I did not do anything else except using the latest ML.
Which information would be helpful?
I would play the new ML for it again ....
We are also happy to talk by PM and in German and publish the solution in English here
regards
GerdmitPferd
Use https://bitbucket.org/daniel_fort/magic-lantern/downloads/ until this problem is solved.I can't find any version for 600D listed on your page ...where is it? (the only available file for 600D is "firmware for tester") Should I choose a build for a different model,which one in case?
I can't find any version for 600D listed on your page ...where is it?
ML - I don't have Magic Lantern installed on the camera. :(
How do I proceed ?
You could merge both branches and compile from source. Copying modules over won't work, as lua_fix contains many backend changes that break binary compatibility.
Hi 600D users.
I uploaded a build named find-SRM_BUFFER_SIZE.2018Feb15.600D102 to my Bitbucket downloads page (https://bitbucket.org/daniel_fort/magic-lantern/downloads/). Simply go to the Debug menu and select Free Memory.
Thanks!
I used ML several years ago when I first got my T3i. I went to use it several weeks ago after a LONG hiatus and the card wouldn't load. So I'm looking for a new build. The most current nightly build shows 2 tests failed. Now, I'm not sure those test are important--or are they? Is there a previous build that passes all the tests that maybe I should use?
And lastly, am I posting this in the correct forum? :-\
Thanks for the help
Bill W
Hi Bill I'm in a similar situation, I'm a first time user (NOOB to ML) and collecting the files and information to do the update, however I'm concerned about using the current build because of the test errors reported. Did you get an answer on your question? If the current version is not appropriate which version should I be looking for?
Thanks
Modules tab -> mlv_lite.mo ON -> restart cam -> Movie tab -> RAW video -> Data format
You may want to try "10/12-bit RAW video" experimental build.
# ./run_canon_fw.sh 600D -d debugmsg
# ./run_canon_fw.sh 600D -d debugmsg -s -S & arm-none-eabi-gdb -x 600D/debugmsg.gdb
source -v debug-logging.gdb
# To get debugging symbols from Magic Lantern, uncomment one of these:
#symbol-file ../magic-lantern/platform/600D.103/magiclantern
#symbol-file ../magic-lantern/platform/600D.103/autoexec
#symbol-file ../magic-lantern/platform/600D.103/stubs.o
macro define CURRENT_TASK 0x1a2c
macro define CURRENT_ISR (MEM(0x670) ? MEM(0x674) >> 2 : 0)
# GDB hook is very slow; -d debugmsg is much faster
# ./run_canon_fw.sh will use this address, don't delete it
# b *0xff06e3a0
# DebugMsg_log
b *0xff071580
task_create_log
b *0xff1f5830
register_interrupt_log
# MPU communication
if 0
b *0xff1db52c
mpu_send_log
b *0xff05ed8c
mpu_recv_log
end
# message queues
if 0
b *0xff1f594c
create_msg_queue_log
b *0xff1f5c48
post_msg_queue_log
b *0xff1f5ba4
post_msg_queue_log
b *0xff1f5a5c
try_receive_msg_queue_log
b *0xff1f5b14
receive_msg_queue_log
end
cont
[boot] firmware signature: 0x4f4d4712 (1330464530)
expected: 0x5113b56e (1360246126)
[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x422040a4
[Pass] dst = fio_malloc(size) => 0x42a080b4
[Pass] memcmp(dst, src, 4097) => 0x82
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080b4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080b4
[Pass] memcmp(dst, src, size) => 0xee
[Pass] edmac_memcpy(dst, src, size) => 0x42a080b4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd2
[Pass] edmac_memcpy_start(dst, src, size) => 0x42a080b4
dt => 0x3200
[Pass] copied => 0x4016ec
[Pass] copied => 0x4016ec
[Pass] copied => 0x4016ec
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffdf
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xc7dc8
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x570
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xff
[Pass] tries[1] => 0x104
[Pass] tries[2] => 0xdd
[Pass] tries[3] => 0x108
[Pass] failr[0] => 0xa6
[Pass] failw[0] => 0xd3
[Pass] failr[1] => 0x82
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xba
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x2f
times[1] / tries[1] => 0x39
times[2] / tries[2] => 0x37
times[3] / tries[3] => 0x38
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) => 0x409d2894
[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) => 0x422040a4
[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) => 0x80ba
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x7
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x80bc
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) => 0x1c8
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x138
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfc
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xe6
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1ca
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) => 0x17f
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x150
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0x103
t0 = *(uint32_t*)0xC0242014 => 0x5522c
msleep(250)
t1 = *(uint32_t*)0xC0242014 => 0x91e99
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x2
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x21
Date/time: 2018/04/10 12:26:33
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x22
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x3b5f8
[Pass] p = (void*)_malloc(50*1024) => 0xc9b18
[Pass] CACHEABLE(p) => 0xc9b18
m1 = MALLOC_FREE_MEMORY => 0x2ede8
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x3b5f8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xbe20b0
[Pass] CACHEABLE(p) => 0xbe20b0
m1 = GetFreeMemForAllocateMemory() => 0xbc110
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x3b5f8
m02 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40be20f0
[Pass] UNCACHEABLE(p) => 0x40be20f0
[Pass] CACHEABLE(p) => 0xbe20f0
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40be20f0
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x42204084
[Pass] UNCACHEABLE(p) => 0x42204084
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x3b5f8
m12 = GetFreeMemForAllocateMemory() => 0xfc120
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1df8000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xaff98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xaffd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc4740
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xa8b28
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xa8b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xaff98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xaffd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2a90000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4bf68100
[Pass] UNCACHEABLE(p) => 0x4bf68100
chunk = GetNextMemoryChunk(suite, chunk) => 0xc4740
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x1990c4
[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) => 0x1990a0
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x199080
[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) => 0xc9200be
[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) => 0xc940094
[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) => 0xc9601f2
[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) => 0xc980042
[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
Tried the new-dryos-task-hooks branch and got the same results.
/** Load fonts and print Hello World (disable CONFIG_EARLY_PORT); will not start any other ML tasks, handlers etc. */
#define CONFIG_HELLO_WORLD
1) when trying to format the card from the camera, can you toggle between Keep ML and Remove ML? (according to escho, yes (https://bitbucket.org/hudson/magic-lantern/pull-requests/575/restore-after-format-refactoring-fix-for/diff#comment-2780246))
Ok, the 600D seems pretty solid so far, Raw recording working as it always did, never perfect really cause its slower and has the pink frame issues every so often, but seems same as usual, silent fullres fine too, Raw histogram and audio controls are fine, no errors yet on anything, nothing sticking out that is an issue.
Does that work in the current lua_fix experimental build?
Additionally, can you open ML submenus (e.g. options for Zebras or Magic Zoom) with the same build?
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 00:26:13
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 101
apex = 5.625
ms = 20
value = 0.020263
aperture = table:
raw = 47
apex = 4.875
value = 5.4
min = table:
raw = 47
apex = 4.875
value = 5.4
max = table:
raw = 90
apex = 10.250001
value = 34.799999
iso = table:
raw = 104
apex = 9.
value = 1600
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 4700
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.3"
temperature = 167
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
reboot = function: p
burst = function: p
shoot = function: p
bulb = function: p
wait = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
show = function: p
clear = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
resume = function: p
info = function: p
wait = function: p
pause = function: p
start = function: p
stop = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 49
focus_distance = 655350
hyperfocal = 23499
dof_near = 22692
dof_far = 1000000
af = false
af_mode = 3
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
rect = function: p
on = function: p
circle = function: p
draw = function: p
pixel = function: p
notify_box = function: p
screenshot = function: p
print = function: p
clear = function: p
load = function: p
line = function: p
off = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
select = function: p
close = function: p
set = function: p
block = function: p
open = function: p
get = function: p
new = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 8
ms_clock = 8875
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 8192
drive_letter = "B"
file_number = 9976
folder_number = 100
free_space = 15567104
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 8192
drive_letter = "B"
file_number = 9976
folder_number = 100
free_space = 15567104
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
min = 26
isdst = false
sec = 14
year = 2018
day = 6
month = 5
hour = 0
yday = 1
wday = 7
remove = function: p
call = function: p
rename = function: p
directory = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Stop LiveView...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9977.CR2 not found.
B:/DCIM/100CANON/IMG_9977.JPG not found.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 00:18:23
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 101
apex = 5.625
ms = 20
value = 0.020263
aperture = table:
raw = 47
apex = 4.875
value = 5.4
min = table:
raw = 47
apex = 4.875
value = 5.4
max = table:
raw = 90
apex = 10.250001
value = 34.799999
iso = table:
raw = 104
apex = 9.
value = 1600
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 4700
mode = 3
metering_mode = 3
drive_mode = 0
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.2"
temperature = 165
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
bulb = function: p
burst = function: p
reboot = function: p
shoot = function: p
wait = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
hide = function: p
write = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
resume = function: p
stop = function: p
wait = function: p
info = function: p
pause = function: p
start = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 49
focus_distance = 655350
hyperfocal = 23499
dof_near = 22692
dof_far = 1000000
af = false
af_mode = 3
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
print = function: p
on = function: p
screenshot = function: p
draw = function: p
line = function: p
load = function: p
pixel = function: p
notify_box = function: p
off = function: p
clear = function: p
circle = function: p
rect = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
new = function: p
open = function: p
close = function: p
block = function: p
select = function: p
set = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 29
ms_clock = 29294
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 8192
drive_letter = "B"
file_number = 9974
folder_number = 100
free_space = 15527360
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 8192
drive_letter = "B"
file_number = 9974
folder_number = 100
free_space = 15527360
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 5
sec = 24
day = 6
isdst = false
yday = 1
hour = 0
year = 2018
min = 18
wday = 7
call = function: p
directory = function: p
remove = function: p
rename = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9975.CR2 not found.
B:/DCIM/100CANON/IMG_9975.JPG not found.
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.3 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x422c00c4
[Pass] dst = fio_malloc(size) => 0x42ac40d4
[Pass] memcmp(dst, src, 4097) => 0xec
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ac40d4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42ac40d4
[Pass] memcmp(dst, src, size) => 0x1a
[Pass] edmac_memcpy(dst, src, size) => 0x42ac40d4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff97
[Pass] edmac_memcpy_start(dst, src, size) => 0x42ac40d4
dt => 0x3151
[Pass] copied => 0x400d6c
[Pass] copied => 0x400d6c
[Pass] copied => 0x400d6c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0x37
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbcfb0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x1030
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xfe
[Pass] tries[1] => 0x106
[Pass] tries[2] => 0xee
[Pass] tries[3] => 0xf6
[Pass] failr[0] => 0xc4
[Pass] failw[0] => 0xf6
[Pass] failr[1] => 0x97
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xe6
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x2f
times[1] / tries[1] => 0x29
times[2] / tries[2] => 0x33
times[3] / tries[3] => 0x31
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[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) => 0x40bc215c
[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) => 0x422c00c4
[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) => 0x95c0
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x1
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x95e6
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) => 0x1e0
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) => 0x103
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x219
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1e2
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) => 0x2b8
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x28e
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x227
t0 = GET_DIGIC_TIMER() => 0x3037c
msleep(250)
t1 = GET_DIGIC_TIMER() => 0x6b218
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x11
Date/time: 2018/05/06 00:42:17
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x12
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
m0 = MALLOC_FREE_MEMORY => 0x43f78
[Pass] p = (void*)_malloc(50*1024) => 0xc0a40
[Pass] CACHEABLE(p) => 0xc0a40
m1 = MALLOC_FREE_MEMORY => 0x37768
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x43f78
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xbc211c
[Pass] CACHEABLE(p) => 0xbc211c
m1 = GetFreeMemForAllocateMemory() => 0xc1f7c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x43f78
m02 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40bc215c
[Pass] UNCACHEABLE(p) => 0x40bc215c
[Pass] CACHEABLE(p) => 0xbc215c
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bc215c
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x422c00b4
[Pass] UNCACHEABLE(p) => 0x422c00b4
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x43f78
m12 = GetFreeMemForAllocateMemory() => 0xe1f8c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbd98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xbbd10
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbd38
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d3c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x422c00b0
[Pass] UNCACHEABLE(p) => 0x422c00b0
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbd98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2940000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbdd0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x1aaa00be
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x1aac0094
[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) => 0x1aae030c
[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) => 0x1ab000a4
[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 complete, 11457 passed, 5 failed.
.
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.2 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x42204094
[Pass] dst = fio_malloc(size) => 0x42a080a4
[Pass] memcmp(dst, src, 4097) => 0x7f
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080a4
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42a080a4
[Pass] memcmp(dst, src, size) => 0x78
[Pass] edmac_memcpy(dst, src, size) => 0x42a080a4
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0x7
[Pass] edmac_memcpy_start(dst, src, size) => 0x42a080a4
dt => 0x31fd
[Pass] copied => 0x400a9c
[Pass] copied => 0x400a9c
[Pass] copied => 0x400a9c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xfffffffc
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbd1f0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x10df
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xe6
[Pass] tries[1] => 0x102
[Pass] tries[2] => 0xf8
[Pass] tries[3] => 0x108
[Pass] failr[0] => 0xbe
[Pass] failw[0] => 0xe3
[Pass] failr[1] => 0x98
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xf4
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x2c
times[1] / tries[1] => 0x32
times[2] / tries[2] => 0x2e
times[3] / tries[3] => 0x2c
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[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) => 0x40bc20f0
[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) => 0x42204094
[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) => 0x956e
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0xa
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9594
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) => 0x1e0
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x128
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xfc
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x220
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1e2
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) => 0x2c2
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x294
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x23f
t0 = GET_DIGIC_TIMER() => 0xcafa5
msleep(250)
t1 = GET_DIGIC_TIMER() => 0x5fbf
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x23
Date/time: 2018/05/06 00:52:35
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x25
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x44158
[Pass] p = (void*)_malloc(50*1024) => 0xc0c80
[Pass] CACHEABLE(p) => 0xc0c80
m1 = MALLOC_FREE_MEMORY => 0x37948
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x44158
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xbc20b0
[Pass] CACHEABLE(p) => 0xbc20b0
m1 = GetFreeMemForAllocateMemory() => 0xc1f8c
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x44158
m02 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40bc20f0
[Pass] UNCACHEABLE(p) => 0x40bc20f0
[Pass] CACHEABLE(p) => 0xbc20f0
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40bc20f0
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x42204084
[Pass] UNCACHEABLE(p) => 0x42204084
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x44158
m12 = GetFreeMemForAllocateMemory() => 0xe1f9c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbb8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xbbb30
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xbbb58
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1df8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42204080
[Pass] UNCACHEABLE(p) => 0x42204080
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbb8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x29fc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xbbbf0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x169400be
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x16960094
[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) => 0x16980318
[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) => 0x169a00a4
[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 complete, 11457 passed, 5 failed.
.
Look pretty much the same to me. Did you by any chance have the colorspace set to adobe? Reason I ask is because we had a similar situation happen with the 1200D (https://www.magiclantern.fm/forum/index.php?topic=12627.msg200725#msg200725). Note that the Stubs API test from the selftest module didn't complete.Yes, Adobe RGB colorspace was set for this camera at time of testing.
Could you next try the lua_fix builds. 1.0.3 is on my downloads page (https://bitbucket.org/daniel_fort/magic-lantern/downloads/) and 1.0.2 is on the experiments download page (https://builds.magiclantern.fm/experiments.html).This 103 version is the build from your downloads page. And the 102 is from experiments page
...I had lens cap on, seems to be ok to fail it...
...I thought the main goal was to show 103 was good for merge, if both versions give same results, that should show it is good to go?
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 13:45:28
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 109
apex = 6.625
ms = 10
value = 0.010132
aperture = table:
raw = 48
apex = 5.
value = 5.6
min = table:
raw = 48
apex = 5.
value = 5.6
max = table:
raw = 91
apex = 10.375001
value = 36.400001
iso = table:
raw = 0
apex = 0
value = 0
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 1
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.3"
temperature = 188
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
shoot = function: p
burst = function: p
reboot = function: p
bulb = function: p
wait = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
resume = function: p
start = function: p
stop = function: p
info = function: p
pause = function: p
wait = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 55
focus_distance = 1820
hyperfocal = 28540
dof_near = 1722
dof_far = 1929
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
line = function: p
notify_box = function: p
draw = function: p
load = function: p
clear = function: p
off = function: p
print = function: p
screenshot = function: p
on = function: p
rect = function: p
pixel = function: p
circle = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
new = function: p
block = function: p
set = function: p
close = function: p
select = function: p
open = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 101
ms_clock = 101541
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9988
folder_number = 100
free_space = 15633664
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9988
folder_number = 100
free_space = 15633664
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
year = 2018
yday = 1
hour = 13
wday = 7
sec = 29
month = 5
isdst = false
min = 45
day = 6
call = function: p
directory = function: p
remove = function: p
rename = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9989.CR2: 19657379
B:/DCIM/100CANON/IMG_9989.JPG: 1746728
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_9990.CR2: 19633952
B:/DCIM/100CANON/ABC_9990.JPG: 1728852
B:/DCIM/100CANON/ABC_9991.CR2: 19601666
B:/DCIM/100CANON/ABC_9991.JPG: 1725152
Bracketed pictures...
B:/DCIM/100CANON/IMG_9992.CR2: 26354896
B:/DCIM/100CANON/IMG_9992.JPG: 4597540
B:/DCIM/100CANON/IMG_9993.CR2: 19554523
B:/DCIM/100CANON/IMG_9993.JPG: 1635620
B:/DCIM/100CANON/IMG_9994.CR2: 15526094
B:/DCIM/100CANON/IMG_9994.JPG: 437395
Bulb picture...
Elapsed time: 12755
B:/DCIM/100CANON/IMG_9995.CR2: 14504886
B:/DCIM/100CANON/IMG_9995.JPG: 363713
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1820
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...15...14...13...Autofocus triggered.
Autofocus completed.
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 469
Focusing forward with step size 3, wait=true...
...........
Focus distance: 250
Focus motor position: -1414
Focusing backward with step size 3, wait=true...
..........
Focus distance: 655350
Focus motor position: 500
Focus range: 11 steps forward, 10 steps backward.
Motor steps: 1883 forward, 1914 backward, 31 lost.
Focusing forward with step size 3, wait=false...
...
Focus distance: 250
Focus motor position: -1401
Focusing backward with step size 3, wait=false...
............................................................................
Focus distance: 655350
Focus motor position: 501
Focus range: 101 steps forward, 76 steps backward.
Motor steps: 1901 forward, 1902 backward, 1 lost.
Focusing forward with step size 2, wait=true...
................................................................
Focus distance: 250
Focus motor position: -1457
Focusing backward with step size 2, wait=true...
..............................................................
Focus distance: 655350
Focus motor position: 467
Focus range: 64 steps forward, 62 steps backward.
Motor steps: 1958 forward, 1924 backward, 34 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 250
Focus motor position: -1472
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 458
Focus range: 248 steps forward, 222 steps backward.
Motor steps: 1939 forward, 1930 backward, 9 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 5270
Focus motor position: 29990
Focusing backward with step size 1, wait=true...
...
Focus distance: 5270
Focus motor position: 29990
Focus range: 17990 steps forward, 753 steps backward.
Motor steps: 29532 forward, 0 backward, 29532 lost.
Focusing forward with step size 1, wait=false...
...
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS REBEL T3i 1.0.3 (0x80000286 600D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x423ec154
[Pass] dst = fio_malloc(size) => 0x42bf0164
[Pass] memcmp(dst, src, 4097) => 0xda
[Pass] edmac_memcpy(dst, src, 4097) => 0x42bf0164
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42bf0164
[Pass] memcmp(dst, src, size) => 0x78
[Pass] edmac_memcpy(dst, src, size) => 0x42bf0164
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffa5
[Pass] edmac_memcpy_start(dst, src, size) => 0x42bf0164
dt => 0x3208
[Pass] copied => 0x400f5c
[Pass] copied => 0x400f5c
[Pass] copied => 0x400f5c
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffb2
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0xbed50
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x740
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0x119
[Pass] tries[1] => 0xe4
[Pass] tries[2] => 0xf4
[Pass] tries[3] => 0xf7
[Pass] failr[0] => 0xe4
[Pass] failw[0] => 0x114
[Pass] failr[1] => 0x86
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xeb
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x34
times[1] / tries[1] => 0x2f
times[2] / tries[2] => 0x38
times[3] / tries[3] => 0x34
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[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) => 0x40c0cef4
[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) => 0x423ec154
[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) => 0x99de
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x6
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x9a04
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) => 0x1fa
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x13f
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0x10e
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x1b8
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x1fc
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) => 0x24f
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x226
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x1e6
t0 = GET_DIGIC_TIMER() => 0x3e5c9
msleep(250)
t1 = GET_DIGIC_TIMER() => 0x79643
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x9
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x38
Date/time: 2018/05/06 14:21:56
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x3a
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x42dd8
[Pass] p = (void*)_malloc(50*1024) => 0xc0a90
[Pass] CACHEABLE(p) => 0xc0a90
m1 = MALLOC_FREE_MEMORY => 0x365c8
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x42dd8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] p = (void*)_AllocateMemory(128*1024) => 0xc0ceb4
[Pass] CACHEABLE(p) => 0xc0ceb4
m1 = GetFreeMemForAllocateMemory() => 0x9c188
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] ABS((m0-m1) - 128*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x42dd8
m02 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x40c0cef4
[Pass] UNCACHEABLE(p) => 0x40c0cef4
[Pass] CACHEABLE(p) => 0xc0cef4
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40c0cef4
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x423ec144
[Pass] UNCACHEABLE(p) => 0x423ec144
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x42dd8
m12 = GetFreeMemForAllocateMemory() => 0xbc198
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1f68000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1f68000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
largest_shoot_block = suite->size => 0x1f68000
[INFO] largest_shoot_block: 31MB
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x2068000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c10000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d34000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2068000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2068000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc0a90
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x4
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc0ab8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c10000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423ec140
[Pass] UNCACHEABLE(p) => 0x423ec140
chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b18
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1d34000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42100070
[Pass] UNCACHEABLE(p) => 0x42100070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2938000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
chunk = GetNextMemoryChunk(suite, chunk) => 0xc0b88
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16a01c
[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) => 0x16a000
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x169fe0
[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) => 0x328e00c0
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x32900094
[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) => 0x32920202
[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) => 0x32940098
[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 complete, 11622 passed, 0 failed.
.
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 14:25:23
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 133
apex = 9.625
ms = 1
value = 0.001266
aperture = table:
raw = 48
apex = 5.
value = 5.6
min = table:
raw = 37
apex = 3.625
value = 3.5
max = table:
raw = 80
apex = 9.
value = 22.6
iso = table:
raw = 0
apex = 0
value = 0
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 1
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.3"
temperature = 172
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
bulb = function: p
shoot = function: p
burst = function: p
wait = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
clear = function: p
write = function: p
hide = function: p
show = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
info = function: p
pause = function: p
stop = function: p
resume = function: p
wait = function: p
start = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 18
focus_distance = 655350
hyperfocal = 3081
dof_near = 3066
dof_far = 1000000
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
print = function: p
clear = function: p
on = function: p
off = function: p
notify_box = function: p
draw = function: p
load = function: p
line = function: p
circle = function: p
rect = function: p
screenshot = function: p
pixel = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
set = function: p
close = function: p
block = function: p
open = function: p
select = function: p
new = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 24
ms_clock = 24404
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9997
folder_number = 100
free_space = 15633696
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 9997
folder_number = 100
free_space = 15633696
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
min = 25
wday = 7
yday = 1
year = 2018
month = 5
hour = 14
day = 6
isdst = false
sec = 24
directory = function: p
rename = function: p
call = function: p
remove = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9998.CR2: 22508842
B:/DCIM/100CANON/IMG_9998.JPG: 3915831
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
-- note: each test routine must print a blank line at the end
-- strict_tests()
-- generic_tests()
printf("Module tests...\n")
-- test_io()
-- test_camera_gui()
-- test_menu()
-- test_camera_take_pics()
-- sleep(1)
-- test_multitasking()
-- test_keys()
-- test_lv()
-- test_lens_focus()
test_camera_exposure()
test_movie()
printf("Done!\n")
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 16:31:22
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 96
apex = 5.
ms = 31
value = 0.03125
aperture = table:
raw = 59
apex = 6.375
value = 9.100001
min = table:
raw = 37
apex = 3.625
value = 3.5
max = table:
raw = 80
apex = 9.
value = 22.6
iso = table:
raw = 72
apex = 5.
value = 100
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 1
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.2"
temperature = 161
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
shoot = function: p
bulb = function: p
wait = function: p
burst = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
show = function: p
clear = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
wait = function: p
stop = function: p
resume = function: p
info = function: p
pause = function: p
start = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 18
focus_distance = 655350
hyperfocal = 1909
dof_near = 1903
dof_far = 1000000
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
off = function: p
on = function: p
screenshot = function: p
circle = function: p
print = function: p
rect = function: p
notify_box = function: p
draw = function: p
load = function: p
clear = function: p
line = function: p
pixel = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
new = function: p
block = function: p
set = function: p
open = function: p
select = function: p
close = function: p
get = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 9
ms_clock = 9330
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 16
folder_number = 100
free_space = 15633696
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 16
folder_number = 100
free_space = 15633696
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
min = 31
isdst = false
wday = 7
yday = 1
month = 5
year = 2018
hour = 16
day = 6
sec = 23
remove = function: p
directory = function: p
call = function: p
rename = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Start LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_0017.CR2: 25094833
B:/DCIM/100CANON/IMG_0017.JPG: 4848220
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_0018.CR2: 25128798
B:/DCIM/100CANON/ABC_0018.JPG: 4849283
B:/DCIM/100CANON/ABC_0019.CR2: 25097122
B:/DCIM/100CANON/ABC_0019.JPG: 4831500
Bracketed pictures...
B:/DCIM/100CANON/IMG_0020.CR2: 24226800
B:/DCIM/100CANON/IMG_0020.JPG: 4858297
B:/DCIM/100CANON/IMG_0021.CR2: 25116757
B:/DCIM/100CANON/IMG_0021.JPG: 4864994
B:/DCIM/100CANON/IMG_0022.CR2: 23374510
B:/DCIM/100CANON/IMG_0022.JPG: 3675372
Bulb picture...
Elapsed time: 11925
B:/DCIM/100CANON/IMG_0023.CR2: 14243432
B:/DCIM/100CANON/IMG_0023.JPG: 363713
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
Starting LiveView...
Overlays: Canon
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: ML
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 5270
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...Autofocus triggered.
Autofocus completed.
Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focus motor position: 92
Focusing forward with step size 3, wait=true...
.......
Focus distance: 250
Focus motor position: -1796
Focusing backward with step size 3, wait=true...
........
Focus distance: 655350
Focus motor position: 111
Focus range: 7 steps forward, 8 steps backward.
Motor steps: 1888 forward, 1907 backward, 19 lost.
Focusing forward with step size 3, wait=false...
.........................
Focus distance: 250
Focus motor position: -1761
Focusing backward with step size 3, wait=false...
.......................
Focus distance: 655350
Focus motor position: 134
Focus range: 25 steps forward, 23 steps backward.
Motor steps: 1872 forward, 1895 backward, 23 lost.
Focusing forward with step size 2, wait=true...
.....................................
Focus distance: 250
Focus motor position: -1753
Focusing backward with step size 2, wait=true...
.....................................
Focus distance: 655350
Focus motor position: 119
Focus range: 37 steps forward, 37 steps backward.
Motor steps: 1887 forward, 1872 backward, 15 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 250
Focus motor position: -1768
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 109
Focus range: 156 steps forward, 105 steps backward.
Motor steps: 1887 forward, 1877 backward, 10 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 250
Focus motor position: -1850
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 126
Focus range: 149 steps forward, 150 steps backward.
Motor steps: 1959 forward, 1976 backward, 17 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 250
Focus motor position: -1850
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 121
Focus range: 307 steps forward, 299 steps backward.
Motor steps: 1976 forward, 1971 backward, 5 lost.
Focus test completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 16:49:11
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 75
apex = 2.375
ms = 193
value = 0.192776
aperture = table:
raw = 59
apex = 6.375
value = 9.100001
min = table:
raw = 37
apex = 3.625
value = 3.5
max = table:
raw = 80
apex = 9.
value = 22.6
iso = table:
raw = 104
apex = 9.
value = 1600
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 0
value = 0
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 1
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.2"
temperature = 168
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
wait = function: p
bulb = function: p
reboot = function: p
shoot = function: p
burst = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
show = function: p
write = function: p
clear = function: p
hide = function: p
lv = table:
enabled = true
paused = false
running = true
zoom = 1
overlays = 2
stop = function: p
wait = function: p
pause = function: p
resume = function: p
start = function: p
info = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 18
focus_distance = 655350
hyperfocal = 1909
dof_near = 1903
dof_far = 1000000
af = true
af_mode = 0
autofocus = function: p
focus = function: p
display = table:
idle = nil
height = 480
width = 720
on = function: p
rect = function: p
pixel = function: p
clear = function: p
load = function: p
draw = function: p
notify_box = function: p
circle = function: p
off = function: p
print = function: p
screenshot = function: p
line = function: p
key = table:
last = 9
wait = function: p
press = function: p
menu = table:
visible = false
set = function: p
close = function: p
open = function: p
get = function: p
new = function: p
select = function: p
block = function: p
movie = table:
recording = false
stop = function: p
start = function: p
dryos = table:
clock = 20
ms_clock = 20466
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 24
folder_number = 100
free_space = 15404160
type = "SD"
path = "B:/"
_card_ptr = userdata
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 24
folder_number = 100
free_space = 15404160
type = "SD"
path = "B:/"
_card_ptr = userdata
date = table:
month = 5
year = 2018
min = 49
hour = 16
wday = 7
isdst = false
yday = 1
day = 6
sec = 13
directory = function: p
remove = function: p
rename = function: p
call = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'globals.xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'globals.print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'globals.generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'globals.api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing exposure settings...
Camera : Canon EOS REBEL T3i (600D) 1.0.2
Lens : EF-S18-55mm f/3.5-5.6 IS
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.375)
Aperture : 9.1 (raw 59, f/9.100001, apex 6.375)
Av range : 3.5..22 (raw 37..80, f/3.5..f/22.6, apex 3.625..9.)
ISO : €1600 (raw 104, 1600, apex 9.)
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...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Done!
request_mode(MODE.M, "M")
old_value = camera.iso.raw
printf("Setting ISO to random values...\n")
for k = 1,100 do
local method = math.random(1,3)
local d = nil
if method == 1 then
local iso = math.random(100, 6400)
if math.random(1,2) == 1 then
camera.iso.value = iso
else
camera.iso = iso
end
d = math.abs(math.log(camera.iso.value,2) - math.log(iso,2))
elseif method == 2 then
local apex = math.random(5*100,11*100)/100
camera.iso.apex = apex
d = math.abs(camera.iso.apex - apex)
elseif method == 3 then
local raw = math.random(72, 120)
camera.iso.raw = raw
d = math.abs(camera.iso.raw - raw) / 8
end
-- difference between requested and actual ISO should be max 1/3 EV
if d > 1/3 then
printf("Error: ISO delta %s EV\n", d)
end
-- ISO and Sv (APEX) should be consistent
local expected_apex = math.log(camera.iso.value/3.125, 2)
if math.abs(expected_apex - camera.iso.apex) > 0.2 then
printf("Error: ISO %s != Sv%s, expected %s\n", camera.iso.value, camera.iso.apex, expected_apex)
end
-- setting ISO to the same value, using any method (value,apex,raw)
-- should not change anything
for i,field in pairs{"value","apex","raw"} do
local current = {}
current.apex = camera.iso.apex
current.value = camera.iso.value
current.raw = camera.iso.raw
camera.iso[field] = current[field]
if camera.iso.value ~= current.value then
printf("Error: ISO set to %s=%s, got %s, expected %s\n", field, current[field], camera.iso.value, current.value)
end
if camera.iso.apex ~= current.apex then
printf("Error: ISO set to %s=%s, got Sv%s, expected Sv%s\n", field, current[field], camera.iso.apex, current.apex)
end
if camera.iso.raw ~= current.raw then
printf("Error: ISO set to %s=%s, got %s, expected %s (raw)\n", field, current[field], camera.iso.raw, current.raw)
end
end
end
camera.iso.raw = old_value
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-6 20:59:23
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 128
apex = 9.
ms = 2
value = 0.001953
aperture = table:
raw = 59
apex = 6.375
value = 9.100001
min = table:
raw = 37
apex = 3.625
value = 3.5
max = table:
raw = 80
apex = 9.
value = 22.6
iso = table:
raw = 72
apex = 5.
value = 100
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = -12
value = -1.5
kelvin = 5200
mode = 3
metering_mode = 3
drive_mode = 1
model = "Canon EOS REBEL T3i"
model_short = "600D"
firmware = "1.0.2"
temperature = 155
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
burst = function: p
wait = function: p
bulb = function: p
shoot = function: p
reboot = function: p
event = table:
pre_shoot = nil
post_shoot = nil
shoot_task = nil
seconds_clock = nil
keypress = nil
custom_picture_taking = nil
intervalometer = nil
config_save = nil
console = table:
write = function: p
show = function: p
hide = function: p
clear = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
stop = function: p
start = function: p
info = function: p
wait = function: p
pause = function: p
resume = function: p
lens = table:
name = "EF-S18-55mm f/3.5-5.6 IS"
focal_length = 18
focus_distance = 760
hyperfocal = 1909
dof_near = 558
dof_far = 1216
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = nil
height = 480
width = 720
screenshot = function: p
off = function: p
rect = function: p
line = function: p
notify_box = function: p
draw = function: p
load = function: p
pixel = function: p
print = function: p
on = function: p
circle = function: p
clear = function: p
key = table:
last = 10
press = function: p
wait = function: p
menu = table:
visible = false
block = function: p
select = function: p
set = function: p
open = function: p
new = function: p
get = function: p
close = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 18
ms_clock = 18904
image_prefix = "IMG_"
dcim_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "B:/DCIM/"
path = "B:/DCIM/100CANON/"
config_dir = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = table:
exists = true
create = function: p
children = function: p
files = function: p
parent = nil
path = "B:/"
path = "ML/"
path = "ML/SETTINGS/"
ml_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 53
folder_number = 100
free_space = 15600928
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 53
folder_number = 100
free_space = 15600928
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
month = 5
year = 2018
day = 6
yday = 1
min = 59
isdst = false
sec = 24
wday = 7
hour = 20
remove = function: p
rename = function: p
directory = function: p
call = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
function not available on this camera
stack traceback:
[C]: in ?
[C]: in for iterator 'for iterator'
ML/SCRIPTS/LIB/logger.lua:125: in function 'logger.serialize'
ML/SCRIPTS/API_TEST.LUA:36: in function <ML/SCRIPTS/API_TEST.LUA:35>
[C]: in function 'xpcall'
ML/SCRIPTS/API_TEST.LUA:35: in function 'print_table'
ML/SCRIPTS/API_TEST.LUA:81: in function 'generic_tests'
ML/SCRIPTS/API_TEST.LUA:1338: in function 'api_tests'
ML/SCRIPTS/API_TEST.LUA:1364: in main chunktask = table:
yield = function: p
create = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_0054.CR2: 22956594
B:/DCIM/100CANON/IMG_0054.JPG: 4822231
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_0055.CR2: 23009531
B:/DCIM/100CANON/ABC_0055.JPG: 4848494
B:/DCIM/100CANON/ABC_0056.CR2: 23052820
B:/DCIM/100CANON/ABC_0056.JPG: 4864321
Bracketed pictures...
B:/DCIM/100CANON/IMG_0057.CR2: 20934042
B:/DCIM/100CANON/IMG_0057.JPG: 3050554
B:/DCIM/100CANON/IMG_0058.CR2: 23038542
B:/DCIM/100CANON/IMG_0058.JPG: 4853789
B:/DCIM/100CANON/IMG_0059.CR2: 26637511
B:/DCIM/100CANON/IMG_0059.JPG: 5049995
Bulb picture...
Elapsed time: 11754
B:/DCIM/100CANON/IMG_0060.CR2: 17216150
B:/DCIM/100CANON/IMG_0060.JPG: 1215102
Picture taking tests completed.
Testing multitasking...
Only one task allowed to interrupt...
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Main task yielding.
Task C started.
Task C finished.
Main task back.
Multitasking tests completed.
Testing half-shutter...
Half-shutter test OK.
Testing module 'lv'...
LiveView is running; stopping...
Starting LiveView...
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: ML
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Overlays: disabled
Overlays: ML
Overlays: disabled
Overlays: Canon
Overlays: Canon
Overlays: Canon
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.
Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 1130
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...15...14...13...12...11...10...9...8...7...6...5...4...3...Autofocus triggered.
Autofocus completed.
Focus distance: 760
Focusing backward...
Focus distance: 655350
Focus motor position: 582
Focusing forward with step size 3, wait=true...
.......
Focus distance: 250
Focus motor position: -1287
Focusing backward with step size 3, wait=true...
.......
Focus distance: 655350
Focus motor position: 607
Focus range: 7 steps forward, 7 steps backward.
Motor steps: 1869 forward, 1894 backward, 25 lost.
Focusing forward with step size 3, wait=false...
..............................
Focus distance: 250
Focus motor position: -1263
Focusing backward with step size 3, wait=false...
............................
Focus distance: 655350
Focus motor position: 630
Focus range: 30 steps forward, 28 steps backward.
Motor steps: 1870 forward, 1893 backward, 23 lost.
Focusing forward with step size 2, wait=true...
....................................
Focus distance: 250
Focus motor position: -1230
Focusing backward with step size 2, wait=true...
.....................................
Focus distance: 655350
Focus motor position: 652
Focus range: 36 steps forward, 37 steps backward.
Motor steps: 1860 forward, 1882 backward, 22 lost.
Focusing forward with step size 2, wait=false...
...
Focus distance: 250
Focus motor position: -1210
Focusing backward with step size 2, wait=false...
...
Focus distance: 655350
Focus motor position: 667
Focus range: 120 steps forward, 126 steps backward.
Motor steps: 1862 forward, 1877 backward, 15 lost.
Focusing forward with step size 1, wait=true...
...
Focus distance: 250
Focus motor position: -1283
Focusing backward with step size 1, wait=true...
...
Focus distance: 655350
Focus motor position: 685
Focus range: 150 steps forward, 151 steps backward.
Motor steps: 1950 forward, 1968 backward, 18 lost.
Focusing forward with step size 1, wait=false...
...
Focus distance: 250
Focus motor position: -1266
Focusing backward with step size 1, wait=false...
...
Focus distance: 655350
Focus motor position: 743
Focus range: 296 steps forward, 325 steps backward.
Motor steps: 1951 forward, 2009 backward, 58 lost.
Focus test completed.
Testing exposure settings...
Camera : Canon EOS REBEL T3i (600D) 1.0.2
Lens : EF-S18-55mm f/3.5-5.6 IS
Shoot mode: 3
Shutter : ‚5 (raw 75, 0.192776s, 193ms, apex 2.375)
Aperture : 9.1 (raw 59, f/9.100001, apex 6.375)
Av range : 3.5..22 (raw 37..80, f/3.5..f/22.6, apex 3.625..9.)
ISO : €1600 (raw 104, 1600, apex 9.)
EC : 0.0 (raw 0, 0 EV)
Flash EC : -1.5 (raw -12, -1.5 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.
Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.
Done!
- overall sanity check (for example, if you decide to take this build out and use it for a couple of hours, please report back)
Anything specific I should be looking for?
Drive Modes Single, Continuous, Self timer (2s, 10s+remote, 10s + continuous shots 2-10)I thought this last referred to being able to take shots at intervals from 2 to ten seconds, not that it would take two to ten shots after self timer.
If I want to be safe, I should only update my firmware to 1.02, (which I was able to get from a link provided in the thread), instead of the 1.03 which is available on the Canon website?
I have just bought a Canon EOS 600D (used, as new) which came from Germany. It's got version 1.01 firmware on it at the moment.
In some ways I would rather use the latest Canon official firmware, but I see that the first page still says to use version 1.02, although it links to the Canon website, which only offers 1.03.
Firmware Version 1.0.3 incorporates the following fixes:
Corrects a phenomenon in which when using the camera with the EF-S 18-135mm f/3.5-5.6 IS USM or EF 70-300mm f/4-5.6 IS II USM lens, even if lens aberration correction is set to “Enable”, correction will not be applied.
I see the last few posts (apart from the testing posts, which mainly go right over my head) mention that everything seems to be working with 1.03.
Fixed the link in the first post. Thanks. Valid links are always present in the camera download pages. https://builds.magiclantern.fm/
Publicly available builds of ML for the 600D are only available (working on) firmware 1.0.2. If you want to use ML for the 600D, then you must be running the correct firmware for code.
I see the value in wanting to use the latest update (the 1.0.2 version we link to is official Canon firmware, just to be precise), but there is also value in the saying, "if it ain't broke, don't fix it".
The 1.0.3 firmware update only fixed a minor issue.
https://www.canon.com.au/support/support-news/firmware-updates/2016/eos-600d-firmware-version-1,-d-,0,-d-,3
If you don't use this lens with this camera, then the update is mostly mute (imho).
There is a pull request (https://bitbucket.org/hudson/magic-lantern/pull-requests/915/update-to-600d103/diff) to port the main builds of ML to firmware 1.0.3. These pull requests are subject to a bunch of development related stuff before they are made available to all users. If you spend some time here, read sticky threads are so forth, it's actually reasonably easy to setup your own compiling environment, so that you may make your own 1.0.3 build of ML and help the developers test the code (beta test). If you're worried about breaking your camera, that's fine too. :)
Based on your own observations of the discussion in this thread, it seems like the 1.0.3 port is stable, and just waiting for that developer stuff (users to test and report back to devs) to be polished.
You can still use the 1.0.3 firmware and help test ML without having to compile code by yourself. @dfort has builds available on his bitbucket page. See a few posts above this one.
The name and size of the firmware update file can be checked on the website.But, of course, only the name and size of 1.03 is on their website.
Fixed the first post. Better?
These tests are automated - if they fail, there might be either a real bug in the tested build, or a bug in the emulation. The only way to tell is by testing on real hardware and comparing the results - your feedback is welcome!
I tried this on both 1.02 and 1.03 and I get the exact same results, no problem with Format changing option with Q button in Live View or Without Live view.
As for ML submenus, these can be used only while in Photo Mode without Live View, once you turn on Live View or Moviemode, it seems like Q button no longer works with ML menus to get in the Submenus, BUT, the Play button seems to work as the Q button. So I can get in and out of Submenus with Play button and Q button in Photo Mode no Live View and In Live View or Movie mode only Play button allows use of Submenus.
7C5CB> **INT-36h*:00cb7730:00:00: *** mpu_recv(06 05 06 05 01 00), from ff1db6d8 ; BGMT_Q (used in Canon menu)
693B8> **INT-36h*:00cb7730:00:00: *** mpu_recv(06 05 06 20 01 00), from ff1db6d8 ; BGMT_Q (used in LiveView)
This issue is quite puzzling.
I could easily identify this button code in QEMU. Canon firmware accepts both codes - the new one is used in recent cameras, so that makes a bit of sense. The only models still using the old button code are 1100D, 600D and 550D.
550D/600D/1100D/1200D in QEMU: old code (05 01 on the MPU side) is translated into PRESS_DIRECT_PRINT_BUTTON, new code (20 01) is translated into PRESS_UNAVI_BUTTON. They both do the same action on Canon UI (e.g. activate the settings screen).
550D clearly uses the old MPU code (05 01).
2. OVERHEATING
I am having issues with overheating. Even just sitting and not filming, the readout went up to: 56c / 131F / 201 raw. I tried moving the LCD away from the body, but no effect. (And neither the LCD or area behind it was warm anyway.)
When I was filming tests for 12 minutes, the temp display went up to 62C and shown in red (at standard 1.0 Bitrate). Though there were no other warnings and the camera did not shut down. I have no idea if this was always a problem or not, as I never knew the temps before ML gave me the readouts just now. So....how concerned should I be? What temperature (in Celsius since that is the only LCD display) should I be worried about?
I have noticed the SD card was very hot after the filming. Could that be the source?
Hi Irv,
Thank you for the reply and good thought. However, I actually have a grip with battery holder. So yeah, no effect. Plus, that part of the camera isn't running hot.
Risks: What do you want to hear? Nothing I can say will change the risk you are taking.
@AmrchDo you know which of canon dslr's do support 60fps in 1:1 5x crop? Could you share this info, please?
600D can already do 1736x696 5x3 @ 60 FPS (in 720p), patching this mode to make it sample the sensor in 1:1 is possible (1:1 is like x5 mode), but it's not implemented.
After patching 720p mode to 1:1, you will have 1736x696 in 1:1 (square pixels), from that you will be able to lower res down to 320x240 and get 60 FPS.