|
|
基本测试主要包括配置检查和BT测试两大部分
$ Q" N0 W. E& S- \* K+ T, ^8 l, G配置检查:: {: h T+ N9 }" M+ M/ A9 A
为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。% t# @; z: e/ E7 M! |
adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
- m. \ }8 C4 z2 j: s+ _BT 测试:
/ S& R y$ X) ~: L! G 本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
$ [9 A4 d0 c K* _基本功能测试如下:9 ~2 t9 {# T ]1 s
1) 打开/关闭 BT 无失败现象。
) y* ?+ ?% K% s) i0 s5 F# b6 c# h 2) 能够搜索到近处 BT 设备。
& P- l2 e/ N$ G( ]$ M/ J5 U7 K; R 3) 和搜索到的蓝牙耳机或其他设备配对。2 V4 E* H. l V) h& W2 x
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
* b7 G" O, x# [3 u/ E9 R S 5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。8 [* R, S3 f$ k' f4 M- C
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
* Q7 w+ Y+ E! V4 z [ 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
2 I, G( j- l, V d9 |4 }0 `# k5 ^+ K+ z5 T
- h1 j% n* R' Y% w/ { 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.0 a9 \5 ?# n% l! [( M9 @ i& p
蓝牙 Log 相关的配置文件:' `9 u/ ~0 F3 H
蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:' h- b' T# a; J( z8 R3 p
# Enable trace level reconfiguration function$ i- w" C/ Y& T- U; }$ l
# Must be present before any TRC_ trace level settings
' D" C6 }' n3 o4 j$ w TraceConf=true
- E z& n* B f
% c Q, O+ h; B; d# p3 u # Trace level configuration/ U( n8 w; \, D' o8 X
# BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
: X' _9 L& b8 O3 v, F6 v$ p # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )$ S; }' r' P2 \7 }$ i5 p) M
# BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
8 S8 A6 D6 L0 p' X # BT_TRACE_LEVEL_API 3 ( API traces )
$ c3 x) q. S1 y( j" ^- ^ # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
0 C% q! e' X0 [ # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )1 D8 l1 _- i9 M8 _
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for2 G3 ^! {3 K6 i3 d
TRC_BTAPP only.5 k: d& z/ b+ v, \0 `1 B+ ~
TRC_BTM=2
$ k( J, _6 c6 t. F' L TRC_HCI=2
. W4 ` ^. O/ d- N# m$ p$ B TRC_L2CAP=26 N' v% G4 }. J# o+ X. Q
TRC_RFCOMM=2
0 ?: L% c! e6 b TRC_OBEX=2! a9 G2 r3 q: t7 x
TRC_AVCT=2% D+ N! n+ P2 P1 F9 E
TRC_AVDT=2" F r) I$ i& M0 h
TRC_AVRC=2, B! `, s! q7 t- }6 B2 q
TRC_AVDT_SCB=2% s1 d5 {4 d" `/ @( c' M7 v" n% {* M; W
TRC_AVDT_CCB=2, J3 E/ A" n7 ?
TRC_A2D=2# R: R( Q2 [3 A* J+ T; F" A% e
TRC_SDP=2
0 N) g p4 i$ P TRC_GATT=2" p' h; u8 N6 v' T4 F8 y
TRC_SMP=2
0 c ]( S7 O5 c, W TRC_BTAPP=25 h( ?! s0 [* N5 M% _" ~) `
TRC_BTIF=2
8 I% ]& X m7 m* |$ s TRC_GAP=2) t2 h* P0 g' E2 c: u7 `$ S. K
TRC_BNEP=25 @2 ]0 \- I6 P) S5 L% {
TRC_PAN=2' B3 j _1 b1 B7 ~8 O
TRC_HID_HOST=2
9 p2 q) i' C0 H0 x% ~8 Z TRC_HID_DEV=2- R( P' n0 z. f7 L$ [) f
' D, j) A) [; J+ o
1 Z3 N3 l! x5 r; j KLogcat –v time
" W- P( H/ X2 E) j 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.4 W5 n4 ]6 y( w0 e/ y* ~# u
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log. H% b7 Q/ O# b/ b* ]1 I/ y5 |3 r
1 [3 k3 B$ F, d9 ?( Q( C) M( L
BtSnoop
' K/ d2 C! R" c e0 D 打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效., t( `( v& u- l0 t% g+ D$ P; \9 h+ S
在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.7 B8 t5 `5 c- J- V
% ?, j( s$ r. L& Z5 r获取 Bluetooth 进程相关信息
# h% x; X' Z) q2 J* l4 V2 W4 Z7 R 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息
0 g& x( _7 E1 U/ U1 N9 I3 F: p2 O$ m# I7 w' P
注意事项
2 }+ a; D( U i% C9 }4 O" p1 i; R 报告蓝牙问题 至少 需要 提供 下列信息:8 Y0 k8 c1 R; u# J1 Q' `
logcat –v time
# v) j# {: r+ F! n btsnoop# W$ u2 f1 t/ q/ p1 y
Bluetooth 进程信息
8 G* V: r3 l: W. D) P$ H 出现问题的时间点( 以设备时间为准)
- ]8 A0 @# J% Q# U8 L. B8 @6 {$ }( Z 重现步骤.9 M' x' w0 ~$ l. Q
0 X- C( n' b: m* q) W, U! J
4 r! [1 k x0 C1 v常见问题分析
# l: ~ F2 ~6 E# `, eBT 打开失败(UART)
2 g; [0 r' F$ | 打开 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 L" b" ^: x6 F; c' ?4 C" k 如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
9 k) T/ F* m+ _2 [! g5 ~ 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。
f' |3 j2 a+ ^: p/ P5 i# @ 如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。$ R6 B v, W8 n9 h o& [5 d7 T5 ~
如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。" h# X( M9 p q9 \+ B/ Y' d" P8 l
5 U3 p- ~5 {6 Z/ }! JBT 打开失败(USB)
! L* `3 m7 x# z8 L% r 用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
9 A! M7 s& _; N 查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。' Z) B. x4 n/ f ~4 g! z; Z
3 W* w6 W0 i. @/ x' Y7 F6 [# E3 ~以上观点纳拓科技提供,请勿随意复制、编辑转用; c4 C0 m3 I) B
) [0 _. R$ g/ t
/ j o) Y1 l1 U
$ p/ K9 p8 L- U1 C |
|