使用 BlueZ Stack 作为外围设备(广告商)

2023-12-01

  • Goal:使用 BlueZ 和蓝牙 4LE 适配器创建一个外围设备,宣传“Hello World”的蓝牙等效项。

  • 我在哪里:我目前已经安装并下载了 BlueZ 堆栈,我可以使用 hci 工具来识别和查看蓝牙适配器。我已经对 hciconfig Leadv 进行了修改,但我只是不太明白/理解发生了什么。

  • 我认为我需要什么帮助: 我需要进行下一步。如果有人能给我指出一个好的资源,引导我完成这个,或者任何事情,我将不胜感激。如果我需要做额外的腿部(搜索)工作,我可以,但我已经在谷歌和SO上搜索了我能想到的尽可能多的这个问题的不同衍生产品。

*我也将其标记为 CoreBluetooth,希望 iOS 开发人员在某个时候对此进行了修改。

编辑:在回应评论时,陈述我的最终目标是什么似乎是谨慎的。我最终想通过适配器来宣传最简单的消息/信号,并在 iOS 设备(CoreBluetooth)上接收它。我已经能够让 iOS 方面的工作顺利进行(与 Linux 方面相比,有大量文档),但对我来说最困难的部分是将此适配器设置为外围设备。 BlueZ 堆栈对我来说是一个可怕的谜。

编辑:经过更多挖掘,我最终偶然发现了这篇文章:树莓派蓝牙4.0连接。 这让我转向了 GATT 服务器的主题,我将继续研究这个主题。

编辑:好吧,所以我对学习的追求仍在继续。在过去的几天里,我深入研究了 hci*、sdptool 和 gatttool 工具。我已经能够将适配器设置为广告“hciconfig hci0 Leadv”。此时,我可以成功“看到”适配器,但实际上无法从中读取任何内容。我什至没有看到友好的名字。我会继续卡车运输,但一如既往,非常欢迎任何帮助/建议。

编辑:相关链接,与 iOS 相关的蓝牙 LE 的可靠概述。https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html#//apple_ref/doc/uid/TP40013257-CH1-SW1

最后编辑:大家好,此链接介绍了如何使用 Raspberry Pi + BlueZ 创建 iBeacon...http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/


插入蓝牙适配器后,运行以下命令将告诉您设备名称并给出其状态:

$ hciconfig

输出应如下所示:

hci0:    Type: BR/EDR  Bus: USB
     BD Address: 00:01:02:aa:bb:cc  ACL MTU: 1021:8  SCO MTU: 64:1
     DOWN
     RX bytes:1000 acl:0 sco:0 events:47 errors:0
     TX bytes:1072 acl:0 sco:0 commands:47 errors:0

这表明名为 hci0 的设备处于关闭状态。发出以下命令将其启动:

$ sudo hciconfig hci0 up

现在它应该看起来像:

$ hciconfig
hci0:   Type: BR/EDR  Bus: USB
     BD Address: 00:01:02:aa:bb:cc  ACL MTU: 1021:8  SCO MTU: 64:1
     UP RUNNING
     RX bytes:1000 acl:0 sco:0 events:47 errors:0
     TX bytes:1072 acl:0 sco:0 commands:47 errors:0

接下来,执行以下示例命令来配置要发送的广告数据。

$ sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00

您可以更改十六进制字节(以 1e 开头)来为您的广告发送不同的字节序列。从字面上发送“HELLO WORLD”的 ASCII 代码的方法将使用:48 45 4c 4c 4f 57 4f 52 4c 44 (EDIT:但您还必须在此消息前添加有效的标头,请参阅here.)

现在,使用以下命令激活加密狗上的广告,这将开始发送“Helo World”数据包。

$ sudo hciconfig hci0 leadv 0

EDIT:上述命令使通告的服务可连接。如果您不想允许连接,请将其更改为$ sudo hciconfig hci0 leadv 3

您还可以使用以下命令禁用广告:

$ sudo hciconfig hci0 noleadv

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 BlueZ Stack 作为外围设备(广告商) 的相关文章

  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • BLE 外设支持 Android-L 示例 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我希望有一个适用于 Android L 的 BLE 外设模式的示例 我的代码给了我奇怪的错误 即广告商太多 这没有任何意
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed

随机推荐

  • hibernate.enable_lazy_load_no_trans 不起作用

    我正在使用 JPA2 1 和 hibernate 4 3 8 并且我已配置 persistence xml 以允许延迟加载 我已经添加了
  • 3D Touch 冻结我的应用程序

    也许我的问题等于 如果轻轻触摸 力触动画会冻结 iPhone 6s 中的 peek and pop 实施中应用程序冻结 1 无 bug 的强制触摸 一个UITransitionView创建图层是为了预览我的视图控制器 它工作完美 2 用 b
  • 一个函数在内存中只存储一次吗?

    当我们在对象或全局中的任何地方定义函数时 javascript函数是否会存储在内存中一次 function alert some value obj m function alert some value 如果您定义该函数一次 并将该函数的
  • Dataproc Hive 操作员未运行存储桶中存储的 hql 文件

    我正在尝试使用气流脚本运行云存储中存在的 hql 文件 我们可以通过两个参数将路径传递给 DataprocHiveOperator 查询 gs bucketpath filename q Error occuring cannot reco
  • 如何在Android 11中调整手机屏幕中的应用程序?

    在 Android 11 之前 我已经轻松地将我的应用调整为全屏 我的旧手机的摄像头孔和基本按钮位于屏幕区域之外 我的新手机的摄像头孔和基本按钮位于屏幕区域内 经过很少的设置 我的应用程序在旧手机上全屏显示 样式 xml
  • 用分号连接字符串数组

    这是一种经常出现在我们框架的一部分中的模式 给定一个字符串数组 我们必须将所有字符串连接起来 并用分号分隔 我想知道可以用哪种优雅的方式来完成 我在我们的代码库中看到了一些变化 而且当我必须这样做时 我总是必须再次重新考虑 我目前的模式是这
  • AVUrlAsset 和 WebVTT

    在 iOS TVOS 上 是否可以从 URL 加载远程 vtt 文件并将其用作字幕轨道 同时还从 URL 加载远程 HLS 视频 而不是在 m3u8 播放列表中指定的 VTT 伪代码 AVAsset video asset AVAsset
  • 如何在编辑表单中使用 DoctrineModule\Validator\NoObjectExists - Zend Framework 2 和 Doctrine 2

    最有效的使用方法是什么DoctrineModule Validator NoObjectExistsZend Form 中的验证器也用于编辑 因为当我使用相同的表单来保存编辑的值时 这会验证对象存在并标记表单无效 几周前 我在自定义过滤器中
  • 使用 ssl 加密创建 idhttpserver

    我还不擅长使用 delphi 但是根据一些示例 我已经成功创建了不超过 10 个用户的简单 http 服务器 有两个主要问题我还不知道如何解决 验证 管理用户的正确方法 会话 主要问题是 连接必须安全 所以需要SSL加密 如何实现 我发现的
  • Mac OSx 上的 OpenCL 内核错误

    我编写了一些 OpenCL 代码 该代码在 LINUX 上运行良好 但在 Mac OSX 上失败并出现错误 有人可以帮我确定为什么会发生这些情况吗 错误后显示内核代码 我的内核使用 double 所以我在顶部有相应的编译指示 但我不知道为什
  • 样条图平滑拐角

    我在我的项目中使用 NET 框架中的图表控件 我已将图表控件添加到表单中并进行配置 如下所示 Add a new series chart1 Series Add 1 var series chart1 Series 0 series Ch
  • CDI 事件观察器处理服务器崩溃和重新启动

    我正在尝试使用服务将一个项目持久保存在数据库中 并为后续服务触发 JMS 消息以获取持久保存的项目 以便它可以处理相同的项目 此特定操作发生在单个事务中 但由于有时存在竞争条件 第二个服务无法获取相应的项目 因为它尚未持久化 我的用例非常常
  • 如何根据每次提交的日期将两个分支合并为一个分支?

    假设我有一个 git 存储库 如下所示 merge base A1 A2 A3 A4 branchA B1 B2 branchB 为了让事情变得更简单 假设分支上的提交是对 fileA 的严格修改 而分支上的提交是对 fileB 的严格修改
  • 如何一致地展平 numpy 数组?

    from numpy import array eye matrix x array 1 0 A eye 2 print A dot x prints 1 0 另一方面 B matrix 1 0 0 1 print B dot x prin
  • Google Chrome 扩展:主网页中的dispatchevent

    我的扩展内容脚本中有 从内容脚本中 我尝试在主网页上调度事件 但事件没有发送 什么也没有 为了更加确定 我在所有元素中分派事件 each function i entity console log entity entity trigger
  • c将不同长度的向量绑定到数据帧

    我有一个由两个样本组成的数据框 只有一个样本回答了有关状态焦虑的调查问卷 对于这种情况 我使用以下函数 rowSums 计算了躯体状态焦虑的向量 som lp lt rowSums sample1 c 1 7 8 10 108 na rm
  • 导入模块在 Jupyter Notebook 中有效,但在 IDLE 中无效

    我不明白我做错了什么 我上周重新安装了 Windows 之后我得到了 python 3 6 和我需要的所有库 但是当我尝试在 IDLE 中导入它们时返回错误 ModuleNotFoundError 没有名为 的模块 并且当我使用 pip 在
  • 将 Null-Object 拆箱为原始类型会导致 NullPointerException,可以吗?

    这段代码抛出了一个NullPointerException因为它被拆箱为原始类型并且Long longValue 叫做 对吗 如果您有这样的片段 那就更容易看出 long value Long null But the NullPointe
  • Mvc 4 添加带有脚手架的控制器,给出错误 -“无法检索元数据...”

    尝试添加具有 CRUD 操作和 EF 的控制器时出现以下错误 无法检索 LetLord Models Tenant 的元数据 不支持使用相同的 DbCompiledModel 针对不同类型的数据库创建上下文 相反 为正在使用的每种类型的服务
  • 使用 BlueZ Stack 作为外围设备(广告商)

    Goal 使用 BlueZ 和蓝牙 4LE 适配器创建一个外围设备 宣传 Hello World 的蓝牙等效项 我在哪里 我目前已经安装并下载了 BlueZ 堆栈 我可以使用 hci 工具来识别和查看蓝牙适配器 我已经对 hciconfig