Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Mystery solved!

Fanny's output for TC0F is wrong. Definitely wrong.

I've been digging through lots of source code for various open source tools that can monitor this sensor -- Fanny, SMCKit, and finally the only one that gets it right: iStats (not to be confused with iStat Menus!).

I've opened an issue on Fanny's github repo so don't want to repeat all the details here, but the short version is that this value is a negative offset from T_CONTROL (i.e., how far are we below the point where the CPU will start throttling itself), and it's internally being reported by the low level libraries in Apple's so-called SP78 data type (first bit = sign, 7 bits integer part, 8 bits fractional part). Somehow Fanny (and SMCKit) are not handling this correctly, leading to these huge numbers.

iStat OTOH shows the correct value for this sensor. Right now, once more under 100% CPU load with F@H, it says:

TC0F CPU 0 ?? temp: -19.75°C

It's showing "??" in the label because it doesn't really know what this sensor is for. But it's treating the numerical value correctly: I'm running about 20° below the point where TCC would kick in.

Fanny always shows exactly 128 + this offset, while the correct interpretation would be T_CONTROL + this offset. (128 would of course be the value of the leading minus sign if interpreted as unsigned integer.)

That's why I never observed any thermal throttling -- I am well below that point.

So I can finally lay this issue to rest and be sure I'm _NOT_ cooking my CPU. :)

BTW, I've mentioned on the github issue that it would actually be insanely useful for some monitoring tool to show the exact real value of this sensor instead of some absolute computed value -- it's really the single most informative metric for judging if the CPU is running hot or no.
 
That's a pretty neat command line tool. This is what it shows for my E5-1680 V2 at idle.

TC0F CPU 0 ?? temp: -54.48°C ▁▂▃▅▆▇

And towards the end of running the LuxMark benchmark.

TC0F CPU 0 ?? temp: -34.83°C ▁▂▃▅▆▇
 
Last edited:
Yup, now I would just (still) like to know more about what (or where) each of these sensors are, haven't been able to dig up any more details about them than the partial info from source code of these tools... I see a few that show very similar numbers, all of them apparently offsets as mentioned; I only went with TC0F so far because I saw in Fanny's source code that that's the one it's using. But there are also TC0E, TCXR, and TCXr... and then there is TC0J which sounds tantalizingly like something to do with junction temperature, but for me it always hovers around zero, sometimes positive sometimes negative... all TC* sensors are

$istats extra
TCSc PECI SA temp: 36.0°C ▁▂▃▅▆▇
TCXc PECI CPU temp: 44.81°C ▁▂▃▅▆▇
TCXr Unknown temp: -48.19°C ▁▂▃▅▆▇
TCXR Unknown temp: -48.19°C ▁▂▃▅▆▇
TC0c temp: 43.0°C ▁▂▃▅▆▇
TC0p temp: 34.75°C ▁▂▃▅▆▇
TC0E CPU 0 ?? temp: -48.25°C ▁▂▃▅▆▇
TC0F CPU 0 ?? temp: -47.27°C ▁▂▃▅▆▇
TC0J CPU 0 ?? temp: -0.03°C ▁▂▃▅▆▇
TC0P CPU 0 Proximity temp: 34.75°C ▁▂▃▅▆▇
TC1c temp: 41.0°C ▁▂▃▅▆▇
TC1p Unknown temp: 36.13°C ▁▂▃▅▆▇
TC1P Unknown temp: 36.13°C ▁▂▃▅▆▇
TC2c temp: 48.0°C ▁▂▃▅▆▇
TC3c temp: 40.0°C ▁▂▃▅▆▇
TC0T Unknown temp: 0.02°C ▁▂▃▅▆▇
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.