raspberry pi上有两个USB口,前面的文章已经用了一个USB wifi适配器实现了一个加载机,今天用另外一个USB口连接蓝牙适配器,在raspberry pi上实现蓝牙功能。硬件上在网上买了一个ORICO的蓝牙适配器,该适配器支持bluetooth4.0标准。在我的raspberry pi上通过命令$lsusb可以看到如下内容:
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
该内容表示系统已经识别出蓝牙适配器。另外通过命令$lsmod | grep "btusb"可以看到如下内容:
btusb 15521 0
bluetooth 221259 21 bnep,btusb
该内容表示内核部分已经正确加载usb蓝牙适配器的驱动模块。至于蓝牙协议栈内核模块,可以通过/proc/config.gz文件查看相应的蓝牙协议栈是否编译进内核或编译成模块。
bluez-5以上的版本支持蓝牙4.0的低功耗模式,raspbian的最新镜像(2013-12-20)源上的bluez版本是4.99。因此需要通过源代码编译。从bluez的官方网站上下载最新的bluez-5.13。编译bluez-5.13时需要在raspberry pi上安装如下开发包:libglib2.0-dev,libdbus-1-dev,libudev-dev,libical-dev,libreadline-dev。在编译选项上添加--disable-systemd选项(不需要systemd)。编译且安装后在/usr/local/libexec/bluetooth目录下有一个bluetoothd守护进程,该进程用于raspberry pi与其他蓝牙设备之间通信的服务。
安装后使用$hciconfig命令可以查看当前蓝牙适配器的情况:
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:5362 acl:0 sco:0 events:124 errors:0
TX bytes:1229 acl:0 sco:0 commands:78 errors:0
可以看到当前的蓝牙适配器处于关闭状态。通过命令$sudo hciconfig hci0 up启用蓝牙适配器。
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:5933 acl:0 sco:0 events:155 errors:0
TX bytes:1877 acl:0 sco:0 commands:109 errors:0
在蓝牙适配器开启后,通过命令$sudo hcitool lescan可以查找周围支持低功耗蓝牙设备。
来源:oschina
链接:https://my.oschina.net/u/206258/blog/189490