低功耗蓝牙:Android Gatt 客户端连接到 Linux Gatt 服务器

2024-02-02

我尝试通过蓝牙低功耗 GATT 模式将 android 连接到 linux。

Bluez中有一个示例代码:btgatt-server.c http://code.metager.de/source/xref/linux/bluetooth/bluez/tools/btgatt-server.c?r=61a4a47df67fcc8fd71d1acda28ee2b28219ffa0,我用它作为服务器。

Android 端如下Android官方示例:连接到GATT服务器 https://developer.android.com/guide/topics/connectivity/bluetooth-le.html。即,使用函数BluetoothDevice::connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback)。

运行后,Android部分返回连接成功(BluetoothGattCallback::onConnectionStateChange参数为STATE_CONNECTED),但linux中的程序(btgatt-server)没有得到任何响应,仍然阻塞在等待接受。 (第 485 行)。

我还使用了另一个示例代码:l2cap-ble.c https://github.com/sandeepmistry/noble/blob/master/src/l2cap-ble.c,结果完全一样。

有人可以帮助我吗?我的目标是:连接后,linux gatt 服务器将向 Android 发送数据。然后断开连接。

非常感谢。


我刚刚面临同样的问题。

这似乎是 Android 和 Broadcom 蓝牙模块发生的错误。 Android 以某种方式连接到错误的 l2cap 通道。

解决方法是明确禁用 BR/EDR广告中的支持。

google 上的 bug 报告和 #8 的解决方案可以找到here https://code.google.com/p/android/issues/detail?id=58896#c8,引用对我有帮助的提示:

我已从 Broadcom 获得了有关此错误的信息,但我认为这不是他们的错误。如果未在通告中专门设置“BR/EDR 不支持”位(位 2),则 Broadcom 堆栈将使用 BR/EDR 和 BTLE。 将领先的广告包从 020102 更改为 020106 解决了该问题。

使用蓝色btmgmt为了在设备 hci0 上配置广告,我发出以下命令:

btmgmt -i hci0 power off 
btmgmt -i hci0 le on
btmgmt -i hci0 connectable on
btmgmt -i hci0 bredr off        # Disables BR/EDR !
btmgmt -i hci0 advertising on
btmgmt -i hci0 power on

启动 bluez btgatt-server 示例:

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

低功耗蓝牙:Android Gatt 客户端连接到 Linux Gatt 服务器 的相关文章

  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • 从 WP8 连接至 Polar H7 心率监测器

    有没有办法从 Windows Phone 8 连接到低功耗蓝牙设备 例如心率监测器 例如 Polar H7 我尝试过的一些背景 我看过这个 Windows 8 的示例 http code msdn microsoft com windows
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im

随机推荐

  • 以编程方式从 Yahoo! 获取联系人地址簿[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何开始使用 MS-Build

    我希望开始使用 MS Build 到目前为止 我有很多手动构建的项目 从 Visual Studio 我想自动化构建过程 并且最好是在我不想安装 Visual Studio 的机器上进行 我开始在 MSDN 上阅读有关 MS Build 的
  • Actor 系统无响应:ThreadPoolExecutor 调度程序仅创建核心线程池,显然忽略最大线程池大小

    更新 我发现如果我设置ThreadPoolExecutor s核心池大小与最大池大小相同 29 个线程 但是 如果我将核心池大小设置为 11 最大池大小设置为 29 那么 Actor 系统只会创建 11 个线程 我该如何配置ActorSys
  • Laravel 服务提供商不受合同约束

    我有以下由服务提供商绑定的合同 接口 但是我收到以下错误 RouteDependencyResolverTrait php 第 81 行中的 ReflectionException 类 App Http Controllers Rocket
  • MongoDB/Mongoose 索引使查询更快还是更慢?

    我有一个这样的文章模型 var ArticleSchema new Schema type String title String content String hashtags String comments type Schema Ob
  • 无法推断概念中的占位符类型

    我正在尝试使用 GCC 8 中的 Concepts TS 复制标准 C 20 概念 以便我可以在标准库中提供它们之前使用它们 我主要复制粘贴最新草稿中的所有内容 然后遇到一个问题 include
  • 将 facebook sdk 链接到 android 项目

    在 Eclipse 中创建 Android 项目并导入 facebook sdk 后 我转到 Android 应用程序的属性 选择 android 并添加 facebook sdk 然后单击 确定 然后 当我再次进入属性时 它会针对该 fa
  • 如何在Python中读取XML头

    如何在 Python 3 中读取 XML 文档的标头 理想情况下 我会使用 defusedxml 模块作为文件指出它更安全 https docs python org 3 library xml html 但在这一点上 经过几个小时的尝试弄
  • MongoDB:将数组添加到现有数组中

    我正在尝试将 Instructors 数组添加到现有的 Camps 数组中 层次结构看起来像这样 owner email email protected cdn cgi l email protection password mypassw
  • 适用于 Mac 的 Python Winsound 等效项

    我想知道是否有与在 Mac 上播放 wav 文件相当的 winsound 最好是本地进口 谢谢 正如其他模块所说的功能一样 本机导入会在这里造成麻烦 我假设您知道如何安装模块 所以我不会详细介绍 这是一个选项 Pygame sudo pip
  • Apollo GraphQL 突变(对象参数)

    所以 我正在尝试设计我的 Apollo 服务器 我想创建一个以对象作为参数的突变 这是我的架构的一个片段 它以某种方式导致了问题 我认为它在语法上是正确的 但我遇到了这个错误 errors message 预期的输入类型 您必须将 INPU
  • 小数点四舍五入到最接近的第 10 位

    需要将我的答案四舍五入到最接近的第十位 double finalPrice everyMile 2 8 DecimalFormat fmt new DecimalFormat 0 00 this answerField setText fm
  • 在 postgresql 中的列上设置“NOT NULL”是否会提高性能?

    我知道这在 MySQL 中是个好主意 如果我没记错的话 在 MySQL 中它允许索引更有效地工作 Setting NOT NULL本身对性能没有影响 检查几个周期 无关紧要 但是您可以通过实际使用 NULL 而不是虚拟值来提高性能 根据数据
  • C:从 stdin 读取,直到按 Enter 两次

    考虑一个简单的程序 它必须从 stdin 获取 5 个数字的序列并打印它们的和 没有说明将采用多少行输入 但如果换行符被采用两次 或按两次 Enter 键 则程序必须终止 例如 Input 1 1 1 1 1 2 2 2 2 2 3 3 3
  • 上传更新设置问题

    我有一个运行良好的上传表单 但我想以编程方式更改设置 但出现错误 Uploadify 在 document ready 上启动 我尝试将 updateSettings 绑定到按钮单击 也在 document ready 中完成 我还尝试在
  • MySQL:从一列中选择包含值的多行

    我想找到具有 FORD 和 SILVER 且用户在值列中输入值 200 的汽车的 car id table cars id car id name value 1 1 MAKE FORD 2 1 CARLINE FIESTA 3 1 COL
  • 如何将动态大小的纹理数组与 glTexImage2D 一起使用?

    目前 我可以加载我创建的静态大小的纹理 在本例中为 512 x 512 此代码来自标题 define TEXTURE WIDTH 512 define TEXTURE HEIGHT 512 GLubyte textureArray TEXT
  • 用于特定服务的CPU利用率%的Windows命令[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有办法从 Windows 上的脚本获取特定服务的 CPU 利用率 我知道wmic cpu get LoadPercentage将给出整个系统的 C
  • 如何在更新链末尾触发触发器?

    我有几个使用触发器相互交互的表 并且我当前处理触发器执行的方式使用pg trigger depth lt 2这很丑 我真的希望最终的触发器只运行一次 并且在所有每行的事情发生之后最后运行 很遗憾 CONSTRAINT TRIGGERs ar
  • 低功耗蓝牙:Android Gatt 客户端连接到 Linux Gatt 服务器

    我尝试通过蓝牙低功耗 GATT 模式将 android 连接到 linux Bluez中有一个示例代码 btgatt server c http code metager de source xref linux bluetooth blu