You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Calibration answers one question per temperature point: **what fan speed holds this machine at this temperature?**
146
+
Calibration answers one question per fan speed: **what temperature does this machine stabilize at with fans at X%?**
147
147
148
148
It works in three phases:
149
149
150
150
1.**Discover intensity** — finds the stress level that heats your machine at ~1°C/sec (matching real workloads, not synthetic maximum). Uses Metal compute + CPU stress.
151
-
2.**Heat to target** — runs stress with fans on auto, lets the machine warm naturally to each target temperature (60°C, 65°C, 70°C, 75°C, 80°C, 85°C).
152
-
3.**Find holding speed** — at each target, binary-searches for the fan speed that stabilizes temperature there. Tests a fan speed, measures whether temp is rising/falling/stable, adjusts up or down until it converges.
151
+
2.**Fan-level stabilization sweep** — sets fans to 100%, applies calibrated stress, and waits for temperature to stabilize. Then reduces fans to 80% and waits again. Repeats at 60%, 45%, and minimum. At each level, the equilibrium temperature is recorded.
152
+
3.**Build control curve** — transforms the raw data (higher fan = lower equilibrium temp) into a control curve (higher temp = more fan needed) that Smart reads at runtime.
153
153
154
154
The result is a temperature-to-fan-speed lookup table specific to your machine:
155
155
156
156
```
157
-
60°C → 30% fans
158
-
65°C → 42% fans
159
-
70°C → 55% fans
160
-
75°C → 68% fans
161
-
80°C → 82% fans
162
-
85°C → 96% fans
157
+
60°C → 39% fans
158
+
65°C → 53% fans
159
+
70°C → 65% fans
160
+
75°C → 78% fans
161
+
80°C → 90% fans
162
+
85°C → 100% fans
163
163
```
164
164
165
-
Smart reads this table and interpolates for any temperature. At 72°C on your machine, Smart knows it needs ~58% fan speed — not a guess, a measurement.
165
+
Smart reads this table and interpolates for any temperature. At 72°C on your machine, Smart knows it needs ~70% fan speed — not a guess, a measurement.
166
166
167
-
The machine never exceeds the target temperature because calibration controls the target, not the fan speed. A 95°C safety backstop is always active as a failsafe.
167
+
Temperature is protected by three layers: an 84°C ceiling (skips lower fan levels), a 90°C safety stop (maxes fans immediately), and a 95°C backstop (always active regardless of what's running).
168
168
169
169
### Calibration modes
170
170
171
-
Modes control how many binary search iterations per target and how long each test holds:
171
+
Modes control how long the machine waits for thermal equilibrium at each fan level:
172
172
173
-
| Mode | Time |Binary search iterations | Hold time per test|
173
+
| Mode | Time |Stabilization window | Max wait per level|
174
174
|---|---|---|---|
175
-
|**Quick**|~15 min |4 per target | 8 seconds|
176
-
|**Standard**|~25 min |6 per target | 15 seconds|
177
-
|**Optimized**|~40 min |8 per target | 25 seconds|
175
+
|**Quick**|up to 17 min |60 seconds (30 readings) | 2.5 minutes|
176
+
|**Standard**|up to 25 min |90 seconds (45 readings) | 4 minutes|
177
+
|**Optimized**|up to 35 min |120 seconds (60 readings) | 6 minutes|
178
178
179
-
More iterations and longer hold times produce more accurate data. Standard is recommended for most users.
180
-
181
-
Timing is based on measured thermal time constants of 90-120 seconds for Apple Silicon laptop heatsink assemblies (Notebookcheck M1-M4 MacBook Pro stress tests, [Max Tech](https://www.youtube.com/@MaxTech) sustained performance testing). Mac Studio's larger thermal mass (~2-3x) is covered by Standard mode's timing.
179
+
Longer stabilization windows produce more accurate equilibrium measurements. Standard is recommended for most users. Timing is based on measured thermal time constants of 90-120 seconds for Apple Silicon laptop heatsink assemblies (Notebookcheck M1-M4 MacBook Pro stress tests, [Max Tech](https://www.youtube.com/@MaxTech) sustained performance testing).
182
180
183
181
**Smart works without calibration** — it uses a conservative default curve. Calibration makes it precise for your hardware.
The entire profile system, Smart curve, and calibration need to be redesigned as one cohesive system. Current profiles are binary switches that immediately set fans to a fixed percentage. They should be proportional curves that respect Apple's fan hardware behavior.
print("This will stress your \(calStress ==.combined ?"CPU and GPU": calStress ==.cpu ?"CPU":"GPU") and measure thermal response at 4 fan speed levels.")
344
+
print("This will stress your \(calStress ==.combined ?"CPU and GPU": calStress ==.cpu ?"CPU":"GPU") and measure thermal response at 5 fan speed levels.")
345
345
print("Fans will be loud during the test.")
346
346
print("")
347
347
print("DISCLAIMER: Calibration pushes your Mac to full load and cycles fan speeds.")
0 commit comments