news 2026/9/28 20:59:12

【2019-09-22】linux下使用蓝牙协议栈的一点记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【2019-09-22】linux下使用蓝牙协议栈的一点记录

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2019-09-22| 标题:linux下使用蓝牙协议栈的一点记录|分类:操作系统 / linux / 网络通讯 / Bluetooth |标签:linux·ubuntu·bluetooth·blueZ·hciconfig


linux下使用蓝牙协议栈的一点记录

    • blueZ安装
    • hciconfig封装命令方式
    • hci命令接口方式
    • hci代码API方式
      • bluepy
      • pybluez
        • 安装BLE支持

最近想在ubuntu和树莓派4上跑一些蓝牙应用,遇到了很多坑,这里简单的记录下。

blueZ安装

blueZ是linux的蓝牙官方协议栈,加上一堆蓝牙工具,安装命令如下:

$sudoapt-getinstallbluetooth bluez-utils bluez-compat blueman bluez-hcidump

在网上搜索一些蓝牙协议栈的讲解,可以发现蓝牙协议是分为硬件和软件两层的,历史演进又分为经典蓝牙和低功耗蓝牙,我们可以通过软件接口的方式来对蓝牙进行设置,考虑到软件接口层层封装,使用不同的软件接口层次,决定了可以设置蓝牙的粒度。

hciconfig封装命令方式

以设置蓝牙广播为例,命令如下:

$ hciconfig hci0 name hello_ble $ hciconfig hci0 reset $ hciconfig hci0 leadv#打开广播$ hciconfig hci0 noleadv#关闭广播

hci命令接口方式

这里参考一片博文【 https://cloud.tencent.com/developer/article/1023913 】,核心思路为使用hcitool的cmd命令来实现:

$sudohcitool-ihci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 0215f6bc15e0939046679b e1866e c8 a199dc00 00 00 00 C8 00

hci代码API方式

我们可以安装 【 libbluetooth-dev 】来得到蓝牙的开发环境,然后通过C语言编码的方式来控制蓝牙,考虑到业务复杂度,这里作者没有深入研究,就笔记2个python库来代替吧,深入分析这两个python组件,可以发现这两个python组件底层也是使用C语言直接和blueZ进行通讯的。

bluepy

bluepy是一个目前看起来还在维护的python组件,主要功能在BLE侧,同时内部自带了一个blueZ-5.47版本。不过可惜的是bluepy的官方DEMO比较少。
官方网址:【 https://github.com/IanHarvey/bluepy 】
线上文档:【 http://ianharvey.github.io/bluepy-doc/ 】
第三方demo:【 https://github.com/rlangoy/bluepy_examples_nRF51822_mbed 】
参考涛哥文档:【 https://www.cnblogs.com/zjutlitao/p/10171913.html 】

pybluez

pybluez是一个比较旧的python组件了,主要功能在经典蓝牙侧,同时也可选支持BLE,但是需要安装一大堆第三方组件。
官方网址:【 https://github.com/pybluez/pybluez 】
如何安装:【 https://pybluez.readthedocs.io/en/latest/install.html 】

安装BLE支持

安装依赖:

$sudoapt-getinstallpkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev

安装python组件gattlib:

gattlib自动安装有问题,需要手动安装 $ pip3 download gattlib $tar-xfgattlib-0.20150805.tar.gz 修正如下内容,参考【 https://bitbucket.org/OscarAcena/pygattlib/pull-requests/22/python-3-minor-version-adaptation-for/diff#comment-None】 setup.py glib_libs=ifsys.version_info.major==3: - boost_libs=["boost_python-py34"]+ boost_libs=["boost_python-py3"+str(sys.version_info.minor)]else: $ pip3install.

安装pybluez\

$sudopip3installpybluez\
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 20:58:47

tick-stock-panel Numba加速实战:回测引擎性能优化完整指南

tick-stock-panel Numba加速实战:回测引擎性能优化完整指南 【免费下载链接】tick-stock-panel TSP自托管、零运维的 A 股「选股 监控 回测」量化工作台 | LLM能力驱使策略定制个股分析复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源 项目地址: https…

作者头像 李华
网站建设 2026/9/28 20:58:27

用C#手写TCP调试助手:从Socket到Modbus拆帧的完整工程实践

简介:一套基于C#语言实现的TCP网络调试助手,面向.NET开发者和网络通信调试人员,用于解决TCP协议调试中数据收发、并发连接和格式分析等痛点。压缩包共56个文件,大小3.53MB,包含12个cs源码文件、6个exe可执行程序、4个p…

作者头像 李华
网站建设 2026/9/28 20:58:24

TwinCAT ScopeView实战指南:PLC调试录波、触发与数据导出全解析

1. 为什么调试PLC要单独配置一台“示波器”做倍福TwinCAT项目调试,最让人头疼的不是写代码,而是“明明感觉变量值不对,但没人能证明它到底怎么不对”。以前调传统PLC,要么拿万用表戳模拟量输出,要么靠人眼盯着变量监控…

作者头像 李华
网站建设 2026/9/28 20:58:18

倍福Twincat ScopeView录波实战:从变量配置到伺服故障排查

开场:为什么录波这件事值得单独写一篇实战倍福 Twincat 用户在调试伺服轴或者排查现场偶发故障时,迟早会撞上 ScopeView 这个东西。它是 Twincat 3 自带的可视化录波工具,不需要额外买软件授权,在 Visual Studio 的 Twincat 环境里…

作者头像 李华
网站建设 2026/9/28 20:57:59

为什么选择 Zeek:NSM 数据范式下的定位、核心能力与适用边界

网络安全网络IDS 【免费下载链接】zeek Zeek is a powerful network analysis framework that is much different from the typical IDS you may know. 项目地址: https://gitcode.com/gh_mirrors/ze/zeek 点击查看 免费下载 导读:本文基于 Zeek 官方文…

作者头像 李华