Skip to content

Repository files navigation

FanControl

FanControl 是一款面向 Apple 芯片 Mac mini 和 Mac Studio 的原生风扇监控与控制工具。应用使用 SwiftUI,体积小,不依赖 Electron、Python 或 Node.js 运行环境。

功能

  • 显示 CPU、GPU、整机温度与实时风扇转速
  • 动态读取风扇数量、最低转速和最高转速,不写死机型转速表
  • 支持 Mac Studio 的多风扇分别选择和控制
  • 提供静音、均衡、性能和全速预设
  • 随时恢复 macOS 系统自动控制
  • App 退出、失联或后台服务重启后,自动尝试交还风扇控制权
  • 使用 macOS 自己的热压力状态驱动角色反馈,不用统一温度线误判不同芯片
  • 支持女孩和男孩付费动态皮肤,公开源码不包含付费图片

角色反馈

系统状态 角色表现 文案
正常 开心轻微浮动 状态不错~
热压力轻微升高 微汗 有点热…
热压力严重 冒烟、轻微晃动 好热啊,帮我降降温吧!
危急或严重状态持续 10 分钟 害怕、发抖 主人,我有点撑不住了,先休息一下好吗?
手动调至 70% 以上 吹风开心 4 秒 风来啦,爽~
从热状态恢复正常 开心上浮 8 秒 呼,好凉快~

系统开启“减少动态效果”后,角色会自动停止持续动画。

支持范围

程序通过运行时探测 SMC 键值适配不同硬件,已覆盖 M1、M2、M3、M4、M5 的已知温度传感器布局,并兼容大小写不同的风扇模式键、带或不带 Ftst 解锁机制的机器。

当前实机验证:

  • Mac mini,M4,型号标识符 Mac16,10
  • 单风扇动态范围 1000–4900 RPM
  • CPU、GPU、整机温度读取正常
  • 手动目标 2326 RPM 写入和实际转速验证正常
  • 强制结束界面后,后台服务可在租约超时后恢复系统自动模式
  • 非 FanControl 进程连接后台服务会被拒绝

其他 Mac mini 和 Mac Studio 采用相同的动态探测路径,但仍建议用户提交真机反馈。没有真机记录的型号不会标注为“已实机验证”。

安装后可以运行下面的只读命令获取兼容性信息,并通过 GitHub 的“机型兼容性反馈”模板提交。输出只包含温度与风扇数据:

/Library/PrivilegedHelperTools/fanhelper read

系统要求

  • macOS 13 Ventura 或更高版本
  • Apple Silicon,也就是 M 系列芯片
  • 首次安装或更新后台服务时需要管理员密码
  • Xcode Command Line Tools,用于从源码编译

安装

下载项目后,在项目目录运行:

./install.sh

安装器会依次完成编译、文件检查、App 安装、后台服务安装、签名验证,然后自动打开应用。管理员密码不会被应用保存。

使用

  1. 打开 FanControl,查看温度和实时 RPM。
  2. 选择需要控制的风扇。
  3. 拖动滑杆,或者选择静音、均衡、性能、全速。
  4. 不需要手动控制时,点击“恢复自动”。
  5. 退出应用时也会恢复系统自动控制。

“静音”代表硬件报告的最低安全转速,不会把风扇停转。

导入付费皮肤

购买后会获得一个 .fancontrolskin 皮肤包。在应用右上角角色菜单中选择“导入付费皮肤…”,导入完成后即可选择女孩或男孩皮肤。

皮肤包只允许包含六张 PNG 图片和固定格式的 manifest.json。应用会检查扩展名、PNG 文件头、图片数量、单文件大小、像素尺寸和路径,拒绝符号链接及路径穿越。

公开 GitHub 仓库只包含普通版代码。PremiumSkinPacks/、设计源文件和角色图片均被忽略,不会意外上传。

卸载

./uninstall.sh

卸载器会先恢复系统自动风扇控制,再移除 App 和后台服务。已经导入的付费皮肤会保留,重新安装后仍可使用。

开发验证

make test
make build
make release

安全设计

  • 普通界面进程不以 root 身份运行
  • 只有后台 Helper 拥有写入风扇控制键的权限
  • 本机套接字权限限定为当前登录用户
  • Helper 会校验连接进程的 macOS 代码签名
  • 所有目标 RPM 都限制在硬件实时报告的最小值和最大值之间
  • 手动控制使用六秒租约,界面失联后自动恢复
  • Helper 异常重启时使用所有权标记继续恢复自动模式
  • 最后一个手动风扇恢复后才关闭 Ftst,重新交还 thermalmonitord

风险说明

Apple 没有公开 macOS 风扇写入接口。本项目通过 AppleSMC 工作,手动控制会暂时改变系统默认风扇策略。请勿修改源码绕过最低转速限制,也不要在高温时强行保持低转速。

公开发布预编译安装包前,还需要使用开发者自己的 Developer ID 完成正式签名和 Apple 公证。从源码本机编译安装可使用当前安装流程。

付费版本说明

普通版源码可以独立运行,不包含任何付费角色图片。女孩和男孩版本以独立皮肤包交付,因此可以分别定价销售,也不会因为公开代码而把付费素材一同公开。

当前版本提供安全导入和本机保存,不绑定特定支付平台。后续可以接入 Lemon Squeezy、Paddle 或 App Store 作为购买与授权渠道。

许可

当前仓库未附带开源许可,源码与未单独授权的素材保留全部权利。付费角色图片不会进入公开仓库。

技术参考

About

Apple 芯片 Mac mini 与 Mac Studio 风扇监控和控制工具

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages