DEV Community

Sergei Saliukov
Sergei Saliukov

Posted on

How to control fan speed on Mac?

…or why I decided to code my own app for that

Since the launch of Apple Silicon, Apple’s machines have become known for being silent, powerful, and efficient. However, that silent powerhouse comes at a hidden cost. The system often spins up the fans only when you could already cook eggs on the bottom panel of your MacBook. On top of that, overheating accelerates the degradation of internal components. So how do we fix this?

Existing solutions

Macs Fan Control is a well-known app for this purpose. It is free to download, but custom presets are locked behind a €17 license. As of today, it does not support M5 Macs, and some users have even reported that temperature sensors are not being parsed correctly

TG Pro is more of an all-in-one system monitoring app that combines the functionality of iStat Menus and Macs Fan Control in a single app. However, when it comes to setting fan speed, it sometimes does nothing unless the fans are first switched back to auto mode, which is a common issue on M3 and newer models. Similarly, it requires a pro license, which costs €17.50

My ultimate answer

When I started digging into fan control software, it seemed almost impossible to find any useful sources. In fact, there are no open-source macOS utilities that fully serve this purpose. Eventually, I came across multiple tools for interacting with the SMC (System Management Controller), which can display readings from temperature sensors and fans directly. Dozens of debugging hours eventually led me to the ultimate answer to this problem: FanControl. But it’s not that easy. Apparently, Apple loves to make fan control difficult:

  • On M1 and M2 Macs, you can simply send a single request to the SMC and change the fan speed
  • Starting with M3 machines, this approach only works when the fans are already spinning in auto mode. Still remember TG Pro’s issue? It could have been a serious problem for me as well if it were not possible to simply spam the set fan speed commands and get it working within 5 to 8 seconds
  • M5 takes this to another level. Internally, the fan-related SMC keys now use different data types for both reading and writing. This is exactly why fan monitoring broke entirely in iStat Menus and still has not been fixed as of today. After another 5 to 10 hours of debugging, I was finally able to solve the issue and separate the logic for M5 Macs from all previous generations

So why should you choose FanControl?

  • The app is mostly open-source
  • The Premium License is available to acquire through Stripe with any payment method you want for just €7.99
  • The basic version is free forever without any hidden costs
  • M5 support is available from day one
  • Continuous improvements; submit your issues via GitHub or contact me directly to resolve any problems
  • Menu Bar app with full functionality

I also want to highlight the level of customization available:

  • Temperature units: Celsius, Fahrenheit, Kelvin
  • Launch at login
  • Keep the window above others
  • Hide the window on launch
  • Updates can be delivered through a GitHub proxy for users in China

So don’t waste any more time and go get those fans of yours lika spinny jelly wheely thingy

Top comments (0)