三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

2.宏碁掠夺者擎控制台无法识别电源状态?一次驱动层排查与修复实录

2.宏碁掠夺者擎控制台无法识别电源状态?一次驱动层排查与修复实录

宏碁掠夺者擎 PHN16-71 的 PredatorSense 控制台读不出电池/电源状态,误以为是 BIOS 或微软驱动问题,最终定位到 OEM 自带的 ACPI 扩展驱动缺失,重装离线安装包即可解决。记录完整排错过程与避坑经验。

我的笔记本是宏碁掠夺者擎(Acer Predator PHN16-71,i5-13500HX),某天发现 PredatorSense 控制台突然无法识别电源状态——电池电量、充电状态全都读不出来。这台机器之前也出过类似问题,上次似乎是写个驱动脚本就好了,所以这次第一反应也是驱动层面的毛病。

本文完整记录这次从"误诊"到"定位真因"的全过程,以及最终的一键修复脚本,给同机型或遇到类似问题的朋友避坑。


一、故障现象

  • PredatorSense 控制台打不开或打开后电源/电池状态全空
  • Windows 自带的电池信息也读不全:Win32_BatteryDesignCapacityFullChargeCapacity均为空
  • 电池本身在放电/充电正常,系统没崩,只是"读不出来"

最迷惑的一点是:用 PowerShell 查 ACPI 电池数据时,_BST(实时状态,电压/剩余电量)能读到,_BIF(静态信息,设计容量/满充容量)却报"常规故障"。这让人一度怀疑是固件层的 ACPI 表坏了。


二、走过的弯路(踩坑记录)

这一段是本文最有价值的部分:电池识别异常,优先查 OEM 扩展驱动,别一上来就盯 BIOS/微软驱动。

弯路 1:怀疑微软 CmBatt.sys 驱动版本

诊断发现CmBatt.sys在 2026-07-30 被 Windows Update 更新到了10.0.26100.8972,而 WinSxS 里还留着旧版10.0.26100.8655(6 月 10 日,Microsoft 签名有效)。于是猜测新驱动对宏碁 BIOS 的_BIF解析有 bug。

做法:用takeown+icacls夺取文件所有权,把旧版CmBatt.sys直接覆盖进C:\Windows\System32\drivers\,重启。

结果:❌ 文件确实替换成功,但重启后电池依旧读不出。说明问题不在微软通用电池驱动。

弯路 2:EC 硬件复位

拔电源、用回形针按住机身底部 EC 复位小孔 15–20 秒、再开机。

结果:❌ 无效。进一步印证不是 EC/BIOS 固件层故障(否则 EC 复位多少会有反应)。

弯路 3:禁用 Acer 内核服务

停掉ASMSvcAcerARTAIMMX*等服务并设为禁用,想排除它们拦截 ACPI 的可能。

结果:❌ 无效果。而且这些服务其实跟电源读取不是同一回事。

弯路 4:pnputil 重装、WMI 刷新、注册表清理……

一轮组合拳打完,结论都是:所有软件/驱动/EC 层手段均无效。当时我甚至感觉"根因在 BIOS/EC 固件"的错误结论,准备去刷 BIOS。


三、真因:OEM 自带的 ACPI 扩展驱动没装好

转机出现在重新安装 PredatorSense 离线包之后——控制台直接恢复正常

这说明故障根本不在微软驱动、不在 BIOS,而在PredatorSense 离线安装包自带的那一层 ACPI 扩展驱动 + 后台服务

PredatorSense 的电源状态并不是走微软通用CmBatt.sys读的,而是走宏碁自己的 ACPI 设备:

ACPI\VEN_1025&DEV_165F

这个设备由安装包里的扩展驱动接管,并通过后台服务把数据喂给控制台 UI。组件清单如下:

层级文件作用
前置库Setup\Prerequisites.msi.NET / VC++ 基础依赖
主程序Setup\PredatorSenseConfig.msi+Setup.exe安装引导
电源根因层AcerService\driver\ext\AcerServiceExtension.infACPI 扩展驱动,绑定ACPI\VEN_1025&DEV_165F,读取电源状态
后台服务AcerService\driver\swc\AcerServiceComponent.inf软件组件 +AcerServiceSvc服务(自动启动)
Care CenterAcerCCAgent\acercc_ext.inf+acercc_sw.inf扩展/组件 +AcerCCAgentSvis服务
界面壳UWP\*.appx+Microsoft.UI.Xaml.2.8/VCLibsUWP 前端

识别故障几乎都是 ext 扩展驱动 + swc 软件组件服务没装好或没启动。比如用火绒优化/卸载时误删了相关服务,或安装过程中组件没注册成功,控制台就"看得到电池在供电,却读不到容量"。


四、修复方案

首选:直接重装离线包

跑安装包里的Setup.exe,它会按依赖顺序自动安装全部组件(前置库 → 主程序 → 扩展驱动 → 后台服务 → UWP)。装完记得重启,驱动通常要重启才生效。

驱动层补装(Setup 装过仍无效时)

手动安装那几个 INF,再确认服务已启动:

# 管理员 PowerShellpnputil/add-driver"AcerService\driver\ext\AcerServiceExtension.inf"/install pnputil/add-driver"AcerService\driver\swc\AcerServiceComponent.inf"/install pnputil/add-driver"AcerCCAgent\acercc_ext.inf"/install pnputil/add-driver"AcerCCAgent\acercc_sw.inf"/install# 重启后确认服务Get-ServiceAcerServiceSvc,AcerCCAgentSvis

DCH 驱动用系统自带的pnputil /add-driver /install就能装,不需要额外下载工具(安装包里也带了devcon.exe作备用)。

一键脚本

我把上面的逻辑封装成了一个脚本Repair-PowerDriver.ps1,自动检测并安装 4 个 INF、启动服务,最后用pnputil核验1025&DEV_165F设备是否被识别:

# 必须以管理员身份运行# 脚本须放在 PredatorSense 离线包根目录(与 AcerService / AcerCCAgent 同级)$Root=Split-Path-Parent$MyInvocation.MyCommand.Definition$Services= @(@{Name ='AcerServiceSvc';Inf ="$Root\AcerService\driver\swc\AcerServiceComponent.inf"}@{Name ='AcerCCAgentSvis';Inf ="$Root\AcerCCAgent\acercc_sw.inf"})$Extensions= @(@{Name ='Acer Service Extension';Inf ="$Root\AcerService\driver\ext\AcerServiceExtension.inf"}@{Name ='Acer Care Center Extension';Inf ="$Root\AcerCCAgent\acercc_ext.inf"})# 1. 装扩展驱动foreach($extin$Extensions){if(Test-Path$ext.Inf){pnputil/add-driver"$($ext.Inf)"/install}}# 2. 装组件驱动并启动服务foreach($svcin$Services){if(-not(Get-Service-Name$svc.Name-ErrorAction SilentlyContinue)){pnputil/add-driver"$($svc.Inf)"/install}Start-Service-Name$svc.Name-ErrorAction SilentlyContinue}# 3. 核验设备pnputil/enum-devices/connected 2>$null|Select-String'1025&DEV_165F'

完整版脚本(带管理员自检、彩色输出、详细日志)在离线包根目录的Repair-PowerDriver.ps1,直接右键"用 PowerShell 运行"即可。


五、关键经验(可复用)

  1. 电源/电池识别异常 → 优先查 OEM 自带 ACPI 扩展驱动 + 后台 Service,而不是重装 UI、也不是先怀疑微软通用驱动或 BIOS。PHN16-71 的电源数据靠AcerService扩展层,_BIF报"常规故障"很可能是这层缺失导致 WMI 读不到,未必是固件层。
  2. 换思路前先验证"重装官方离线包能否解决",能省下大量在无谓的驱动替换 / EC 复位上耗的时间。
  3. 装驱动后通常需重启才生效;所有操作必须管理员权限
  4. DCH 驱动可用系统自带pnputil /add-driver /install安装,不需要 devcon 或第三方工具。
  5. 火绒等优化软件"一键加速"容易误删厂商后台服务(我这台就被删过AASvc/AcerCCAgentSvis一类),优化前最好把 Acer / 厂商相关服务加白名单。

六、一句话总结

宏碁掠夺者擎控制台读不出电源,九成是PredatorSense 离线包里的 ACPI 扩展驱动(1025&DEV_165F)+AcerServiceSvc/AcerCCAgentSvis服务没装好。重装离线包 → 核验这两个服务在跑 → 必要时pnputil补装 INF 并重启,基本都能解决。别像我一样先去折腾 CmBatt.sys 和 EC 复位,那是绕远路。

← 返回列表