Mac Os Temp Monitor

Posted onby admin

Mar 29, 2021 Main features: Support for customizable overheat temperature - Temp Monitor is a macOS application specifically designed to watch a Mac. Notification Center integration and automatic logging of all overheat alerts Furthermore, the Temp Monitor utility displays audio and visual notifications via. Temp Monitor is a macOS app that helps you to easily access and monitor Mac temperature information from your menu bar. Programs for query ″temp monitor mac″ Temperature Gauge. Temp Monitor is a macOS application specifically designed to watch a Mac processor’s temperature very closely and display it in the menu bar in the form of a text- and icon-based status item. You may want to check out more software for Mac, such as Temps - Weather, Time & Netatmo, Pressure-Temp or Lignes de temps, which might be related to Temp Monitor.

System Management Controller (SMC) Interface and Background Timer

The SMC can be used to retrieve various sensor readings [1] and set fan speeds [2]. The fuzzer at [1] is very interesting, and I may use it in the future to dynamically populate a list of available sensors, but for now I am content to use the average of two SMC keys (TC0E and TC0F) that report the CPU die temperature as reported by a superuser forum post. I am following Sébastien Lavoie's example and applying the GNU General Public License v2.0 to this project because it uses devnull's smc library [3].

A background timer was used to request the CPU temperature at regular intervals. The steps followed for its implementation were:

  1. Create a new Swift file within the macos-temperature-monitor group and call it 'Background_Timer.swift'. The class, 'Background_Timer', should conform to the ObservableObject protocol for interaction with the UI.
  2. Daniel Galasko's excellent post on Medium about background timers in Swift [4] was followed to include the class 'RepeatingTimer'.
  3. An instance of RepeatingTimer was added as a property of instances of Background_Timer, and its event handler was modified during initialization to update its counter property:
    init() { myRT = RepeatingTimer(timeInterval: 10) myRT.eventHandler = { print('Timer Fired') self.incrementCounter() print('Counter value: (self.counter)') } myRT.resume() }
  4. The UI was updated to display the counter from the timer [5].

Next, the SMC logic was added.

  1. The file 'XPC_Tester.swift' was renamed to 'CPU_Temp_Handler.swift' and its contents were replaced with an empty class called 'CPU_Temp_Handler' that conforms to the ObservedObject protocol.
  2. A new group was added to CPU_Temp_XPC target, and it was called 'SMC'
  3. A C file was added to the SMC group, and it was named 'smc.c'. A header was also created automatically by selecting 'Also create a header file' from the dialog. smc.c was added to the SMC group and applied to the CPU_Temp_XPC target. An Objective-C bridging header was created by selecting that option from the dialog.
  4. The contents for these files came from the examples at [3], with the addition of of the function void getCpuTemp(char* to_write, size_t size) that can be used to get the average of the two CPU temperature sensors and write their average in Fahrenheit to an input buffer.
    void getCpuTemp(char* to_write, size_t size) { double temperature_A = SMCGetTemperature(SMC_KEY_CPU_0_DIE_TEMP_A); double temperature_B = SMCGetTemperature(SMC_KEY_CPU_0_DIE_TEMP_B); double avg_temp = temperature_A; if (temperature_B != 0.0) { avg_temp = (temperature_A + temperature_B) / 2.0; } avg_temp = convertToFahrenheit(avg_temp); //printf('size: %lu', size); snprintf(to_write, size, '%fF', avg_temp); }
  5. The XPC interface was updated to interact with this library:
    1. The function prototypefunc getCPUTemp(withReply reply: @escaping (String) -> Void) was added to the protocol
    2. Its definition was added to the CPU_Temp_XPC class:
      func getCPUTemp(withReply reply: @escaping (String) -> Void){ _ = SMCOpen() var toReturn = ' let sizeToReturn: CUnsignedLong = 10 var addressBuffer = [Int8](repeating:0, count:Int(sizeToReturn)) getCpuTemp(&addressBuffer, Int(sizeToReturn)) let data = Data(bytes: addressBuffer as [Int8], count: Int(CUnsignedLong(sizeToReturn))); toReturn = String(data: data, encoding: .utf8) ?? ' SMCClose() reply(toReturn) <br>
  6. There likely exists a better way to update the UI with the value retrieved from the XPC Service passing data from the SMC than what follows, and if you have improvements then please let me know:
    1. The class that communicates with the XPC Service, CPU_Temp_Handler, has an instance property to store the String returned from the XPC Service, and a function to assign the returned value to this property
      import Foundation import CPU_Temp_XPC class CPU_Temp_Handler { var CPU_Temp = ' func setCPUTemp() { let connection = NSXPCConnection(serviceName: 'com.grizz.CPU-Temp-XPC') connection.remoteObjectInterface...
Read more »

Add XPC Service

I started adding an XPC Service [1] by using XCode's built-in functionality.

At this point, I consulted the excellent blog post [2] by Matthew Miner, in which the process of converting the boilerplate [3] Objective-C code into Swift is described. Interested readers should consult the original source, but the steps are repeated here.

  1. Rename files:
    main.m -> main.swift
    CPU_Temp_XPC.h -> CPU_Temp_XPC.swift
    CPU_Temp_XPC.m -> CPU_Temp_XPC_Delegate.swift
    CPU_Temp_XPCProtocol.h -> CPU_Temp_XPCProtocol.swift
  2. Add the files to the target's 'Compile Sources' build phase.
  3. Replace the Objective-C contents with Swift translations and edit build settings:

    1. Install Objective-C Compatibility Header: NO
    2. Objective-C Generated Interface Header Name: “”
    3. Runpath Search Paths: @loader_path/../../../../Frameworks
    4. Swift Language Version: Swift 5
  4. Add testing logic [4]
    1. NOTE - the NSXPCConnection used for testing must use the target's bundle identifier
    2. This commit adds a class, XPC_Tester, and some front-end logic to test that the XPC Service is configured properly. The test class conforms to the ObservableObject protocol and publishes a variable for tracking by the front-end. The front-end in turn calls the tester to convert an input String to uppercase using the XPC Service.


[1] https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html#//apple_ref/doc/uid/10000172i-SW6-SW1
[2] https://matthewminer.com/2018/08/25/creating-an-xpc-service-in-swift.html
[3] https://github.com/grizzardrl/macOS-temperature-monitor/commit/b7936595c879250a03e8c1f551d98bf62c6d2908
[4] https://github.com/grizzardrl/macOS-temperature-monitor/commit/35193d6eda99437689615a212d99ad6ceec94906

Initial commit

I am using XCode's version control with GitHub. I followed Apple's documentation [1] here. The resulting commit can be found at [2].
[1] https://help.apple.com/xcode/mac/current/#/dev3fd7ccc7a
[2] https://github.com/grizzardrl/macOS-temperature-monitor/commit/97542ffe98522a879234f5c29ad6a6dc03e28a15

This page is a wiki. Please login or create an account to begin editing.
Rating:
Category:
Year released:
Author:Dr. Marcel Bresink
Publisher:Marcel Bresink Software-Systeme
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_1_31.dmg (264.45 KB)
MD5: 1e69041a1b0f384c3acad157b1ddd9f3
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_1_4.dmg (347.59 KB)
MD5: 77d8154a5c7f300c0ab061f208120c0d
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_01.dmg (1.92 MB)
MD5: ee83193f183c9a2ee358a0ad813d55a3
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_1.dmg (2.14 MB)
MD5: ccd8922ca8f35320ec60769f43852920
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_4.dmg (2.30 MB)
MD5: 30fd0b6f072325d6777623847cab825a
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_6.dmg (2.49 MB)
MD5: 4e3ab5eed2e42a60c65a52428eb0e2dd
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_7.dmg (2.60 MB)
MD5: 38865317d286cae76b03ea46cb3f30b2
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_8.dmg (2.68 MB)
MD5: 9388e50ea3785f6f8b5a2ce7f32ad147
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_3_9.dmg (2.70 MB)
MD5: 13cd04db4fd38d47aed5e5d843c436cb
For Mac OS X
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_4_0.dmg (2.77 MB)
MD5: 9e593771aeeab056dce57a0bdda317e0
For Mac OS X

Best Macos Temperature Monitor

[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_4_1.dmg (2.86 MB)
MD5: 6e735ed16618b9dbc5725ee3d4126355
For Mac OS X

Temp Monitor For Pc

[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_4_2.dmg (2.83 MB)
MD5: 3b341ff19c5134e8dc7e1198b133f929
For Mac OS X
Mac os temperature monitor
[www].se [ftp].se [mirror].us [mirror].de
TemperatureMonitor_4_8.zip (3.32 MB)
MD5: 825cd3763c34752a65b63583f0c6847c
For Mac OS X
Emulation
Guides on emulating older applications

Display, track, record, alert, on readings from the temperature sensors that come built-in to Apple computers running Mac OS X. Impetus for the creation of this piece looks like it was the fiasco of Apple's insulting and sophomoric air cooling system for the Mirror Door models PowerMac G4. The Mirror Door was one of the first models to have a temperature sensor standard, but also no supplied utility to access it. Updates to 'Temperature Monitor' steadily added more supported models, access to additional sensors, and new features. The original version was a single app. After a while, it was divided into two apps 'Temperature Monitor' and 'Temperature Monitor Lite' in which the Lite versions are officially contained here alongside their full featured counterparts. Lite places readouts in the menubar and does little else, without occupying dock space or system resources.

The Mirror Door 2003 built in cpu sensor is located outside the cpu chip, on the cpu 'card' therefore it is mainly an air temperature sensor in which 120-125.F is dangerously high. Anyone can read the MDD sensor WITHOUT Bresink's software, with the Terminal command:

Temp

ioreg -n AppleCPUThermo grep temperature

...and then divide the number returned by /256 for degrees Celsius, or divide by /142 +32 for approximate degrees Fahrenheit.

DIY conversion formulas:
tF = 9/5 tC + 32 ...or... tF = 9/5 (tC + 17.77)
tC = 5/9 (tF - 32) ...or... tC = 5/9 tF - 17.77

dL 01 v1.31 20030721 monitor PPC
dL 02 v1.4. 20031109 monitor PPC
dL 03 v3.01 20051001 monitor & lite PPC
dL 04 v3.1. 20051110 monitor & lite UB
dL 05 v3.4. 20060302 '
dL 06 v3.6. 20060505
dL 07 v3.7. 20060618
dL 08 v3.8. 20060824
dL 09 v3.9. 20060919
dL 10 v4.0. 20061108
dL 11 v4.1. 20070104
dL 12 v4.2. 20070619
dL 13 v4.8. 20100110 Tiger UB

Mac Os Temp Monitor Download

System failure occurs on my PowerMac G4 when Temperature Monitor 4.8 (main and Lite) and probably other version numbers are used in conjunction with specific old hard-drives, even though this PowerMac G4 doesn't support SMART drive temperature monitoring. I have a 500GB SATA Hitachi Deskstar manufactured 2008 (maybe there was a 'firmware' update for the drive?). OS X 10.4.11 Server and 10.4.8 Client both tested locking-up with this hard-drive attached. I can set the drive polling preference to 'x' minutes and then cause the crash to happen after 'x' minutes elapse. Temperature Monitor v4.2 and less aren't exhibiting this problem with this Mac+drive.

On my 2007 Mac with SSD, Temperature Monitor 4.8 shows an SSD readout but it for some reason is always wrong, never deviates from steady 30.C - this Mac has numerous other sensors functioning.

Compatibility

Mac Mini Temperature Monitor


Temp monitor for pc

Mac Os Temp Monitor Download

Architecture: PPC x86 (Intel:Mac)

Mac Os Temp Monitor Settings

OS X 10.2.5 or later for v4.2 and less.
OS X Tiger minimum for Temperature Monitor v4.8