1.问题背景
之前做过一个项目,RK3562+RTL8821CS (经封装为模组,下通称RTL8821CS ) 刷机之后蓝牙只能打开一次,即使断电重启、恢复出厂设置也不行。
2.问题分析
2.1 排查BT-EN 对应GPIO状态
按照以往经验蓝牙无法重复打开多半是由于BT_EN脚无法正常复位导致。于是开始尝试手动复位,但未正常:
rk3562_t:/ # echo 0 > /sys/class/rfkill/rfkill0/state
rk3562_t:/ # echo 0 > /proc/bluetooth/sleep/btwrite
rk3562_t:/ # echo 1 > sys/class/rfkill/rfkill0/state
rk3562_t:/ # echo 1 > /proc/bluetooth/sleep/btwrite
同时观察首次刷机开机后,第一次打开蓝牙,关闭蓝牙,BT_EN GPIO的状态。看起来BT-EN是正常复位的。
2.2 log分析
继续分析logcat。 正常、异常log中存在如下明显差异。
其中异常log中伴随着明显的crash
06-11 06:40:50.839 1214 1214 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 06:40:50.839 1214 1214 F DEBUG : Build fingerprint: 'rockchip/rk3562_t/rk3562_t:13/TQ3C.230805.001.B2/eng.q.20240611.143815:userdebug/release-keys'
06-11 06:40:50.839 1214 1214 F DEBUG : Revision: '0'
06-11 06:40:50.839 1214 1214 F DEBUG : ABI: 'arm64'
06-11 06:40:50.839 1214 1214 F DEBUG : Timestamp: 2024-06-11 06:40:50.099224254+0000
06-11 06:40:50.839 1214 1214 F DEBUG : Process uptime: 0s
06-11 06:40:50.839 1214 1214 F DEBUG : Cmdline: com.android.bluetooth
06-11 06:40:50.839 1214 1214 F DEBUG : pid: 835, tid: 1006, name: bt_stack_manage >>> com.android.bluetooth <<<
06-11 06:40:50.839 1214 1214 F DEBUG : uid: 1002
06-11 06:40:50.839