- 博客(17)
- 收藏
- 关注
原创 一个连接蓝牙耳机听歌过程中的耗电问题分析
最近在项目中遇到了一个连接蓝牙耳机听歌,手机功耗太大的问题,手机的电流大于参考标椎40ma左右。log分析, 出问题的时间点,avrcp一直在更新歌曲的进度,但是是负值,这个值表示的是下一个播放位置减去当前的播放位置,所以这个值不可能是负的。06-17 21:12:30.839735 21887 21997 D Avrcp_ext: sendPlayPosNotificationRsp: ...
2019-07-05 00:34:16
4240
原创 AVDTP之间的信令交互
当手机和蓝牙耳机连接成功之后,会发送一些基本的命令,本文将分析这些基本的命令1 AVDTP_DISCOVER这个命令是SRC发给SNK的,用于发现远端的流节点。2 AVDTP_GET_CAPABILITIES获取远端设备的支持的性能,如那种音频编码,采样频率,bitpool等。3 AVDTP_SET_CONFIGURATION用来设置播放音乐的一些参数,如采样频率...
2019-04-09 15:50:34
1007
原创 AVRCP连接的信令交互
AVRCP的连接是建立在L2CAP通道上的,AVRCP分为CT和TG两个角色。当AVRCP连接成功之后,CT和TG之间会进行信令的交互。基本的命令如下;1GetCapabilities这个命令是CT发给TG的,用于获得TG支持哪些event,一般情况下,TG会回复支持下列EVENTEVENT_PLAYBACK_STATUS_CHANGED, EVENT_TRACK_CHANGED,...
2019-04-09 15:10:06
2031
原创 连接蓝牙耳机,概率性出现耳机无声问题的分析
手机和蓝牙耳机配对之后,概率性出现耳机无声问题。分析这个问题,需要抓取AP hci, OTA log从AP log看,耳机已经连接上,并且声音也从未播放变为播放A2DP已经连接上 652 Master 3 0x0001 (Signaling) AVDTP 11 Connection request 0x0049 4 ...
2019-04-09 11:21:00
1893
原创 搜索不到蓝牙鼠标问题的分析
最近手机的开发中遇到一个问题,具体是很难搜索到一个蓝牙鼠标。 查看该问题的AP log,发现有如下提示: 01-15 10:59:42.837 15710 15753 W bt_btm : btm_process_inq_results: BDA: 00:1f:20:ac:1b:4001-15 10:59:42.838 15710 15753 W bt_btm : btm_p...
2019-01-26 22:03:17
5418
原创 蓝牙回连问题的分析
最近遇到一个问题,手机和蓝牙耳机配对之后。将手机和蓝牙耳机远离,直到手机和蓝牙耳机断开连接。然后将蓝牙耳机靠近手机,蓝牙耳机不会回连到手机,蓝牙核心协议中对于回连的定义如下:从协议的描述来看,remote设备发送连接命令过来后,host才会对controller发HCI_Accept_Connec-tion_Request命令。而从测试同事那边抓取的HCI log来看,没有搜索到...
2019-01-26 21:13:47
7991
原创 ActiveDeviceManager文件的分析-一个蓝牙耳机的问题
android9.0系统中增加了ActiveDeviceManager文件,该文件负责跟踪连接的A2DP / HFP / AVRCP / HearingAid设备,并选择哪个设备处于活动状态(对于每个配置文件)。在该文件中注册了以下这些广播:filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);filter.addAction(Blu...
2019-01-16 16:18:11
2363
2
原创 两个设备同时向测试机发送文件,在未超时的情况下,测试机没有收到第二个接受请求
最近遇到蓝牙接收文件的一个问题,先有一个手机给测试机发送文件,当快接收完的时候,第二个手机给测试机发送文件。但是测试机没有收到第二个接收请求抓取了这个过程中的log。接受第一个文件:07-04 15:24:34.528 6957 7052 D ObexServerSockets1: Accepted socket connection from: ServerSocket: T...
2018-11-29 10:37:22
387
原创 蓝牙A2DP流程
1 蓝牙和AUDIO之间的接口 蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket. A2DP_CTRL_PATH /data/misc/bluedroid/.a2dp_ctrl A2DP_DATA_PATH /data/misc/bluedroid/.a2dp_data 这两个socket的作用...
2018-11-08 15:45:10
3708
原创 蓝牙Log中的关键字
1 蓝牙搜索bt_btif : btif_dm_start_discovery : pairing_cb.state: 0x0bt_btif : bta_sys_event: Event 0x200bt_btif : bta_dm_search_sm_execute state:0, event:0x200bt_btif : bta_dm_search_start avoid_s...
2018-11-05 15:22:41
3238
原创 蓝牙HFP协议AT命令流程
蓝牙HFP协议主要是指HF和AG之间的信令交互,我们知道蓝牙耳机和手机配对之后,耳机会发三个最基本的AT命令,分别是AT+BRSF, AT+CIND=?, AT+CIND?协议栈接收AT命令的流程1 BTA层从rfcomn接收蓝牙耳机发送过来的AT命令,在bta_ag_rfc_data里面会运行一个无线循环,调用PORT_ReadData函数不断的读取AT命令,读取到AT指令后,调用b...
2018-10-31 20:23:14
5029
原创 一个蓝牙native crash问题的分析
android O平台的项目,最近遇到一个native crash的问题,当连接蓝牙耳机后,点击拨号盘,蓝牙报错。07-31 16:57:16.503 5678 5678 F DEBUG : Revision: '0'07-31 16:57:16.503 5678 5678 F DEBUG : ABI: 'arm64'07-31 16:57:16.503 5678 5...
2018-10-30 16:54:58
1101
原创 蓝牙HFP协议流程
蓝牙HFP协议需要的分析需要蓝牙的HCI log, 本文介绍蓝牙中关于HFP相关的协议1 当手机和支持HFP协议的蓝牙耳机配对成功之后,耳机会发送AT+BRSF命令给手机,提示耳机支持哪些功能,如下所示。在1423帧耳机发送AT+BRSF命令 2 手机会发送+BRSF命令给蓝牙耳机 3 然后蓝牙耳机会发送AT+CIND=?命令给手机,获取手机支持哪些功能 4...
2018-10-29 19:59:33
2972
原创 蓝牙打开-bluedroid中的流程(基于android O代码)
蓝牙打开从app层到协议栈的跨度太大,仅仅看代码很容易迷失方向,先从log看起。01-18 18:25:31.570 D/BluetoothAdapterService(21885): onCreate() // adapterservice启动01-18 18:25:31.570 I/BluetoothVendorJni(21885): classInitNative: succeeds...
2018-10-29 15:48:38
2425
原创 蓝牙打开流程-从APP层的分析
1 蓝牙服务的启动 蓝牙服务作为系统服务,启动是从systemserver里面启动的,systemserver里面的main方法被调用,该方法运行run方法,代码如下所示:public static void main(String[] args) { new SystemServer().run(); }if (isEmulator) { ...
2018-10-25 15:30:12
1511
原创 蓝牙认证HFP的方法
先介绍HFP里面通用的一下方法。蓝牙认证中的HFP角色需要测试AG的选项,需要在配置文件中加上拨打的手机号码如下截图:以一个打电话的例子说明测试过程1 PTS会弹出上述提示,代表用户进入手机的设置-蓝牙。然后和PTS配对。在手机蓝牙界面搜索到PTS-HFP-XXXXX的设备进行配对2 然后打一个电话,主播电话号码一定要是先前设置的号码,如上述的15929***9...
2018-10-25 10:13:54
4575
原创 蓝牙耳机通话问题调试
经常会遇到蓝牙通话相关的问题,比如我们用蓝牙耳机拨打电话的时候,可能会遇到蓝牙耳机侧或远程电话侧的一个或两个方向没有声音的问题,或者音频质量不够好。为了清除发生的事情,可以按照下面的方法来判断这个问题是否是由BT部分引起的。数据流上行BT headset -> WCNSS(BT) -> AUDIO(AFE) -> AUDIO->MODEM->Remot...
2018-10-25 10:06:04
3547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人