问题状态:开机之后UI主界面之上电池显示感叹号,没有电量信息,但是log中能打印出电池信息,但是信息有问题(问题1)。
log信息:
[ 41.914227] [0: kworker/u16:0: 5] bat_monitor_work: start monitoring
[ 41.960194] [1: kworker/u16:0: 5] s2mu106-fuelgauge 7-003b: s2mu106_get_vbat: vbat (3786)
[ 42.015628] [6: kworker/u16:0: 5] s2mu106-fuelgauge 7-003b: s2mu106_get_avgvbat: avgvbat (3741)
[ 42.017607] [6: kworker/u16:0: 5] s2mu106-fuelgauge 7-003b: s2mu106_get_current: current (-718)mA
[ 42.021245] [7: kworker/u16:0: 5] s2mu106-fuelgauge 7-003b: s2mu106_get_avgcurrent: avg current (-1160)mA
[ 42.031346] [4: kworker/u16:0: 5] s2mu106_get_temperature: temperature (266)
[ 42.035861] [4: kworker/u16:0: 5] s2mu00x-battery s2mu00x-battery: get_battery_capacity: SOC(50), rawsoc(50), max_rawsoc(100).
[ 42.051789] [4: kworker/u16:0: 5] s2mu106_get_soh: original batcap = 3500, new_batcap = 3500, soh = 100
[ 42.065586] [4: kworker/u16:0: 5] s2mu106-fuelgauge 7-003b: s2mu106_get_avgcurrent: avg current (-1160)mA
[ 42.102066] [0: kworker/u16:0: 5] get_battery_info: battery status = 2, charger status = 3
[ 42.112238] [7: kworker/u16:0: 5] s2mu106_powermeter_get_vchg_voltage: S2MU106_POWERMETER 0x57: 0x0 0x12:0x0 0x13:0x50
[ 42.121799] [7: kworker/u16:0: 5] s2mu106_powermeter_get_vchg_voltage: S2MU106_POWERMETER chg_voltage: 25 mV
[ 42.133735] [7: kworker/u16:0: 5] s2mu106_powermeter_get_vchg_current: S2MU106_POWERMETER chg_current: 0 mA
[ 42.142367] [7: kworker/u16:0: 5] s2mu00x-battery s2mu00x-battery: get_battery_info:Vnow(3786mV),Inow(-718mA),Imax(500mA),Ich)
[ 42.160964] [7: kworker/u16:0: 5] s2mu00x-battery s2mu00x-battery: get_battery_info: small Imax(500mA), Ichg(1500mA)
[ 42.170996] [7: kworker/u16:0: 5] [DEBUG] s2mu106_get_charging_health: S2MU106_CHG_STATUS0 0x0
[ 42.179097] [7: kworker/u16:0: 5] check_health: T = 250, bat_health(Good), T_health(Good), Charging(Discharging)
[ 42.189679] [7: kworker/u16:0: 5] check_charging_full Start
[ 42.195778] [7: kworker/u16:0: 5] bat_monitor_work: Status(Discharging), Health(Good), Cable(1), Recharging(0))
[ 42.196702] [1: healthd: 3309] healthd: battery none chg=
[ 42.196820] [1:health@2.0-serv: 3322] healthd: battery none chg=
问题分析:
根据log显示healthd状态不对,搜索healthd关键词向前查找得到log如下:
[ 19.535875] [4: healthd: 3305] healthd: No battery devices found
[ 19.536006] [0: logd.auditd: 3220] type=1400 audit(1483273441.823:5): avc: denied { read } for pid=3305 comm="healthd" name="type" dev="sysfs" ino=36956 scontext=u:r:healthd:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
通过百度搜索得知是selinux权限问题。根据百度的内容进行修改:
https://blog.csdn.net/tung214/article/details/72734086
本例修改方案:
在device/samsung/erd9610/sepolicy中的genfs_contexts加入:
genfscon sysfs /devices/platform/13860000.i2c/i2c-6/6-003d/s2mu00x-battery/power_supply/ u:object_r:sysfs_batteryinfo:s0
#genfscon sysfs /devices/platform/13860000.i2c/i2c-6/6-003d/s2mu106-charger/power_supply/ u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/13870000.i2c/i2c-7/7-003b/power_supply/ u:object_r:sysfs_batteryinfo:s0
其中第一句为开启设置中battery选项;第三句加入后能正常读取充电模式。