|
基本测试主要包括配置检查和BT测试两大部分
% B K& d- k0 V1 m9 D" P配置检查:, { j! }* E# J0 e
为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
" M9 q* e9 k% o3 h/ @3 c5 z' S adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
7 k3 k6 E7 [ rBT 测试:
$ P7 Q/ I, A9 X2 D& _. b9 b 本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
2 Q7 j2 B. b) H( A: v基本功能测试如下:* g! T$ C, G4 V- P
1) 打开/关闭 BT 无失败现象。
; c& m9 y9 y( V5 f7 B5 A) C 2) 能够搜索到近处 BT 设备。
; n6 d' S$ }. n. C$ V: b& ~ 3) 和搜索到的蓝牙耳机或其他设备配对。9 ?: u+ k: I; f& h& J' h
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。3 S+ l& w3 q5 E
5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。7 G! Z, g% }$ M1 A1 f# @% f
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
* k; S6 ]2 B( H5 F( O1 |( @ 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
2 e, t1 _# x! I, [! \
u( t' `" U2 c# M4 a Z" y, U/ z8 K- _
当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.1 t# i3 |- u4 f: P9 d
蓝牙 Log 相关的配置文件:
9 G/ B6 X3 ~% Z. ^+ k& P 蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:6 [, ~ @& ~/ ?% W9 S
# Enable trace level reconfiguration function
3 p/ q* p6 s1 w" e8 \2 P# z # Must be present before any TRC_ trace level settings
/ \, P6 s) e, _ TraceConf=true
* k7 r% n* y% d
. m1 e- u d# |" T # Trace level configuration
0 o6 h7 R7 P! P. H# d # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
( K- o, G( G1 M3 ^ # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
1 B: |$ R5 p) \1 G! v # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
' G+ T* b- `* _, I8 N, {2 J # BT_TRACE_LEVEL_API 3 ( API traces )
- e/ y* `8 q/ r& l/ O7 G3 E # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
, D; s- i! f# z # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )
. v% t" H N F( l # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for# A- E$ j" y) u* ?% L) v. R7 C
TRC_BTAPP only.1 Q" P% m0 @; M# |* k S- G6 u! T. l
TRC_BTM=2
! | P. C9 X- y TRC_HCI=2 J* u# W, S! H* ?7 H, I/ ^
TRC_L2CAP=2
! [. T. x; Z: F9 {4 M9 f TRC_RFCOMM=2
" o$ I: q9 e* `' H/ Q+ c TRC_OBEX=2" m! t( L6 Q7 P; ?
TRC_AVCT=2" X& K! p X, n \/ _
TRC_AVDT=2- E9 ]$ d% {7 j- ~) N. Z& w8 s
TRC_AVRC=2
$ ~) ^% {7 N( H0 O TRC_AVDT_SCB=2# q; N' {( @* U0 i" X$ S
TRC_AVDT_CCB=2
- h# x# i4 i% q$ \2 s+ R TRC_A2D=22 K b4 k; J1 }! I4 h- i6 l2 d
TRC_SDP=25 i. E- J4 n5 r' I' c$ u
TRC_GATT=2" D4 E' } S7 n" c& Z, o$ ]% V
TRC_SMP=25 L2 L; y3 M) ^. @% o e8 L
TRC_BTAPP=2. [% D+ C# s e) u
TRC_BTIF=2
$ v) U" E: ]' I2 d/ e TRC_GAP=2
$ _" f3 O o/ H4 [) ^, ^( H TRC_BNEP=25 `/ \8 _' q4 [: E+ u; k( D- p( f) z( D$ u
TRC_PAN=2/ j1 w N2 ]9 \4 d# p
TRC_HID_HOST=2
8 [. M8 {: C7 L7 ?# H TRC_HID_DEV=2
' n7 U; j+ [; C8 M. j J
( n' \7 L: X1 L. [% g, c ~5 j) a7 L( L2 L
Logcat –v time! _% {9 V( t5 B, t. H
在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.$ `' H) [2 S1 e9 q7 L$ p7 q c5 F
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
W# v* g) E8 @4 O$ g* W) x! _3 T6 g% G4 b' T0 G
BtSnoop( h D' H) o# x! P! B% e" {1 [
打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.+ ~2 ?. p5 g- E, F, }# ~
在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.2 Q3 g, h9 }* B
0 v, J0 }! [: m: c4 J; |. V, C3 Y获取 Bluetooth 进程相关信息+ J3 |$ m* m9 O& o# x
输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息. `4 ~ Z7 c4 V$ ~5 M
# X, B4 N6 i& R( o W- `8 v. a
注意事项
5 y. N; T+ I+ l$ H 报告蓝牙问题 至少 需要 提供 下列信息:
) k* D4 z) C" I- ] logcat –v time8 k8 e; a, ]8 J0 B7 \
btsnoop
1 f- o( e$ F2 z" ~2 v H Bluetooth 进程信息) D" F' N, R4 m3 H* D/ X: e
出现问题的时间点( 以设备时间为准)" J& t& Y1 W6 ]' B, s, [+ ?! U x& _
重现步骤.
/ N: T* s7 A* B; P$ }# C( j7 q
1 Y7 i) Q5 Z. f& [6 D- x* N- y1 T3 z" ]+ U+ q4 D! m
常见问题分析
# F0 x, h# k3 W- w! L9 H( E( DBT 打开失败(UART)
4 Q4 R- F8 g& M' y 打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。/ a8 J+ J2 j" u$ i( {0 X; E# T/ B
如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
% y/ `0 [/ J$ d; }$ H* Z; K/ ] 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。
7 x& h' Y7 G. L/ O! o( M 如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。3 j G; k, J; U4 `& l
如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。, D* i( V9 b! o" _
6 K$ i7 u- ]0 ]* a
BT 打开失败(USB)5 M$ K& d& ^. W6 `. C/ M+ I
用 logcat 抓取打开蓝牙打开的 log,搜索“dev/bus/usb”字样看是否有这样的 log:Added device UsbDevice[mName=/dev/bus/usb/002/002,mVendorId=3034,mProductId=46880,mClass=239,mSubclass=2. 如果有,检查下 mVendorId和mProductId是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
" S% g% Q7 o) b 查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。' v! `, E, f u
% p( Z' q5 k% E. N2 m以上观点纳拓科技提供,请勿随意复制、编辑转用
% q% R. u+ Z3 K+ W; Y% W0 D1 ^/ Q8 h' M( i# D2 i/ I/ U
- o9 r1 S+ h' @
) v" {" [' D$ b6 m: U
|
|