技术备忘录:华硕 A43S (Ubuntu) 插电限频故障修复
1. 故障描述
- 现象 :接入电源适配器后,CPU 频率被硬件强制锁定在 800MHz,拔掉电源使用电池时频率恢复正常(可达 2.4GHz+)。
- 根源 :硬件触发了 BD PROCHOT 信号。由于老旧适配器功率波动或主板传感器误报,系统判定为供电风险,强制 CPU 进入最低功耗模式。
2. 系统检测命令
- 查看实时频率 :
watch -n 1 "grep MHz /proc/cpuinfo" - 读取硬件锁状态:
bash
sudo modprobe msr
sudo rdmsr 0x1FC
结果分析:返回 4005d (奇数) 表示锁定;返回 4005c (偶数) 表示正常。
- 查看温度与风扇 :
sensors
3. 自动化修复方案
第一步:编写解锁脚本
创建脚本文件:sudo nano /usr/local/bin/fix_cpu_throttling.sh
脚本内容:
bash
#!/bin/bash
# 1. 加载驱动
modprobe msr
# 2. 强制抹除硬件限频位 (将 4005d 修改为 4005c)
wrmsr -a 0x1FC 262236
# 3. 设置 CPU 为性能调度模式 (可选)
for cpu in /sys/devices/system/cpu/cpu[0-7]; do
if [ -d "$cpu/cpufreq" ]; then
echo "performance" > "$cpu/cpufreq/scaling_governor"
fi
done
赋予执行权限:
bash
sudo chmod +x /usr/local/bin/fix_cpu_throttling.sh
第二步:配置 Systemd 自动服务
创建服务文件:sudo nano /etc/systemd/system/cpu-unlock.service
服务内容:
unit
[Unit]
Description=Unlock CPU Throttling for Asus A43S
After=multi-user.target suspend.target hibernate.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/fix_cpu_throttling.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target suspend.target
第三步:激活并启动服务
依次执行以下命令,使设置永久生效并支持开机/唤醒自启:
bash
# 重新加载系统配置
sudo systemctl daemon-reload
# 启用开机自启
sudo systemctl enable cpu-unlock.service
# 立即启动服务
sudo systemctl start cpu-unlock.service
4. 运维建议
- 手动恢复 :如果在使用中途插拔电源导致频率再次下降,可执行
sudo systemctl restart cpu-unlock.service快速恢复。 - 硬件对策 :此故障 90% 源于电源适配器老化。如需根治,建议更换一个原装的华硕 90W (19V 4.74A) 适配器。
- 安全提示:解锁后 CPU 失去了主板的"假过热"保护,虽然目前 51°C 非常安全,但若运行大型计算导致风扇狂转且掌托烫手,请留意实时温度。
记录日期 :2026年3月14日
适用环境:Ubuntu 系统 / 华硕 A43S 及同代 Sandy Bridge 架构笔记本