macOS 虽然强大,但在硬件底层控制上往往显得“黑盒”且保守。smctl 是一款开源(MIT 许可)、命令行优先的 Mac 硬件控制工具,它打破了这一限制,让用户能在终端中直接掌控风扇转速、电池充电策略及温度功耗遥测。特别是针对 Apple Silicon (M 系列) 芯片,smctl 实现了此前被认为不可能的手动风扇控制与声明式风扇曲线,同时内置了严苛的温度安全护栏,确保在释放性能的同时绝不牺牲硬件安全。

核心亮点:精准、安全、可脚本化
1. 确定性电池管理
- 自定义限充区间:不同于 macOS 固定的 80% 或黑盒优化,smctl 允许设置任意区间(如
70-80%),有效延缓电池老化。 - 主动维护:支持
maintain模式,自动将电量维持在设定范围;支持--force-discharge主动放电至目标区间。 - 状态透明:实时查看充电状态、剩余时间及当前限充配置。
2. Apple Silicon 风扇完全掌控
- 手动与自动曲线:支持手动设定目标转速,或通过 TOML 配置文件定义声明式风扇曲线(含滞回与变速率限制)。
- 多模式切换:提供
quiet(静音)、full(全速)、auto(自动)及自定义模式。 - M4 Mac mini 验证:已在最新硬件上完整验证直写路径,部分 MacBook 机型需解锁诊断模式。
3. 军工级安全设计
- 温度护栏:每秒监控所有温度传感器。若持续超过上限(默认 100°C,热点 110°C),强制交还风扇控制权并锁定手动模式,直到降温。护栏不可关闭。
- 写入校验:每次 SMC 写入后回读验证,失败即报错,绝不静默假装成功。
- 优雅降级:若 macOS 更新改变 SMC 行为,受影响功能自动降级为只读并提示,防止误操作。
- 绝不留砖:卸载或杀死 daemon 时,通过退出钩子与 launchd 对账,确保硬件控制权安全交还系统。
4. 无头服务器友好
- JSON 输出:所有命令支持
--json格式,便于接入 Prometheus、Grafana 或其他监控体系。 - SSH 友好:所有功能均可通过 SSH 远程执行,是管理 Mac Mini 家用服务器的理想工具。
- 告警集成:支持基于 TOML 配置的 Webhook、Shell 命令或日志告警,轻松对接 Gotify 等通知服务。
快速开始
1. 安装 (Homebrew 推荐)
# 添加 Tap
brew tap leaperone/smctl
# 安装 smctl
brew install smctl
# 安装并启动特权守护进程 (必需用于风扇/电池控制)
sudo smctl daemon install
2. 常用命令
电池管理:
# 维持电量在 70%-80%
smctl battery maintain 70-80
# 查看电池状态
smctl battery status
风扇控制:
# 应用静音风扇曲线
smctl fan profile quiet
# 手动设定风扇转速为 2500 RPM
smctl fan set 2500
# 查看风扇状态
smctl fan status
传感器监控:
# 实时监控温度、风扇及功耗
smctl sensors --watch
# 以 JSON 格式输出,便于脚本解析
smctl sensors --json
3. 配置示例 (/etc/smctl/config.toml)
# 风扇曲线配置
[fan.profiles.custom]
min_rpm = 1000 max_rpm = 6000 temp_start = 50 temp_full = 80 # 告警规则 [[alert]] name = “cpu-hot” on = “temp” sensor = “Tp09” above = 85 for = 30 action = “webhook” url = “http://gotify.lan/message?token=…”
smctl 填补了 macOS 在底层硬件控制上的空白,特别是为 Apple Silicon 用户带来了前所未有的自由度。它不仅是一个工具,更是一套安全、透明、可审计的硬件管理方案。
对于每一位希望彻底掌控自己设备的 Mac 用户而言,smctl 都是终端里不可或缺的新成员。立即安装,让你的 Mac 听命于你!


