天道酬勤,学无止境

Detect nearby beacons with Bluez

问题

我安装了 Bluez,我正在尝试扫描并获取附近 ibeacon 的 UUID Major、Minor 以及可能的 mac 地址。 我发现了类似的问题,它们引用了我在此处找到的脚本。 当我启动脚本时出现此错误

设置扫描参数失败:输入/输出错误

有人知道如何解决问题或有其他解决方案吗? 如果我开始使用信标进行传输,然后开始扫描,我根本没有得到任何结果,我必须中断脚本。

回答1

您应该测试 BlueZ 安装在您的 Linux 机器上是否正常工作。 尝试使用hcitool dev命令查看它是否正确列出了连接的设备。

您可能需要参考 Ubuntu 的 BlueZ 安装指南,以验证您的加密狗设置是否正确。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Detect nearby beacons with Bluez
    I installed Bluez and I am trying to scan and get UUID Major, Minor and if possible mac address for nearby ibeacon. I found similar questions and they refer to a script which I found here . When I launch the script I get this error Set scan parameters failed: Input/output error Did someone know how to solve the problem or has another solution ? If I start transmitting with the beacon and then I start the scan I get no result at all and I have to interrupt the script.
  • 如何使用像hcitool lescan这样的bluetoothctl来报告重复的邻近信标(How to use bluetoothctl like hcitool lescan to report repeated proximity beacons)
    问题 我可以使用带有 --duplicates 标志的 hcitool lescan 从两个附近的 BLE 设备捕获定期的 LE 广告报告(接近信标): $ sudo hcitool lescan --duplicates LE Scan ... C8:0F:10:29:4D:98 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4D:98 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4D:98 MI1S <snip> 这是再次扫描,添加时间戳以显示周期性: $ sudo stdbuf -i0 -o0 -e0 hcitool lescan --duplicates | perl -nle 'print scalar(localtime), " ", $_' Wed Apr 13 13:46:45 2016 LE Scan ... Wed Apr 13 13:46:46 2016 C8:0F:10:29:4E:75 MI1S Wed Apr 13 13:46:47 2016 C8:0F:10:29:4D:98 MI1S Wed Apr 13 13:46:48 2016 C8:0F:10:29:4E:75 MI1S Wed Apr 13 13:46:48 2016 C8
  • How to use bluetoothctl like hcitool lescan to report repeated proximity beacons
    I can use hcitool lescan with the --duplicates flag to capture periodic LE Advertising Reports (proximity beacons) from two nearby BLE devices: $ sudo hcitool lescan --duplicates LE Scan ... C8:0F:10:29:4D:98 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4D:98 MI1S C8:0F:10:29:4E:75 MI1S C8:0F:10:29:4D:98 MI1S <snip> Here is that scan again, with timestamps added to show the periodicity: $ sudo stdbuf -i0 -o0 -e0 hcitool lescan --duplicates | perl -nle 'print scalar(localtime), " ", $_' Wed Apr 13 13:46:45 2016 LE Scan ... Wed Apr 13 13:46:46 2016 C8:0F:10:29:4E:75 MI1S Wed
  • 谷歌是否弃用信标服务? 他们的声明模棱两可[关闭](Is Google deprecating beacon service? Their announcement is ambiguous [closed])
    问题 关闭。 此问题不符合 Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 6 个月前关闭。 改进这个问题 我看到一个声明说 Google 将终止他们的信标服务 从 12 月 6 日起,我们将停止发送 Eddystone 和 Physical Web 信标通知。 您仍然可以继续访问信标仪表板,并可以使用我们的 Proximity Beacons API 通过您自己的应用程序提供类似于 Nearby Notifications 的基于邻近度的体验。 但同时他们说 Proximity Beacon API 是低功耗蓝牙 (BLE) 信标平台的一部分,该平台还包括 Eddystone,一种来自 Google 的开放信标格式。 当 Google 停止提供 Eddystone 和物理网络信标通知时,最终用户应该在 12 月初停止遇到附近通知。 第三方开发人员仍然可以使用 Proximity Beacons API 在他们的应用程序中发送附近的警报,但它不再是普遍存在的系统级功能。 有人可以解释这对我们编写信标 Android 应用程序的意义吗? 这是否意味着在某个时候,信标应用程序将停止工作,因为设备将无法从信标设备接收信号? 回答1 更新:谷歌宣布计划在 2021 年 4 月 1 日关闭这些服务
  • 使用 Nearby Google API 查找 Eddystone Beacons(Find Eddystone Beacons using Nearby Google API)
    问题 我使用 Proximity Beacon API 将数据附加到 Eddystone Beacons。 我想使用 Nearby Messages API 获取 Beacon 附件。 我遵循了 https://developers.google.com/nearby/messages/android/get-beacon-messages 中提到的步骤。 但我无法读取 Beacon 附件。 未调用onFound()方法 回答1 检查以下... 如果 Status 为 APP_NOT_OPTED_IN ,则在响应上设置回调以订阅并调用 Status 对象上的 startResolutionForResult 。 见github示例确保您已在开发者控制台中为您的应用启用 Nearby API。 第 3 步在这里在调用中使用 Strategy.BLE_ONLY 进行订阅最后,如果这些都没有帮助,请尝试使用独立的 BLE 扫描应用程序,以确保信标确实在广播。 如果您想发布更完整的代码示例,我们的一位工程师可以查看 (我在 Nearby API 上工作) 回答2 另一个想法:确保清单中的 API 密钥来自您在将数据附加到信标时使用的同一 Google Developers Console 项目。 信标附件对于创建它们的项目是私有的。 回答3
  • 当我的应用程序未运行时,我可以收听 Eddystone 信标吗?(Can I listen for Eddystone beacons when my app is not running?)
    问题 借助 Google 的新 Eddystone 标准,他们将在 Google Play 服务 Nearby Api 中提供对 android 的支持。 我们可以注册 eddystone 信标并让我们的应用程序接收到一个意图,即使应用程序没有运行? 回答1
  • 当我的应用程序未运行时,我可以收听 Eddystone 信标吗?(Can I listen for Eddystone beacons when my app is not running?)
    问题 借助 Google 的新 Eddystone 标准,他们将在 Google Play 服务 Nearby Api 中提供对 android 的支持。 我们可以注册 eddystone 信标并让我们的应用程序接收到一个意图,即使应用程序没有运行? 回答1
  • 当我的应用程序未运行时,我可以收听 Eddystone 信标吗?(Can I listen for Eddystone beacons when my app is not running?)
    问题 借助 Google 的新 Eddystone 标准,他们将在 Google Play 服务 Nearby Api 中提供对 android 的支持。 我们可以注册 eddystone 信标并让我们的应用程序接收到一个意图,即使应用程序没有运行? 回答1
  • 当我的应用程序未运行时,我可以收听 Eddystone 信标吗?(Can I listen for Eddystone beacons when my app is not running?)
    问题 借助 Google 的新 Eddystone 标准,他们将在 Google Play 服务 Nearby Api 中提供对 android 的支持。 我们可以注册 eddystone 信标并让我们的应用程序接收到一个意图,即使应用程序没有运行? 回答1
  • 当我的应用程序未运行时,我可以收听 Eddystone 信标吗?(Can I listen for Eddystone beacons when my app is not running?)
    问题 借助 Google 的新 Eddystone 标准,他们将在 Google Play 服务 Nearby Api 中提供对 android 的支持。 我们可以注册 eddystone 信标并让我们的应用程序接收到一个意图,即使应用程序没有运行? 回答1
  • 在 Eddystone Beacon 中广播的 MAC ID 会改变吗?(Does MAC ID broadcasted in Eddystone Beacon change?)
    问题 我将描述我的设置: 我制作了一个模拟 Eddystone 信标的 android 应用程序。 我能够使用 PlayStore 的 Beacon Toy 应用程序在我的手机上检测到 Eddystone 信标。 但问题是,从我上次检查开始,显示的 MAC ID 已更改。 由于命名空间和实例 id 相同但在不同的 MacID 下,我可以识别它相同的信标。 有人可以建议这里发生了什么吗? 我的印象是 MacID 保持不变。 回答1 是的,Android 发射器会随机化其蓝牙 MAC 地址。 这不是 Eddystone 特有的,而是针对所有类型的 Android 信标发射器,更准确地说是针对 Android BLE 广告。 为了证明这一点,我在 Nexus 5X 上进行了一些测试。 使用 Locate Beacon 应用程序以 iBeacon 格式传输信标(同样的结果也适用于 Eddystone 和其他格式),我可以看到每次停止和开始广告时传输的 MAC 地址都会发生变化。 我的 Nexus 5X 在设置 -> 关于手机 -> 状态 -> 蓝牙地址中显示其蓝牙 MAC 地址。 它是64:bc:0c:xx:xx:xx (注意:我已经清除了 MAC 的最后三个特定于设备的字节,只显示前三个字节是公司 OUI 分配给 LG 电子的制造商Nexus 5X。) 对于此测试,我在配置了 BlueZ
  • 使用 android-beacon-library 检测蓝牙设备(Detect a bluetooth device using android-beacon-library)
    问题 我正在使用 android-beacon-library 来发现附近的信标,它工作正常且非常可靠。 是否可以使用相同的库来检测 Android 设备的蓝牙信号? 我找不到任何可靠的方法来发现附近的蓝牙设备,这就是我想使用这个库的原因。 回答1
  • 检查蓝牙低功耗信标是否在 Android 附近(Check if Bluetooth Low Energy Beacons are nearby in Android)
    问题 背景 我想编写一个 android 应用程序,它可以检测我是否进入或离开一个区域。 每个区域(比如一座建筑物)都有一个处于广告模式的 BLE 信标。 我确实知道信标的 mac 地址。 该应用程序应在后台运行,并应节能。 立即识别该区域并不重要,但 5 分钟的窗口就足够了。 在 http://developer.android.com/guide/topics/connectivity/bluetooth-le.html 上说你不应该“循环扫描”,但有没有其他方法来实现区域进入/离开事件? 我也对 UUID、服务和连接有点困惑。 它是正确的,这些问题不相关的我的问题? 据我从蓝牙规范中了解到,信标只能处理一个连接。 因此,如果我只对附近的信标感兴趣,我的应用程序实际上不应该连接到任何信标,因为连接将停止信标做广告,因此其他设备将不再看到它。 这样对吗? 相关问题 我想知道的似乎是一个常见的问题: 在 Android 上为低功耗蓝牙创建后台服务 Android 和 iOS 如何在没有电池问题的情况下扫描蓝牙信标? 蓝牙低功耗 Android - 在后台搜索 但大多数答案都与我不想使用的“Android iBeacon 库”有关。 回答1 即使您不确定要使用 Android iBeacon 库,查看其源代码并从中复制想法和/或代码片段可能是个好主意
  • Check if Bluetooth Low Energy Beacons are nearby in Android
    Background I want to programm an android app which can detect if I enter or leave a region. Each region (lets say a building) has a BLE Beacon in advertising mode. I do know the mac adressess of the beacons. The app shall run in background and shall be energy efficient. It is not important to recognize the region immediately, but a window of 5 minutes would be sufficient. On http://developer.android.com/guide/topics/connectivity/bluetooth-le.html its said that you should not "scan on a loop" but is there any other way to realize region enter/leave events? Also I am bit confused about UUIDs
  • 我可以在扫描附近信标的同时从我的 android 设备传输信标信号吗?(Can I transmit a beacon signal from my android device while at the same time scanning nearby beacons?)
    问题 是否可以使用充当信标的 android 设备同时发送和接收信标信号? 回答1 是的,在支持信标传输的 Android 5+ 设备上(请参阅此处的列表),您可以同时发送和接收信标传输。 您可以使用 Android Locate 应用程序查看此演示。 只需打开发射器,然后切换到定位信标。 如果您同时在两部 Android 手机上执行此操作,它们都会看到彼此的传输。 需要注意的几点: 移动设备不会检测到它自己的传输。 Android 4.3-4.4.x 设备可以接收信标传输但无法传输。 (一些较旧的 Android 4.x 设备没有蓝牙 LE,根本无法接收。) 部分 Android 5.x+ 设备没有支持传输的固件。 检查上面的列表以确保您的设备支持它。
  • Detect a bluetooth device using android-beacon-library
    I am using android-beacon-library to discover nearby Beacons and it is work fine and very reliable. Is it possible to use the same library to detect the Bluetooth signal of an Android device? I couldn't find any good reliable method to discover the nearby Bluetooth devices, that's why I want to use this library.
  • 树莓派开始,玩转Linux10:玩转蓝牙
    树莓派开始,玩转Linux10:玩转蓝牙 蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。本章介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信。树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器。、本章以树莓派3为基础,介绍蓝牙通信。 蓝牙由爱立信创制,旨在实现不同设备之间的无线连接。蓝牙无线通信的频率为2.4GHz,和Wi-Fi一样,都属于特高频。相对于低频信号来说,高频传输的速度比较快,穿透能力强,但传输距离受限。在没有遮蔽和干扰的情况下,蓝牙设备的最大通信距离能达到30米。但大多数情况下,蓝牙的实际通信距离在2到5米。相比之下,使用低频433MHz的对讲机设备,其通信距离很容易超过百米。因此,蓝牙常用于近距离的无线设备,比如无线鼠标和键盘。蓝牙的标志如图所示。蓝牙的工作流程可以分为下面三个基本步骤。 · 广播/扫描:通信的一方向外广播自己的信息,另一方通过扫描知道自己周边有哪些蓝牙设备在广播,这些设备的地址是什么,以及是否可以连接,如图所示。 · 连接:通信的一方向另一方发起连接请求,双方通过一系列的数据交换建立连接,如图所示。 · 数据通信。 根据细节上的差别,蓝牙通信又细分为两种:经典蓝牙和低功耗蓝牙。 早期的蓝牙通信方式称为经典蓝牙(Classic
  • 在Linux上以Python列出附近/可发现的蓝牙设备,包括已配对的蓝牙设备(List nearby/discoverable bluetooth devices, including already paired, in Python, on Linux)
    问题 我正在尝试使用Linux上的Python列出所有附近的/可发现的蓝牙设备,包括已经配对的蓝牙设备。 我知道如何使用其地址列出设备的服务,并且可以成功连接: services = bluetooth.find_service(address='...') 如果我不指定任何条件,则阅读PyBluez文档时,我希望附近的任何设备都会出现: “如果未指定任何条件,则返回检测到的所有附近服务的列表。” 我现在唯一需要的是能够列出已经配对的设备,无论它们是打开,关闭,附近还是不打开。 就像我在所有设置-> Ubuntu / Unity中的蓝牙中获得的列表一样。 顺便说一句,以下内容未列出本机上已配对的设备,即使它们在/附近也是如此。 可能是因为一旦配对便无法发现它们: import bluetooth for d in bluetooth.discover_devices(flush_cache=True): print d 有任何想法吗 ...? 编辑:我找到并安装了“ bluez-tools”。 bt-device --list ...给我我需要的信息,即添加设备的地址。 我检查了C语言源,发现它可能不像我想象的那么容易。 仍然不知道如何在Python中执行此操作... 编辑:我认为DBUS可能是我应该读的书。 似乎很复杂。 如果有人可以分享一些代码,我将非常高兴。 :) 回答1
  • How to detect nearby devices with Bluetooth LE in iOS 7.1 both in background and foreground?
    I have an app that needs to detect a nearby (in range for Bluetooth LE) devices running the same application and iOS 7.1. I've considered two alternatives for the detection: Having the devices act as iBeacons and detect iBeacons in range Using CoreBluetooth (like in Vicinity implementation here) to create a BLE peripheral, advertise that and scan the peripherals It seems that the option 1 is out of the question because: It may take at least 15 minutes for iOS to detect entering a beacon region when the application is running background (iOS 7.1) Option 2 seems the way to go, but there are some
  • didEnterRegion 和 didRangeBeacons 之间的区别(difference between didEnterRegion and didRangeBeacons)
    问题