注意:此部分仅仅适用于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的使用实例.

Android命令行下蓝牙使用的更多相关文章

  1. Linux命令行下编译Android NDK的示例代码

    这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究 Android ND ...

  2. android 命令行安装apk

    有两种方式可以在android模拟器或真机上使用命令行安装apk 一种是使用adb install命令,网上通常是这种方式 另一种是通过android提供的命令,pm install. 需要先进入an ...

  3. Android系列之Android 命令行手动编译打包详解

    Android 命令行手动编译打包过程图 [详细步骤]: 1使用aapt生成R.java类文件:  例:  E:\androidDev\android-sdk-windows2.2\tools> ...

  4. 详解Linux命令行下常用svn命令

    1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...

  5. MySQL命令行下执行.sql脚本详解

    本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sq ...

  6. 在linux命令行下执行php 程序

    如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...

  7. 命令行下Git的使用

    命令行下Git的使用 写在前边的话 以自己即将进行的毕设项目为例,进行Git使用的简易说明.不过由于校园网络的限制,故使用GitOSC. 快速开始 本次git使用位于自己的个人PC上,所以将个人的Gi ...

  8. Git命令行下解决冲突

    使用Git时,在pull.merge.rebase的过程中,经常会遇到conflict的情况. 遇到conflict时,以上处理过程会终端,并且命令行中显示(xxx|MERGING)的状态(Windo ...

  9. windows命令行下简单使用javac、java、javap详细演示

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...

随机推荐

  1. cocos2d中的anchorPoint属性详解

    原文地址:http://www.tuicool.com/articles/ANVjMj 1> anchorPoint对position的影响 anchorPoint的作用就是相当于确定在子节点的 ...

  2. 降维算法-PCA主成分分析

    1.PCA算法介绍主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理.一般我们获取的原始数据维度都很高,比如1000个特征,在这1 ...

  3. 关于security的简单理解和应用

    2018年7月30日1.搜索引擎框架百度google Lucene 单机操作,就是一堆jar包中的api的使用,自己干预,如何创建索引库,删除索引库,更新索引库,高亮,自己调度APISolr 支持we ...

  4. Knockout v3.4.0 中文版教程-15-控制文本内容和外观-attr绑定

    6. attr绑定 目的 attr绑定可以给关联DOM元素的任何属性赋值.这个绑定很棒,比如,当你想要设置通过视图模型给元素的title属性.img标签的src属性或超链接的href值,当视图模型对应 ...

  5. 用Go编写的本地文件服务器

    本文来自网易云社区,转载务必请注明出处. 一.前言 一切问题的起源就是来自一个问题"为什么我打的jar包没有注解?",带着这个疑问查了一圈资料,原来问题主要是在没有将源码中的注释进 ...

  6. 【LeetCode】String to Integer (atoi)(字符串转换整数 (atoi))

    这道题是LeetCode里的第8道题. 题目要求: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  7. BNU OJ 1027 金币系统

    金币系统 Time Limit: 1000ms Memory Limit: 65535KB   64-bit integer IO format: %lld      Java class name: ...

  8. lua学习随笔

    1.1  Chunks 1.2 全局变量 访问一个没有初始化的全局变量也不会出错,只不过的到的结果是nil 如果想删除一个全局变量,只需要将变量赋值为nil 1.3  词法约定 标识符 保留字不能作为 ...

  9. __getattr__ 与 __getattribute__的区别

    原文博客地址 http://www.cnblogs.com/bettermanlu/archive/2011/06/22/2087642.html

  10. 【BZOJ1500】维修数列(splay)

    题意: 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一条命令,格式参见问题描述中的 ...