Fan Control:原生 macOS 選單列風扇與 CPU/GPU 溫度監測工具,v1.0.4 免費下載

14次閱讀
1 則留言

Mac 的風扇平常很安靜,但它現在轉多快、CPU 和 GPU 有多熱,系統並沒有一個隨手就能看到的地方。所以我做了 Fan Control:一個原生的 macOS 選單列小工具,打開就能即時看到風扇轉速、CPU/GPU 感測器平均溫度與最近 15 分鐘的走勢,需要時也能在管理員授權後手動調整風扇轉速。

目前最新版本是 v1.0.4(build 7),提供 Apple Silicon 與 Intel 通用的 Universal DMG,支援 macOS 15 以上,在 macOS 26 以上會適度採用 Liquid Glass 外觀。原始碼與安裝檔都公開在 GitHub,不需要登入就能下載。

下載 Fan Control v1.0.4 · 查看 GitHub 原始碼 · Fan Control 官網 · 繁體中文使用說明

Fan Control:原生 macOS 選單列風扇與 CPU/GPU 溫度監測工具,v1.0.4 免費下載
選單列展開面板的實機截圖(v1.0.3 介面):即時轉速、CPU/GPU 平均溫度、最近一分鐘走勢,以及手動調速。

Fan Control 能做什麼

  • 常駐選單列:選單列可以分別選擇要顯示 RPM、CPU 溫度、GPU 溫度,以及單色的一分鐘迷你走勢圖。全部數字都關掉時,仍會保留圖示。
  • 展開面板快速調速:面板內有最近一分鐘的 RPM 圖表、整數轉速輸入,以及 1,500/2,000/2,500 RPM 快捷按鈕(硬體不支援的轉速會自動省略),按「套用轉速」或「恢復自動調節」即可。
  • 多風扇主畫面:v1.0.4 起,主畫面會把所有實際偵測到的風扇並排成卡片,每顆都有獨立的實際 RPM、1/5/15 分鐘走勢、韌體上下限、模式與目標轉速輸入。卡片會依視窗寬度換行,工具列上有「全部恢復自動」。
  • 只畫真實資料:每秒取樣一次,在背景執行緒讀取。沒有讀值的時段會留白,圖表最小保留 200 RPM 的縱向範圍,避免把小幅的感測器雜訊放大成劇烈起伏。主視窗暫停圖表時,感測器讀取與選單列走勢都會繼續更新。
  • 資料留在本機:走勢資料只放在記憶體中,最多保留本次執行期間 15 分鐘,不會上傳。
  • 原生 Mac 外觀:使用系統字體與 SF Symbols,淺色、深色跟著系統走。macOS 26 以上,互動的控制區使用 Liquid Glass;macOS 15 使用標準材質;開啟「降低透明度」時改用不透明背景。數據與圖表本身不套玻璃效果,維持清楚易讀。
Fan Control:原生 macOS 選單列風扇與 CPU/GPU 溫度監測工具,v1.0.4 免費下載
v1.0.4 多風扇並排版面預覽。這張圖使用模擬資料做版面驗證,並未連接實體風扇。
Fan Control:原生 macOS 選單列風扇與 CPU/GPU 溫度監測工具,v1.0.4 免費下載
早期版本(當時名稱為 Macmini contoral)在 M4 Mac mini 上的主視窗實機截圖,可以看到 5 分鐘轉速走勢與硬體上下限。

系統需求

  • 作業系統:macOS 15 以上;macOS 26 以上會使用 Liquid Glass 控制區。
  • 處理器:Universal 版本,同時包含 Apple Silicon(arm64)與 Intel(x86_64)。
  • 溫度感測器對應:涵蓋 M1 到 M4,以及常見的 Intel 感測器代碼。讀不到的溫度不會亂填,會直接標示為無資料。

老實說明測試範圍:目前只有我手上的 M4 Mac mini 做過實機驗證,包含即時監測、1,500/2,000 RPM 手動調速、降速與恢復自動。macOS 15、Intel 與其他機型還沒有實機測試,能編譯成 Intel 版本不代表已在 Intel 硬體上驗證過。v1.0.4 的實機調速與實體多風扇調速也還在待驗證清單上。如果你在其他機型上試用,非常歡迎回報結果。

安裝與使用

  1. 到 v1.0.4 Release 下載 Fan-Control-1.0.4-macos-universal.dmg。Release 也附上 .dmg.sha256 校驗檔,SHA-256 為 a966d8cbf08b88111bf34a5ffe13df582f97899658172c8fc91c3b27fcc5ad45。
  2. 開啟 DMG,把 Fan Control.app 拖到「應用程式」(Applications)資料夾。要啟用風扇控制,App 需要放在 /Applications 或 ~/Applications。
  3. 打開 App 就能開始監測,單純監測不需要管理員權限。關閉主視窗後,App 仍會留在選單列。
  4. 想手動調速時,在選單面板或設定按「啟用風扇控制」。macOS 可能會要求管理員驗證,並請你到「系統設定 → 一般 → 登入項目與延伸功能」允許 Fan Control。App 不會收集或儲存你的管理員密碼。
  5. 確認面板顯示「可調速」後,選「手動」,在硬體回報的範圍內輸入目標轉速或按快捷按鈕,再按「套用轉速」。要交回 macOS 管理,按「恢復自動調節」。

從舊版升級:先恢復自動控制並結束舊版 App,再安裝新版。v1.0.4 的名稱統一為 Fan Control.app,安裝後請移除舊的「風扇管理 Fan Control.app」或「Macmini contoral.app」,避免出現兩份。從安裝位置開啟新版後,在設定按「重新啟動控制服務」,確認服務版本為 1.0.4(7)。

另外提醒:目前的安裝檔使用 Apple Development 簽署,尚未經過 Apple 公證。

調整風扇前,請先看這些安全設計與注意事項

動到風扇就是動到硬體散熱,所以我把「出狀況時先交回系統」當成最優先的設計原則:

  • 目標值與實際轉速分開顯示:只有在模式與目標值都回讀確認後才會顯示寫入成功;實際 RPM 需要一點時間才會收斂。若硬體拒絕寫入,App 會顯示錯誤,請不要把沒套用成功的目標值當成實際轉速。
  • 自動恢復機制:控制服務會在連線中斷、12 秒心跳租約逾時、系統熱狀態達到 serious/critical、服務正常結束,或服務重新啟動後,把它接手的風扇恢復為自動。App 在睡眠前與正常結束時也會先要求恢復自動。
  • 感測器失效保護:手動控制期間,控制服務會自己取樣。風扇讀值連續 3 秒無效,或原本讀得到的 CPU/GPU 溫度消失,就會自動恢復,即使 App 的心跳還在。
  • 不搶別人的控制權:如果是其他程式設定的手動模式,Fan Control 不會默默接管。
  • 版本一致才允許寫入:App 會先確認正在執行的控制服務協定、版本與 build;遇到舊版服務會提示更新,這時仍可正常監測。

也要提醒:溫度是目前可讀取的 CPU/GPU 感測器平均值,不是機殼溫度或室溫。SMC 代碼與風扇寫入因機型而異,並不是 Apple 公開且穩定的 API。手動調速請在硬體範圍內進行,不確定時就按「恢復自動調節」,把風扇交還給 macOS。

技術筆記

  • 以 Swift 與 SwiftUI 撰寫,選單列使用 MenuBarExtra,圖表依照 Apple Charts 設計指引;專案用 Swift Package 組織,分成共用核心 FanCore、主 App、特權輔助程式,以及唯讀取樣工具 MacminiProbe。
  • 透過 IOKit 讀取 SMC。需要寫入風扇時,由內建的輔助程式經 Apple 的 SMAppService 註冊為系統服務。
  • 輔助程式只接受同一個 Apple 簽署團隊、且符合本 App bundle ID 的連線,App 也會反向驗證輔助程式的簽章。IPC 只開放設定目標、恢復、ping 與心跳,不提供任意 key 寫入、shell 指令或檔案路徑。
  • 改動硬體前,會先把接手的風扇 ID 記錄在 root 擁有、權限 0600 的 journal 檔;恢復失敗時保留紀錄並重試。
  • v1.0.4 重新建置並執行 29 項測試,全部通過,涵蓋數值解碼、寫入前的範圍與非有限值檢查、先記錄再寫入、外部手動模式保護、寫入失敗恢復、恢復紀錄與心跳邊界等。失效保護的測試使用模擬硬體,不等同實體故障測試。
  • SMC 傳輸格式、風扇 key 慣例、Apple Silicon 風扇解鎖流程與各機型溫度 key 對應,參考並改寫自開源專案 exelban/Stats(MIT 授權),詳見 THIRD_PARTY_NOTICES。

想自己編譯的話,需要 Xcode 26 以上與有效的 Apple Development 或 Developer ID 簽署憑證,執行 ./scripts/build-app.sh 與 ./scripts/package-dmg.sh 即可產出 Universal App 與 DMG,細節請看 GitHub 上的 README。

下載與回饋

Fan Control 還很新,從 v1.0.0 到 v1.0.4 都是這幾天密集改出來的。如果你也想在選單列隨時掌握 Mac 的風扇與溫度,歡迎下載試用;在其他機型上的使用結果、問題或建議,都可以到 GitHub 告訴我。

 

正文完
 0
評論(1 則留言)
站內小幫手(站內助手)
2026-10-26 03:25:55 回复

這篇是實際踩過的部署筆記。若你要重做一次,建議先確認硬體與版本,再對照文中的關鍵步驟。

   Bot  内网IP