|
|
基本测试主要包括配置检查和BT测试两大部分" V$ s" t. v' i6 l
配置检查:' Y1 i! g2 J& W6 B! q) y5 ^% {
为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
8 k- J. f! a1 \* Y# p" `$ u adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
2 D' E8 n- s0 K# D m& [BT 测试:
" ~8 w0 I/ U5 }5 X5 v6 _' H 本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
9 a; c# d/ z2 O& s( n- I* Z基本功能测试如下:
2 X, Y' y: Y4 F. M5 S: m& o 1) 打开/关闭 BT 无失败现象。! h. B* {8 d% j. K0 }! h
2) 能够搜索到近处 BT 设备。0 r2 ^7 q \, {5 g
3) 和搜索到的蓝牙耳机或其他设备配对。
( }% f2 N6 ]+ o) r 4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
+ f/ W) C* [( O* G; w 5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。( [8 w5 S% s8 r! z1 [
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
1 v% y- v. N, }& D# V 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
) I8 t( a# F0 V, w
( e& s7 J4 v3 P% @" t% p
2 [4 p' a; r9 T 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.
8 p# \4 _8 S$ X! v: V蓝牙 Log 相关的配置文件:
0 ~" T4 e6 {8 v6 A8 @& u 蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
2 P- p$ {( A/ _( I: N4 U" }7 ^ m # Enable trace level reconfiguration function9 J; h/ P* s' r* o
# Must be present before any TRC_ trace level settings
9 w+ j# C9 g i# ?" R TraceConf=true F& E0 l/ s/ J: v+ s# D8 f
& c0 f9 W% \1 B # Trace level configuration/ Z& A! s: p9 j. ~
# BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )# g5 K0 r/ p1 q0 B% V$ k! a) W- X) u
# BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
l2 M V r. w; U # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages ), a/ J0 R$ U+ y; q: v# X# A [) ?
# BT_TRACE_LEVEL_API 3 ( API traces )8 c# j1 x" T- e8 l& v
# BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )! s5 H. |, F: T" K; \
# BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )2 |6 O' |0 D3 T# k) x* k
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
3 N6 }" r6 J( x* @ yTRC_BTAPP only.8 k2 K, G. Y1 a D
TRC_BTM=2
/ j4 t1 T! ` W8 M( J+ a2 [# G TRC_HCI=2
) M# O+ r- |% ?4 Z" y TRC_L2CAP=2
* Z% v# D# T% m+ p) r. M' J; { TRC_RFCOMM=2& o0 N: @! O8 b! b. k
TRC_OBEX=25 O2 C, v. Y' t: W- E! |, u) N4 ^/ ? I
TRC_AVCT=2) v# p$ L" L) ~2 Q9 e+ L* @ I
TRC_AVDT=2( }; w8 ^5 A9 c6 u3 `1 p; G( T
TRC_AVRC=2
' q) W. m6 e n3 ?7 b) S3 g TRC_AVDT_SCB=2
. }# r9 W9 s. U4 R TRC_AVDT_CCB=2
+ X' O, P2 N& s' Z6 ^8 A TRC_A2D=2/ d( d, ^3 G+ z. s# ^" g" Q( N
TRC_SDP=23 k) l* b$ x, t9 s; l, c* F9 F
TRC_GATT=26 v) R0 Z: F3 S* u) l
TRC_SMP=2* W% J) d+ z& S# V& k; ^
TRC_BTAPP=2
0 V# [7 E3 X/ ]; P$ h% I TRC_BTIF=2
5 e" ^' U6 O; P& B TRC_GAP=29 }# B1 K0 x" O( }" X% d# S, e
TRC_BNEP=2
1 t! O: Y0 h% m j) ], E TRC_PAN=2
9 [7 ^8 A5 L9 Q. `4 Q. ?' Q/ C TRC_HID_HOST=2
7 U3 L' E, |% \8 a; q: C& [! C' @, M) k TRC_HID_DEV=27 \& u8 m# D- O+ V) A$ y9 @; z4 U
% J ?9 Q/ g* i9 T5 M& ~8 x
6 @* v) n8 f7 d4 z8 V+ U
Logcat –v time
( r+ T# V5 |7 x4 F+ T: k0 p 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.( r8 K- s" o8 E- t' `
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.0 w9 p3 z# u+ |0 ~7 e
& B, R! O. ?5 J/ O7 E4 q* _- `9 ?BtSnoop4 _& O+ h) f" |. F9 a& @9 C" s
打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
9 f) m+ c5 X& Y3 u 在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.
7 G1 S3 U# b, z$ ]* M+ M
& A3 p9 c) w$ A5 a$ \/ b1 _获取 Bluetooth 进程相关信息
8 k. b3 z3 D( J: I1 _+ C 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息2 ?/ t( ?! S% [0 _+ L3 W! e- V
, t. x# [* f. t% m" C8 F注意事项
0 t" r6 S- t( x7 t1 X6 X 报告蓝牙问题 至少 需要 提供 下列信息:
7 t3 I4 \7 V s% b2 u logcat –v time2 R5 }4 S" l6 j1 [/ F' n; ~, \
btsnoop- x, }7 L( j" A: v* D8 q. K
Bluetooth 进程信息
* }# O4 n9 e/ S& C6 K 出现问题的时间点( 以设备时间为准)+ ^1 [* q6 v; \! A& C" H: M
重现步骤.
! |* z+ I5 Y2 e5 V6 ~* b7 l2 @0 x0 C5 E
! e1 K# ~8 z! U. P9 B! V g" M6 {* Q, ~
常见问题分析
8 X# g, f3 l- H# HBT 打开失败(UART)
) J' \6 Y! M# v! p( i$ w" E 打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。# I7 u( X; J7 e* ]6 p
如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
0 r8 V$ l" I7 \& v 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。0 Q; v. D W! K) \. @2 i! G
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
* i2 g: a( o! d" s# K2 ] 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
9 t) Z# d; X1 ` Q4 q0 T3 z, P6 S6 S
BT 打开失败(USB)5 E( c' o$ Q- U# B* X4 K4 Z/ E
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.0 e$ L1 o' J( q6 f, [; h
查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
' w- Y$ ~" H; Z% \9 Q
2 x' P4 C* A/ T以上观点纳拓科技提供,请勿随意复制、编辑转用
1 g( E) U% q9 ~' q
2 K* P, u/ h: ]) m" l! {0 y5 B9 T1 z* \
" G8 v/ ]% }+ B/ Z
|
|