背景
指纹已经bring up完成,突然有一天工厂跟我说指纹测试失败,我拿二供fpc刷机一看指纹选项没了,再测一下主供汇顶指纹,选项还在一切正常,瞬间人傻了!
分析
杀2.1服务,抓logcat分析。log显示指纹节点无权限,导致open hal失败。明明当时当时rc里添加了,而且主供和二供添加在一起,只有二供有问题。
查资料
发现rc脚本是由分阶段赋权的,太早或太晚都会导致指纹失效
指纹需要在on boot阶段赋值
on boot
#finggerprint
chown system system /dev/goodix_fp
chmod 0644 /dev/goodix_fp
chown system system /sys/bus/platform/devices/fingerprint/clk_enable
chmod 0660 /sys/bus/platform/devices/fingerprint/clk_enable
chown system /sys/bus/platform/devices/fingerprint/irq
chmod 0660 /sys/bus/platform/devices/fingerprint/irq
chown system system /sys/bus/platform/devices/fingerprint/hw_reset
chmod 0660 /sys/bus/platform/devices/fingerprint/hw_reset
chown system system /sys/bus/platform/devices/fingerprint/wakeup_enable
chmod 0660 /sys/bus/platform/devices/fingerprint/wakeup_enable
chown system system /sys/bus/platform/devices/fingerprint/fingerdown_wait
chmod 0660 /sys/bus/platform/devices/fingerprint/fingerdown_wait
原因:
on post-fs-data阶段赋权太早,随着其他模块的加入,影响了指纹的复权事件,导致指纹失效,后续添加注意要分阶段。