Open bryanc-nz opened 6 years ago
Try to use another app to read the sensor values. They are plentiful. If the readings are consistently erroneous across apps, then you can safely assume that SMCKit is out of cause and your sensors are simply dead and/or that for some reason they are unreadable through the murky SMC API of macOS.
If not, please report the actual values + the apps that read them correctly and those which do not. Thanks.
I'm seeing the same sort of readings on the following models: iMac 18,3 (Retina 5K, 27-inch, 2017) iMac 17,1 (Retina 5K, 27-inch, Late 2015) iMac 16,2 (Retina 4K, 21.5-inch, Late 2015) iMac14,3 (21.5-inch, Late 2013)
All of them report the CPU_0_DIE
& HDD_PROXIMITY
as a large negative number (sometimes larger then the example). Below are the results of SMCKit and results from TG Pro from the iMac18,3
Also noticed the Ambient Air temps are off on these same Macs. Wonder if the CPU negative numbers have anything to do with multiple CPU temps?
Would be awesome to get this figured out. I put together a sweet little monitoring plugin that I'd love to use SMCKit with. Happy to help contribute with what I can.
smckit: -- Temperature -- AMBIENT_AIR_0 8.0°C CPU_0_DIE -83.0°C CPU_0_PROXIMITY 38.0°C GPU_0_DIODE 34.0°C GPU_0_PROXIMITY 34.0°C HDD_PROXIMITY -1.0°C LCD_PROXIMITY 29.0°C MEM_SLOTS_PROXIMITY 31.0°C MISC_PROXIMITY 34.0°C -- Fan -- [id 0] Main Min: 1152 RPM Max: 2700 RPM Current: 1198 RPM
TG Pro:
One more, this is from the iMac14,3. SMCKit binary and TG Pro
Not sure where the HDD_PROXIMITY
would be coming from?
smckit binary: AMBIENT_AIR_0 4.0°C CPU_0_DIE -74.0°C CPU_0_PROXIMITY 31.0°C GPU_0_DIODE 34.0°C GPU_0_PROXIMITY 32.0°C HDD_PROXIMITY -121.0°C LCD_PROXIMITY 27.0°C MEM_SLOTS_PROXIMITY 28.0°C MISC_PROXIMITY 28.0°C -- Fan -- [id 0] Main Min: 1400 RPM Max: 3200 RPM Current: 1400 RPM
TG Pro:
From iMac16,2. SMCKit and TG Pro
smckit binary: AMBIENT_AIR_0 9.0°C CPU_0_DIE -68.0°C CPU_0_PROXIMITY 40.0°C HDD_PROXIMITY -1.0°C LCD_PROXIMITY 33.0°C MEM_SLOTS_PROXIMITY 40.0°C MISC_PROXIMITY 37.0°C -- Fan -- [id 0] Main Min: 1200 RPM Max: 2850 RPM Current: 1199 RPM
TG Pro:
@macitpros, I take it that the bold lines are the one that you consider an issue.
I'll start by addressing the HDD_PROXIMITY – as it seems, the iMac16,2 and above don't have a HDD_PROX sensor – it's been replaced by SSD Out Of Band A (TH1a
) and B (TH1b
). In the iMac14,3, given the -121.0°C, I'd be tempted to say that the HDD_PROXIMITY sensor is still there, just faulty in yours... but the SMC sometimes reports weird stuff and/or it may be a bug in SMCKit.
For AMBIENT_AIR_0, it seems to be ~21°C lower than the actual value. That's... interesting. TGPro's definitely not reading another sensor than SMCKit, I checked in its code – "Ambient" is always defined to TA0P
, just like SMCKit. Must be some kind of bug or oversight in SMCKit's value parsing code (may I suggest to try https://github.com/perfaram/SMCExplorer and report the value of TA0P
(Ambient) (and TA0p
– Ambient Logic Board, iStat Menus relies on this one for iMac14,3) ? It doesn't parse things the same way – though I'm not sure it'll work, either).
Regarding the last one – CPU_0_DIE (which is TC0F
in SMCKit) : TGPro never ever tries to read this sensor, AFAICT at least. At any rate, it is not supported on iMacs (only on MBP13,1 MBP14,1 and MB10,1 – it may work on others, but commercial apps I know of have chosen not to support it, and they likely have a good reason to do so). I suggest TCXC
for CPU PECI, TCnC
for _CPU CORE n
", where n
is the 1-based index of the CPU core.
Unrelated : as I was peeking in TGPro's code, I noticed its devs used my PFAboutWindow
lib, and that made me happy :)
EDIT : globally, the issue there is the same that underlies #35 – read my last comment, it suggests a fix (but would make SMCKit considerably harder to keep up-to-date). SMCKit is indiscriminate (regarding the Mac model) in its reading of the keys. Also, feel free to use the "Save" function (in the File menu, as usual) of SMCExplorer. It'll dump your SMC keys and values as a PLIST in your Downloads folder.
Thanks for the reply @perfaram!
My skills are limited to Bash and AppleScript so I'll just filter out the CPU_0_DIE and HDD_PROXIMITY lines in the plugin I'm putting together. In short, some of the answers to this issue flow over my head like a summer breeze 😄 💨. I'm using the smckit
binary to automatically run, then report on potential overheating and fan problems for the computers it's installed on, to a centralized dashboard.
Getting readings on SSD Out Of Band A (TH1a
) and B (TH1b
) would be a great piece of info to report on, but makes me think, how often does an SSD overheat? Not sure how I'd go about adding those to SMCKit even if I did want to report on them. I'll need some heavy lifting (coding) help to make this happen if I fork the repo, or are you accepting requests? Individual CPU cores aren't all that important, since CPU_0_PROXIMITY delivers the information that's relevant enough to know if there is an overheating problem.
I'll take a look at SMCExplorer and see if I can run it on the computers displaying the Ambient Air temperature issue, thanks for pointing it out!
Concerning SMCExplorer, I just compiled a version for you : https://github.com/perfaram/SMCExplorer/releases/tag/ß0.7
Regarding the "not sure how I'd go about adding those to SMCKit" : I could do it, but I'd not sure I want to, while we're still not sure of how @beltex feels about adding new keys, irrespective of their (un)supported-ness on a given model. I.e, it would be somewhat dumb to have SMCKit try to read a key even if we know for sure it's not supported on the model it's running on.
An intermediate solution (in your case) would be to make SMCKitTool able to read arbitrary keys – which is not possible right now. I just forked it and made it possible, using the new -r
command line option. For example : SMCKitTool -r TH1b
(and if TH1b
is not available, it'll tell you so). See https://github.com/perfaram/SMCKit/tree/tool-read-arbitrary
Note that you'll have to take care of the git branch you're on if you try my version – the changes I made lie on the tool-read-arbitrary
branch. Once you're on it, compile SMCKitTool as usual.
@perfaram here is the ambient air readings from SMCExplorer. For reference, all of these computers are in located in offices in different buildings.
Looks like TA0p
is more accurate for the ambient air temperature? TA0P
has the same chilly ambient air temp as SMCKit is showing, but different from the readings TGPro is delivering.
iMac 18,3
iMac 17,1
iMac 16,2
iMac 14,3
I couldn't find any reference to TA0V, I don't really know what it represents. Is it an attempt by the SMC to guess the actual external temp (and compensate the own computer's heat's contribution to the sensor reading) by using various other sensors ?
Anyway, it looks like it's more correct than the other ones, isn't it ? The 17°C - 25°C looks like a better range than the 26°C - 31°C or the 6°C - 11°C one for a working/office environment.
Yes, I'd agree TA0V
is more accurate. Running SMCExplorer on a Mac with "normal" Ambient temperatures (iMac12,1) coming from SMCKit, SMCExplorer, and TG Pro TA0V
is right in line with a fairly accurate Ambient air reading.
Would it make more sense to use TA0V
as the ambient air temperature reading?
iMac12,1
SMCExplorer
TG Pro:
SMCKit -- Temperature -- AMBIENT_AIR_0 27.0°C CPU_0_HEATSINK 45.0°C CPU_0_PROXIMITY 49.0°C GPU_0_DIODE 55.0°C GPU_0_HEATSINK 53.0°C LCD_PROXIMITY 27.0°C MISC_PROXIMITY 53.0°C ODD_PROXIMITY 37.0°C
Well, if it works, it sure seems right to me – I'd use TA0V. Also, remember to think about the case where TA0V may not be available. For reference, while it is on MacBookPro14,3 it is not on MacBookPro11,3. In the latter case, where TA0V isn't there, you can either try reading either TA0p or TA0P – as you see fit – or just flat-out ignore ambient temp. I'm not really sure how I'd do it myself, I'll leave that choice up to you :)
When I run SMCKitTool on my 2017 iMac (i5 - mode 18.3) I'm getting the following output which is clearly wrong for the sensors AMBIENT_AIR_0, CPU_0_DIE, HDD_PROXIMITY.
The other sensors look OK but it is hard to trust them.
-- Temperature -- AMBIENT_AIR_0 [0;0m11.0°C [0;0m CPU_0_DIE [0;0m-73.0°C [0;0m CPU_0_PROXIMITY [0;0m37.0°C [0;0m GPU_0_DIODE [0;0m36.0°C [0;0m GPU_0_PROXIMITY [0;0m34.0°C [0;0m HDD_PROXIMITY [0;0m-121.0°C [0;0m LCD_PROXIMITY [0;0m31.0°C [0;0m MEM_SLOTS_PROXIMITY [0;0m33.0°C [0;0m MISC_PROXIMITY [0;0m34.0°C [0;0m -- Fan -- [id 0] Main Min: 1200 RPM Max: 2700 RPM Current: [0;0m1191 RPM [0;0m -- Power -- AC Present: [0;0mtrue[0;0m Battery Powered: [0;0mfalse[0;0m Charging: [0;0mfalse[0;0m Battery Ok: [0;0mtrue[0;0m Battery Count: 0 -- Misc -- Disc in ODD: [0;0mfalse[0;0m Program ended with exit code: 0