注意:此部分僅僅適用於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的使用實例.