Thermal 降频状态显示不准怎么办——已知偏差的修复和绕过
已知问题
社区用户多次反馈:某些机型(主要是小米、vivo 的部分定制 ROM)在设备明显降频时,Castro 显示的 Thermal 状态仍然是"无限制"。2025 年下半年的多个评论中集中提到这个问题。
为什么会发生
Android Thermal Mitigation 框架需要厂商在内核里正确实现 thermal_zone 驱动,把热缓解状态上报给 ThermalManager。部分厂商 ROM:
- 使用了自定义的温控方案,绕过了标准的 ThermalManager
- 驱动只上报温度值,不上报"当前热状态等级"
- 在系统优化后移除了标准 Thermal 节点的导出
Castro 读取的是系统 ThermalManager API,API 返回什么就显示什么——如果系统自己返回"Not under throttling",Castro 无法验证这个返回值是否正确。
怎么绕过
虽然 Thermal 状态可能不准,但你仍然可以通过 CPU 频率卡片的实时数据判断是否在降频:
- 让设备跑重负载(游戏或跑分)持续 10~15 分钟
- 观察大核的实时频率柱——如果频率明显从最高档被压到较低档位(比如从 3.2 GHz 降到 2.0 GHz),即使 Thermal 状态显示无限制,你也知道它在降频了
- 同时观察电池温度——温度通常会在 45°C 以上
这两个读数(CPU 频率 + 电池温度)都是直接从内核 sysfs 读取的,不依赖 ThermalManager,可信度更高。
报告问题
如果遇到 Thermal 不准的情况,可以:
- 确认是最新版本的 Castro(开发者可能在新版本里增加了对某些机型的兼容性修复)
- 到 Google Play 应用评论里反馈——开发者会在后续版本里逐步增加更多机型的驱动兼容层
- 如果你的设备是 Root 的,可以手动查 /sys/class/thermal/ 下的 thermal_zone 节点,对比 Castro 的返回值