问题标签 [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 投票
3 回答
1716 浏览

c++ - Qt C++ BlueZ 5 QDbus 库

在 BlueZ 5 中,DBus API 发生了很大变化。我之前有一个基于此的 BlueZ 4 的工作 QDbus 控制器库:https ://gitorious.org/qt-bluez-demos/

我一直在谷歌搜索,找不到任何现有的起点来将我的 BlueZ 4 库转换为 BlueZ 5。

注意:我使用的是 Qt 4.8,但似乎 Qt 5.0 有一些 QBluetooth 命名空间,但它还没有针对 BlueZ 5 进行更新:

该库也仅限 BlueZ 4:

任何人都可以指出一些现有的代码吗?谢谢!

0 投票
1 回答
490 浏览

linux - 如何重建bluez

如何重建bluez?可能吗?例如,假设我想更改 avctp.c 中的某些内容。我从他们的网站下载了最新的 bluez 版本并进行了我需要的更改。现在,我如何使更改生效;即我需要做什么来重建蓝牙?

注意:我使用的是 Ubuntu 12.04

0 投票
1 回答
4392 浏览

android - 如何使用 bluez API 扫描低功耗蓝牙设备

我是使用 BlueZ 编程低功耗蓝牙的新手。

我想开发一个本机代码 c 来使用 Android 4.0.3 下的蓝牙低功耗 BlueZ API 扫描附近的设备。

有人知道我应该使用哪种 BlueZ 方法吗?

0 投票
1 回答
912 浏览

android - 使用bluez在android下移植BLE

我是新的 bluez 用户,我正在尝试使用 bluez API 并使用 NDK 开发本机代码 c,以使 android 4.0.3 支持 BLE 我阅读了 Bluez 的代码源,但我找不到确切的功能我应该像连接到 GATT 一样使用吗?任何帮助将不胜感激。

谢谢!

0 投票
1 回答
3625 浏览

android - 无法连接到蓝牙/BlueZ 服务器:无法创建 RFCOMM 套接字

我正在尝试在我的 Linux 笔记本电脑和 Android 手机之间创建一个简单且自定义的蓝牙连接。在 Linux 方面,我使用 BlueZ libbluetooth 库来设置服务器。它的代码与我在 github 上看到的其他代码非常相似:

我能够在 Linux 中运行服务器端代码而不会出错:

然后我可以sdptool用来查看我的 RFCOMM 套接字和服务(描述、通道号和所有其他信息看起来都正确):

现在,在 Android 方面,我首先通过标准设置屏幕将手机与 Linux 服务器配对。配对后,我会使用 Android 端的代码来扫描蓝牙设备,如果它是我的 Linux 设备,那么我会尝试连接到它。我尝试了人们在堆栈溢出时建议的两种不同方法来建立连接:

tmp.connect()当我实际尝试调用时,我不断收到以下异常:

有没有人看到我在这里尝试创建连接时做错了什么?请注意,当我调用时,我确实得到了一个返回的 UUID UUID uuid = device.getUuids()[0].getUuid();...这让我相信配对是好的,它返回 value 00001103-0000-1000-8000-00805f9b34fb

0 投票
1 回答
1166 浏览

dbus - Bluez(蓝牙)在连接时没有发送 DBUS method_call SelectConfiguration 吗?如果是这样,我该如何抓住它?

更新:尚未解决,但解决方案的一部分。见下文。

我正在尝试通过蓝牙将我的 iPod 或其他智能设备连接到我的笔记本电脑(Kubuntu 13.10),并将 a2dp 编码的音乐流式传输到蓝牙扬声器。别介意我为什么不直接连接它们。我在让设备实际配对然后同时连接时遇到了很多麻烦,但现在我能够做到这一点。有一百万篇文章描述了通过更改 .asoundrc、/etc/bluetooth/audio.conf 以及通过 PulseAudio 的控制器加载环回模块来连接 BT 耳机的不同方法。但是,我永远无法让 PulseAudio 始终加载源和接收器,所以我放弃了这个想法并开始关注 James B 的这篇精彩文章:http: //jamesbond3142.no-ip.org/blog/ ?viewCat=Bluetooth

我得到了编译的代码。它使用(更新的?)用于 BlueZ 的 DBus API。按照他的指示,我能够将音乐导入或导出 a2dp“服务器”,但没有声音。在代码中,他等待两个 DBUS 方法调用 SelectConfiguration 和 SetConfiguration 以获得“传输”,我认为这是一个句柄或文件描述符,描述了音频应该去往/来自哪里。但是,这些事件的处理程序永远不会被调用。我使用本指南设置 dbus-monitor 在系统总线上监听这些调用:https ://wiki.ubuntu.com/DebuggingDBus 。但是,方法调用不显示。再一次,我尝试在系统总线上收听任何方法调用,并且有一些在我知道正在调用的 dbus-monitor 中没有显示。(即注册端点)

我看到来自 org.bluez 的信号,但没有方法调用。在详细模式下运行 bluetoothd 时,当我连接设备时,我会得到类似的结果:

bluetoothd[12118]: 音频/a2dp.c:setup_ref() 0x7f9e8ffbdac0: ref=2 bluetoothd[12118]: audio/avdtp.c:avdtp_set_configuration() 0x7f9e8ffd03f0: int_seid=1, acp_seid=1 bluetoothd[12118]: 音频/a2dp .c:setup_unref() 0x7f9e8ffbdac0: ref=1 bluetoothd[12118]: audio/avdtp.c:session_cb() bluetoothd[12118]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION 请求成功 bluetoothd[12118]: audio/a2dp .c:setconf_cfm() 源 0x7f9e8ffa4600: Set_Configuration_Cfm bluetoothd[12118]: audio/avdtp.c:avdtp_sep_set_state() 流状态已更改:IDLE -> CONFIGURED bluetoothd[12118]: audio/avdtp.c:session_cb() bluetoothd[12118] : audio/avdtp.c:avdtp_parse_resp() OPEN 请求成功

但在另一篇文章中,我看到有人有这个:

bluetoothd[8315]: 音频/a2dp.c:setup_ref() 0x7f1f8300b000: ref=2 bluetoothd[8315]: audio/avdtp.c:avdtp_set_configuration() 0x7f1f83012250: int_seid=2, acp_seid=1 bluetoothd[8315]: 音频/a2dp .c:setup_unref() 0x7f1f8300b000: ref=1 bluetoothd[8315]: audio/avdtp.c:session_cb() bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() SET_CONFIGURATION 请求成功 bluetoothd[8315]: audio/a2dp .c:setconf_cfm() Sink 0x7f1f82fc3210: Set_Configuration_Cfm bluetoothd[8315]: audio/media.c:media_endpoint_async_call() 调用 SetConfiguration: name = :1.65 path = /MediaEndpoint/A2DPSink

bluetoothd[8315]: audio/avdtp.c:avdtp_sep_set_state() 流状态改变:IDLE -> CONFIGURED bluetoothd[8315]: audio/avdtp.c:session_cb() bluetoothd[8315]: audio/avdtp.c:avdtp_parse_resp() OPEN 请求成功

此时我有两个理论:1)当我的设备连接时,BlueZ 没有将它发送到我正在观看的总线 2)我没有正确观看(是否还需要使用 dbus_bus_add_match () 添加 method_calls ?)

我很难相信第二个,因为 James B 的代码为他工作,而我没有修改它。我正在使用 bluez 4.101 版。(我认为和他一样)很难找到 BlueZ 调用这些方法的确切条件。

当我启动程序时,我的 syslog 会这样说:

bluetoothd[8519]:端点注册:发送方=:1.166 path=/MediaEndpoint/A2DPSource

并在程序退出时取消注册。

目前我想不出要添加的其他细节,但如果我没有提供足够的信息,我很高兴。提前致谢。

更新 有点尴​​尬,但我今天绞尽脑汁想为什么 LINUX 系统不会获得文件句柄......嗯......所以我将sudo附加到程序调用(James B 的 a2dp-alsa 程序)并且它起作用了。至少对于输入设备。输出(BT 扬声器)仍然没有任何结果,但我会尽快弄清楚并在此处发布结果。

我在哪里收集我的菜鸟徽章?:(

0 投票
3 回答
16325 浏览

linux - 如何从 iBeacon / BLE 检索广告负载

如何在 Linux 中检索蓝牙 LE 发射器的广告负载?

具体来说,我已经使用 hcitool 配置了 arduino 和 R-PI 以充当 iBeacons。

我正在寻找的是一个命令来打印出设备的当前广告有效负载。

0 投票
1 回答
635 浏览

iphone - 使用 bluez 5.17 将 iPhone 与 Ubuntu 配对

我正在使用图形界面查找 iPhone 和我的笔记本电脑并将其配对。在 iPhone 上我可以看到 6 位数字,但在 ubuntu bluez 界面上我看不到。当我使用 hcidump 观察蓝牙流量时,我可以看到以下内容: 在发送确认号码的请求后,我的计算机似乎收到了来自 iPhone 的否定回复,因此退出了配对过程。

我在我的计算机上编译了 bluez-tools 以使用“btmgmt pair”进行配对,这会导致完全相同的错误。使用 bluez-simple-agent 也可以。

如果你能帮助我,我会很高兴!

0 投票
1 回答
5057 浏览

python - 使用 PyBluez 编写 HID 服务

需要使用 PyBluez 在 Linux 上模拟 HID 设备。我有一个 HID 设备(我将模拟它)。 sdptool browse命令向我显示它提供以下服务

所以我需要用python创建一个与此等效的服务。问题是它完全忽略Service class ID list了我提供的内容。

这是代码:

现在我sdptool使用另一个蓝牙适配器运行,这就是我看到的

服务类别 ID 列表在哪里?

根据本书(第 65 页),它应该在那里,但事实并非如此。

这里也是 HCI 配置

我很乐意在这方面得到任何帮助。书籍、文档、示例......任何可能有助于模拟 HID 设备的东西。

** 更新 **

看起来我在连接级别上也有问题。我的 HID 主机在配对后会自动断开连接。

通常是否有可能使我的蓝牙适配器表现得像 HID 设备?如何?

0 投票
1 回答
2740 浏览

c++ - C++:使用迭代器遍历 DBUS 消息以查找 BlueZ 5 适配器

我正在尝试使用 BlueZ 5 更新的 Dbus API 查找可用的蓝牙适配器。

与 BlueZ 4 不同,BlueZ 4 有一个专门用于此的方法(即 org.bluez.Manager.FindAdapter()),BlueZ 5 使用 FreeDesktop ObjectManager 接口和 GetManagedObjects() 方法。此方法返回一个非常大的结果数组:

BlueZ 5 API Intro and Porting Guide说,“默认适配器的概念总是有点模糊,并且值无法更改,因此如果应用程序需要类似的东西,他们可以例如选择他们遇到的第一个适配器GetManagedObjects 回复。

我已经使用迭代器编写了 C++ 代码来执行此操作(我没有使用 Python 的经验),但是对于看起来如此简单的事情来说真的很长:

换句话说,我必须为树的每个分支定义一个新的迭代器,只是为了每次都找到一个位于固定位置的字符串。(array[x]->secondfield[2]->firstfieldstring) 我的问题(最后,我知道)是有人能指出一个更优雅/更快的解决方案吗?