|
|
基本测试主要包括配置检查和BT测试两大部分& Q0 n' u6 X6 Y! f4 B* Q
配置检查:
7 V* x+ }. C% q9 b* w9 K1 } 为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
' a6 |! H' J1 Y" O0 y) J adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.
7 _5 U/ V9 \8 mBT 测试:
/ |3 [4 z1 E2 D+ ]: Q) a2 D& m 本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
( d4 p9 z6 M! \6 ]" a5 G基本功能测试如下:
) d4 a l3 I' @6 J: A% ], a# t 1) 打开/关闭 BT 无失败现象。
3 o A! k0 U5 r7 H8 r S- s: c) H 2) 能够搜索到近处 BT 设备。
* l. G# U7 K7 S% ] 3) 和搜索到的蓝牙耳机或其他设备配对。: _6 u4 {& q7 s( N& C; C
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。: F% P" ? S0 w4 x) H* {; ^' l
5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。. u9 L8 V( e1 x+ J
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
7 c0 x0 s* i0 o9 v! G$ `* M 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。' V/ n0 h/ H% b6 s9 M$ c0 [3 b
& {$ K* P" A& c$ E* g3 Q. u- K: x
/ {; H" b0 w2 O( i2 \ 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.7 N' E9 m% _5 b4 |
蓝牙 Log 相关的配置文件:
. x" B- ?4 P% f/ J" i% L4 V, C- D 蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:) |7 C" u! B5 o; M8 u2 `* p. P; u
# Enable trace level reconfiguration function! F) _5 k2 T4 f
# Must be present before any TRC_ trace level settings; w2 F$ N) ~4 v
TraceConf=true
* ~, C8 G' ?7 v$ L( |1 B. d- X$ V4 ~2 `9 i# u( O9 {
# Trace level configuration
6 J3 \7 y# k6 h. ?! z9 T. R7 R, W # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
: `3 n! e A7 B # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
/ u# Y) e+ p4 [ |4 D) X # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )# T: H9 v* Q& Y+ H. T
# BT_TRACE_LEVEL_API 3 ( API traces )
# U8 } Z0 N3 a/ r0 p; b # BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
& \/ M" L$ U) K" E7 _# L/ ]0 J( Z # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )) L& E- c+ W+ q
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
/ h2 S7 [' ~2 ~: QTRC_BTAPP only.! a; x& z6 c* h# h4 \9 z5 h( J, [
TRC_BTM=2
# }* m" d% u0 I% C5 |- y TRC_HCI=2: @2 p' K( R4 u p1 d! g9 P! k
TRC_L2CAP=2
- ~6 c) y# F* [* x! Y TRC_RFCOMM=2
9 e' G) J1 T! L2 a6 k TRC_OBEX=20 \0 ~) g8 w2 u! `" ^; m7 R9 Z
TRC_AVCT=2
6 a5 |. k1 n# x+ M6 ?+ _ TRC_AVDT=25 r0 v. ^; A4 c* b9 Q( q3 `
TRC_AVRC=2. a4 X( \9 S1 z* R/ O
TRC_AVDT_SCB=2% h: B' Y t; P( o$ O9 v+ @
TRC_AVDT_CCB=20 G( Q \# Z( e! } O5 g' K
TRC_A2D=2' V. D: [$ ?- m Z: j' u
TRC_SDP=2, j w3 D3 o7 a# i/ w
TRC_GATT=2; ^; m9 v i2 y1 j0 x% ^" @8 h# F
TRC_SMP=2! c$ i7 H: _0 r+ U7 ]
TRC_BTAPP=2; x1 s" \5 |5 @; z6 Y) i3 l# j
TRC_BTIF=2) V! B- D" }- H1 \, x
TRC_GAP=2% [; _6 q/ y$ l: }4 ?
TRC_BNEP=26 ?8 f* M1 }! y4 q8 t3 y9 p4 l
TRC_PAN=2) n' H5 I/ P; V1 ]# w
TRC_HID_HOST=2; O- Q/ R( {( A; N0 D, Q
TRC_HID_DEV=2
# Z5 O- V! R2 B+ p: R. ~$ m+ K
/ u" N6 q0 F6 v- t% r6 j" P
" W. a, X5 q5 q5 J2 {Logcat –v time
# B- B1 d0 x6 _0 N# {$ {9 t 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦. \- o- ^; U4 |8 B( t- J7 R
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.' p+ {' x) r2 m3 R- A
) e7 G0 l& c5 H7 I1 X
BtSnoop
& O. u; F f$ C6 G3 D 打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
2 P& J9 @% D4 Q# }3 d' y 在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.( x2 I" n+ U" \/ i
" k9 i- ?4 S" P9 c4 f获取 Bluetooth 进程相关信息' A* w. h: J0 }5 W( I
输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息& o3 C% [# V+ N% S; D" l2 e i
# N, a1 i. q# a4 t
注意事项
) N. c. d0 l/ u* y Q' d 报告蓝牙问题 至少 需要 提供 下列信息:6 X- J0 X; m+ x# \( R1 ]
logcat –v time% O+ Y2 n( r+ K8 `
btsnoop* S* Y, o9 ?8 j: A# Z7 f
Bluetooth 进程信息
5 U! e+ t$ _5 y/ B$ ] 出现问题的时间点( 以设备时间为准)
& k$ ?% ?4 Z- L 重现步骤.7 E0 E P3 D3 j. p9 n3 e3 i
. t+ T, ^. q) D. z
. M; D2 a6 Q4 G" `常见问题分析+ g. V) u- K1 M3 G4 E+ k* A
BT 打开失败(UART)
* b# o, N. L( d: O; Y( u; [ 打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
' c" k: O5 q2 a 如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
4 |9 B4 K9 d- F$ n 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。# z6 c0 F. H* { X
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
* t# _. a0 T, Y: r# w 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。& T+ M& l9 N; I) B0 V
2 L4 n# z5 m8 p- q9 \9 m/ z
BT 打开失败(USB)% s; x- ~1 u) u! E7 k% z
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.5 Y P* s! ~$ [" k) Q& B
查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。- D" R- f, h3 \9 O
8 B1 I5 J E* }4 L9 O
以上观点纳拓科技提供,请勿随意复制、编辑转用2 p( f0 T5 h: g
7 P4 v* u0 a v2 ~3 Z5 K6 ?: I c) b, T+ V) z2 M
* _- O$ _) T8 M n |
|