5分钟换掉AWCC:开源散热控制工具Thermal Control Center for Dell G15安装与调优指南
5分钟换掉AWCC:开源散热控制工具Thermal Control Center for Dell G15安装与调优指南
【免费下载链接】tcc-g15Thermal Control Center for Dell G15 - open source alternative to AWCC项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15
Thermal Control Center for Dell G15(下称 TCC)是一款开源的 Dell G15 散热控制工具,通过直接调用 WMI 接口替代官方 AWCC,实现模式切换、温度监控与风扇干预。如果你正被 AWCC 的缓慢启动、静默遥测和损坏的手动风扇控制折磨,这篇文章会带你从零跑通它,再帮你把参数调到顺手。
第一站:3分钟跑起来,先拿到爽点
先别急着研究原理。这个项目从克隆到看见界面,正常情况下不超过 3 分钟。你会遇到的第一道门槛是权限:TCC 必须用管理员权限运行,因为它要通过 WMI 访问硬件接口,普通权限下连 WMI 类都实例化不了。
动手前的准备清单
| 检查项 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10 / 11 | 项目目标平台,其他系统暂不支持 |
| Python | 3.8+ | 需要可用的 python 与 pip |
| 管理员权限 | 必需 | 首次运行及每次运行都需要 |
| 硬件型号 | 见下方列表 | 已确认机型之外可能也能用 |
社区反馈已确认支持的机型包括:Dell G15 的 5511、5515、5520、5525、5530、5535、5590,以及 Alienware m16 R1、G3 3590、G3 15 3500、Alienware 16X Aurora、Alienware 18 Area-51 AA18250。其他 G15 或 Alienware 机型大概率也能识别,跑不通就去提 issue,作者很在意兼容性反馈。
一键安装与启动
git clone https://gitcode.com/gh_mirrors/tc/tcc-g15 cd tcc-g15 python3 -m pip install -r requirements.txt python3 src\tcc-g15.py依赖就三个核心包:WMI(Windows 管理接口通信)、PySide6(界面框架)、windows-toasts(系统通知)。装完后运行入口脚本,如果一切正常,你会看到 GPU/CPU 两个仪表盘组件,温度开始以 1 秒一次的节奏跳动。
这一步很容易踩的坑:在非管理员终端里运行会直接弹错退出,错误信息提示"Couldn't instantiate AWCC WMI class",看到这句先检查权限,别急着怀疑硬件。顺带一提,如果只是想开机后静默常驻托盘,可以加--minimized参数启动。
想要更快验证硬件通信是否正常,可以先跑一遍项目自带的
wmi-test.py,它会直接打印 WMI 返回结果,几秒内就能确认你的机器能否被识别。
第二站:它凭什么比官方软件"快且干净"
跑起来之后,值得花两分钟理解它背后的机制——这决定了你能把它调到多好。TCC 的本质是一层很薄的皮:界面之下,所有操作都是对 Dell 暴露在 WMI 命名空间root\WMI里的AWCCWmiMethodFunction类的几次方法调用。
一次调用背后的"硬编码协议"
打个比方:AWCC 像一套"总机转接"系统,你的指令要先过 UI、服务层、驱动层才到硬件;而 TCC 直接拿起对讲机喊硬件那头的分机号。这个"分机号"就是接口文档WMI-AWCC-doc.md里记录的调用协议:模式、传感器、风扇全部用整数 ID 编码,参数打包进一个 32 位整数传进去。
# AWCCWmiWrapper.py 中的核心封装(节选) def GetSensorTemperature(self, sensorId: int) -> Optional[int]: """把传感器 ID 左移 8 位、加上子命令 4,拼成调用参数""" arg = ((sensorId & 0xFF) << 8) | 4 return self._call('Thermal_Information', arg) def GetFanRPM(self, fanId: int) -> Optional[int]: """子命令 5 表示读取转速,单位 RPM""" arg = ((fanId & 0xFF) << 8) | 5 return self._call('Thermal_Information', arg) def ApplyThermalMode(self, mode: ThermalMode) -> bool: """子命令 1 表示写入散热模式""" arg = ((mode.value & 0xFF) << 8) | 1 return self._call('Thermal_Control', arg) == 0注意传感器 ID 范围是 1–48,风扇 ID 范围是 49–99;温度读数直接返回摄氏度,返回0xFFFFFFFF或-1视为读取失败,封装层会统一转成None。这种"参数即协议"的设计让整个后端薄到几乎没有多余逻辑,也解释了为什么它启动快、常驻开销小。
官方方案与 TCC 的真实差距
| 对比维度 | 官方 AWCC | 开源 TCC |
|---|---|---|
| G 模式开关 | 程序内没有开关 | 界面/托盘/键盘 G 键均可切换 |
| 手动风扇控制 | 当前版本功能损坏 | 半手动调速(Custom 模式) |
| 静默遥测 | 存在且无法退出 | 完全本地,无网络上报 |
| 稳定性 | 偶发随机崩溃弹窗 | 无此问题 |
| 界面体积 | 庞大、多组件常驻 | 单窗口 + 托盘,秒级启动 |
| 授权方式 | 闭源预装 | GPL v3 开源 |
其中"遥测"值得单独说:AWCC 会静默向tm-sdk.platinumai.net、qa-external-tm.plawebsvc01.net两个地址上报数据,且没有关闭选项。如果你在意隐私,这一条就足够成为换掉它的理由。
1 秒心跳与 fail-safe 兜底
温度监控不是实时轮询循环,而是由 GUI 里的一个QTimer驱动的周期任务,周期 1000 毫秒(TEMP_UPD_PERIOD_MS = 1000)。每次心跳做三件事:读 GPU/CPU 温度和风扇转速、更新仪表与托盘图标、检查 fail-safe 是否该触发。
fail-safe(安全兜底)是它最重要的保护逻辑,逻辑很直白:
# AppGUI.py 中 fail-safe 判断(节选) tempIsHigh = ( (gpuTemp is None) or (gpuTemp >= self.FAILSAFE_GPU_TEMP) or (cpuTemp is None) or (cpuTemp >= self.FAILSAFE_CPU_TEMP) ) if (self._failsafeOn and self._modeSwitch.getChecked() != ThermalMode.G_Mode.value and tempIsHigh and time.time() - self._failsafeTempIsHighStartTs > self.FAILSAFE_TRIGGER_DELAY_SEC ): self._modeSwitch.setChecked(ThermalMode.G_Mode.value) # 直接切到 G 模式拉满风扇默认参数:CPU 阈值 95℃、GPU 阈值 85℃、持续高温 8 秒才触发(避免瞬时尖峰误伤)、温度回落60 秒后自动恢复原模式。这套"触发延迟 + 自动恢复"的设计很成熟,你不用自己再加防抖逻辑。
第三站:按场景定制你的散热策略
TCC 提供三种模式:Balanced(平衡)、G_Mode(G 模式)、Custom(自定义),对应 WMI 枚举值分别是 151、171、0。切换核心只有一个setMode()调用,所以实际使用中的"调优"更多发生在参数层面。
场景 A:日常办公,要安静
目标是把风扇压到最低、别让笔记本在打字时起飞。操作路径:主界面切到Balanced,勾选Fail-safe,GPU 阈值下拉到 70–75℃、CPU 阈值保持 90℃ 以上。这样日常负载永远触不到切换点,风扇几乎全程低转;真有程序突然把 CPU 顶到 95℃ 时,兜底会在 8 秒后介入,你最多听到几秒风扇声,不会烧机器。
场景 B:游戏/渲染,要性能
进游戏前手动按一下键盘G 键(全局热键,代码里注册的按键码是0x80)或从托盘菜单切到 G 模式,风扇会直接拉到高转速。玩完再按一次 G 键回到原模式——热键逻辑会记住切换前的模式并还原,不需要你手动点回。
如果想在 Custom 模式下做"半手动"调速:Custom 模式会解锁两个风扇的滑条(0–120,步进刻度为 20),你可以给 CPU 扇和 GPU 扇分别设定目标转速百分比。这里有个必须知道的限制:它不是真正的全手动——如果你把转速设得过低,BIOS 会在温度到达临界点时自动接管、强制提速,这是硬件层面的安全策略,软件无法绕过。
fail-safe 参数速查表
| 参数 | 默认值 | 可调范围 | 建议 |
|---|---|---|---|
| CPU 触发阈值 | 95℃ | 50–100℃ | 日常 90+,激进可到 95 |
| GPU 触发阈值 | 85℃ | 50–90℃ | 85 是较稳的甜点值 |
| 触发延迟 | 8 秒 | 代码常量 | 建议保留,防尖峰误触发 |
| 恢复时间 | 60 秒 | 代码常量 | 温度稳定后自动切回原模式 |
顺带一提,托盘图标四个角的白色圆点就是 G 模式指示灯:有白点是开、没有是关。鼠标悬停托盘图标会显示当前 GPU/CPU 温度、转速和模式,不用开主窗口就能看状态。
第四站:踩坑清单与排查手册
用到这,你大概率会遇到下面四个问题中的一两个。按"现象 → 排查 → 解决"的顺序看就行。
问题 1:启动报错 "AWCC WMI class not found"
- 排查:先确认机型在支持列表内;再确认 Dell 的 WMI 相关驱动已安装(AWCC 卸载时可能连驱动一起卸了)。
- 解决:重装 Dell 官方驱动包(保留 WMI 驱动),或在确认机型支持后重跑
wmi-test.py验证通信。
问题 2:温度显示异常或长时间不更新
- 排查:先看是不是传感器读数本身返回了
None——代码里对返回0xFFFFFFFF或-1的读数会静默丢弃。 - 解决:偶发的虚假 GPU 温度是 Dell 驱动的已知问题(社区有相关 issue),重启一次驱动或升级 BIOS/显卡驱动通常能缓解;持续不更新则回问题 1 的排查路径。
问题 3:风扇没反应,或转速设低后反而提速
- 排查:确认当前模式是 Custom(滑条只在 Custom 下可用);确认你设定的值没有低到触发 BIOS 接管。
- 解决:把转速往上调到 30% 以上再观察。BIOS 接管是硬件安全机制,无解,但换个角度想——它是最后一道保险。
问题 4:开机自启不生效
- 排查:TCC 的"Enable autorun"是通过
schtasks导入任务计划实现的(XML 模板见tcc_g15_task.xml),部分系统的安全策略会拦截计划任务启动 GUI 程序。 - 解决:改用系统"启动"文件夹放快捷方式,或手动在任务计划程序里创建任务;README 里也明确标注了这个已知限制。
第五站:目录地图与一个进阶玩法
项目结构清晰,后端与界面完全分离,二次开发的门槛很低:
tcc-g15/ ├── src/ │ ├── Backend/ │ │ ├── AWCCWmiWrapper.py # WMI 方法封装(参数打包/解包) │ │ ├── AWCCThermal.py # 温度/风扇/模式的业务层 │ │ └── DetectHardware.py # CPU/GPU 型号识别 │ ├── GUI/ │ │ ├── AppGUI.py # 主窗口、托盘、fail-safe、设置持久化 │ │ ├── QGauge.py # 仪表盘控件 │ │ ├── QGaugeTrayIcon.py # 托盘温度图标 │ │ └── HotKey.py # G 键全局热键(RegisterHotKey) │ └── tcc-g15.py # 入口 └── WMI-AWCC-doc.md # 逆向整理的 WMI 接口文档一个值得动手的进阶玩法:不依赖 GUI,直接在 Python 里 import 后端做温度巡检脚本。比如每 10 秒记录一次 GPU 温度,超阈值就自动切 G 模式——相当于绕过界面自己写一套触发逻辑:
# 进阶玩法:用后端 API 做自定义温度巡检(示例) import time from Backend.AWCCThermal import AWCCThermal t = AWCCThermal() while True: gpu = t.getFanRelatedTemp(t.GPUFanIdx) # GPU 关联传感器温度 cpu = t.getFanRelatedTemp(t.CPUFanIdx) print(f"GPU={gpu}°C CPU={cpu}°C RPM={t.getFanRPM(t.GPUFanIdx)}") if gpu is not None and gpu > 88: t.setMode(t.Mode.G_Mode) # 超限切 G 模式 time.sleep(10)由于AWCCThermal的 API(setMode、getFanRelatedTemp、getFanRPM、setFanSpeed)已经是纯净的封装,你甚至可以把它接进自己的监控面板、Web 接口或自动化脚本里,不必碰任何 GUI 代码。参考WMI-AWCC-doc.md,还能扩展出更多 WMI 方法的使用方式。
收尾:该不该彻底卸载 AWCC?
如果你的机器在支持列表内,答案是:可以。TCC 覆盖了日常 90% 的需求——模式切换、温度监控、半手动调速、fail-safe 兜底、G 键热键全都有,而且它完全本地运行、无遥测。可以安全移除的组件包括 AWCC 本体及其 OC Controls 等套件,卸载后 WMI 驱动保留即可。
维护建议:每季度用硬件监控工具(如 HWiNFO)对比一次温度读数做校准;关注项目更新,--minimized静默启动 + 任务计划自启是推荐的常驻组合;遇到问题优先提 issue 并附上机型与wmi-test.py输出,兼容性反馈对这类硬件项目价值极高。
想进一步深入,可以读三样东西:WMI-AWCC-doc.md(接口逆向文档)、src/Backend/AWCCThermal.py(业务层全貌)、以及 Windows 官方 WMI 文档理解root\WMI命名空间的机制。看懂这三层,你就不再是"用工具的人",而是"能改工具的人"。
【免费下载链接】tcc-g15Thermal Control Center for Dell G15 - open source alternative to AWCC项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考