0. 背景
之前有个项目要升级android 11,但是设备一直反复重启,然后他们觉得是音频导致的,还让我一个小兄弟周末也来加班。。原因是看到了音频的报错log一直在刷新:
#更新2021.08.02
这个我来更新下,随着阅历的增加,我发现这个报错是会导致进不了android的,就这个android.hardware.soundtrigger报错,我把声卡注册上才OK,由于某些音频服务报错,会一直尝试进入android,但是进入不了。
#更新2021.08.02
android.hardware.soundtrigger@2.0::ISoundTriggerHw/default
[ 1240.972777] healthd: battery l=78 v=4079 t=82.8 h=3
st=4 c=0 fc=3581000 cc=0 chg=u
[ 1241.570246] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1242.565190] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1243.571629] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1244.586074] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1249.091284] healthd: battery l=78 v=4079 t=82.8 h=3 st=4 c=0
fc=3581000 cc=0 chg=u
[ 1250.056593] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1251.069547] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTriggerHw/default'
for ctl.interface_start from pid: 514 (/system/bin/hwservicemanager)
[ 1252.082157] init: Control message: Could not find
'android.hardware.soundtrigger@2.0::ISoundTri
因为最开始项目调试阶段,没有关机充电模式配置,然后上层检测到82.8度,然后高温导致关机,然后关机充电模式没有进去,又开机,然后检测到温度超了,又关机,表现出来就反复重启了。
1. 解决方案
我瞅了眼发现电池温度异常,关键 log如下:
healthd: battery l=78 v=4079 t=82.8 h=3 st=4 c=0 fc=3581000 cc=0 chg=u
把温度强制写死为25摄氏度即可正常开机,修改方法如下:
(这个只是前期的临时方案,后面还要搞电源管理的兄弟的看看啥原因,我也是业余的)
文件路径:kernel/msm-4.19/drivers/power/supply/qcom/qpnp-qg.c
@@ -2178,6 +2168,9 @@
break;
case POWER_SUPPLY_PROP_TEMP:
rc = qg_get_battery_temp(chip, &pval->intval);
+ //the temperature of battery was too high, causing the machine to restart
+ pval->intval = 250;
break;
case POWER_SUPPLY_PROP_RESISTANCE_ID:
pval->intval = chip->batt_id_ohm;
文件路径:kernel/msm-4.19/drivers/power/supply/qcom/qpnp-smb5.c
@@ -1416,6 +1416,9 @@
else
rc = smblib_get_prop_from_bms(chg,
POWER_SUPPLY_PROP_TEMP, val);
+ //the temperature of battery and BMS was too high, causing the machine to restart.
+ val->intval = 250;
break;
case POWER_SUPPLY_PROP_TECHNOLOGY:
val->intval = POWER_SUPPLY_TECHNOLOGY_LION;