Android命令行下蓝牙使用

注意:此部分只适用于broadcom 系列蓝牙芯片,例如RK903, AP6xxx 系列

通过su 命令切换到root 用户

1、先确认RFKILL 驱动已经加载

ls /sys/class/rfkill/rfkill0/

如果没有找到rfkill0 这个目录,说明蓝牙驱动有问题。

请检查kernel 中的蓝牙选项是否有勾选了

请查看kernel 的打印信息中以“[BT_RFKILL]”打头的信息。

2、关闭蓝牙:

A. 在Settings 界面中关闭蓝牙

B. 给蓝牙设备下电:

echo 0 > /sys/class/rfkill/rfkill0/state

C. 关闭bluetoothd 和hciattach 这两个service:

setprop ctl.stop bluetoothd

setprop ctl.stop hciattach

D. 对于Android4.2,还需要关闭进程com.android.bluetooth

busybox killall com.android.bluetooth

3、确定蓝牙已经关闭之后,手动给蓝牙上电:

echo 1 > /sys/class/rfkill/rfkill0/state

4、下载蓝牙固件

Broadcomd 系列芯片使用命令:

RK30:

brcm_patchram_plus --patchram bychip --baudrate 1500000 --enable_lpm --enable_hci /dev/ttyS0 -d &

RK29:

brcm_patchram_plus --patchram bychip --baudrate 1500000 --enable_lpm --enable_hci /dev/ttyS2 -d &

如果蓝牙硬件及驱动没有问题,那么在这步执行完成后可以看到打印:

E/bluetooth_brcm( 402): Done setting line discpline

如果没有出现这行打印,说明蓝牙硬件或软件方面存在问题。

Realtek RTL8723AS 使用命令:

/system/bin/hciattach -n -s 115200 /dev/ttyS0 rtk_h5

5、确认hci0 interface 已经创建:

# hciconfig -a

hci0: Type: BR/EDR Bus: UART

BD Address: 20:00:00:00:01:09 ACL MTU: 1021:7 SCO MTU: 64:1

DOWN

RX bytes:485 acl:0 sco:0 events:18 errors:0

TX bytes:95 acl:0 sco:0 commands:18 errors:0

Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0x79 0x87

Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3

Link policy: RSWITCH HOLD SNIFF PARK

Link mode: SLAVE ACCEPT

6、激活蓝牙

# hciconfig hci0 up

7、确认蓝牙激活成功

# hcitool dev

Devices:

hci0 20:00:00:00:01:09

8、蓝牙激活成功后,可以开始扫描周围的蓝牙设备

# hcitool scan

Scanning ...

90:C1:15:0F:C2:78 Xperia neo


其它:

1.开放检测,允许周围设备检测到

# hciconfig hciX piscan

2.连接蓝牙

# hcitool cc A0:E9:DB:26:36:98

3. 配对

# hcitool auth A0:E9:DB:26:36:98


总结:原理是将bluedroid禁用,使能BlueZ然后就可以使用基于BluZ的hciconfig/hcitool等等调试工具来做简单的测试了.尝试通过这些工具进行后期配对等等实验,但并没有功能,其实到这一步也基本上可以认定本地的蓝牙设备工作正常了,更多关于工具的使用见蓝牙调试工具hcitool的使用实例.

你可能感兴趣的:(BlueTooth)