|
|
基本测试主要包括配置检查和BT测试两大部分3 B; e% Y+ _: J' T6 W/ B8 B' x
配置检查:
5 ]) m5 Q7 x5 |) v7 j) ]% O3 t 为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。, q d4 ~1 g P/ z! m: q! R
adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.' R) G9 f* z' G. A( X f8 g+ r
BT 测试:8 s' p! _: D6 S
本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。 V \: q2 n! I: U; D1 K
基本功能测试如下:
5 g/ h8 _4 D2 }2 } d5 W 1) 打开/关闭 BT 无失败现象。8 T ~2 Y( y. L* s0 b
2) 能够搜索到近处 BT 设备。
( v: o, p/ \& u& R2 C+ n! g6 a 3) 和搜索到的蓝牙耳机或其他设备配对。6 Y+ _1 v. t8 v7 `5 ~0 N7 L5 L
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。
8 N$ l7 F) ?! ^+ A& R5 [ |% \/ u 5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。! U+ y' P1 _, m! j T0 J
6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。: ^; D1 s7 I$ `2 l% x% J- z A
7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。
6 p* Z& q' A& b7 M+ {' Y; M. i6 {: E* y' t) I: ?
: H; y( ?5 _5 E 当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.( H |( J% z v E! _- O
蓝牙 Log 相关的配置文件:
- Z4 h( g. u$ H& ]4 }5 M2 p! h8 Z 蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
8 }; u, T/ {& X3 T1 F # Enable trace level reconfiguration function! h5 u, t$ v! O$ h" N
# Must be present before any TRC_ trace level settings
: I @- z" R) r: | TraceConf=true2 j% o/ E3 M7 P% H
. t. N9 i) @( r, g# P # Trace level configuration
6 z6 {* d( r" E) G0 {# x8 E # BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )# c4 m! t0 z6 u3 y- h4 R
# BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )
' I3 v! i3 Y* R2 g# Z# U3 b& w # BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
& |+ Z$ _8 A" V$ F9 S# _ # BT_TRACE_LEVEL_API 3 ( API traces )1 \8 b( x& u9 V
# BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )
3 n; K e% _( q" ^6 X: Z9 w # BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages )2 l+ d4 F* D8 z y: J% y
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
' I0 a5 d( r0 _ T8 Y% }7 Z i- a4 JTRC_BTAPP only.
\+ e, E, ?, p2 ?, u* c1 s& O TRC_BTM=2
4 T7 z, i6 C* s1 G& y" G TRC_HCI=27 Y7 g, V X, L9 T+ S
TRC_L2CAP=2 `* H6 u4 ]1 D. ?0 z
TRC_RFCOMM=2( w" A6 a1 _ p" L) k/ i0 \0 @# o
TRC_OBEX=2# G" w, K! V4 d& G! u( q
TRC_AVCT=25 f! x$ t. L' q8 w
TRC_AVDT=28 f q. }! D4 B
TRC_AVRC=22 d% g; u4 l! @; t6 u7 F' b$ B
TRC_AVDT_SCB=24 t H6 \+ r1 k+ E3 m. w
TRC_AVDT_CCB=2
+ _6 T3 M$ k8 V TRC_A2D=29 ~3 b" X/ ^. I1 a2 m- x! X
TRC_SDP=2+ i; E0 H5 x6 a
TRC_GATT=2% j8 ] ~& B% m2 g E2 p
TRC_SMP=2
1 i; l6 G2 F/ f% F6 d0 y) R TRC_BTAPP=24 @/ m7 g+ f/ m2 M( p0 V$ c
TRC_BTIF=2; Q" g. C" d8 N& R% s, e! @5 V
TRC_GAP=2
: R& k9 K( W, _/ ^8 r) v' G TRC_BNEP=22 x" m5 q2 Z" Z9 g
TRC_PAN=23 a9 b, V1 K8 S3 C5 b) R
TRC_HID_HOST=2
7 K6 X/ s/ m0 ?' A6 o$ f TRC_HID_DEV=2" x& s8 F1 v1 j: _' }% }8 z: d
: |2 G" g. V |* n
) b/ e% z/ r) |1 e) ~/ T& L9 T# x7 `
Logcat –v time
0 b8 @: @: |2 n3 B* Y' R4 w8 g7 \ 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.
1 p9 L h& \7 u3 t7 f 测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.6 P# |! u6 D/ o5 q+ K
3 R1 _1 A' \$ s r7 p2 ~
BtSnoop9 i+ m. ~" t [: u: D# P
打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效. W5 d; C. q. @: K
在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.
; M t8 d( ]% q9 S3 t) X4 L* i- G/ B+ s/ C/ l! N) s
获取 Bluetooth 进程相关信息
" L+ i! S4 }3 w" { 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息& w! k. I3 R- F3 Q) `7 E8 W% P
- x+ u# D* d7 W
注意事项( b* N. {& O0 K& l! V! R8 j
报告蓝牙问题 至少 需要 提供 下列信息:2 O$ ^, x1 z& j2 N& f2 G" t
logcat –v time
: }! u, v9 g# @+ y btsnoop
* o9 u* Q- g2 a3 V% o Bluetooth 进程信息- y% y: b4 ~# K
出现问题的时间点( 以设备时间为准)
E: I& G- [8 W1 R2 I2 j) ? 重现步骤.
. U( }* E7 b4 ^7 o- U, ~6 R- s' @9 o9 g+ z
( a; W( ]5 t* g8 t& @0 ]# p常见问题分析
% ]2 N" ^* P4 W& a2 ^7 B+ c; oBT 打开失败(UART)3 d0 z0 Y: ~0 k7 O
打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
' S1 o! r& S7 t, ?2 W7 ]$ g 如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。- v, Z! V* [6 ~, e+ s
如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。! Q# B6 r8 |' a) V4 t& p
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。
' H. s6 U! e: g3 I 如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
. o$ X8 B) x, q+ l: A7 L8 n" w
3 c* W. A1 w# |3 H/ B5 e- UBT 打开失败(USB)
2 L+ A' P4 o; h: r8 n* h. O* K 用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.! ~3 k: ~, f2 k9 O- q! G
查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。
* G1 a$ ]" O9 Z1 w- f2 G
, e, v" z) K6 Q3 G/ v2 g8 S以上观点纳拓科技提供,请勿随意复制、编辑转用
7 r7 ]/ h* h; S6 k- N% f* M! t B* ?" \
! v- K$ I9 M6 J8 p' |
7 P* R% [! e; p+ c4 I) n% ~2 i |
|