Android系统开发中遇到的蓝牙问题

一、关于蓝牙的加载流程

1,插入USB蓝牙后,bluedroid会读取设备型号,然后添加设备,同时会去打开蓝牙驱动
2,蓝牙驱动的打开是调用的安卓标准的硬件设备流程,BluetoothManagerService会调用jni,jni会通过调用hardware下面的hw_get_module来获取蓝牙库文件,(system/lib/hw/)。
3,hw_get_module在获取到后,会调用内核rtk_btusb去打开设备,这里面会去获取设备的firmware,然后就能正常打开设备。

二:碰到的几个问题

1,没有打开dev/rtk_btusb的权限
这个需要按照安卓的机制,在te文件里面添加设备的权限,而蓝牙有个bluetooth.te是再external下面,而不是device
2,有权限后提示firmware打开失败
原因不明,再内核重新勾选,同时将device.te里面添加的rtk_bt_device去掉后就正常了,怀疑还是te文件的问题
3,8821蓝牙打不开
需要再bluetooth里面将这个设备的pid,vid添加进去,否则会不支持。

三、修改记录

1,修改device下的file_contexts文件,添加/dev/rtk_btusb    u:object_r:mstar_device:s0
2,修改external下的bluetooth.te文件,添加allow bluetooth mstar_device:chr_file rw_file_perms;
3,将给过来rtkbt里面的用到的firmware添加到hardware的realtek/bt/system/etc/firmware下
4,修改device下的bluetooth.c,rtk_tables数组中添加新蓝牙的usb pid/vid。
5,内核bluetooth驱动中添加rtk_btusb.c文件
6,内核里将bluetooth驱动设为编译到内核里面,并在里面打开HCI相关的驱动
7、firmware需要在hardware/realtek/bt下面的rtkbt.mk文件里面拷贝

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love~妍芯~燕~Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值