问题标签 [bluez]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
53451 浏览

linux - 在 linux 命令行中使用蓝牙低功耗

我正在研究在 Linux 上使用蓝牙低功耗调制解调器。我正在为此使用命令行选项,即hcitool. 我可以使用以下命令找到设备:$ hcitool scan

它对我来说工作正常,我也可以使用以下方式广播我的设备:

它也工作正常。但是我想将服务和特性添加到其他设备可以检测到的调制解调器设备中。我已经尝试过sdptool add,但它对我不起作用。有谁知道如何使用 ubuntu 中的命令行工具将服务和特性添加到外围设备?

编辑:我的调制解调器正在广播,但无法探索其他 BLE 设备的服务和特性。现在我可以使用设置设备名称hcio name command

编辑:现在我可以通过同时运行sudo hcidump命令来呈现服务和特征。但我无法追踪我从哪里获得这些服务和特征。一个明确的观察结果是那些服务是从机器提供的。

0 投票
0 回答
2085 浏览

c - linux上蓝牙连接的c程序

我想在 上编写 c 程序,Linux它将通过 扫描附近的设备Bluetooth,而不是用户选择一个设备,然后程序与所选设备连接。

所以我从:this开始。

我已经安装了bluez-utilslibbluetooth-dev 和 bluez-hcidump。`

simplescan.c上面链接中的程序可以工作并在屏幕上打印设备的地址。rfcomm-client程序可以工作,但它只连接到我的手机片刻,而不是打印消息"connection refused",我曾经system(bluetooth-agent xxx)设置过密码。rfcomm-server.c程序刚刚启动,什么也不做。

我有最后一个版本,ubuntu(13.04) and kernel(3.8.0-26)并尝试了我在这个网站上发现的类似问题的所有建议,但没有任何效果。

问题是,在我开始之前,我的手机正在使用PCvia Bluetooth,使用 system Bluetooth,现在这也不起作用。我知道C编程,但对 Ubuntu 很陌生。我希望有人可以帮助我或将我引导到可以提供帮助的页面。

谢谢

编辑:我决定使用 hci 命令:使用 hci_get_route() 和 hci_open_dev() 打开套接字。现在必须使用 hci_create_connection() 进行连接,但我不知道 ptype、rswitch 和 *handle 必须是什么。这些值是什么以及从哪里获得它们?

0 投票
1 回答
2774 浏览

bluetooth - bluez 同时具有经典和低能耗设备

Linux下的bluez是否可以同时连接多个经典低功耗设备?bluez 网站提供这样的信息并不是很有帮助。

0 投票
1 回答
4041 浏览

linux - 无法获得对 dbus-send 的任何回复

我正在尝试创建一些脚本来在嵌入式 Arch linux 平台上发现和配对蓝牙设备,但似乎无法获得对 dbus-send 命令的任何回复。

错误消息几乎总是相同的(方法不存在),但是发送的语法似乎是正确的。

我已经在这里搜索并搜索了正确的语法和错误,但找不到任何解决方案。

Bluez 已安装,我可以使用 hcitool 和 bluetoothctl 实用程序手动发现和配对设备,但是该方法不适用于最终用户,我需要为他们创建一个 Web 界面来执行发现和配对。

似乎 dbus 是执行此操作的首选方法,因为 bluetoothctl 不接受命令行参数来允许它配对设备地址。

任何帮助/建议将不胜感激。

0 投票
2 回答
826 浏览

c++ - 套接字客户端使用服务器接受的连接发送

客户端使用服务器接受的相同连接发送数据是否正确?

情况是这样的,我的 PC 上运行着蓝牙服务器,而另一方面,我有带有客户端和服务器的 android 手机。从android端客户端开始连接。我正在使用来自 android 示例的蓝牙聊天示例。

android上的服务器客户端看起来像

在 PC 端,我使用Bluez库来实现服务器和客户端。
该代码包括蓝牙接收线程和一个主线程,每当服务器接受来自android手机的连接时,我只需将套接字值分配给全局变量,并且每当客户端需要发送数据时,它使用同一个套接字发送,

服务器:-

客户:-

My question is, Is it a right method ? The problem is that some times the client send data successfully from PC but not receiving on android side.

0 投票
1 回答
1548 浏览

c++ - Qt 中的 Dbus org.bluez 实现

我开始在 Qt 中使用 DBus 和蓝牙。我想开发一个脚本,它只会通过 DBus 调用方法并得到回复。代码的一部分在这里(实际上是主要部分):

interface.lastError() 给出以下错误:

QDBusError("org.freedesktop.DBus.Error.ServiceUnknown", "名称 org.bluez 不是由任何 .service 文件提供的")

我安装了 bluez 和 dbus。我可以通过命令搜索蓝牙设备。

我还尝试了命令 sudo bluetoothd -d -n 我得到了这个:D-Bus setup failed: Name already in use bluetoothd[21952]: Unable to get on D-Bus

有谁知道可能是什么问题?

0 投票
1 回答
6887 浏览

bluetooth - 如何使用 Bluez 发送低功耗蓝牙 GATT 通知?

我在 Bluez 源中扩展 plugin/gatt_example.c 以尝试 BLE 通知功能但没有成功。我正在使用 Bluez 源中包含的示例电池服务。它具有 1 个具有 READ 和 NOTIFY 属性的特征。我添加 dbus 方法来调用 attrib_db_update() 以从蓝牙守护程序外部更新特征值。

现在,我可以连接哪个客户端(Nexus4 与 Android 4.3 和 iPhone(LightBlue 免费应用程序))并启动通知(设置描述符 CCC 通知标志)。(注意:ccc描述符char有默认的auth权限,所以从iPhone修改CCC(start notify)会使bluez返回error: not authorize permission。由于我打算稍后处理授权,所以我暂时将默认权限更改为none ,并且 iPhone 能够设置 CCC 通知标志)。

问题是即使客户端(Android 或 iOS)已经开始通知,调用 attrib_db_update() 也不会让 bluez 向客户端发送任何通知(使用 hcidump 进行监控,没有数据包发送到客户端)。

问题:除了 attrib_db_update() 是否需要任何步骤来使 bluez 向客户端发送通知?我感谢任何指向示例源的链接。PS。我使用 bluez 作为外围设备 + gatt 服务器配置(就像 plugin/gatt_example.c 中的电池服务一样),反之亦然。

谢谢。

=== 更新(我不知道评论格式是如何工作的......所以我在这里添加更新。)
关于个人资料/警报示例:
是的,我已经在提问之前检查了个人资料/警报。另一个问题是我无法运行这些样本(这是我首先提出问题的一个原因)。
profile/alert/server.c: attio_connected_cb() 是一个回调函数,由 server.c 中的 filter_devices_notify() 注册。它使用 btd_device_add_attio_callback() (来自 src/device.c)。进一步检查 src/device.c,看起来它检查 device->attrib 是否存在执行(先插入队列然后执行回调)回调或只是插入队列直到设备连接?
调试它,即使我已经连接了设备,它看起来 device->attrib 是空的。

对于那些有兴趣运行/调试示例警报配置文件的人(因为没有文档 :( )。
注释掉以下 if (大约第 564 行),我们对这些检查不感兴趣......

运行蓝牙:例如。bluetoothd -n -d -p alert
连接你的设备直到 startNotify

从其他控制台注册警报:

创建新警报:

我得到了以下蓝牙的日志:

备忘:在 device.c 中添加一些调试输出。似乎 device->attrib 是空的。并且自动连接(为什么 gatt 服务器/外围设备必须连接到中央?)由于未知原因而失败。

0 投票
1 回答
1707 浏览

c++ - 如何使用 D-Bus 获取设备名称?

我在 Linux 上用 C++ 开发了一个应用程序,它与蓝牙设备(例如蓝牙插座或扬声器)交互。我使用 D-Bus 命令获取配对设备列表:

dbus-send --system --dest=org.bluez --print-reply $BTADAPTER org.bluez.Adapter.ListDevices

它返回:

这很棒,但我不仅需要 MAC,还需要设备名称(例如“linvor”或“GT-I9300”)。

请帮助我以正确的方式获取这些名称。

0 投票
2 回答
6132 浏览

ubuntu - 在 Ubuntu 上与蓝牙 OBDII 设备配对有困难

我正在尝试与运行 Ubuntu Linux 的 Beaglebone Black 的汽车 OBDII 蓝牙设备配对,但运气不佳。

最初,我能够使用 bluez-simple-agent 设置 hci0,尽管它从未要求我输入 PIN。此设备的 PIN 应该是“1234”。现在,当我运行 bluez-simple-agent 时,我得到了这个:

如果它可以正常工作,那会很好,但是当我尝试使用 rfcomm 进行绑定时,我反复收到“无法连接 RFCOMM 套接字:无效交换”(重新启动设备后的第一次),然后是“无法连接 RFCOMM 套接字:连接被拒绝”之后每次。

这是我的 /etc/bluetooth/rfcomm.conf 文件:

并且运行“rfcomm bind 0”确实成功地在 /dev/rfcomm0 创建了一个设备:

但是,尝试从 /dev/rfcomm0 读取数据时,我得到了以下信息:

此后,rfcomm 返回:

我想我根据“sdptool 记录”的结果使用了正确的频道 (16)

任何帮助将不胜感激,因为此时我完全没有想法。

参考:

0 投票
2 回答
4380 浏览

c - BlueZ 的替代品?

在一天的大部分时间里,我一直试图让 BlueZ 在我的 Ubuntu 桌面上工作。它只是行不通。我可以通过系统对话成功地将我的设备与我的计算机配对,但 BlueZ 扫描从未找到任何东西。BlueZ 有替代品吗?如果设备已经配对,有没有办法在没有 BlueZ 的情况下操作蓝牙设备?

为了更好地衡量,这是我一直在运行的代码(http://people.csail.mit.edu/albert/bluez-intro/c404.html#simplescan.c):