Fan Speed & Multi-Fan Telemetry #4
Notifications
Due Date
No due date set.
Blocks
Depends on
#24 Threshold Alerts & macOS Notification Center Integration
gronod/MacMonitor
#2 SMC Interface Engine (AppleSMC IOKit Client)
gronod/MacMonitor
Reference: gronod/MacMonitor#4
Reference in New Issue
Block a user
Purpose
Monitor real-time cooling fan metrics across all fans present in Intel Macs (e.g. single fan in Mac mini/MacBook Air, dual fans in MacBook Pro, triple fans in iMac, multi-zone fans in Mac Pro).
Priority
High (Vital for acoustics, cooling diagnosis, and thermal management)
Dependencies
Scope
FNum) to determine the exact number of installed cooling fans.F{i}IDF{i}Ac)F{i}Mn)F{i}Mx)F{i}Tg)Implementation Suggestions
fpe2encoding parser to extract floating-point RPM values from 2-byte SMC responses.0throughN-1based on the value read fromFNum.Technical Implementation Plan & Code Solution
1. AppleSMC Fan Architecture & Key Protocol
Intel Macs expose fan counts and per-fan parameters via structured SMC keys:
FNum(typeui8): Total number of fans (0 on fanless MacBook 12", 1 on MacBook Air/Mac mini, 2 on 15"/16" MacBook Pro, 3 on iMac, 4-6 on Mac Pro).i(from 0 toFNum - 1):F{i}Ac(typefpe2): Current actual speed (RPM)F{i}Mn(typefpe2): Hardware minimum speed (RPM)F{i}Mx(typefpe2): Hardware maximum speed (RPM)F{i}Tg(typefpe2): Target commanded speed (RPM)F{i}ID(typech8*or string): Fan identifier (e.g. "Exhaust", "Left", "Right")2. Objective-C Provider (
MMFanTelemetryProvider.m)3. Swift UI Model & Visualization
4. Edge Cases Handled
isStalled == truewhenactualRPM == 0whileminRPM > 0.Completed in
feat/4-fan-telemetryand merged intodevelop.MMFanTelemetryProviderquerying SMC keyFNumfor active fan counts.F0Ac,F0Mn,F0Mx,F0Tg, etc.fpe2fixed point format into accurate RPM values.MMFanTests.swift.