## Wanted: temperatures from your cams

Started by escho, December 25, 2013, 08:16:45 PM

0 Members and 1 Guest are viewing this topic.

#### escho

Hi Alex
I don´t understand very well, what your function does. What is MOD? And where is "-60" ?
Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### a1ex

MOD is the modulo operation: MOD(a,b) is from 0 to b-1 (a and b both int32_t, b > 1). C has the % operator, but that one gives negative numbers as well, which doesn't match what I've learned in the math class about modulo (see https://en.wikipedia.org/wiki/Modular_arithmetic ). That's why I've defined the MOD macro in imath.h.

And 150 * 40 / 100 = 60.

However, that definition wraps around at 102 degrees to 0, so it will fail at negative temperatures. A better version that works from -20 to 80 degrees is:

`#define EFIC_CELSIUS (MOD(efic_temp - 100, 256) * 40 / 100 - 20)`

Before/after (efic_temp from 0 to 255):
`42 42 43 43 44 ... 101 101 102 0 0 0 1 1 2      ... 40 40 41 41 4242 42 43 43 44 ... 81 81 82 -20 -20 -20 -19 -19 ... 40 40 41 41 42`

I'm not sure at which point this number really wraps around, but at least this definition should cover the usual temperature range. If anyone wants to place his EOS M in a freezer or oven for measurements, that data would be welcome, but please be very careful with condensation and/or heat (you can damage the camera). Or, it may be safer to just find the conversion function in Canon code.

#### escho

Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### escho

I would like to use this one:
`#define EFIC_CELSIUS (MOD(efic_temp - 95, 256) * 40 / 100 - 22)`

This would cover a temperature-range between -22°C and  +80"C

Temperatures under -20"C can be possible ( in Sibirien ) but when you turn your cam on, the temperature will rise.
And I guess, Canon will shutdown the cam reaching about 80°C
So this temperature range from -22°C - +80°C should be satisfactory.

Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### escho

Quote from: m1k6 on July 28, 2016, 12:18:53 AM
I did some testing with 1200D.
See the table below. (A => RAW; B => EXIF (°C))
Looks like it is close to group 5 (0,6x-65).
What do you think?

Yes, group 5 should be fine:

Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### escho

The EOS-M temperature jump is fixed. Thankyou Alex
Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### JohanJ

@escho
Here is data from 100D/SL1 w/ ML Beta-4a (magiclantern-Nightly.2016Oct05.100D101)
Tried to cool down the cam in the fridge for about an hour. First shot is therefor with lower temp, looks strange in RAW.
I took a picture in LV mode about every minute and tried to keep the cam busy with focusing in between.

`Time    RAW ExifC0 143 151 144 242 146 263 150 304 150 325 155 356 156 367 156 398 159 419 164 4210 164 4411 164 4512 164 4713 166 4714 165 4815 172 4916 172 5017 173 5118 173 5219 172 5320 174 5321 174 5422 171 5523 176 5524 176 5625 175 5626 180 5727 180 5728 178 5829 178 5930 181 5931 178 60`
60D.111 / 100D.101 / M2.103

#### escho

Thanks Johan

The data look pretty nice. I will have a closer look to them later next week

Edgar
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### DeafEyeJedi

Per @a1ex's request -- I was able to use this command line to spit out Camera Temperatures via exiftool with ease on Mac OS X:

`exiftool -CameraTemperature`
rather than diving through the entire block with this:

`exiftool -U`
unless you want to go for a swim.

Anyway here are the results I got from doing the same test as @JohanJ earlier this week coming from @nikfreak's Nightly.2017Jan06.70D112 (with an exception that the body was left in an A/C controlled room at work to begin with for this test purpose):

`Time / RAW / ExifC0  152 261  161 262  164 293  169 314  174 325  179 336  181 347  180 348  182 369  185 3710 185 3811 192 3912 191 3913 193 4014 193 4015 196 4116 194 4117 202 5018 202 5119 202 5120 201 5121 201 5222 206 5223 206 5224 206 5225 207 5326 207 5327 207 5328 207 5329 211 5330 211 5331 211 53`
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

#### escho

Find some time to make the graph and formula for 70D: https://seescho.wordpress.com/2016/04/24/temperaturanzeige-mit-magiclantern/
The 70D fits fine to convertion-group 5. So I guess, we will take: `0,6x - 65`

I´m working on 100D
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### escho

And the 100D made its way through LibreOffice Calc, too. Formula and graph is on my website. Same link as one post before: https://seescho.wordpress.com/2016/04/24/temperaturanzeige-mit-magiclantern/

The 100D ist a cam for group 1: `x - 128`
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### nikfreak

thanx for 70D and 100D.
[size=8pt]70D.112 & 100D.101[/size]

#### esas

Just bought a 70D, coming from a 650D and noticed that temperature was missing in latest nightly.

Here are the results from my test:

`133 6138 13141 15146 16151 18156 20158 22161 23162 24170 25172 27175 28173 29181 29183 32185 34188 34189 36194 37191 38194 39192 39197 40196 41201 42202 44206 45209 47207 47210 48211 50217 51`

I exluded some readings where the raw units changed before/after picture was taken.

#### escho

Thanks for the measurment. I will have a closer look into it next week.
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### esas

Looking at the previous results for 70D I think it's wrong to include several plots with the same values. This will bias the results. If you exclude the duplicates in DeafEyeJedi's test the result from my measurements and DeafEyeJedi's are not that far apart.

#### a1ex

Leegong and Greg identified yet another temperature sensor - PROP_BOARD_TEMP. This one appears to be given in degrees Celsius on all models, with an offset of 128.

5D3: it's updated more often than EFIC_TEMP and has higher variations, but values stay roughly close to the old one. Tested range: from about 25 to about 40 degrees (the latter being in LiveView). When the indicator was showing 31 EFIC and 27-28 BOARD, I took a picture and EXIF info showed 27 degrees.

60D: not reported at startup in photo mode; it appears after a while (possibly seconds, possibly minutes); what triggers it is unknown (it's not half-shutter, it's not photo capture); in LiveView it's reported more often. When the indicator was showing 28-30 EFIC and -128 (0 raw), I took some pictures; afterwards, the indicator showed either -128 or 24/25 BOARD, and all pictures have 24/25 degrees in EXIF.

70D: not reported at startup, likely similar to 60D. Only tested in QEMU.

Might be useful to cross-check the measurements. I hoped it could replace the old method (if all models use X-128, it would be an advantage over model-specific scaling/offset), but given that it's not always reported at startup and photo capture doesn't trigger it, it's probably not a good idea to "fix" the current (working) code.

Mystery: the BOARD temperature appears closer to the value ending up in EXIF, at least in the first tests, but since it's not reported during photo capture (on 60D I've had two instances where the indicator showed -128 before and after taking a picture), that gives me some doubts.

#### escho

@alex
I have a 600D and a 6D. How can I help?
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### a1ex

Here's the draft patch I've experimented with, back then:
`diff -r 103ed3a98762 -r c3ae76124631 modules/lua/lua_camera.c--- a/modules/lua/lua_camera.c+++ b/modules/lua/lua_camera.c@@ -227,7 +227,7 @@     ///     /// TODO: Celsius.     // @tfield int temperature readonly-    else if(!strcmp(key, "temperature")) lua_pushinteger(L, efic_temp);+    else if(!strcmp(key, "temperature")) lua_pushinteger(L, efic_temperature);     /// Gets a @{gui} object that controls Canon GUI state (PLAY, MENU, QR, various dialogs)     // @tfield gui gui     else if(!strcmp(key, "gui"))diff -r 103ed3a98762 -r c3ae76124631 src/debug.c--- a/src/debug.c+++ b/src/debug.c@@ -659,24 +659,13 @@ #endif #ifdef FEATURE_SHOW_CMOS_TEMPERATURE-#ifdef EFIC_CELSIUS-#define FAHRENHEIT (EFIC_CELSIUS * 9 / 5 + 32) static MENU_UPDATE_FUNC(efictemp_display) {     MENU_SET_VALUE(-        "%d C, %d F, %d raw",-        EFIC_CELSIUS, FAHRENHEIT, efic_temp+        "%d C, %d F",+        efic_temperature, efic_temperature * 9 / 5 + 32     ); }-#else-static MENU_UPDATE_FUNC(efictemp_display)-{-    MENU_SET_VALUE(-        "%d raw (help needed)",-        efic_temp-    );-}-#endif #endif #if 0 // CONFIG_5D2diff -r 103ed3a98762 -r c3ae76124631 src/flexinfo.c--- a/src/flexinfo.c+++ b/src/flexinfo.c@@ -1633,10 +1633,8 @@         }         case INFO_STRING_TEMPERATURE:         {-     #ifdef EFIC_CELSIUS-            snprintf(buffer, maxsize, "%d", EFIC_CELSIUS);+            snprintf(buffer, maxsize, "%d", efic_temperature);             break;-     #endif         }         case INFO_STRING_WBMODE:         {diff -r 103ed3a98762 -r c3ae76124631 src/lens.c--- a/src/lens.c+++ b/src/lens.c@@ -2734,10 +2734,9 @@ static LVINFO_UPDATE_FUNC(temp_update) {-  #ifdef EFIC_CELSIUS     LVINFO_BUFFER(8);     -    int t = EFIC_CELSIUS;+    int t = efic_temperature;     snprintf(buffer, sizeof(buffer), "%d"SYM_DEGREE"C", t);     if (t >= 60)     {@@ -2747,7 +2746,6 @@     {         item->color_bg = COLOR_ORANGE;     }-  #endif } static LVINFO_UPDATE_FUNC(mvi_number_update)diff -r 103ed3a98762 -r c3ae76124631 src/propvalues.c--- a/src/propvalues.c+++ b/src/propvalues.c@@ -89,7 +89,6 @@ volatile PROP_INT(PROP_LV_DISPSIZE, lv_dispsize); volatile PROP_INT(PROP_LIVE_VIEW_VIEWTYPE, _expsim);-volatile PROP_INT(PROP_EFIC_TEMP, efic_temp); volatile PROP_INT(PROP_GUI_STATE, gui_state); volatile PROP_INT(PROP_PIC_QUALITY, pic_quality); volatile PROP_INT(PROP_AVAIL_SHOT, avail_shot);@@ -112,6 +111,14 @@ volatile PROP_INT(PROP_LV_FOCUS_STATUS, lv_focus_status); volatile PROP_INT(PROP_ICU_UILOCK, icu_uilock); +volatile int efic_temperature;++PROP_HANDLER(PROP_EFIC_TEMP)+{+    int efic_temp = buf[0];+    efic_temperature = EFIC_CELSIUS;+}+ #ifdef CONFIG_NO_DEDICATED_MOVIE_MODE int ae_mode_movie = 1; #elsediff -r 103ed3a98762 -r c3ae76124631 src/propvalues.h--- a/src/propvalues.h+++ b/src/propvalues.h@@ -47,7 +47,7 @@ extern int shooting_mode;        /* C3M => M */ extern int shooting_mode_custom; /* C3M => C3 */ extern int shooting_type;-extern int efic_temp;+extern int efic_temperature;     /* degrees Celsius */ extern int gui_state; extern int auto_iso_range; extern int pic_quality;diff -r c3ae76124631 -r 7f9734aad5be src/debug.c--- a/src/debug.c+++ b/src/debug.c@@ -659,11 +659,21 @@ #endif #ifdef FEATURE_SHOW_CMOS_TEMPERATURE-static MENU_UPDATE_FUNC(efictemp_display)++static PROP_INT(PROP_EFIC_TEMP, efic_temp_raw);+static PROP_INT(PROP_BOARD_TEMP, board_temp_raw);++static MENU_UPDATE_FUNC(temperature_display) {     MENU_SET_VALUE(-        "%d C, %d F",-        efic_temperature, efic_temperature * 9 / 5 + 32+        "%d, %d "SYM_DEGREE"C",+        efic_temperature, board_temperature+    );+    MENU_SET_WARNING(MENU_WARN_INFO,+        "Fahrenheit: %d, %d. Raw values: %d, %d.",+        efic_temperature * 9 / 5 + 32,+        board_temperature * 9 / 5 + 32,+        efic_temp_raw, board_temp_raw     ); } #endif@@ -994,15 +1004,9 @@ #ifdef FEATURE_SHOW_CMOS_TEMPERATURE     {         .name = "Internal Temp",-        .update = efictemp_display,+        .update = temperature_display,         .icon_type = IT_ALWAYS_ON,- #ifdef EFIC_CELSIUS-        .help = "EFIC chip temperature (somewhere on the mainboard).",- #else- .help = "EFIC chip temperature (raw values).",- .help2 = "http://www.magiclantern.fm/forum/index.php?topic=9673.0",- #endif-        //.essential = FOR_MOVIE | FOR_PHOTO,+        .help = "Internal names: EFIC_TEMP and BOARD_TEMP. Sensor locations are unknown.",     }, #endif     #if 0 // CONFIG_5D2diff -r c3ae76124631 -r 7f9734aad5be src/property.h--- a/src/property.h+++ b/src/property.h@@ -185,11 +185,9 @@ #define PROP_EFIC_TEMP          0x80030013 #else #define PROP_EFIC_TEMP          0x80030014+#define PROP_BOARD_TEMP         0x80030035 #endif -#define PROP_EFIC_TEMP_MAYBE            0x010100ed-//#define PROP_BATTERY_RAW_LEVEL_MAYBE          0x80030014- #define PROP_ARTIST_STRING      0x0E070000 #define PROP_COPYRIGHT_STRING   0x0E070001 diff -r c3ae76124631 -r 7f9734aad5be src/propvalues.c--- a/src/propvalues.c+++ b/src/propvalues.c@@ -112,6 +112,7 @@ volatile PROP_INT(PROP_ICU_UILOCK, icu_uilock); volatile int efic_temperature;+volatile int board_temperature; PROP_HANDLER(PROP_EFIC_TEMP) {@@ -119,6 +120,12 @@     efic_temperature = EFIC_CELSIUS; } +PROP_HANDLER(PROP_BOARD_TEMP)+{+    int board_temp = buf[0];+    board_temperature = board_temp - 128;+}+ #ifdef CONFIG_NO_DEDICATED_MOVIE_MODE int ae_mode_movie = 1; #elsediff -r c3ae76124631 -r 7f9734aad5be src/propvalues.h--- a/src/propvalues.h+++ b/src/propvalues.h@@ -48,6 +48,7 @@ extern int shooting_mode_custom; /* C3M => C3 */ extern int shooting_type; extern int efic_temperature;     /* degrees Celsius */+extern int board_temperature;    /* same */ extern int gui_state; extern int auto_iso_range; extern int pic_quality;`

Questions you may try to answer:
- are these values any closer to EXIF temperature, than what we currently use (PROP_EFIC_TEMP) ?
- any way to force an update for this property? (at startup, it sometimes reports 0, sometimes even after taking a picture)

#### escho

thx
https://sternenkarten.com/
600D, 6D, openSUSE Tumbleweed

#### IDA_ML

https://www.eoshd.com/news/canon-eos-r5-has-serious-overheating-issues-in-both-4k-and-8k/

I realize what a treasure ML is.  I never had any overheating issues with any of the cameras that I used with ML.  It is hard to believe that Canon engineers put so much amazing new technology in the R5 but totally ignored the overheating issue making the camera useless for longer shots.

Has anyone of you experienced any overheating issues when using your camera with ML?  Please share your experience.

#### Walter Schulz

@Mods:
I don't think this thread should be captured by IDA_ML's off-topic request. Please create a new topic and delete my message!

#### c_joerg

Quote from: a1ex on May 26, 2018, 05:53:02 PM
Mystery: the BOARD temperature appears closer to the value ending up in EXIF, at least in the first tests, but since it's not reported during photo capture (on 60D I've had two instances where the indicator showed -128 before and after taking a picture), that gives me some doubts.

On my EOS M3 I have 3 temperature values with CHDK. They are named Optical, Sensor and Battery. But also without any lens I got an optical temperature. Maybe the optical is the board temperature. The Sensor temperature is always much higher than the optical temperature so I expect that is really the sensor. I had max sensor temperature from around 70 degree.
The EXIF temperature matches exactly with the optical temperature. I'm wondering, why Cannon reports this lower value and not the sensor temperature in the EXIF data.
EOS R

#### IDA_ML

Despite the fact that Mr. Walter Schulz is trying to play the forum policeman here, I would like to share an important test result that, in my opinion, will be of practical interest to those who film with the EOS-M.

I have just tested the camera in its 5k anamorphic mode (1736x2928) at 10 bit lossless, 16.688 fps with 192 MHz card overclocking which is quite demanding in terms of camera resources and let the camera record with these settings until my 64 GB 95 MB/s Sandisk card got full and recording stopped at the "Card full" message.  The ambient temperature was 28 deg. C and I was testing with the latest July 10-th experimental build.  In the first 5 minutes after recording started the temperature gradually increased to 48 deg. C and raised to 50 deg. C at the time card got full.  I got a total of 16 minutes recording time on that card.  My conclusion is that the camera can safely be operated continuously for longer takes with larger capacity cards without overheating issues.

Keeping in mind that the title of this thread is: "Wanted: temperatures from your cams", I don't see why this or similar reports should be off topic, why a new topic should be opened for that and how am I trying to "capture this thread with off-topic requests" but if moderators feel that way, please feel free to delete my post.

#### yokashin

In eosm, after 25 minutes of recording in 1736x976 I had 56 degrees. Ambient Temperature 32 degrees.
I finished recording myself.
70D.112 [main cam] | M.202 | S110 [CHDK]

#### Levas

I bet the temperature problem with the EOS R5 is because it has in-body image stabilisation.
Because the sensor has to be able to move a little along different axis, it can't be placed to something it can loose the heat to.
So it probably has to loose all heat through air, no use of heatsink or other metal body parts it can loose heat to.