Canon EOS M

Started by jordancolburn, December 30, 2013, 10:21:20 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.


@Flash_Gordon came up with an interesting idea turning the EOSM into a wildlife trap camera. I came up with a simple solution using a lua script that keeps the LCD active indefinitely but it requires a custom build from the lua_fix branch. It isn't ideal, a better solution would be to allow the LCD to power down and still be able to trigger the camera with Audio RemoteShot but that requires digging deep into the ML code and it might not even be possible.

I posted a package with the custom build and instructions on how to set it up if anyone wants to try it out.


Hello all, about EOS M do you notice a poor battery life? It seems to me really poor (not even an hour of usage). Better with a compatibile battery, worse with the original Canon one.
Thanks to ML I noticed that CPU usage never decrease below 40%... is it normal? What's the idle cpu load for other cameras? Maybe the reason for poor battery life and what's using the CPU so much? (LV?)


60D: 57% in photo mode (30fps, global draw off).

Drops to 26% with FPS override at 10 FPS.


Quote from: a1ex on October 23, 2016, 06:23:17 PM
60D: 57% in photo mode (30fps, global draw off).

Drops to 26% with FPS override at 10 FPS.

Thank you a1ex! So it seems that CPU usage is related to LV...
EOS M with FPS override at 10 FPS has 20% cpu usage... good for battery... but the camera become unusable.
AF slows down proportionally to FPS. It's already slow without override... at 10 fps it takes 4-5 seconds to focus :o
In the 60D AF slows down?


Yes, it does.

Powersave idea: drop to 10 FPS after X seconds of idle time, switch back on half-shutter press (or on any key press).


Quote from: a1ex on October 23, 2016, 06:59:04 PM
Powersave idea: drop to 10 FPS after X seconds of idle time, switch back on half-shutter press (or on any key press).

Great idea. I just wrote some modifications to powersave.c, it works... but there is an annoying issue: with touch or keypress the camera returns instantaneously responsive, while with half shutter there is a little delay... little but noticeable...   :-\

diff -r 15fce5b49b23 src/powersave.c
--- a/src/powersave.c   Sat Oct 08 16:22:41 2016 +0200
+++ b/src/powersave.c   Mon Oct 24 02:31:13 2016 +0200
@@ -129,6 +129,7 @@
static CONFIG_INT("idle.display.gdraw_off.after", idle_display_global_draw_off_after, 0);
static CONFIG_INT("idle.rec", idle_rec, 0);
static CONFIG_INT("idle.shortcut.key", idle_shortcut_key, 0);
+static CONFIG_INT("idle.display.fps_on.after", idle_display_fps_on_after, 0);

/* also used in zebra.c */
volatile int idle_globaldraw_disable = 0;
@@ -143,6 +144,8 @@
static int idle_countdown_display_off_prev = 50;
static int idle_countdown_globaldraw_prev = 50;
static int idle_countdown_clrscr_prev = 50;
+static int idle_countdown_fps = 50;
+static int idle_countdown_fps_prev = 50;

/* this will block all Canon drawing routines when the camera is idle */
/* (workaround for 50D) */
@@ -154,7 +157,7 @@

int idle_is_powersave_enabled()
-    return idle_display_dim_after || idle_display_turn_off_after || idle_display_global_draw_off_after;
+    return idle_display_dim_after || idle_display_turn_off_after || idle_display_global_draw_off_after || idle_display_fps_on_after;

int idle_is_powersave_enabled_on_info_disp_key()
@@ -166,7 +169,8 @@
     return (idle_display_dim_after && !idle_countdown_display_dim_prev) ||
            (idle_display_turn_off_after && !idle_countdown_display_off_prev) ||
-           (idle_display_global_draw_off_after && !idle_countdown_globaldraw_prev);
+           (idle_display_global_draw_off_after && !idle_countdown_globaldraw_prev) ||
+           (idle_display_fps_on_after && !idle_countdown_fps_prev);

void idle_force_powersave_in_1s()
@@ -174,6 +178,7 @@
     idle_countdown_display_off = MIN(idle_countdown_display_off, 10);
     idle_countdown_display_dim = MIN(idle_countdown_display_dim, 10);
     idle_countdown_globaldraw  = MIN(idle_countdown_globaldraw, 10);
+    idle_countdown_fps         = MIN(idle_countdown_fps, 10);

void idle_force_powersave_now()
@@ -181,6 +186,7 @@
     idle_countdown_display_off = MIN(idle_countdown_display_off, 1);
     idle_countdown_display_dim = MIN(idle_countdown_display_dim, 1);
     idle_countdown_globaldraw  = MIN(idle_countdown_globaldraw, 1);
+    idle_countdown_fps         = MIN(idle_countdown_fps, 1);

int handle_powersave_key(struct event * event)
@@ -229,6 +235,7 @@
     idle_countdown_display_off = sensor_status ? 25 : idle_display_turn_off_after * 10;
     idle_countdown_display_dim = sensor_status ? 25 : idle_display_dim_after * 10;
     idle_countdown_globaldraw  = sensor_status ? 25 : idle_display_global_draw_off_after * 10;
+    idle_countdown_fps         = sensor_status ? 25 : idle_display_fps_on_after * 10;

     if (reason == -2345) // disable powersave during recording
@@ -379,6 +386,16 @@

+void idle_fps_en()
+    set_config_var("fps.override", 1);
+void idle_fps_dis()
+    set_config_var("fps.override", 0);

static void black_bars_50D()
@@ -463,6 +480,11 @@
     if (idle_display_global_draw_off_after)
         idle_action_do(&idle_countdown_globaldraw, &idle_countdown_globaldraw_prev, idle_globaldraw_dis, idle_globaldraw_en);

+    if (idle_display_fps_on_after)
+        idle_action_do(&idle_countdown_fps, &idle_countdown_fps_prev, idle_fps_en, idle_fps_dis);
+    #endif
     /* zebra.c */
     extern int clearscreen;
     if (clearscreen == 2) // clear overlay when idle
@@ -611,6 +633,17 @@
             .help = "Turn off GlobalDraw when idle, to save some CPU cycles.",
             //~ .edit_mode = EM_MANY_VALUES,
+        {
+            .name = "Turn on FPS override",
+            .priv           = &idle_display_fps_on_after,
+            .update         = idle_display_feature_print,
+            .select         = idle_timeout_toggle,
+            .max            = 900,
+            .icon_type      = IT_PERCENT_LOG_OFF,
+            .help = "Turn on FPS override when idle, to save some CPU cycles.",
+        },
+       #endif
@@ -633,5 +666,7 @@
void idle_globaldraw_en() { }
void idle_force_powersave_now() { }
void idle_force_powersave_in_1s() { }
+void idle_fps_en() { }
+void idle_fps_dis() { }


Can I install ML on the new M5 ? Looks a great combination for product photography (custom cropmark/ghost image + focus stack)

Walter Schulz

M5 and EOS M are playing different games. EOS M shares codebase with Canon DSLRs. M5 shares with Canon's Point-and-Shoot. It would be quite a big task to port. Look for CHDK port instead.


I meant the EOS M5, there is a difference ? ..

Walter Schulz

I meant EOS M5, too ...


I just realized that "movie crop mode" does not show up under Modified if I use it. Is it supposed to be this way or does it just happen with my M?
EOS 600d, Tamron 17-50mm 2,8 with stab., Tamron 70-300mm, Canon 50mm 1:1,8, Sigma 10-20mm 4-5,6, Sigma 30mm 1,4,  EOS M with 18-55mm, 22mm and EF adapter, tons of more glases incl. FD/FL, EOS 70D, Canon 18-135mm STM


To appear in the Modified menu, an item must also have a CONFIG_INT entry (to be saved in ML config file). Otherwise it doesn't know which is the default state, so it can't tell whether it was modified or not.

You'll need to use a new variable (other than video_mode_crop, which is global and updated from Canon settings aka properties).

Fairly easy coding task, although it requires a little attention to details.


Wasn't this (crop mode) something that had an issue on EOS M? It got reset on restart or something.


Then, adding a config entry will solve that as well.


I believe that the problem was that if you turn on crop mode then switching to a non ML card, you get stuck in crop mode for video. Yep--just tried it. Put camera in crop mode, remove the card, restart the camera and it stays in crop mode.

Would it be possible to turn off crop mode on shutdown then turn it back to the desired state from the configuration file on start up? Of course this wouldn't help if the camera crashes.


Should work if you call movie_crop_hack_disable() from ml_shutdown.


Quote from: a1ex on November 27, 2016, 11:39:08 PM
Should work if you call movie_crop_hack_disable() from ml_shutdown.

Yes it does.

Next we can take a look at the Modified menu thing.


So close. Just need to figure out how to read the config file and switch to the saved mode when restarting the camera. The movie_crop_hack_disable() from ml_shutdown trick works great when switching to non-ML cards but we should be able to restore Movie crop mode if that's what was saved in the config file.


Just discovered that Canon released a firmware update for the EOSM on November 29.

QuoteFirmware Version 2.0.3 incorporates the following fix:

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.

Looks like the same update that the 100D, 650D, 700D, 70D and perhaps others got recently.

No big deal but porting a minor firmware update might be an interesting advanced beginner project. (Is that an oxymoron?)


hey so I went to uninstall ml and I did something wrong now I'm stuck when I try to turn it on the light just flashes green with a black screen but if I take out the sd card and battery and only put the battery back in it will start up any ideas ?



The bootflags on your card and camera are still active. If you put in a card that doesn't have the bootflag set it should work fine. If you want to uninstall ML properly, put ML back on your card and run the install process (firmware update) again but wait 1 minute before restarting the camera. There is a countdown timer on the bottom of the install screen. That will remove the bootflags from both the camera and card.


Hi. Long used ML on different cameras. Very interested in the question. Is there a possibility of follow focus like other cameras. It's just the perfect camera for gimbal. And it would be nice to control the lens without an additional servo. Sorry for the quality of English.


Quote from: branex on December 20, 2016, 06:27:30 PM
Is there a possibility of follow focus like other cameras.

Yes, you need to turn on Movie Servo AF from the Canon movie menu. When it is disabled a shutter half-press will trigger the auto focus.


Thank you dfort. No. I need to continuously focus as SLR cameras canon. Full manual control of the servo. There's tracking focus(follow focus) is implemented with buttons up/down and left/right - tab in the ML menu "focus". And mirrorless the tab "focus" - only DOF.


(I don't know if this is any new info to you guys but I found it quite interesting.)

I found out that JPEG buffer is almost unlimited* when shooting stills in video mode. Raw buffer depth is the same.

I know there is a crop(either 4:3 or 16:9) and file size is slightly smaller(around 5-10%) but it still doesn't explain to me why I can only get 3 JPEG in a row(without slowdown) in photo mode. Even with the lowest quality JPEGs! Maybe there is some logical reason and I'm just being dumb. Don't be harsh on me. xD

I don't know if this is any useful info for the development but I thought I would share this. :)

E: *I tested this a bit more. It is not quite unlimited as I first though but it's still much better than in photo mode. Buffer depth seems best in 4:3 video mode. I can get around 75 shots(shooting large jpegs) in a row without slowdown after formatting and reboot. After that I can get roughly 25 shot bursts. In 16:9 mode it seems to be slightly worse weirdly(bigger crop). I only have 40 MB/s card though, maybe it is better with faster card.
E2: Shooting medium or small size jpegs buffer seems almost unlimited. Got over 150 shots and I stopped myself. Didn't want to ruin my shutter any more. :D