|
基本测试主要包括配置检查和BT测试两大部分
; N7 r$ J, V) {/ H" G配置检查:
( j% G+ Q9 ?8 N0 x' l9 ` 为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
o* N* Z7 f/ T6 _. v- _ adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.( P& C2 ~; F, F, u
BT 测试:* J/ C% b8 {1 P
本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
1 m. F4 ]& q8 U. F1 i" `* y基本功能测试如下:# }3 M. b" m2 e/ T- c
1) 打开/关闭 BT 无失败现象。
# {) h4 ~2 V& p5 _7 i* o& _+ `8 Z 2) 能够搜索到近处 BT 设备。. N3 g% C* ]6 _7 A
3) 和搜索到的蓝牙耳机或其他设备配对。
1 i T$ @+ x# P. Z1 X) ` 4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
! D/ j& J" V( |3 U5 M- v1 w7 e 5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。! F3 z4 h9 d# f: R9 r+ ^
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
' p; K& F9 ], X. X0 ~8 G6 p' r' F 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。- }$ {9 o) F, a) x: y: C( K+ V. ~
$ j; ]2 h( C& q x6 Y U# t7 F
1 x1 U s8 i9 b$ E
当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.9 C( X) k. M% g5 d0 Z8 o6 C
蓝牙 Log 相关的配置文件:* n" d3 d/ B/ {- L
蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
# I9 L4 ]+ V. q2 S; Q # Enable trace level reconfiguration function: Y- d4 W8 S R8 y! r0 W
# Must be present before any TRC_ trace level settings
2 T6 r/ p# q. y7 p9 r3 x, i TraceConf=true' h5 {! W" J1 _& b% D% K
1 O# b: i, c1 y+ c9 ~" g% ?
# Trace level configuration" A) ^+ N2 e1 R
# BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )$ O0 Q& \. l$ X
# BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
/ W8 [$ Z, b/ Z+ `5 _ # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
; K( c5 k! x3 u6 e9 ? # BT_TRACE_LEVEL_API 3 ( API traces )
, g8 O) B; C# D # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
, o8 q2 k0 k: X! G; E* z # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )5 I$ n; _: j# }4 S; ^
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
) F3 R9 L) t/ Y: o1 GTRC_BTAPP only.4 Z9 a9 }: r M: b, J0 K4 ]
TRC_BTM=2. Q# I; Y, j O4 c, r
TRC_HCI=2
9 A p5 k' y7 o: D7 C! h TRC_L2CAP=2
3 G) V, M( v3 w; w TRC_RFCOMM=26 s! d1 d5 v) z0 s% J% n: Q- @
TRC_OBEX=2: S: y2 m& m/ m4 z* R9 |: {) W
TRC_AVCT=2
3 J4 ~1 h" B- ~. \ TRC_AVDT=2; K a& D" _8 {) [* ]6 X1 I
TRC_AVRC=26 k9 A/ F( O8 ^( I; X1 b
TRC_AVDT_SCB=2
. z7 C7 O& s% J TRC_AVDT_CCB=2
3 O; X7 n, a- @. `% l8 C. } TRC_A2D=2
: ~; V5 m; D( D. |: n. R* R$ w% M/ F TRC_SDP=2
& u% ~9 l! q& T& t* j7 [: Q TRC_GATT=2
- M! c+ r# X! F TRC_SMP=2' h! [3 h+ M' ~, O; v1 x+ O5 t2 L
TRC_BTAPP=2( x- q# |5 c1 Q Q
TRC_BTIF=24 Z& n( f2 ~. o# r. y8 d: |& M
TRC_GAP=2# [* B4 b) V9 A" u
TRC_BNEP=2
" j9 ^/ z* @$ s4 ~1 t6 K# W' W/ { TRC_PAN=2
, ?" ]7 t9 L j/ ]0 ~# a TRC_HID_HOST=2' H. S+ f; p5 S% L
TRC_HID_DEV=2' ~+ x# j9 `* H1 ]' t* F
- Z3 h8 R% ]* {, j2 E# D' g- y! \1 e1 }0 Q+ v
Logcat –v time
: {* Z* E1 N. ~* ]5 \2 Q! P# L 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦. L3 w/ B6 [" g# x" [% w
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
2 ^ F1 R; m' _2 V4 u& W" a2 S& i1 a, h$ }
BtSnoop8 O9 m; R2 N$ f; \! K
打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效." R3 z4 J$ w( G/ ], r4 G7 \
在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.1 _6 J- H9 e; t( j
! O& j, M+ r3 z$ W
获取 Bluetooth 进程相关信息, H, Y, f W# p4 b! G
输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息6 ^4 x9 t. ?( V; @4 k) y$ ~$ ?+ G
* ]; q4 O4 x' Z' A* ~" D$ j
注意事项
# R0 u5 v0 |) b1 n- L a# H 报告蓝牙问题 至少 需要 提供 下列信息:, p% E, Q. l% r' o
logcat –v time
! {- }. E' n5 z% f. }: k btsnoop" b9 A% N0 D, v z$ q" M/ H
Bluetooth 进程信息
# ~" M# G4 j" N: e) d9 n, f0 _$ ]. p 出现问题的时间点( 以设备时间为准)
. }5 C2 b/ [, ^8 B$ j 重现步骤.9 \0 U% M, u# K" w) I
9 v/ S1 D7 P; y) B2 D
& ~2 K: k$ c) j8 G常见问题分析7 s: O! H2 k- R; x' f
BT 打开失败(UART)
$ |% U1 x! ~* `0 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。
1 { J z- e2 w! T& G 如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
) b6 @- b, G: G1 v 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。
8 ]$ i) e0 J1 ], ~/ ^ }9 [' g 如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
7 c* Z# ^( C: @) I7 X 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
* X. u5 {$ @- D2 l/ u4 e3 a. g: H; Q- ], \. F- W4 Q0 ^
BT 打开失败(USB)# P B( _, f# f% `
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.+ m) ~) ~0 P* d, Q6 E
查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
4 F! ]3 P' K M: P( A
0 z8 \/ t) W6 M: H( b: I以上观点纳拓科技提供,请勿随意复制、编辑转用. R$ T3 |: }, v
1 v- A0 w+ G4 b; H, a* s4 T6 d% j x" X( R4 U
6 n8 S- o P, h. K) O) p2 d: R% B7 }- B |
|