Mac OS 9 Lives
Mac OS 9 Discussion => Mac OS 9, Hacks & Upgrades => Topic started by: UnexpectedBomb on July 12, 2026, 01:18:03 PM
-
Hi all,
I've been wishing I could get eyes on my MDD CPU temp for a long time, always worrying that it could be cooking without me knowing it, so I began working on a little side project that, to my knowledge, didn't previously exist: a Control Strip module that shows live CPU and case temperature under Mac OS 9 on the G4 MDD, reading straight from the machine's real hardware sensors.
https://github.com/UnexpectedBomb/MacOS9-G4-CPU-Temp
I was aware of a similar CSM existing in "Jeremy's CSM Bundle" but that one reads the PowerPC's on-chip Thermal Assist Unit (TAU). Motorola disabled the TAU on the 7450/7455 family, so on an MDD (and other Apollo-based G4s) it can't give you a real reading at all. This module ignores the TAU entirely and talks over the Uni-N / "KeyWest" I²C bus to the same chips Apple's firmware uses:
- DS1775 digital thermometer to get CPU temperature (within 0.5 °C accuracy, vs the TAU's ±12 °C spec)
- ADM1030 fan controller's local sensor to get case temperature
What it does:
- Shows CPU or case temperature right in the Control Strip, updating every couple of seconds
- Click the tile for a menu: pick the reading (CPU / Case) and the units (°F / °C) as two independent groups
- Text turns red as the CPU approaches its safe limit
- A Notification Manager alert pops up if the CPU ever exceeds the safe threshold (latched — it warns once, not in a loop) to prevent your CPU(s) from getting extra toasty
- Native look: bold text, fixed-width cell, custom Control-Strip-style icon
- Loads silently at startup like any stock module
It is strictly read-only on the hardware. It only reads the sensor temperature registers as an SMBus master. It never writes a sensor, fan, or config register, so it can't interfere with the ADM1030's automatic fan control. (I did try to add a fan-RPM readout, but that requires enabling the ADM1030's tachometer via a config write, and on my machine that audibly disturbed the fan... it was very angry with me... so I dropped it. Not worth frying anything!)
Give it a test-drive and let me know your experience; hopefully it gives you sane readings. I haven't tested on anything other than my MDD (FW400) so if there's other models it's compatible with, please let me know what hardware you used and how it went.
This was developed in parallel with another Mac OS 9 effort of mine, one that I think will be very exciting once it's done... you should be hearing about it hopefully later this month ;)
-UB
-
I've been wishing for this for years.
I'll try it on my 2003 MDD with Sonnet MDX 2x1.8 Ghz.
I'll report back.
-
So… I may just be getting old and senile, but I cannot, for the life of me, successfully un-bin the file in the dist folder or any other .bin file in the package with any utility I have. That includes Stuffit Expander, Stuffit Deluxe, The Unarchiver and I forget what else.
What did you use to bin them?
Please forgive me. I can't help myself… the "UnexpectedBomb" jokes just write themselves…
-
Hehe, I knew that username would get some laughs around here.
I cannot, for the life of me, successfully un-bin the file in the dist folder or any other .bin file in the package with any utility I have.
Sorry about that. It was a bug on my end. The .bin files were built by my cross-compiler toolchain, which writes a MacBinary header with a CRC that stricter decoders (Stuffit, Unarchiver) reject. I re-encoded the .bin as proper MacBinary II, and added a BinHex version (.hqx) as an alternative. Try now.
-
i´ve made a max app (and vst plug-in) long ago (using a driver by somebody else) which does that, but which for some reason only works on half of my computers.
i understand that most apple computers did not have digital thermometers at that time, but i dont understand why one G4-867 reports it and another G4-867 (with the same model number) does not?
-
i´ve made a max app (and vst plug-in) long ago (using a driver by somebody else) which does that, but which for some reason only works on half of my computers.
i understand that most apple computers did not have digital thermometers at that time, but i dont understand why one G4-867 reports it and another G4-867 (with the same model number) does not?
Might be a bug in your code. Use Open Firmware to access the I2C to see if it reports it?
-
Well, I'll be… You've done it!
It works on my 7450 oops, 7447-based Sonnet MDX. It's a f**kin miracle!
Thank you Thank you Thank you!!
Well, almost……
Everything went exactly as it should. EXCEPT: It doesn't refresh itself - unless you prod it with the cursor.
It seems to track the temps well but the Control Strip window only refreshes if you click on it.
It's acting more like an app than a CS module - the display going into the background until brought back to the front with a click.
-
You’ve been knocking them out of the erm, PARC, lately.
Any chance this could be adapted for Mini G4s?
-
It doesn't refresh itself - unless you prod it with the cursor.
Hmm I'll look into this. I definitely intended it to refresh automatically.
Any chance this could be adapted for Mini G4s?
I believe this is possible! OS 9 should be able to reach the Mini's MAX6642 temperature sensor chip. My own Mini would certainly benefit from that. Stay tuned.
-
With the mini g4 mouse freeze and audio issues fixed, *and* a working temp mon for the mini g4, I guess the only other thing I could desire is a Coke.
-
I would love a pci mod for the mac mini so we can attach an expansion chassis :)
-
a working temp mon for the mini g4
Sadly @n8blz, here's the wall I've run into:
Turns out the Mini's setup is a bit different from the MDD, whose temperature sensor can be addressed directly, which is why the CSM worked so well for it. The Mini's temperature sensor, on the other hand, sits behind its PMU. As the G4 Mini was designed for OS X only, Mac OS 9 has no way of safely prodding the Mini's PMU (which controls power, reset, fans, etc) to grab a reading from the temperature sensor. A from-scratch driver would have to be built, and it could risk permanently hurting the Mini's ability to function properly in those critical areas if anything went wrong. As of now, only OS X can safely grab temp readings on the G4 Mini, although technically you can boot into Open Firmware and also get a real reading from the temperature sensor that way too (I have done it myself to confirm).
This adventure made me realize that this temperature monitor CSM ought to be "universal" anyway, reaching as many temp sensors on as many G3/G4 Macs as possible, so I updated the CSM to now search for any reachable temperature sensor on any OS 9 machine it gets installed on. The worst that could happen is that it can't reach any sensor and displays "n/a" for its temperature reading (as is currently the case for the Mini). Additionally, it will also display the exact type of sensor that it finds. If anyone gets a reading on any hardware besides an MDD, I'd love to know about it so I can update the documentation.
-
can we add a temperature sensor after the fact?
-
can we add a temperature sensor after the fact?
That could work. Maybe a USB external sensor, something like this:
https://a.co/d/0aqedwdG
Would probably need driver written for it, but it's possible.
-
Thank you this is great! I've long wanted a temp monitor for my MDD and PBG4 TI, right now I have a physical monitor on my MDD which is fine but not the most accurate, so this is a great addition.
I'm not sure if it's intended to work on a PowerBook G4 Titanium (1Ghz PPC 7455), but I tested this and it doesn't work.
-
I'm not sure if it's intended to work on a PowerBook G4 Titanium (1Ghz PPC 7455), but I tested this and it doesn't work.
Thanks for testing it @Greystash, that's really useful.
I hadn't gotten around to testing this on my own 667 MHz DVI TiBook, so I did it just now and the module actually works on it. That surprised me, because the Titanium PowerBooks are usually said to have no OS-readable temperature sensor (even Temperature Monitor under OS X shows nothing on them). But the 667 has a DS1775 sensor at I2C address 0x49 on the Uni-N bus, the same chip the MDD uses, and the Control Strip reads it fine at around 55 C. So at least some TiBooks are readable.
Your 1 GHz showing nothing is the open question. It could be that your model genuinely lacks the sensor, or that the module's detection is missing it (right now it only checks one bus channel on the Uni-N controller).
Would you be up for running a tiny diagnostic on the 1 GHz so I can tell which it is? It is here:
https://github.com/UnexpectedBomb/MacOS9-G4-CPU-Temp/raw/main/probe/tibook/dist/TiBookProbe.hqx
It is strictly read-only. It only reads sensor registers, never writes anything, and it cannot disturb the fan or the machine. After you launch the probe, and it prints a short report. The console has no scrollback, so the part I need is at the very bottom: the section marked [C] (the i2c sensor sweep) and the VERDICT line under it. A photo of the lower half of the window is perfect.
If it finds a sensor, I can almost certainly get your 1 GHz working too. Thanks again.
-
This is very useful to optimize new cooling fans in the MDD without booting to X. Related to temperature, it would be great to adjust the fan curves that (I assume) respond to the thermal sensors you’re reporting. Any plans on that side?
-
That's great it works on the 667 model. Looks like the 1Ghz DVI doesn't have any readable sensors. In the past I did a lot of mucking around with Open Firmware to control fan speeds etc. and found that it contains a `thermal-info` property under `dev/mac-io/via-pmu@16000/power-mgt` which appears to be a byte-array config for thermal management. I couldn't do anything meaningful with this, and couldn't find anything else related to temperature sensors.
Thanks for your work and for trying with this model, I'm glad I've got reliable readings for my MDD now :)
Fan control would be an amazing feature to add for the MDD, but not sure if that's possible.
-
Looks like the 1Ghz DVI doesn't have any readable sensors.
That's correct: according to the report, your 1 GHz has no i2c temperature sensor on the Uni-N bus. Both KeyWest controllers came back empty on both channels, whereas the 667 I tested has a DS1775 sitting at 0x49. The sensor hardware truly does varies across the Titanium line.
What the probe did turn up is the interesting bit: a device-tree node named "fan" identified as a "Psoc". The 1 GHz was the first TiBook with an active fan, and it looks like Apple handed cooling to that Cypress PSoC (a small programmable microcontroller) which runs the fan on its own. The temperature sensing appears to live inside the PSoC rather than on a plain sensor chip on the i2c bus, which is why the sweep found nothing to read.
That fits the thermal-info property you saw in Open Firmware too. On these machines that is almost certainly the fan controller's configuration (setpoints and thresholds) rather than a live temperature, so there is not much to pull from it directly.
On the 1 GHz the module can only show n/a, and that is a hardware and firmware design difference, not a bug. Getting a reading would mean talking to the PSoC in its own undocumented, model-specific protocol, most likely through the PMU, and classic Mac OS gives us no clean way to do that. It is the same wall the Mac Mini G4 runs into. GetCoreProcessorTemperature also declined on your machine (the -13013 "can't report" result), as it does on every Mac I have tried.
For now, on the 1 GHz, Open Firmware or Mac OS X are the only ways to check temperature. If documentation on the TiBook PSoC command set ever surfaces, that would be the thing that could open this up. Thanks again for the data! I really do appreciate it, as it confirms the 667 and the 1 GHz have different thermal designs.
...it would be great to adjust the fan curves that (I assume) respond to the thermal sensors you’re reporting. Any plans on that side?
I've decided not to mess with fan control anymore. On the MDD I tried enabling the fan tachometer once, and it caused the fan to engage in some strange "pulsing" behavior, so I reverted it and have not written to a fan or sensor register since. Too risky for me.
-
No worries, that's a shame but thank you for the detailed explanation and for your investigation!
-
Control strip module works great! Reads case and cpu temp on MDD (1.42ghz single cpu OC to 1.5Ghz). I confirmed it only updates when clicked- very useful as is, thanks for your work on this!
-
Hi all,
I've been wishing I could get eyes on my MDD CPU temp for a long time, always worrying that it could be cooking without me knowing it, so I began working on a little side project that, to my knowledge, didn't previously exist: a Control Strip module that shows live CPU and case temperature under Mac OS 9 on the G4 MDD, reading straight from the machine's real hardware sensors.
https://github.com/UnexpectedBomb/MacOS9-G4-CPU-Temp
I was aware of a similar CSM existing in "Jeremy's CSM Bundle" but that one reads the PowerPC's on-chip Thermal Assist Unit (TAU). Motorola disabled the TAU on the 7450/7455 family, so on an MDD (and other Apollo-based G4s) it can't give you a real reading at all. This module ignores the TAU entirely and talks over the Uni-N / "KeyWest" I²C bus to the same chips Apple's firmware uses:
- DS1775 digital thermometer to get CPU temperature (within 0.5 °C accuracy, vs the TAU's ±12 °C spec)
- ADM1030 fan controller's local sensor to get case temperature
What it does:
- Shows CPU or case temperature right in the Control Strip, updating every couple of seconds
- Click the tile for a menu: pick the reading (CPU / Case) and the units (°F / °C) as two independent groups
- Text turns red as the CPU approaches its safe limit
- A Notification Manager alert pops up if the CPU ever exceeds the safe threshold (latched — it warns once, not in a loop) to prevent your CPU(s) from getting extra toasty
- Native look: bold text, fixed-width cell, custom Control-Strip-style icon
- Loads silently at startup like any stock module
It is strictly read-only on the hardware. It only reads the sensor temperature registers as an SMBus master. It never writes a sensor, fan, or config register, so it can't interfere with the ADM1030's automatic fan control. (I did try to add a fan-RPM readout, but that requires enabling the ADM1030's tachometer via a config write, and on my machine that audibly disturbed the fan... it was very angry with me... so I dropped it. Not worth frying anything!)
Give it a test-drive and let me know your experience; hopefully it gives you sane readings. I haven't tested on anything other than my MDD (FW400) so if there's other models it's compatible with, please let me know what hardware you used and how it went.
This was developed in parallel with another Mac OS 9 effort of mine, one that I think will be very exciting once it's done... you should be hearing about it hopefully later this month ;)
-UB
Thank you.
A estimated date for a second release that updates without clicking?
-
A estimated date for a second release that updates without clicking?
Successfully identified the issue that you and @GaryN are seeing: there was indeed no redraw unless the CSM was clicked. An oversight on my part, should be fixed now. I tested it myself by opening the case to take the fan cooling off the CPU and I watched the temp readout slowly climb in real time, without any clicking necessary; closed the case, and watched the temp go back down.
The latest version (v1.4) has been pushed to the repo. Install it and let me know how it goes.
-
Awesome! Thank you!
-
Sounds interesting. Like to try it out but link doesn't seem to work....
-
Sounds interesting. Like to try it out but link doesn't seem to work....
Which part? The link to the repo? Download link?
-
I was so paranoid back in the day about MDD tempertures running OS 9 DAWs that I opted for standard configuration for my self and other clients of a single CPU MDD 2003 (1.25 Ghz.) or a single CPU MDD 2003 (1.33 Ghz. from Xserve CPU).
Most audio apps did not utilize the Dual CPUs under OS9 (as you can research from Mactron posts back in the day) and the single CPUs ran so much cooler compared to the duals which was easily observed by simply feeling the air blowing out of a 2003 MDD.... that being said, this new tool would have been invaluable back in the day.
Absolutely incredible job on a tool that was ALWAYS NEEDED and MUCH APPRECIATED.
It is amazing to me that so many MDDs have survived all these years with apple's thermal issues. I would have assumed most these CPU daughter boards would be micro-cracked to the point of failure from heat by now. I can tell you that many serious users learned early on how to use a compressor every 2/3 months, and arctic silver about every 1.5 years.
-
Yes that github link doesn't work for me, and I'm not sure what 'pushed to the repo' means.
Thanks.
-
Yes that github link doesn't work for me, and I'm not sure what 'pushed to the repo' means.
Thanks.
"pushed to the repo" just means "I updated the files" haha. I haven't heard of anyone else having issues with the GitHub link. What exactly do you mean by "the link doesn't work"? Can you describe what happens when you click it?
Absolutely incredible job on a tool that was ALWAYS NEEDED and MUCH APPRECIATED.
Thank you @DieHard! Means a lot. I too was shocked to find that such a temp monitor like this did not already exist after all these years, given the serious known thermal issues you mentioned. How many MDD's could Apple have saved from being cooked to death? The world may never know.
-
"Thumb Up".... non-existent like button pressed...
Yeah... many died a horrible hell-ishly hot death, lol
-
?link doesn't seem to work....
It didn’t work for me either. I clicked on the “Go to file” box, it darkened, but NO FILE.
I’ve been using several MDDs ssuccessfully since they first appeared WITHOUT a temperature monitor.
I always found USB hard drives to be problematic, so I alswys use FireWire external hard drives. When A colleague insists on getting a large file on a USB thumbe drive, I simply reboot to OS X 10.5 to copy it.
I thought I’d try the USB 2 fix, but couldn’t get that file either.
I first came here years ago, when I dded a FireWire800 MDD and found it wouldn’t boot OS 9.. I d/l 4 different CD images, burned them and not one would boot. Then I tried Open Firmware commands, but they still didn’t boot.
Finally a kind soul sent me a private message with two lines:
1) Be sure your hard drive is formatted with OS 9 drivers.
2) Just drag the System folder from one of the CDs to your OS 9
partition and reboot with the Option key kown.
That worked.
-
"pushed to the repo" just means "I updated the files" haha.
For ordinary Mac users that programmers talk is not haha. Bear that in mind. ;)
Same with GitHub. Many here still use older systems on a daily basis, OS9 including. GitHub is not accesible with anything older than High Sierra and/or proper browser.
-
"pushed to the repo" just means "I updated the files" haha.
For ordinary Mac users that programmers talk is not haha. Bear that in mind. ;)
Same with GitHub. Many here still use older systems on a daily basis, OS9 including. GitHub is not accesible with anything older than High Sierra and/or proper browser.
AH... that makes sense. Thank you for pointing this out. I've been in the software dev world for so long that it seems I've become a bit insulated ;D And I didn't realize anything older than High Sierra can't reach GitHub. If there was an OS 9 -compatible repository, that would be amazing.
-
dont worry, i´ve put your stuff in our hotline last week. ;)
-
dont worry, i´ve put your stuff in our hotline last week. ;)
Perfect! Thank you for doing that.
-
Hi all,
I've just released v1.7 of this CSM. Improvements include:
- CSM settings will now persist through reboots
- Option-dragging out of the control strip no longer hangs, and will now create a copy of the CSM, consistent with stock CSM behavior
- Mouseup/mousedown click behavior has been fixed, consistent with stock CSM behavior
- Get Info will now list the version of the CSM
Special thanks to @opualuan for testing and bringing these things to my attention!
EDIT: I have since identified a bug in v1.7 that causes crashes when run alongside my upcoming app-less USB 2.0 stack (still wrapping up some testing). I have already fixed this and released v1.8, which you should update to v1.8 immediately if you want to eventually install the final USB 2.0 integrated driver release (and why wouldn't you want that? ;D )