linux - QtBlueTooth 在 Linux 上不起作用

标签 linux qt bluetooth bluez

我正在开发一个使用 Qt 5.7 启用蓝牙 LE 功能的嵌入式应用程序。我正在开发的设备旨在充当外围角色,它可以广播广告包并让智能手机连接。

目标板运行 Ubuntu Linux 14.04,bluez 版本 5.43(最新)由于 Qt 文档说“在 Qt 5.7 中,支持外围角色的附加 API 作为技术预览添加,后端仅针对 Linux 实现/蓝兹。”所以,我认为 Qt 蓝牙 API 正是我所需要的。

但是当我构建并运行 Qt 蓝牙示例(蓝牙低功耗心率服务器示例和蓝牙扫描仪示例)时,它们都不起作用。我只能得到控制台输出:“qt.bluetooth:虚拟后端正在运行。Qt 蓝牙模块不起作用。”

我搜索了那个错误信息,似乎很多开发者得到这个错误信息是因为他们在windows平台上使用Qt bluetooth API,而qt bluetooth api不支持Windows。但是我使用的是 Ubuntu Linux,所以很明显出了点问题,但我不知道到底是什么导致了这个问题。

我正在尝试:

  1. 启用 QtBluetooth 日志记录。但没有比这更有趣的信息了。
  2. 不使用任何 Qt 蓝牙 API,仅使用命令行工具 hciconfig 和 hcitool 手动设置广告操作。它确实有效!我的 iPhone 可以“看到”设备,并且可以连接到它!

根据我的尝试,我认为我的硬件没问题,蓝牙芯片可以工作,但我确实需要 QtBluetooth API 才能正常工作。也许我错过了一些重要的事情? bluez 需要一些配置吗?请帮忙。

最佳答案

我遇到了同样的问题。 当我尝试为我的硬件交叉编译 Qt 框架时,蓝牙相关库显示相同的日志:

"qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional."

在我的案例中,这个问题的根本原因在于 sysroot。它没有蓝牙包含和库。这就是Qt蓝牙测试没通过的原因。

在这种情况下,我建议添加 -v 标志,这样它将显示完整的日志,并且您可以检查 Qt 测试失败的确切原因。

当我从设备上下载包含所有库的必要文件夹并将其用作 -sysroot 参数时,我的问题就解决了。测试成功通过,无需使用 @colin 建议的解决方法.

关于linux - QtBlueTooth 在 Linux 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40901662/

相关文章:

linux - Mongo 报告 AWS 上空间不足

linux - 无线路由器的管理界面

javascript - 找不到 Qt Creator 导入文件

python - PyQt5:Gtk-CRITICAL **:IA__gtk_widget_style_get:断言 'GTK_IS_WIDGET (widget)' 失败

ios - 仅广告数据与连接 BLE 设备的优势

C : Redirect child process output to other child process input and stdout

linux - 如何虚拟化 Linux 应用程序正在监听的 IP 端口?

c++ - QMainWindow 背景 : transparent not working with Qt4. 8

iphone - 将音频输出到配对的蓝牙设备?

IOS bluetoothManager私有(private)框架