问题标签 [bluetooth-peripheral]

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 投票
1 回答
7431 浏览

bluetooth-lowenergy - 使用 HCITool 宣传蓝牙 LE 服务

我正在尝试在我的 Linux 计算机上创建一个低功耗蓝牙外围设备(目标是通过蓝牙从 iPhone 发送数据)。我目前正在使用工具hciconfighcitoolhcidump

我目前的实验是宣传具有特定 UUID 的服务,iOS CoreBluetooth 库将获取该服务。(注意:我不是要创建 iBeacon)。

现在,它实际上就像困扰我的一个单一命令一样简单。

我认为它应该做的是:

  • 0x08:将组设置为 BLE
  • 0x0008:将命令设置为 HCI_LE_Set_Advertising_Data

  • 0x15:将Header中的有效字节长度设置为21。(标志包为3字节,服务结构为18字节)
  • 0x02:将标志结构的长度设置为 2 字节
  • 0x01:将结构类型设置为 AD 标志
  • 0x1a:标志值:

    /li>

(标志结束)

  • 0x11 设置服务结构长度为17字节
  • 0x07 设置结构类型为128位完整服务UUID列表
  • 0x41 ... 0x50 将测试服务的 UUID 设置为 ABCDEFGHIJKLMNOP

据我所见hcidump,它执行正确并且看起来像我想要的那样。但它被错误拒绝:

我花了一整天的时间试图让它正确。有技术的人看到我做错了吗?这是宣传服务的正确方式吗?

(感兴趣的读者的上下文:我已经成功地完成了我想要使用 NodeJs 中的 Bleno 库做的事情。但是,这不适合我们系统的大局。直接使用 HCITool 进行广告只是为了实验,将编写稍后在 Python 中)

0 投票
1 回答
707 浏览

bluetooth-lowenergy - 支持 Android 5 BLE 外设模式的智能手表

哪些 Android Wear 智能手表返回 true 以进行以下检查:

?

在 stackoverflow(支持 Android 5 BLE 外围模式的芯片组/设备)上,只有 Android 智能手机和平板电脑的列表。

编辑:华硕 ZenWatch 2 返回 false。

0 投票
1 回答
176 浏览

ios - 重启后连接蓝牙外设

重启手机后,我尝试重新连接外围设备。

我正在使用位置更新回调在后台启动 BLE 连接过程。ble 堆栈在后台正确初始化(已发送 CBCentralManagerStatePoweredOn 事件)

外围设备上的“连接”已启动,但未建立连接...

重启后重新连接设备有什么想法吗?

0 投票
0 回答
1165 浏览

android - 当中央发现服务、特征和描述符被广告时,Android 作为 BLE 外围设备不显示 CCCD 描述符

当我的中央设备尝试发现服务、特征及其描述符时,一切都很好,但是当中央设备尝试在客户端配置特征描述符中搜索具有通知属性的特征时,却找不到它。

这就是我描述我的特点的方式:

我的描述符:

将描述符添加到特征

请从嗅探器中查看此图像,表明中央设备尝试查找类型为“0x2902”的描述符,但此后没有回复

嗅探器截图

而其他特征和服务被发现很好

服务和特征嗅探器截图

谁能让我知道为什么会这样?使用 Nexus5X 作为 BLE 外围设备时,是否有人发现任何此类问题?

0 投票
1 回答
248 浏览

ios - 我可以实现一个 iOS 应用程序来充当 BLE 服务吗?

我可以实现一个 iOS 应用程序来充当蓝牙低功耗服务吗?

我需要能够以编程方式定义:

  • 服务 UUID
  • 服务的特征
  • 一种更新这些值的方法
  • 一种方式来定义用户权限的特性:读/写/通知
  • 一种定义服务传输 (TX) 功率的方法

如果您能给我指出一个好的演示/示例以开始使用,甚至分享一些代码片段,这样它就可以成为 iOS 文档的一部分,我将不胜感激。

0 投票
1 回答
9521 浏览

android - 如何使用 GattServer 以编程方式清除蓝牙缓存

我对 BLE 有点熟悉,我在继承代码方面遇到了一些问题。所以这个应用程序是这样工作的:

  1. 启用 BLE 后,应用程序会扫描设备
  2. 该应用程序显示找到的设备
  3. 用户选择要配对的设备
  4. 应用程序与设备配对

我面临的问题是,在配对多次(它会有所不同)后,手机无法发现设备,从而阻止用户配对。

我正在使用 GattServer 连接客户端设备,并且正在重置服务,如下所示:

重新启动手机,关闭蓝牙然后重新打开,卸载并安装应用程序都无法解决问题。唯一的解决方案是从 Android 应用程序管理器上的蓝牙共享应用程序中清除缓存。

这篇文章如何在不使用缓存地址的情况下在 Android 上以编程方式强制蓝牙低能耗服务发现类似的问题,但由于我们没有使用 BluetoothGatt 进行连接,因此它不是一个合适的解决方案。两者都不会重构整个继承的代码。

我在问你是否有办法使用 BluetoothGattServer 以编程方式清除缓存。

0 投票
0 回答
1751 浏览

android - 小米 BLE 配对仅适用于调试

我们基于Nordic nRF51蓝牙低功耗芯片开发设备,whitch作为外设模式,并且有android应用,whitch作为蓝牙中枢。应用程序开始广告,我们的设备与手机配对(出现要求 PIN 码的弹出对话框)。

我们在某些手机上遇到了非常奇怪的问题,尤其是在小米手机上(我使用的是小米红米 Note 3 Pro):蓝牙配对只有在手机连接到 ADB 时才能正常工作:

  1. 我在没有连接手机的 USB 数据线的情况下开始做广告
  2. 出现 PIN 码对话框
  3. 我输入有效的 PIN 码
  4. 我可以看到蓝牙对已创建,但设备停止通信并在蓝牙对创建后立即断开连接。

如果我将 USB 线插入手机以在 Android Studio 中查看 logcat,一切正常 - 蓝牙配对工作正常,设备可以与手机进行通信!此问题仅在某些型号的手机中出现。我还尝试在 Android Studio 中修改“发布”设置以禁用优化并在发布版本中添加错误信息,但这并没有解决问题。

Logcat(配对正常):

可能有某种方法可以在应用程序中显示 logcat,而无需在没有 USB 的情况下进行 ADB 连接,或者我错过了日志中的某些内容。

我也不明白这一行: GKI_timer_update no work to be done when expected work

0 投票
0 回答
184 浏览

ios - 关闭应用程序的jetsam标准

我有一个 iOS 应用程序连接到外围设备,因此在后台运行。有时当内存不足的情况下,jetsam 决定关闭我的应用程序,即使根据 jetsam 日志它不是最大的运行进程。到目前为止,我的应用程序没有收到任何内存警告,因此甚至无法通过释放资源来响应此类事件。

首先,我想知道由于内存不足事件是否有关闭应用程序的任何标准。

其次,日志中的键是什么?例如状态键 - 它是否代表进程的当前状态,即当它被挂起时,是否意味着应用程序已被 jetsam 关闭?或者这可能是应用程序的状态,无论低内存事件如何

可以关闭多个进程吗?因为当我查看所有 JSON 时,只有一个进程具有 killDelta 键,而且它并不总是碰巧是最大的,即使这样我也可以看到有几个进程被挂起,这再次意味着不仅有一个被关闭?

我会很感激任何帮助谢谢

0 投票
0 回答
406 浏览

android - 支持 Android BLE 外设模式的设备

本文的更新,因为文章中提到的许多设备不再可用...

有什么方法可以在不购买平板的情况下判断是否支持BLE外设模式?

Android Beacon Library ”已经有 18 个月没有更新了,所以它很快就过时了。

0 投票
1 回答
885 浏览

android - Android BLE 外设模式:未检测到自定义特征

我正在尝试在 Sony SmartWatch 3 上实现 BluetoothGattServer。

我可以成功地打开 Gatt 服务器以及做广告。

使用BLE Scanner 应用程序,在发现我的自定义服务及其自定义特征时,我得到了不一致的结果。

  1. 在三星 Galaxy Note 8 - Android 4.4 - 我可以正确检测到自定义服务和自定义特征;
  2. 在 Nexus 7 - Android 5.0.1 - 我可以检测到我的自定义服务,但只有一个带有奇怪 UUID 的特征:00000000-0000-1000-8000-00805f9b34fb
  3. 在三星 Galaxy Note 8 上 - CynaogenMod Marshmallow - 与 Nexus 7 相同。

这是我在 Wear 设备上运行的代码:

我还尝试使用来自https://www.uuidgenerator.net/的自定义生成的 UUID,但这样做更糟糕:要么我不能在包含名称的情况下做广告,要么如果我不包含名称,那么 BLE Scanner 应用程序将无法拾取我在所有设备上的定制服务。

我究竟做错了什么 ?