|
基本测试主要包括配置检查和BT测试两大部分
: |* c( i; V' `+ C配置检查:% s/ F# a& I' E) C! L+ O* f/ l6 D6 g! K
为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。 `" W) Q8 p* B' ~; _* S
adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
; h9 P8 H8 F# @( eBT 测试:, K; \1 ~/ R0 r( N- N D
本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
/ \ o4 n9 C; H8 K8 [& x# w( P基本功能测试如下:
% d2 l0 B5 E8 `' m4 {0 t" P2 G! ]& I 1) 打开/关闭 BT 无失败现象。
) T: N& V. m/ C! G 2) 能够搜索到近处 BT 设备。2 {' H1 v: O% b9 T& E' s
3) 和搜索到的蓝牙耳机或其他设备配对。) B7 G y# t$ M
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。1 q3 X3 S& v+ ?- [& i
5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。: k% \; M" q( H
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。0 f0 q: h1 T' q: E3 o6 Y5 q
7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。3 G* D0 ~0 @# S+ Z' k+ Z
9 R' j. r" N2 L, ~- l0 W1 N3 m
& u/ q3 l% Z( R 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.
0 ~* t) [! Z2 h6 r蓝牙 Log 相关的配置文件:5 |- S8 g0 \, p% G4 \7 b
蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
+ _$ F4 {+ y d' y& k* n# D # Enable trace level reconfiguration function
' S- U, n2 K. P- b7 }' N # Must be present before any TRC_ trace level settings$ O3 b- p. P. A' M: i
TraceConf=true
& g! {! i) _& F" {) A5 z- y6 Q" U! N/ x( q+ I- x
# Trace level configuration
: F, D& }' ~4 O7 m- {1 ~7 m # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
. G# c5 ^( A) M% [ # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )# p& H4 c m, `) v Z ]
# BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
* H6 L @9 h9 \' a # BT_TRACE_LEVEL_API 3 ( API traces ) [1 W1 p1 ^# l$ x
# BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
3 c- C2 x) M% C3 E4 ~2 ? # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )
! p; P2 V7 D% f. e; c( g # BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for* W$ C* D* T O) ]
TRC_BTAPP only.; v" R5 J( y8 N
TRC_BTM=2
1 ]) @6 I9 h' W' ~9 a+ n& ? TRC_HCI=21 G ^0 f' J2 Y$ u( T) I
TRC_L2CAP=2
3 f9 a2 t, v5 s$ l2 n TRC_RFCOMM=2* n9 ?: c; Z% w- ~: h& P
TRC_OBEX=2
& T* w+ l1 x* A& ~" c TRC_AVCT=2
! ?7 B9 V2 e$ _ TRC_AVDT=2
& A- b0 _* B, H TRC_AVRC=2
9 P3 H8 f( M) r* a, A/ S* k5 m9 G2 Q TRC_AVDT_SCB=2! }1 \! F m% V3 M
TRC_AVDT_CCB=2
3 s5 ^4 Y$ H0 G, w$ D TRC_A2D=2
7 F- `. ?8 H0 B/ P% I TRC_SDP=2
0 Z! V0 r5 t9 ^2 N TRC_GATT=2
$ \& k9 W" q2 C4 G& c TRC_SMP=2
8 c9 g3 S$ F4 Z1 s/ D TRC_BTAPP=2
( n0 u1 D! \3 R& V2 L% q: J TRC_BTIF=2
/ R2 O9 Z7 M2 L TRC_GAP=2
0 M$ M! z& g0 m TRC_BNEP=2
$ I# I& Q0 N) ` M9 Z9 @7 V6 P TRC_PAN=2
J1 s/ s4 p% q# f% f3 W TRC_HID_HOST=2. q* t5 A; `. R" N9 P3 V- I9 f* {
TRC_HID_DEV=2' R( |, M2 t6 x; J5 z. Q
% q4 Z6 s1 g' f* }3 i, h
, C1 b% w( G1 k5 g1 TLogcat –v time# {# B0 |4 d3 |
在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
# K# e% \/ j* j" F9 d( E 测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.8 ]; v& ^* z4 c+ R; D
& m! K# C5 e U8 g" EBtSnoop
. ^+ v4 [5 l& N9 \ 打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
3 q" s- E' J+ {2 b+ R' Y9 a 在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.
: O- T3 A# c# C2 `, s" U" k8 C1 y
/ X4 S" r' w2 ?! L! I/ c* ~: h( w获取 Bluetooth 进程相关信息
) L' F/ B0 b- v+ _ 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息
/ y1 `" t4 m$ y! y/ x
w M- R C# P t注意事项; g/ \* n# I$ S+ r, T
报告蓝牙问题 至少 需要 提供 下列信息:
6 x( Y2 [' i3 I( }* r4 V( Z) H logcat –v time
3 k. X* F5 [7 t& j6 ]" B btsnoop
9 C; F K# \$ l8 o8 s7 T. t Bluetooth 进程信息/ Y6 j: q2 c% {7 m
出现问题的时间点( 以设备时间为准)
, l% l, \+ p% D 重现步骤.2 E; Y8 M5 ?7 B K, n
$ L( c* i8 O7 q0 S! `& s ?3 i* [8 L: j9 D- ?- G
常见问题分析" {% o, Z/ a1 B- X+ c5 ]
BT 打开失败(UART)' x8 ^+ i- u8 L. b
打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。2 U1 O2 K8 u! e) Y& u
如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
; N0 u' ~, N$ S; x 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。6 M; r. Z: S# Y, ~6 a
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
/ w. _( {+ ]" o; Q3 I0 F 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
4 m5 A/ e) [ T9 Z3 v0 R# I g6 R7 v& `+ {* b1 i. A
BT 打开失败(USB)% ^$ X2 L# M7 |# Y' o) p! i- V
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
& W o. t1 p, h5 _$ V6 Q, g. V 查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
4 K- k5 @$ r: w4 R2 E1 B" O
) H! E3 I" t( B7 l8 V, |5 ]) t以上观点纳拓科技提供,请勿随意复制、编辑转用$ K" r; y. u! g% b
6 I3 B+ T! d! u" M( D; _
( z( Y& J d% m* _9 a0 P4 j8 ~& m9 u7 |
|
|