众所周知,现在很多设备开始用上类蓝牙4.0技术,在linux上的蓝牙官方协议即为Bluez了。

但是关于BlueZ的文档和学习资料却非常少。

我最近需要在nao机器人的操作系统上(linux的gentooo发行版)接收ibeacon的信息(通过接收蓝牙4.0的数据报,然后进行解析)

然而因为各种原因我需要对Bluez的一些工具进行移植,C++蓝牙编程是我唯一的解决方案,经过学习和折腾之后,总算是有了些头绪,接下来将我的学习经验分享给大家,水平有限,欢迎大家指正。

首先贴出一些蓝牙的学习资源:

Bluez官网:http://www.bluez.org/,可查阅的资料非常少,但是源码都推荐在这个网站下载

Bluetooth的wiki(了解协议组成很有帮助):http://en.wikipedia.org/wiki/Bluetooth#Bluetooth_protocol_stack

Howto run Bluez:http://www.stlinux.com/kernel/bluetooth/how-to-run-BlueZ关于运行Bluez工具的一些说明不全

用hcitool以及hcidump解析ibeacon蓝牙数据报(对解析BLE设备的数据非常参考价值):

http://stackoverflow.com/questions/21733228/can-raspberrypi-with-ble-dongle-detect-ibeacons/21790504#21790504">​http://stackoverflow.com/questions/21733228/can-raspberrypi-with-ble-dongle-detect-ibeacons/21790504#21790504​

实战LinuxBluetooth编程:(国内关于Bluez很详细的博客,很赞):

http://blog.sina.com.cn/s/blog_602f87700100e0vb.html">​ http://blog.sina.com.cn/s/blog_602f87700100e0vb.html​

AnIntordunction to BluetoothProgramming:(国外对蓝牙编程介绍很详细的博客,虽然比较老,但非常赞,很有参考意义,包括了C和python语言)

http://people.csail.mit.edu/albert/bluez-intro/c33.html">​ http://people.csail.mit.edu/albert/bluez-intro/c33.html​


这是个非常好的工具,可以获取原始的蓝牙数据报,不过需要先用lescan工具开启le模式

Bluez相关的各种tools的使用(主要用到hcidump):http://blog.163.com/seven_7_one/blog/static/16260641220116892928675/

Bluez的移植和配置:http://blog.chinaunix.net/uid-20723653-id-1886857.html

Ubtuntu和BlueZBLE:http://wv1124.iteye.com/blog/2025637


pybluez(python蓝牙编程类库):https://code.google.com/p/pybluez/