Built a cheap DIY fan controller because my motherboard never had working PWM
我發現 MSI 主機板因為硬體設計疏失沒接好 Super IO 晶片,導致風扇控制失效,所以我用 Arduino 動手做了一個風扇控制器,並開發了支援 Windows XP 到 11 的 DummyFanX 應用程式來解決這個問題。
背景
這篇技術筆記源於一位開發者在組裝復古電腦時,發現其 MSI 970 Gaming 主機板存在嚴重的硬體缺陷:儘管搭載了功能齊全的 Super IO 晶片,但主機板似乎未正確佈線,導致 BIOS 無法讀取溫度與轉速,風扇始終全速運轉。作者最終利用 Arduino Nano 製作了一個低成本的 DIY 風扇控制器,並開發了配套的 Windows 應用程式,透過讀取 CPU 內部熱敏二極體的數據來動態調整風扇轉速。
社群觀點
在 Hacker News 的討論中,社群對這項 DIY 解決方案展現了高度興趣,但也對硬體故障的根本原因與系統安全性提出了深入質疑。部分資深硬體玩家對「MSI 忘記佈線」的說法持保留態度,認為 Super IO 晶片通常透過 LPC 匯流排連接,若完全未連接,主機板連基本的 PS/2 鍵盤、序列埠甚至開機關機都無法運作。更有可能的解釋是特定批次的硬體瑕疵、斷路,或是 BIOS 韌體存在嚴重錯誤。作者對此回應,他已測試過多個版本的 BIOS 甚至未公開的測試版,且 HWiNFO 確實無法從該晶片讀取到除機殼入侵偵測以外的任何數據,這顯示該主機板在感測器線路設計上確實存在異常。
安全性是社群討論的另一個核心。多位評論者指出,依賴 Windows 應用程式與序列通訊來控制風扇存在風險,一旦作業系統當機或通訊中斷,CPU 可能會因散熱不足而降頻甚至受損。雖然現代 CPU 具備過熱降頻保護,不至於像早期的 Athlon 處理器那樣燒毀,但社群普遍建議應實作「心跳機制」或「看門狗計時器」。當 Arduino 在預定時間內未收到來自電腦的訊號時,應自動將風扇轉速拉升至 100% 以確保安全。作者也證實,大多數 PWM 風扇在失去控制訊號時,預設行為就是全速運轉,這在物理層面上提供了一定程度的失效保護。
此外,討論也延伸到了數位與類比控制的權衡。有觀點認為使用微控制器來控制風扇是大材小用,僅需簡單的運算放大器與熱敏電阻構成的類比電路即可達成。然而,反對者反駁指出,在現代電子產業中,微控制器的成本已低於一堆精密類比元件,且數位方案具備極高的靈活性,無需更換硬體即可調整風扇曲線(例如從線性改為二次曲線)。更有開發者分享了基於 ESP32 或 RP2040 的進階方案,透過 WiFi 或 ESPHome 實現無線監控,這顯示了 DIY 風扇控制器已從單純的修復手段演變為一種具備高度擴充性的技術實踐。
延伸閱讀
- ESP32 WiFi 風扇控制器專案:由社群成員 zeroflow 開發,基於 ESPHome 並提供開源電路圖與韌體。
- Tom's Hardware 早期 CPU 燒毀實驗:討論中提到的經典影片,展示了在缺乏現代熱保護機制下,移除散熱器對 CPU 造成的毀滅性後果。
- mraa 函式庫:用於在嵌入式系統中透過程式碼控制 PWM 與 GPIO 的低階介面。