heatup

Warm up a cold Apple Silicon Mac and log its temperatures and fan speeds. Built after it cleared a cold-weather fan noise on my M2 Max.

View on GitHub Build & run

The story

My MacBook Pro started making a crackling, buzzing noise after sitting in a cold, damp room. Apple support couldn't reproduce it. Running a few minutes of full CPU + GPU load, which warms the whole machine and spins the fans up to ~3,500 rpm, made the noise go away every time.

I don't know exactly why. My best guesses are fan bearings that get stiff when cold, or light condensation that evaporates once warm. This is one machine's experience, not a tested fix.

Not a fix for liquid damage. If liquid got into your Mac, shut it down, unplug it and get it inspected. Don't run this. If your Mac just came in from the cold, let it sit at room temperature for 30–60 minutes first.

What it does

Loads every CPU core and the GPU, samples die temperature and fan RPM every few seconds, writes a CSV, and prints a report covering baseline, peak, fan response and cooldown. No sudo, nothing to install beyond Apple's command-line tools.

git clone https://github.com/elephantclock/heatup.git && cd heatup
clang -O3 -march=native cpuburn.c -o cpuburn
swiftc -O gpuburn.swift -o gpuburn
swiftc -O temps.swift -o temps -framework IOKit -framework CoreFoundation
clang -O2 fans.c -o fans -framework IOKit

./heatup.sh 300      # 5 minutes. The argument is seconds, not minutes.

Reference: M2 Max

67–69 °Cpeak die, full load
~3,490 rpmfan0 peak
21–37 sfans spin up
~41 /sGPU dispatches, ~1% spread

From 13 runs, consistent to within ~1.3 °C. Other chips will differ, so record your own baseline when the machine is healthy.

Compatibility

MacStatus
M2 Max MacBook Pro✅ Built and tested
Other M1–M4 Macs with fans⚠️ Should work, untested
MacBook Air⚠️ No fans, so temperature logging only
Intel Macs❌ Not supported

Tried it on another model? Open an issue with your ./temps output.