|
|
基本测试主要包括配置检查和BT测试两大部分
* V1 H; K. ]) x5 g配置检查:
2 _$ c& ^7 M2 p: n+ k2 ? 为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。% N) M' {+ e$ n" A& w% U
adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
* J4 W6 x! r* l) O0 t {BT 测试:0 ?: [8 C2 F# j
本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。1 c W; P, B$ {0 X% X7 F2 I0 i, N8 M
基本功能测试如下:0 x2 }1 E6 U4 ]7 }& \
1) 打开/关闭 BT 无失败现象。
9 u2 T( I; N! f9 a' ]! y 2) 能够搜索到近处 BT 设备。
8 N7 P# }# y) J+ D! R+ g# G) o 3) 和搜索到的蓝牙耳机或其他设备配对。; ~- U1 n0 n! {# O
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。1 A8 q9 P: R' y4 K/ i3 ~! c) z
5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。
" m3 w4 D1 E' n5 K5 a. O5 B 6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
5 G9 I i6 [! O+ Z 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
3 U; N7 i# ]( ]: @: w3 T5 v2 a# { L$ w1 _
& e8 u* o, M1 T% p! Z 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.
; n8 }6 b2 K$ e/ P蓝牙 Log 相关的配置文件:
# z3 b/ ?1 m* g2 z 蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
( @: @0 F- Q$ x; s # Enable trace level reconfiguration function5 E, R) Q- x( o* V/ d
# Must be present before any TRC_ trace level settings8 g; O: J; G/ @8 g* b+ r7 y" ?
TraceConf=true
4 T( k- N) N2 _& Z# W
/ }, D% d, O7 b0 O0 v3 N # Trace level configuration
: i- Y$ Y9 G! d* d # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
' V/ @: C0 e8 U6 J # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
( S8 n* R: w7 a2 V7 @6 E # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
1 S- N) f. m# H+ d4 p) |3 s u: e # BT_TRACE_LEVEL_API 3 ( API traces )
8 S% j' k3 Y7 |* l # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
. d; a8 ^9 s/ d: }% e # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )) b% K1 G3 p. [* c# e3 j
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
! C P& ^% b% I2 P6 \; t9 n0 M! hTRC_BTAPP only.
! ]2 k" y" b- G+ S5 V/ _- S TRC_BTM=25 d6 k- R( `; L$ C6 N1 x
TRC_HCI=2. e% ?2 m3 ?% |
TRC_L2CAP=2! k7 m* S% C. w5 N
TRC_RFCOMM=2+ j( T4 X0 W4 F* _3 h2 |; b9 T
TRC_OBEX=2; _* ^6 `/ `# P5 S# _3 |
TRC_AVCT=2$ ?: N6 V- G" y5 o; c4 S8 k
TRC_AVDT=2: u7 A" e% j' |+ b+ Q
TRC_AVRC=2
9 H0 T; s+ l3 }' x TRC_AVDT_SCB=2
- d. h+ ]1 W, Q3 s TRC_AVDT_CCB=2
) N2 f- I! e5 y) |; n TRC_A2D=2
$ u$ g0 U5 k D9 G; h TRC_SDP=2
2 z$ }- V+ z* i5 C1 F TRC_GATT=2
( j# F$ I# K! O! ~ TRC_SMP=28 b7 Z9 ?) {1 [: s" D5 \
TRC_BTAPP=2
- l5 {. y4 @4 Z+ q TRC_BTIF=2
* Y9 A# J) o4 o; P: V- t% V TRC_GAP=22 N. ~ E- N- f4 S3 M( c- ?8 }
TRC_BNEP=2 d3 ]3 C$ `1 R" P
TRC_PAN=20 c. @. t, i/ G$ }
TRC_HID_HOST=2
: O; a+ Q" t6 a% }8 c+ z TRC_HID_DEV=2$ p" F" s9 q$ }/ Q3 Z; ]0 s
8 A p$ A- J+ h' E
) Q5 z1 R; A" z0 q8 y& D
Logcat –v time
+ z* F: s& H2 @% P1 N6 p1 U 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
4 t0 U. u0 k9 }+ @& h- { 测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
* ]; ?8 d& a: `4 e8 Z" O0 g) g
BtSnoop
) U; [3 Y! F. Y4 _. l 打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.' l' {! a7 n ~: w
在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.8 i: r3 W4 D0 {& V, y
, S6 M6 m# Y% `0 H/ q0 R' ]
获取 Bluetooth 进程相关信息
& L) E/ A9 M* b0 Q, l- r 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息
/ \, X) c- @* ]9 R/ ^' E' X$ e* G9 a8 j* e. u7 D( `
注意事项
) V$ y0 D4 f$ ~ 报告蓝牙问题 至少 需要 提供 下列信息:
# F6 V6 r( V0 d" F; e7 h logcat –v time% q) k7 _" z+ E% r
btsnoop
4 P2 Z) J5 D% W. k. M( Q Bluetooth 进程信息
8 p' d; F/ n* _# w/ m 出现问题的时间点( 以设备时间为准)7 U( O6 Z8 e! \+ \
重现步骤." J; n" J Z/ M' A. U6 C" n
& Z$ S8 {( h# m! ]
7 ]; b% L; {4 D9 M6 J常见问题分析
# j' P8 w% A$ }$ Y. t$ pBT 打开失败(UART)4 Z. ?' I! E, Z* `" I6 `. {, s
打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。% ?( Y( v) O! I: l
如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。" j2 p7 B( s v5 ~: C6 h! u
如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。& O- ]5 a7 A( }1 D$ O* i
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
3 ?& t; o) H/ K% { 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
( [$ y+ U i, m" X0 U- y7 Y4 ?+ U" B8 R7 ]3 m% ]9 x
BT 打开失败(USB)- |& O3 |+ u8 x" T
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
* z" }( Z' I' f( j 查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。; W; P6 m1 Z% [0 e
o+ X: e% o- e; `5 W8 ^9 h以上观点纳拓科技提供,请勿随意复制、编辑转用
+ a2 m0 n8 S$ x: q, X
1 q1 t+ X; S6 D. o; F3 v4 X
: T, k+ u! }" j0 K1 H8 }% N9 i, W7 H' w5 D. g: H
|
|