|
基本测试主要包括配置检查和BT测试两大部分
! C! y3 t# @3 X; N. k配置检查:
: }4 j& R# B2 f, p! c& t0 M 为了进一步确保 porting 没有问题,在测试之前先确认 fw 以及 config 文件是否存在。
+ ]& j* V$ r( e6 i8 E adb shell 到测试平台的根目录,检查测试平台的 vendor/firmware/目录中 rtlxxxx_fw 以及 rtlxxxx_config文件是否存在(xxxx 为 BT Chip 型号)。检查 Release 包中的 rtkbt/下的文件是否都已经安装到对应的目录.& |; z. q7 s( p$ s0 U' T
BT 测试:
+ F9 i& g* ~ S* {; p0 C 本测试是 porting 结束后对 BT 基本和常用功能的一个快速测试,旨在快速验证一些基本问题,不代表BT完整的测试 , 测试结果也非正式test report 。 如果使用的是非Realtek BT chip ,该项测试可能没有意义。
; ]4 n @4 ?9 M0 T& d基本功能测试如下:
3 ?8 v5 K( f, p 1) 打开/关闭 BT 无失败现象。
& `2 z6 D& s' a; u. g& A 2) 能够搜索到近处 BT 设备。, Q2 K0 o8 ?0 n+ S0 x: z4 Q8 }0 |
3) 和搜索到的蓝牙耳机或其他设备配对。' X3 ^# `7 W1 c2 Z- C% o
4) 连接上蓝牙耳机,使用 BT A2DP 听音乐(sdcard 确保存在)。- q; [; _) n9 c7 U7 M! `
5) 连接上蓝牙耳机,使用 BT HFP/HSP 打电话(确保用蓝牙时能够正常通话)。
- p# n& g) X& g" D 6) 传输文件到远端支持蓝牙 OPP Server 的设备,从远端支持蓝牙 OPP client 的设备传送文件到本地(sdcard 确保存在)。
+ h& D; }* b: y6 f. y, j4 k 7) 连接上蓝牙键盘,打开需要输入的应用,通过蓝牙键盘输入。. q7 i: U% i0 n* N
9 z9 Z( c. K5 H& Z: T x8 _6 e, c6 k! `" M4 r2 Q
当发现蓝牙有问题的时候,需要同时提供对应蓝牙问题报告下面的 log,否则可能会因为 log信息不足无法定位问题.所以请务必学会抓取下列蓝牙 log 的方法.
" J1 L l, ? J1 ]* I m- \1 n蓝牙 Log 相关的配置文件:4 f( D/ x/ _6 B# O
蓝牙相关的配置文件存放在设备的/system/etc/bluetooth/bt_stack.conf .可以通过 adb 方式进行修改.默认的配置文件如下:
6 T `( S2 z, P # Enable trace level reconfiguration function, e$ D9 G8 `) @% A# s; t( Q( p! Q
# Must be present before any TRC_ trace level settings
0 |1 s7 u6 Z- }6 H* S TraceConf=true
/ X$ m6 L* B6 a' o4 m% [/ x# W; _, q- W8 E7 A
# Trace level configuration2 X, d$ Z- Z+ t7 C, a' ~, z
# BT_TRACE_LEVEL_NONE 0 ( No trace messages to be generated )
X, T8 W7 ]1 M: m4 }4 } # BT_TRACE_LEVEL_ERROR 1 ( Error condition trace messages )9 ?7 S# H) \( S; x1 b8 N6 R
# BT_TRACE_LEVEL_WARNING 2 ( Warning condition trace messages )
4 ^8 t) j7 ]# |% _& y# h # BT_TRACE_LEVEL_API 3 ( API traces )2 d, x* }" g. k1 r: ?
# BT_TRACE_LEVEL_EVENT 4 ( Debug messages for events )8 t" c) Q0 b4 N$ N0 ]* E* y
# BT_TRACE_LEVEL_DEBUG 5 ( Full debug messages ). P6 ~/ v+ E N5 a- \
# BT_TRACE_LEVEL_VERBOSE 6 ( Verbose messages ) - Currently supported for
( W5 S) C" p5 m, L( `4 s# uTRC_BTAPP only.
) e/ G9 r a& y7 n6 S/ k0 G+ \ TRC_BTM=2
) R/ P B# W6 U: T) [3 R TRC_HCI=2
. `0 r1 J) p! e# n# c TRC_L2CAP=2+ O( l$ [5 g& u
TRC_RFCOMM=2
; ]6 X2 c" `4 N- V' Q TRC_OBEX=28 ^) | `0 Y2 K( `: i
TRC_AVCT=2/ r) c9 I6 p3 ~1 Y
TRC_AVDT=2
* u8 F! R9 s% M. H, u TRC_AVRC=29 k9 J5 N! L1 w' {4 [8 ?
TRC_AVDT_SCB=2+ @+ V9 d2 w ^5 S3 l' i: }
TRC_AVDT_CCB=2+ \4 h9 }+ k. D6 R/ H) a) r% Z
TRC_A2D=2
$ j( c ]' l3 F; {7 o TRC_SDP=2
L! f' Y$ ?! R/ e: q TRC_GATT=2
5 K$ `7 J: `0 @- y$ H4 ^ TRC_SMP=2- f9 }& A: v& T8 K! F4 [, H6 @
TRC_BTAPP=2
# g, F' z" S( R TRC_BTIF=2
! T) @: N# R& {# o/ m TRC_GAP=2
6 M7 q* b$ [9 g3 U TRC_BNEP=2
' h7 r7 \, @9 D1 Z# M TRC_PAN=2
! X0 q- g) H9 J TRC_HID_HOST=2; W4 A9 v! p" [+ o8 R0 q
TRC_HID_DEV=2- H' r/ l. Z( R, D' _
$ N' B X5 t8 y# _: f% h/ F+ w; o4 F$ c( v# c
Logcat –v time
3 V3 t7 E7 F- G( h' O6 V8 z 在抓取 log 的时候,必须添加”-v time”选项.否则没法将 log 和出现问题的时间点对应起来,给分析 log 会带来很大的麻烦.( D; g& i( Q0 {+ X* R0 ^
测试前,可以打开 log 并将 log 导入到设备的某个分区,待测试完成后再通过 adb, sdcard 等方式导出 log.
! M* L3 V$ y3 n7 Y
1 R- N6 s7 \" }* C% a7 [BtSnoop+ g3 M7 X/ t* z: }3 V% u3 l$ f9 M
打开 btsnoop 录制 功能 设置 persist.bluetooth.btsnooplogmode 属 性为 full, 设 置保 存路 径persist.bluetooth.btsnooppath。然后开关一次蓝牙生效.
( P1 `# S7 o4 m( x- m 在蓝牙打开时,这个文件会自动被覆盖一次,所以重现到问题后,需要尽快采用 adb 或者 sdcard 将 btsoop文件导出.切勿重新开关蓝牙或者重启设备.' G$ }$ i% e) I$ T% Z
1 J& y' B& @; V获取 Bluetooth 进程相关信息
, B0 V: X4 @- i, _& n ~+ J9 G 输入 adb shell dumpsys bluetooth_manager > xxx.log, 获取 bt 进程相关信息# U# N7 m. R( {( ?7 g4 }
0 V: U( c- }( p4 s! r
注意事项
. O; F ^ I' E9 } 报告蓝牙问题 至少 需要 提供 下列信息:
2 I3 X, @1 f9 x& A logcat –v time
/ d; o" x9 T. Q, E- \ y btsnoop
2 o: x! A( s# z) u3 ]3 k5 e- @3 Q Bluetooth 进程信息
q/ _7 x: N+ @% `: q 出现问题的时间点( 以设备时间为准)
9 z. ~/ `7 [6 ]$ d/ N9 D 重现步骤." f9 v9 E/ n. ], u4 | S& [/ P
; e) h0 m- y$ N
( @" H# F+ p! q* Q# q2 K; K% b6 q) z常见问题分析2 b6 ^: n3 h! R4 F0 b- c( X
BT 打开失败(UART)
5 g2 B4 z n) S 打开 H5 UART Driver Log, 使用 logcat 抓取 log,看 H5 SYNC 过程时候成功,如果 H5 SYNC 失败,那么需要首先检查硬件电路是否正确(Power Supply, BT Reset PIN, UART TX/RX,CTS/RTS),然后检查卡片 efuse,用示波器量测 UART 波形,看 Host 是否把数据正确的发送到 Controller。
6 m3 D8 |& n1 u- C+ V+ X2 j- V9 E 如果 H5 SYNC 成功,那么下一步就是 Change Baudrate,判断 Change Baudrate 是否成功。如果 Change Baudrate 失败,那么需要确定 Host 是否支持该波特率,config 文件是否正确设定了波特率。
5 g9 Z! F% G9 M: l 如果 Change Baudrate 成功,下一步是下载 fw 以及 config 文件,如果下载完毕之后,收不到 Controller回复的 Command Complete Event,那么需要检查 fw 以及 config 文件是否正确,BT Reset PIN 是否为高电平。$ D) m" r8 W% ~
如果下载 fw 以及 config 文件成功,那么下一步就是根据 config 文件的设定修改 HW Flowcontrol 的设置。设置成功之后,bluedroid stack 会下第一个 HCI Comamnd。8 z1 M7 Y* P ^$ B
如果第一个 HCI Command 一直 H5 重传,那么说明可能 HW flowcontrol 有问题,需要检查 Host 的UART driver 是否支持 HW Flowcontrol。
9 ~7 n! ^2 w3 i" L5 n1 K/ Z8 ] D% I9 g$ y, \
BT 打开失败(USB)# J& ]9 R0 W! T* F3 v& e9 N- V2 F; ^6 [
用 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是不是对应当前使用的蓝牙芯片。如果没有则是没有识别蓝牙卡片,需要首先检查硬件电路是否正确.
* F5 O2 r2 |1 t1 Y& P# n ^ 查看 USB 的驱动是否正常加载。登陆到平台里(adb shell),然后使用命令 lsmod 来查看是否有rtk_btusb.ko 的存在。; h$ D& l) h+ f0 j4 m: Q
9 Y: p5 w3 h5 [" U" Q6 R
以上观点纳拓科技提供,请勿随意复制、编辑转用4 Q9 y2 [2 E/ Q# r: [1 h2 }
% Q; B' ~& v& F* `$ V! |$ a7 H3 X, P: h' ?2 k( k- U
, j$ g& k Z& R |
|