Canon 1200D

Started by akkotyni, July 12, 2014, 02:48:26 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

violao

Hi, I'm new here and have a question for testers/users of ML on 1200d. Did anyone manage to record  longer than 12min videos by lowering H.264 bitrate below 1.0 under movie settings?

I consider buying this camera and I need to shoot continuous videos with 1920x1080/30p for at least 20 minutes.

Thanks a lot!

BrokenSyntax

I bought one of these secondhand today for £100 for shooting B-roll in some silly little video projects me and my buddies are doing.

I've installed ML successfully, benchmarks show this as capping out at 21MB/s, my temp 16GB Sandisk Ultra card doesn't write fast enough to saturate that but I assume with the 21MB/s read speed cap that this camera can't exceed 20MB/s write speed? Therefore it is suited for sub-720p ML Raw.

Has anyone had any experiences contrary to my assumption above?

vanbov

Hmm, about issue with black screen after silent full-res pictures with review off:

I was able to fix it by appending ResumeLiveView(); under cleanup section of `silent_pic_take_fullres`


gui_uilock(UILOCK_NONE);
ResumeLiveView();  // here
return ok;


Probably this is not corret, and the general idea was to do some other things to return back to live view, also it may brake something, but it should be enough to work on hyperlapses - after returning to liveview we can use cropmarks to hold somepoint. Thats great.
If someone need binary firmware with a fix here it is - https://maketips.net/tip/495/magic-lantern-for-1200d-with-silent-no-black-screen (I hope this is not rules violation or something like this). Here is also detailed steps how I built that thing if someone wants to repeat https://maketips.net/tip/420/build-magic-lantern-firmware

vanbov

Quote from: violao on December 24, 2017, 01:19:29 AM
Hi, I'm new here and have a question for testers/users of ML on 1200d. Did anyone manage to record  longer than 12min videos by lowering H.264 bitrate below 1.0 under movie settings?

I consider buying this camera and I need to shoot continuous videos with 1920x1080/30p for at least 20 minutes.

Thanks a lot!
Hi,
I am able to set CBR under values less then 1 (e.g. 0.5) and record something, but I can't find 1920x1080/30p. Do you mean 30 fps? If yes then there I have only 1920x25, 1920x24, 1280x50, 640x25 modes. I am not working with video staff here but can test something if needed. Probably 30p can be achieved by some haks in ML.

BrokenSyntax

Quote from: vanbov on January 07, 2018, 09:58:37 PM
Hi,
I am able to set CBR under values less then 1 (e.g. 0.5) and record something, but I can't find 1920x1080/30p. Do you mean 30 fps? If yes then there I have only 1920x25, 1920x24, 1280x50, 640x25 modes. I am not working with video staff here but can test something if needed. Probably 30p can be achieved by some haks in ML.

This can be achieved by setting your region settings in the canon MENU to NTSC instead of PAL.

vanbov

Ok, Then looks like I was able to record 1920x30 .MOV 20-minute video with 0.5 CBR (took 3.7 Gb).

a1ex

While reviewing the 1300D code, I've noticed a few things that may need double-checking on 1200D, in internals.h:

- Display filters are likely to work out of the box:

#define CONFIG_CAN_REDIRECT_DISPLAY_BUFFER_EASILY
#define CONFIG_CAN_REDIRECT_DISPLAY_BUFFER
#define CONFIG_DISPLAY_FILTERS


(this will enable fisheye correction, anamorphic preview, raw video preview with correct framing and a few others)

- CONFIG_EXPSIM: I expect this to work (in LiveView, this should disable exposure simulation, so the brightness you see on the screen will no longer match the dialed exposure)

- CONFIG_FPS_AGGRESSIVE_UPDATE: not sure if needed. With FPS override turned off, open the submenu and write down the timer values in all video modes (including photo mode and x5 zoom). The same test was done for 1100D.

- CONFIG_MOVIE_AE_WARNING: there are manual video controls, but they are disabled by default; this should probably be enabled.

If any of you can compile from source, can you try to switch the above options and report back?

vanbov

I am able to build and test, but unfortunately, I am not familiar with all that magic staff here because I have been using only silent picture and intervalometer. So, unfortunately, it hard for me to determine detailed test flow for all items. But I feel a duty to help this awesome project at least with those small things that I can do.
So at least I was able to run firmware with updated constants.

Here is binary firmware https://hinty.io/ivictbor/magic-lantern-for-1200d-with-silent-no-black-screen/ if someone else wants to test on 1200D.

About CONFIG_FPS_AGGRESSIVE_UPDATE - I found FPS override and turned off, but I am not sure I got correctly where are teh timer values and how to switch the mode to run through all modes, sorry for that. Probably someone here who uses ML a lot can support me with detailed guidelines - where to go what to click - then I will able to run these guidelines and provide photos.

a1ex

"Liveview looks like this:" -> that's a bug; ML shouldn't print things over Canon's overlays. To solve it, one has to find a property that tells us when these overlays are turned on or off; however, I have a feeling it's just a simple tweak. Try this patch:


--- a/src/propvalues.c
+++ b/src/propvalues.c
@@ -239,3 +239,3 @@
     hdmi_vars_update();
-    #elif defined(CONFIG_60D) || defined(CONFIG_600D) || defined(CONFIG_1100D) || defined(CONFIG_50D) || defined(CONFIG_DIGIC_V)
+    #elif defined(EVF_STATE) || defined(CONFIG_50D)
     lv_disp_mode = (uint8_t)buf[1];


That makes the code path with buf[1] available to all models using EVF_STATE (recent DIGIC 4, all DIGIC 5 and also newer models); these are likely similar, but it's something I'm unable to test in QEMU for now.

To test: press INFO/DISP a few times. ML overlays should appear only when Canon overlays are turned off (not both at the same time, fighting over the screen).

Raw video preview: mlv_play does not use display filters (previously, it should have worked in the same way). There's an option in the submenu to change the preview mode - you'll notice it right away, as it has low frame rate and looks ugly. Or, try the fisheye correction, which is the most demanding preview option (memory hungry).

FPS timers are in the submenu (timer A and B). Just write down their values. To change video modes, use Canon menu (1920x1080 24/25/30 fps, 1280x720 50/60 fps, x5 zoom etc).

Some related stuff that wasn't done for 1200D: VRAM dumps in all video modes.


vanbov

Hm, unfortunately for me looks like after the patch overlays still are clashed. Probably as you said it should be another variable.

Thanks, found timer values here: Movie -> FPS Override -> Advanced:

For NTSC modes (Canon menu in Video mode -> Second tab -> Video System -> For NTSC):
1. 1920x1080 30fps
Timer A 546 (+0)
Timer B 1760 (+0)
2. 1920x1080 24fps
Timer A 546 (+0)
Timer B 2200 (+0)
3 1280x720 60fps
Timer A 546 (+0)
Timer B 880 (+0)
4. 640x480 30fps:
Timer A 546 (+0)
Timer B 1760 (+0)

For PAL modes (Video System -> For PAL):

1. 1920x1080 25fps
Timer A 576 (+0)
Timer B 2000(+0)
2. 1920x1080 24fps (same as for NTSC)
Timer A 546 (+0)  (same as for NTSC)
Timer B 2200 (+0) (same as for NTSC)
3 1280x720 50fps
Timer A 576 (+0)
Timer B 1000 (+0)
4. 640x480 25fps:
Timer A 576 (+0)
Timer B 2000 (+0)

I keep searching for video preview option, hope will find it soon. Currently, I found only Display ->Defishing -> Panini/Rectilinear in ML menu but did not notice any changes in live preview or in video playback. But I am not sure that it is exactly what we are trying to test.

a1ex

Forgot to #include <platform/state-object.h> - can you try with that? Or otherwise make sure the branch with buf[1] is the one that gets compiled for 1200D (e.g. you should get a compiling error if you write some nonsense there).

FPS timers look well-behaved (unlike 1100D), so we don't need CONFIG_FPS_AGGRESSIVE_UPDATE. Other than slightly lower CPU usage, it won't really make a difference though.

If you don't see anything with defishing or anamorphic preview, that means the display filters are not working, for some reason. I'd like to see an EDMAC screenshot in LiveView (edmac.mo, show channels) and all possible addresses for channels #2 and #3 (hold the down arrow pressed to see the address changing faster).

vanbov

Yep, really, without that include buf[1] path was not included so my previous change had no value.
And now it looks fixed:

Here are channels:

The second picture is unfocused so here is address:
2nd channel address is 4000080
3nd channel address is d07800

parkerlreed

Quote from: a1ex on January 28, 2018, 03:08:04 PM
Forgot to #include <platform/state-object.h> - can you try with that? Or otherwise make sure the branch with buf[1] is the one that gets compiled for 1200D (e.g. you should get a compiling error if you write some nonsense there).

I can confirm that works here. https://www.youtube.com/watch?v=8jLuoNtovfI

Canon still likes to draw over if changing values but the ML overlay does hide when the Canon is enabled.

a1ex

Thanks - the buf[1] trick is working, but the bottom bar hack is not.

You could try one of these:

1) CONFIG_LVAPP_HACK_RELOC in internals.h (as used on other recent D4 models)

2) experimental "one size fits all" bottom bar hack

hg merge cleaner-lvapp-hack


3) figure out a better hack (hard, many edge cases)

Raov

anyone porting 2018-02-28 release? kinda want new features introduced in the updates
7D.203 + 70-300mm f/4-5.6 IS USM

dfort

What features do you kinda want?

Looks like it is working, at least in QEMU.





I've been doing some firmware updates and the 1200D is on my list. Changing the firmware on a port that isn't complete yet might not be the best thing to do but some old bugs were found on other cameras by doing an update. This would require getting a firmware dump for 1.0.2. If someone could get that please PM me.

I put up a "1200D Canon Firmware for Testers" package on my downloads page that has both Canon 1.0.1 and 1.0.2 firmware updaters so you don't have to go searching for them. Use the Portable Dumper linked at the bottom of the Nightlies download page. Here's the forum topic with way too much information about the Portable Dumper.

dterrahe

I've tried to use the rom dumper on two different sd cards but it always gets stuck on
Dumping ROM0 (attempt 1)...

It also says
Firmware version: 1.0.1 /4.4.3 5A(20)
even after I just updated to 1.0.2

Is that because I installed ML for 1.0.1 on each SD card first and then overwrote the autoexec.bat with the dumper? Is there another way to get the dumper to run on an empty sd card?

dfort

Thanks @dterrahe - starting a firmware update on the 1200D to the latest Canon 1.0.2:



I don't have access to a camera so I'm counting on 1200D user feedback on this. On other cameras these firmware update exercises have brought up some issues and shaken out some bugs so let's see what happens on this camera.

Raov

Quote from: dfort on April 25, 2018, 02:14:17 AM
Thanks @dterrahe - starting a firmware update on the 1200D to the latest Canon 1.0.2:



I don't have access to a camera so I'm counting on 1200D user feedback on this. On other cameras these firmware update exercises have brought up some issues and shaken out some bugs so let's see what happens on this camera.

nice job my dude
also i have a 1200D maybe i can try some builds camera has a softbrick now, battery fell out while downgrading to 1.0.1
7D.203 + 70-300mm f/4-5.6 IS USM

dfort

1200D.102 is up and running -- at least running in QEMU.



There were surprisingly few changes needed. For example, here's the check-stubs script output:

check-stubs.py platform/1200D.101/stubs.S platform/1200D.102/stubs.S

STUB                                                    OLD           NEW     DELTA
current_interrupt                                    0x00000674 -> 0x00000674 [0x000]
task_dispatch_hook                                   0x0000193c -> 0x0000193c [0x000]
current_task                                         0x00001a2c -> 0x00001a2c [0x000]
gui_main_struct                                      0x00001c18 -> 0x00001c18 [0x000]
sounddev                                             0x00001e50 -> 0x00001e50 [0x000]
dm_names                                             0x00002440 -> 0x00002440 [0x000]
task_max                                             0x0000295c -> 0x0000295c [0x000]
gui_timer_struct                                     0x00003c90 -> 0x00003c90 [0x000]
mvr_config                                           0x00005a14 -> 0x00005a14 [0x000]
additional_version                                   0x00007b98 -> 0x00007b98 [0x000]
gui_task_list                                        0x0000a528 -> 0x0000a528 [0x000]
cf_device                                            0x00014fec -> 0x00014fec [0x000]
sd_device                                            0x00015010 -> 0x00015010 [0x000]
LCD_Palette                                          0x0001bbe0 -> 0x0001bbe0 [0x000]
bmp_vram_info                                        0x0001d3e0 -> 0x0001d3e0 [0x000]
lv_path_struct                                       0x000753f0 -> 0x000753f0 [0x000]
camera_engine                                        0xc0220000 -> 0xc0220000 [0x000]
cstart                                               0xff0c1028 -> 0xff0c1028 [0x000] [!!!]
create_init_task                                     0xff0c7df0 -> 0xff0c7df0 [0x000] [!!!]
_malloc                                              0xff0c8ba4 -> 0xff0c8ba4 [0x000] [!!!]
_free                                                0xff0c8bfc -> 0xff0c8bfc [0x000] [!!!]
init_task                                            0xff0c9648 -> 0xff0c9648 [0x000] [!!!]
gui_main_task                                        0xff0d10d4 -> 0xff0d10d4 [0x000] [!!!]
GUI_Control                                          0xff0d1490 -> 0xff0d1490 [0x000] [!!!]
GUI_ChangeMode                                       0xff0d1590 -> 0xff0d1590 [0x000] [!!!]
gui_init_end                                         0xff0d1af0 -> 0xff0d1af0 [0x000] [!!!]
SRM_AllocateMemoryResourceFor1stJob                  0xff0d9b14 -> 0xff0d9b14 [0x000] [!!!]
SRM_FreeMemoryResourceFor1stJob                      0xff0dc3a8 -> 0xff0dc3a8 [0x000] [!!!]
StartASIFDMAADC                                      0xff105e10 -> 0xff105e10 [0x000] [!!!]
StopASIFDMAADC                                       0xff1060a8 -> 0xff1060a8 [0x000] [!!!]
StartASIFDMADAC                                      0xff1061d0 -> 0xff1061d0 [0x000] [!!!]
StopASIFDMADAC                                       0xff106444 -> 0xff106444 [0x000] [!!!]
SetASIFMode                                          0xff10656c -> 0xff10656c [0x000] [!!!]
SetNextASIFADCBuffer                                 0xff106888 -> 0xff106888 [0x000] [!!!]
SetNextASIFDACBuffer                                 0xff106af4 -> 0xff106af4 [0x000] [!!!]
sounddev_task                                        0xff108488 -> 0xff108488 [0x000] [!!!]
SoundDevActiveIn                                     0xff10888c -> 0xff10888c [0x000] [!!!]
sounddev_active_in                                   0xff10888c -> 0xff10888c [0x000] [!!!]
SoundDevShutDownIn                                   0xff108ae0 -> 0xff108ae0 [0x000] [!!!]
SetAudioVolumeIn                                     0xff108c20 -> 0xff108c20 [0x000] [!!!]
PowerAudioOutput                                     0xff108c54 -> 0xff108c54 [0x000] [!!!]
_prop_request_change                                 0xff10c0c8 -> 0xff10c0c8 [0x000] [!!!]
prop_deliver                                         0xff10c6a8 -> 0xff10c6a8 [0x000] [!!!]
prop_register_slave                                  0xff10c730 -> 0xff10c730 [0x000] [!!!]
_prop_cleanup                                        0xff10c850 -> 0xff10c850 [0x000] [!!!]
EnableImagePhysicalScreenParameter                   0xff114874 -> 0xff114874 [0x000] [!!!]
LoadCalendarFromRTC                                  0xff11aee0 -> 0xff11aee0 [0x000] [!!!]
SetAudioVolumeOut                                    0xff11bc20 -> 0xff11bc20 [0x000] [!!!]
SetSamplingRate                                      0xff11c948 -> 0xff11c948 [0x000] [!!!]
PowerMicAmp                                          0xff11cfe8 -> 0xff11cfe8 [0x000] [!!!]
DryosDebugMsg                                        0xff11f5dc -> 0xff11f5dc [0x000] [!!!]
dm_set_store_level                                   0xff11f93c -> 0xff11f93c [0x000] [!!!]
call                                                 0xff1204a4 -> 0xff1204a4 [0x000] [!!!]
SetHPTimerAfterNow                                   0xff120f28 -> 0xff120f28 [0x000] [!!!]
SetHPTimerNextTick                                   0xff12101c -> 0xff12101c [0x000] [!!!]
create_named_semaphore                               0xff12213c -> 0xff12213c [0x000] [!!!]
take_semaphore                                       0xff12229c -> 0xff12229c [0x000] [!!!]
give_semaphore                                       0xff122384 -> 0xff122384 [0x000] [!!!]
msleep                                               0xff122770 -> 0xff122770 [0x000] [!!!]
task_create                                          0xff122824 -> 0xff122824 [0x000] [!!!]
GetSizeOfMaxRegion                                   0xff1233ec -> 0xff1233ec [0x000] [!!!]
GetMemoryInformation                                 0xff123440 -> 0xff123440 [0x000] [!!!]
_AllocateMemory                                      0xff12369c -> 0xff12369c [0x000] [!!!]
_FreeMemory                                          0xff123a2c -> 0xff123a2c [0x000] [!!!]
CreateMemoryChunk                                    0xff124408 -> 0xff124408 [0x000] [!!!]
GetMemoryAddressOfMemoryChunk                        0xff1249a8 -> 0xff1249a8 [0x000] [!!!]
DeleteMemorySuite                                    0xff124a1c -> 0xff124a1c [0x000] [!!!]
CreateMemorySuite                                    0xff124be8 -> 0xff124be8 [0x000] [!!!]
AddMemoryChunk                                       0xff124e8c -> 0xff124e8c [0x000] [!!!]
GetFirstChunkFromSuite                               0xff124f60 -> 0xff124f60 [0x000] [!!!]
GetNextMemoryChunk                                   0xff1256f4 -> 0xff1256f4 [0x000] [!!!]
dma_memcpy                                           0xff126cfc -> 0xff126cfc [0x000] [!!!]
AllocateMemoryResource                               0xff127968 -> 0xff127968 [0x000] [!!!]
AllocateContinuousMemoryResource                     0xff1279b4 -> 0xff1279b4 [0x000] [!!!]
FreeMemoryResource                                   0xff127acc -> 0xff127acc [0x000] [!!!]
SetTimerAfter                                        0xff1290bc -> 0xff1290bc [0x000] [!!!]
CancelTimer                                          0xff1292bc -> 0xff1292bc [0x000] [!!!]
task_trampoline                                      0xff12f67c -> 0xff12f67c [0x000] [!!!]
DispSensorStart                                      0xff134bb8 -> 0xff134bb8 [0x000] [!!!]
SetGUIRequestMode                                    0xff157514 -> 0xff157514 [0x000] [!!!]
gui_massive_event_loop                               0xff159590 -> 0xff159590 [0x000] [!!!]
gui_change_mode                                      0xff15b430 -> 0xff15b430 [0x000] [!!!]
gui_local_post                                       0xff15bba0 -> 0xff15bba0 [0x000] [!!!]
gui_other_post                                       0xff15c150 -> 0xff15c150 [0x000] [!!!]
gui_change_shoot_type_post                           0xff15c470 -> 0xff15c470 [0x000] [!!!]
ptpPropSetUILock                                     0xff1fff84 -> 0xff1fff84 [0x000] [!!!]
mvrSetDefQScale                                      0xff27f9d0 -> 0xff27f9d0 [0x000] [!!!]
mvrSetFullHDOptSize                                  0xff27fa08 -> 0xff27fa08 [0x000] [!!!]
mvrSetGopOptSizeFULLHD                               0xff27fbf8 -> 0xff27fbf8 [0x000] [!!!]
mvrFixQScale                                         0xff27fef4 -> 0xff27fef4 [0x000] [!!!]
SetEDmac                                             0xff29c7bc -> 0xff29c7bc [0x000] [!!!]
ConnectWriteEDmac                                    0xff29c874 -> 0xff29c874 [0x000] [!!!]
ConnectReadEDmac                                     0xff29c938 -> 0xff29c938 [0x000] [!!!]
StartEDmac                                           0xff29cabc -> 0xff29cabc [0x000] [!!!]
AbortEDmac                                           0xff29cc0c -> 0xff29cc0c [0x000] [!!!]
RegisterEDmacCompleteCBR                             0xff29ccac -> 0xff29ccac [0x000] [!!!]
UnregisterEDmacCompleteCBR                           0xff29ccc0 -> 0xff29ccc0 [0x000] [!!!]
RegisterEDmacAbortCBR                                0xff29ccd4 -> 0xff29ccd4 [0x000] [!!!]
UnregisterEDmacAbortCBR                              0xff29cd14 -> 0xff29cd14 [0x000] [!!!]
RegisterEDmacPopCBR                                  0xff29cddc -> 0xff29cddc [0x000] [!!!]
UnregisterEDmacPopCBR                                0xff29cdf0 -> 0xff29cdf0 [0x000] [!!!]
shamem_read                                          0xff29daa8 -> 0xff29daa8 [0x000] [!!!]
_EngDrvOut                                           0xff29dbb8 -> 0xff29dbb8 [0x000] [!!!]
_engio_write                                         0xff29df84 -> 0xff29df84 [0x000] [!!!]
CreateResLockEntry                                   0xff2a0b8c -> 0xff2a0b8c [0x000] [!!!]
LockEngineResources                                  0xff2a10cc -> 0xff2a10cc [0x000] [!!!]
UnLockEngineResources                                0xff2a1208 -> 0xff2a1208 [0x000] [!!!]
_FIO_OpenFile                                        0xff2a24d0 -> 0xff2a24d0 [0x000] [!!!]
_FIO_CreateFile                                      0xff2a258c -> 0xff2a258c [0x000] [!!!]
_FIO_RemoveFile                                      0xff2a2638 -> 0xff2a2638 [0x000] [!!!]
_FIO_ReadFile                                        0xff2a26e0 -> 0xff2a26e0 [0x000] [!!!]
FIO_SeekSkipFile                                     0xff2a2790 -> 0xff2a2790 [0x000] [!!!]
_FIO_WriteFile                                       0xff2a2880 -> 0xff2a2880 [0x000] [!!!]
FIO_CloseFile                                        0xff2a2930 -> 0xff2a2930 [0x000] [!!!]
_FIO_GetFileSize                                     0xff2a2aac -> 0xff2a2aac [0x000] [!!!]
_FIO_RenameFile                                      0xff2a2fa4 -> 0xff2a2fa4 [0x000] [!!!]
_FIO_CreateDirectory                                 0xff2a316c -> 0xff2a316c [0x000] [!!!]
_FIO_FindFirstEx                                     0xff2a372c -> 0xff2a372c [0x000] [!!!]
FIO_FindNextEx                                       0xff2a3820 -> 0xff2a3820 [0x000] [!!!]
FIO_FindClose                                        0xff2a3900 -> 0xff2a3900 [0x000] [!!!]
_audio_ic_write                                      0xff2ad25c -> 0xff2ad25c [0x000] [!!!]
_audio_ic_read                                       0xff2ad554 -> 0xff2ad554 [0x000] [!!!]
BulkOutIPCTransfer                                   0xff2b29a8 -> 0xff2b29a8 [0x000] [!!!]
BulkInIPCTransfer                                    0xff2b2a78 -> 0xff2b2a78 [0x000] [!!!]
QuickOutIPCTransfer                                  0xff2b2bf8 -> 0xff2b2bf8 [0x000] [!!!]
RegisterRPCHandler                                   0xff2b3178 -> 0xff2b3178 [0x000] [!!!]
RequestRPC                                           0xff2b3228 -> 0xff2b3228 [0x000] [!!!]
msg_queue_create                                     0xff2b3c44 -> 0xff2b3c44 [0x000] [!!!]
msg_queue_receive                                    0xff2b3d54 -> 0xff2b3d54 [0x000] [!!!]
msg_queue_post                                       0xff2b3f40 -> 0xff2b3f40 [0x000] [!!!]
msg_queue_count                                      0xff2b3f80 -> 0xff2b3f80 [0x000] [!!!]
CreateRecursiveLock                                  0xff2b3ff4 -> 0xff2b3ff4 [0x000] [!!!]
AcquireRecursiveLock                                 0xff2b408c -> 0xff2b408c [0x000] [!!!]
ReleaseRecursiveLock                                 0xff2b41a0 -> 0xff2b41a0 [0x000] [!!!]
vsnprintf                                            0xff2b74d8 -> 0xff2b74d8 [0x000] [!!!]
TryPostStageEvent                                    0xff2b9360 -> 0xff2b9360 [0x000] [!!!]
TryPostStageEvent_end                                0xff2b93bc -> 0xff2b93bc [0x000] [!!!]
TryPostEvent                                         0xff2b9cd8 -> 0xff2b9cd8 [0x000] [!!!]
TryPostEvent_end                                     0xff2b9d34 -> 0xff2b9d34 [0x000] [!!!]
_alloc_dma_memory                                    0xff2bb314 -> 0xff2bb314 [0x000] [!!!]
_free_dma_memory                                     0xff2bb348 -> 0xff2bb348 [0x000] [!!!]
GUI_SetRollingPitchingLevelStatus                    0xff2e8d5c -> 0xff2e8d5c [0x000] [!!!]
GUI_SetLvMode                                        0xff2e94e8 -> 0xff2e94e8 [0x000] [!!!]
Gui_SetSoundRecord                                   0xff2e971c -> 0xff2e971c [0x000] [!!!]
dialog_set_property_str                              0xff2f5e1c -> 0xff2f5e1c [0x000] [!!!]
ptp_register_handler                                 0xff369bdc -> 0xff369bdc [0x000] [!!!]
dialog_redraw                                        0xff3e63a4 -> 0xff3e63a4 [0x000] [!!!]
MirrorDisplay                                        0xff403f90 -> 0xff403f90 [0x000] [!!!]
ReverseDisplay                                       0xff403fc0 -> 0xff403fc0 [0x000] [!!!]
NormalDisplay                                        0xff403ff0 -> 0xff403ff0 [0x000] [!!!]
is_taskid_valid                                      0xff417ed4 -> 0xff417ed4 [0x000] [!!!]
ErrForCamera_handler                                 0xff4250e0 -> 0xff4250e0 [0x000] [!!!]
GUI_SetCFnForTab4                                    0xff42aee0 -> 0xff42aee0 [0x000] [!!!]
CancelDateTimer                                      0xff437180 -> 0xff437180 [0x000] [!!!]
HideUnaviFeedBack_maybe                              0xff43c08c -> 0xff43c08c [0x000] [!!!]
LiveViewApp_handler                                  0xff440b90 -> 0xff440b90 [0x000] [!!!]
LiveViewApp_handler_BL_JudgeBottomInfoDispTimerState 0xff441218 -> 0xff441218 [0x000] [!!!]
LiveViewApp_handler_end                              0xff442864 -> 0xff442864 [0x000] [!!!]
LiveViewWbApp_handler                                0xff44e238 -> 0xff44e238 [0x000] [!!!]
ShootOlcApp_handler                                  0xff44f9dc -> 0xff44f9dc [0x000] [!!!]
PlayMain_handler                                     0xff45bdb4 -> 0xff45bdb4 [0x000] [!!!]
fsuDecodePartitionTable                              0xff4f93e8 -> 0xff4f93ec [0x004]
ErrCardForLVApp_handler                              0xff532004 -> 0xff532008 [0x004]
PlayMovieGuideApp_handler                            0xff56c228 -> 0xff56c22c [0x004]
StopPlayProtectGuideApp                              0xff56d4cc -> 0xff56d4d0 [0x004]
StartPlayProtectGuideApp                             0xff56d8ac -> 0xff56d8b0 [0x004]
GetCFnData                                           0xff5fb8ec -> 0xff5fb8f0 [0x004]
SetCFnData                                           0xff5fbb18 -> 0xff5fbb1c [0x004]
bzero32                                              0xff623b5c -> 0xff623b60 [0x004]
audio_thresholds                                     0xff69b488 -> 0xff69b490 [0x008]


I put a test build on my downloads page. Note that this is an early test build and doesn't have a ML-SETUP.FIR yet so you'll have to install ML on 1200D.101 before updating the firmware. I made a package called 1200D Canon Firmware for Testers.zip that has both 1.0.1 and 1.0.2 Canon firmware updaters so you don't need to search for them.

@Raov - The test build has the latest unified branch changes.

First test would be to activate the selftest module and run the Stubs API test.

Raov

Quote from: dfort on April 25, 2018, 08:16:05 PM
1200D.102 is up and running -- at least running in QEMU.

@Raov - The test build has the latest unified branch changes.

First test would be to activate the selftest module and run the Stubs API test.

great job, a1ex contacted me about the possible unbrick so i may test it out on real hardware when (and if) the unbrick will be successful.
7D.203 + 70-300mm f/4-5.6 IS USM

dterrahe

After recharging the battery, flashed 1.0.2 and unzipped your new ML version.

Seems to run perfectly.

Ran the stubs api test and got:
Test complete. 11599 passed. 0 failed.

That kindoff sounds good too...

Happy.

dfort

Heard from @dterrahe who sent me the 1.0.2 firmware dump that the camera passed the selftest module Stubs API test with a perfect score. Let's kick this up a notch and run the new lua API tests. Posted a lua_fix test build for the 1200D.102 to my downloads page.

Raov

Quote from: dfort on April 27, 2018, 03:07:46 PM
Heard from @dterrahe who sent me the 1.0.2 firmware dump that the camera passed the selftest module Stubs API test with a perfect score.
thats some real fast progress.
7D.203 + 70-300mm f/4-5.6 IS USM

dfort

@dterrahe has been running the lua tests but is having problems posting to the forum. The 1200D did surprisingly well on the very first lua test run. Here's what he has to report:

QuoteAlso: kicked off the lua test and left it running for a while. It seemed to be doing stuff, but the display got slightly corrupted so the letters become less readable. Then I noticed it was waiting for me to switch to M. Did that and a little later I think I could make out "script finished". It printed a few more lines but a while later it shut off. So I don't know if it reported success or failure. But I attached the log generated; hope that's enough.

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-27 20:25:21
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 0
    apex = -7.
    ms = 0
    value = 0
  aperture = table:
    raw = 40
    apex = 4.
    value = 4.
    min = table:
      raw = 40
      apex = 4.
      value = 4.
    max = table:
      raw = 88
      apex = 10.
      value = 32
  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 = 2
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 1200D"
  model_short = "1200D"
  firmware = "1.0.2"
  temperature = 162
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  bulb = function: p
  wait = function: p
  reboot = function: p
  burst = function: p
  shoot = 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
  show = function: p
  hide = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  pause = function: p
  resume = function: p
  wait = function: p
  info = function: p
  stop = function: p
  start = function: p
lens = table:
  name = "EF70-300mm f/4-5.6 IS II USM"
  focal_length = 70
  focus_distance = 655350
  hyperfocal = 64613
  dof_near = 58837
  dof_far = 1000000
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  rect = function: p
  pixel = function: p
  notify_box = function: p
  draw = function: p
  print = function: p
  off = function: p
  line = function: p
  clear = function: p
  screenshot = function: p
  on = function: p
  circle = function: p
  load = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  get = function: p
  new = function: p
  select = function: p
  set = function: p
  open = function: p
  block = function: p
  close = function: p
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 102
  ms_clock = 102453
  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 = 9859
    folder_number = 100
    free_space = 6077536
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9859
    folder_number = 100
    free_space = 6077536
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  date = table:
    hour = 20
    min = 25
    sec = 23
    month = 4
    year = 2018
    day = 27
    wday = 6
    isdst = false
    yday = 117
  rename = function: p
  call = function: p
  directory = 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 '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...
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 MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Canon GUI tests completed.

Testing ML menu API...
Menu tests completed.

Testing picture taking functions...
Please switch to M mode.
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9860.CR2 not found.
B:/DCIM/100CANON/IMG_9860.JPG not found.


Note that it couldn't find the image files. dterrahe figured out why:

QuoteSome further progress:

The take_pics test failed because I had the colorspace set to adobe; that causes filenames to start with "_MG" rather than "IMG"; so the script assert fails trying to find generated files. After switching back to sRGB it runs fine.

QuoteOK, I'm running into problems in test_camera_take_pics (which also corrupts the display font somewhat so it becomes hard to read), test_keys and test_lens_focus. Attached logs restarting after each failure.

Also attaching a really crappy phone picture of the screen corruption in the take_pics test.

Digging into each of these will take a bit more time but I hope to find some this weekend.

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 06:20:18
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "API_TEST.LUA"
camera = table:
  shutter = table:
    raw = 99
    apex = 5.375
    ms = 24
    value = 0.024097
  aperture = table:
    raw = 53
    apex = 5.625
    value = 7.
    min = table:
      raw = 40
      apex = 4.
      value = 4.
    max = table:
      raw = 88
      apex = 10.
      value = 32
  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 = 0
  model = "Canon EOS 1200D"
  model_short = "1200D"
  firmware = "1.0.2"
  temperature = 171
  gui = table:
    menu = false
    play = false
    play_photo = false
    play_movie = false
    qr = false
    idle = true
  shoot = function: p
  bulb = function: p
  reboot = function: p
  wait = 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:
  write = function: p
  show = function: p
  clear = function: p
  hide = function: p
lv = table:
  enabled = false
  paused = false
  running = false
  zoom = 1
  overlays = false
  stop = function: p
  pause = function: p
  start = function: p
  info = function: p
  wait = function: p
  resume = function: p
lens = table:
  name = "EF70-300mm f/4-5.6 IS II USM"
  focal_length = 70
  focus_distance = 5260
  hyperfocal = 36982
  dof_near = 4635
  dof_far = 6086
  af = true
  af_mode = 0
  focus = function: p
  autofocus = function: p
display = table:
  idle = nil
  height = 480
  width = 720
  rect = function: p
  load = function: p
  clear = function: p
  screenshot = function: p
  circle = function: p
  notify_box = function: p
  draw = function: p
  line = function: p
  pixel = function: p
  print = function: p
  on = function: p
  off = function: p
key = table:
  last = 10
  wait = function: p
  press = function: p
menu = table:
  visible = false
  open = function: p
  new = function: p
  block = function: p
  select = function: p
  set = function: p
  get = function: p
  close = function: p
movie = table:
  recording = false
  start = function: p
  stop = function: p
dryos = table:
  clock = 173
  ms_clock = 173292
  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 = 9862
    folder_number = 100
    free_space = 5998272
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9862
    folder_number = 100
    free_space = 5998272
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  date = table:
    hour = 6
    isdst = false
    month = 4
    year = 2018
    day = 28
    yday = 118
    wday = 7
    min = 20
    sec = 19
  rename = function: p
  call = function: p
  remove = 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...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Enter PLAY mode...
Exit PLAY mode...
Start LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY 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_9863.CR2 not found.
B:/DCIM/100CANON/IMG_9863.JPG not found.

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 06:41:44
===============================================================================

Module tests...
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...

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 07:05:50
===============================================================================

Module tests...
Testing module 'lv'...
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...

===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 07:10:43
===============================================================================

Module tests...
Testing exposure settings...
Camera    : Canon EOS 1200D (1200D) 1.0.2
Lens      : EF70-300mm f/4-5.6 IS II USM
Shoot mode: 3
Shutter   : Ç50 (raw 101, 0.020263s, 20ms, apex 5.625)
Aperture  : Å7.0 (raw 53, f/7., apex 5.625)
Av range  : Å4.0..Å32 (raw 40..88, f/4...f/32, apex 4...10.)
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.


Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.

Done!




QuoteThe lens_focus seems to run fine, but it gets stuck waiting for something, filling the screen with dots. This happens within a loop so don't know how to skip in a useful way.

The keys test fails on:
        assert(key.last == KEY.HALFSHUTTER)

lens focus.LOG
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 11:23:59
===============================================================================

Module tests...

Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 3660
Autofocus in LiveView...
Please trigger autofocus (half-shutter / AF-ON / * ).
19...18...17...16...Autofocus triggered.
Autofocus completed.
Focus distance: 1200
Focusing backward...
Focus distance: 655350
Focus motor position: 7819
Focusing forward with step size 3, wait=true...
......
Focus distance: 1200
Focus motor position: 0
Focusing backward with step size 3, wait=true...
.....
Focus distance: 655350
Focus motor position: 7819
Focus range: 6 steps forward, 5 steps backward.
Motor steps: 7819 forward, 7819 backward, 0 lost.
Focusing forward with step size 3, wait=false...
.....................................................................
Focus distance: 1200
Focus motor position: 6
Focusing backward with step size 3, wait=false...
..............................................................
Focus distance: 655350
Focus motor position: 7819
Focus range: 69 steps forward, 62 steps backward.
Motor steps: 7813 forward, 7813 backward, 0 lost.
Focusing forward with step size 2, wait=true...
..........................
Focus distance: 1200
Focus motor position: 0
Focusing backward with step size 2, wait=true...
...........................
Focus distance: 655350
Focus motor position: 7819
Focus range: 26 steps forward, 27 steps backward.
Motor steps: 7819 forward, 7819 backward, 0 lost.
Focusing forward with step size 2, wait=false...
...


picture taking tests.LOG
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-28 11:19:15
===============================================================================

Module tests...
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_9867.CR2 not found.
B:/DCIM/100CANON/IMG_9867.JPG: 47829
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
B:/DCIM/100CANON/ABC_9868.CR2 not found.
B:/DCIM/100CANON/ABC_9868.JPG: 47638
B:/DCIM/100CANON/ABC_9869.CR2 not found.
B:/DCIM/100CANON/ABC_9869.JPG: 47470
Bracketed pictures...
B:/DCIM/100CANON/IMG_9870.CR2 not found.
B:/DCIM/100CANON/IMG_9870.JPG: 47402
B:/DCIM/100CANON/IMG_9871.CR2 not found.
B:/DCIM/100CANON/IMG_9871.JPG: 47120
B:/DCIM/100CANON/IMG_9872.CR2 not found.
B:/DCIM/100CANON/IMG_9872.JPG: 48754
Bulb picture...
Elapsed time: 11719
B:/DCIM/100CANON/IMG_9873.CR2 not found.
B:/DCIM/100CANON/IMG_9873.JPG: 48838
Picture taking tests completed.

Done!