天道酬勤,学无止境

bluetooth

Bluez 5 Unknown Connection Identifier

问题 我有一个运行最新 Raspbian 的 Raspberry Pi 3,并且我已经从 5.23 升级了 bluez。 到 5.43。 我正在尝试连接以 2 秒间隔发布的 BLE 设备。 我基于 gatttool 编写了一些代码并尝试连接到这些设备。 我遇到 LE 连接请求在 2 秒后被取消。 因此,我收到状态为 0x02(未知连接标识符)的 LE 连接完成消息 根据我的研究,我在大约 15 个月前的档案中遇到了这个问题, https://www.spinics.net/lists/linux-bluetooth/msg65434.html 但是,在跟踪线程之后,我没有看到是否找到了解决方案。 我已经使用我的代码、gatttool 实用程序以及使用 bluetoothctl 进行了测试。 我在 btmon 中看到了下面列出的相同类型的活动: HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 [hci0] 21:45:51.917070 Type: Passive (0x00) Interval: 60.000 msec (0x0060) Window: 30.000 msec (0x0030) Own address type: Public (0x00) Filter policy: Ignore not in

2022-05-16 18:00:24    分类:技术分享    linux   bluetooth   bluez

Open source implementations of BLE stack

问题 回答1 有几个开源 BLE 堆栈:- NimBLE - Apache mynewt 的蓝牙低功耗堆栈。 BTstack -BlueKitchen 的蓝牙堆栈。 Zephyr - 资源受限系统的小型内核。 smallTooth - 仅限 PIC,但可能适用于 ARM。 Blessed - 针对嵌入式裸机设备的 BLE 堆栈(仅限 nrf51)。 我希望这有帮助。 回答2 我在产品中使用了 NimBLE,即 Apache Mynewt 蓝牙堆栈。 它在 Nordic NRF51 和 NRF52 芯片上工作得非常好,而且是可移植的,所以看起来移植到其他平台上并不难。 代码很好很干净。 Mynewt 还带有安全启动和软件升级功能。 几个链接: http://mynewt.apache.org/latest/network/ble/ble_intro/ https://www.youtube.com/watch?v=LCmwTWLcVBs 希望这可以帮助。 回答3

2022-05-16 05:20:03    分类:技术分享    bluetooth   bluetooth-lowenergy   bluez   android-ble

An extensive project: Streaming audio from microphone to Android device

问题 我想从蓝牙麦克风获取音频输入并将其大声流式传输——如扩音器或简单的 PA 系统——并实时广播。 为此,我使用了 AudioRecord 和 AudioTrack 类——因为 MediaRecorder 和 MediaPlayer 写入和读取外部文件,我可以想象这会比必要的延迟音频更多(这是真的吗?)。 我已经放弃了使用任何蓝牙类的想法,因为 Android API 不支持 Android 设备作为 Source/Sink 场景中的 Sink(至少现在还不支持),然后需要对 Android 库进行本机编程(这是也是真的,对吧?) 现在。 该应用程序正在运行,但延迟太长,并且该应用程序应该是实时播放音频。 我的第一个问题是:AudioRecord/AudioTrack 是否适合此目的(通过蓝牙麦克风将音频流式传输到设备扬声器并实时大声播放)? 如果是这样:我怎样才能减少音频的延迟,以便它实时从麦克风流式传输音频? 这里列出了整个代码,所以请帮助自己: 在 Manifest 中,需要获得录制音频的权限。 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 我有一个专用的类,它扩展了一个用于处理音频的线程: public class AudioStreamer extends Thread { /**

2022-05-15 16:01:17    分类:技术分享    android   bluetooth   audio-streaming   android-bluetooth   android-audiorecord

How does BLE parameter negotiation work?

问题 我想知道当“中央”和“外围”设置不同的参数时,参数协商如何工作。 我可能弄错了,但据我了解,外围设备在连接时会发出更新请求,以便为连接设置参数。 然后中央决定是否批准。 我不明白的是如何决定这些参数是否被批准。 而且我还没有找到任何代码。 例如,如果我有以下设置(只是选择随机值): Central:间隔 10 毫秒,从属延迟 0,监督超时 500 外设:间隔 50ms,Slave 延迟 10,supervisortimeout 3000 我如何确定我的外围参数将被使用或它们被批准的标准是什么? 如果有人能给出一个很好的解释,我将非常感激。 回答1 Central 为所欲为,Peripheral 必须遵守参数,否则断开连接。 外围可以询问中央规定的其他参数,但没有任何内容表明它们必须获得批准。 来自 Central 的验收标准是多种约束条件的组合: 规范性(这些是恒定的和全球性的), 特定于实现,大多数时候,它们依赖于外围类型/实现的服务(Apple 明确定义了一些,例如(参见 3.6)), 动态的(如果 Central 同时管理多个连接,它可能更喜欢以它们各自的间隔是公共基础的倍数的方式安排它们。 在开发外设时,您无法判断是否会使用您喜欢的连接参数。 你必须应付它。 而且,有些中心会以固定参数连接,在连接后立即发出连接参数更新,然后枚举服务并做出决定

2022-05-15 12:06:10    分类:技术分享    bluetooth   embedded   bluetooth-lowenergy

UWP (c#): Main Loop (Event loop)

问题 背景:我对 C# 和 UWP 比较陌生,并开始开发应用程序以学习基础知识。 我试图寻找一个我认为是一个非常基本的问题的答案,但我找不到一个(可能是我的错)。 所以,我正在制作的应用程序连接到一个蓝牙设备,它可以传输一些数据。 第一个“查看页面”是蓝牙设备选择,然后它切换到我要做其他所有事情的主页面。 我有事件处理程序来处理传入的流数据并处理/存储它。 但是,我希望运行一个“主循环”,它将对数据进行一些必要的操作。 话虽如此,我真的不知道该怎么做。 我想到的一种方法是使用下面的方法,它是从类构造函数中调用的。 但我不确定这是最好的方法。 async void MainLoop() { while (true) { //do stuff await Task.Delay(TimeSpan.FromSeconds(X)); } }

2022-05-15 11:18:04    分类:技术分享    c#   loops   bluetooth   uwp

Xamarin Android Bluetooth Socket Connection fails

问题 我正在尝试创建一个示例 Xamarin Android 应用程序以通过蓝牙连接设备。 当我尝试连接蓝牙插座时出现以下错误 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00084] in /Users/builder/data/lanes/3819/96c7ba6c/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:11643

2022-05-15 10:46:03    分类:技术分享    android   sockets   xamarin   bluetooth   connection

ios swift 3 - printer bluetooth

问题 我正在尝试使用打印机创建一个通过蓝牙打印的应用程序 在 xcode 上,我可以连接打印机,还可以查看服务和 uuid,但问题是当我尝试查看服务的特性时,我发现 nil 有人知道这个问题吗? func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { for service in peripheral.services! { print("Service \(service)\n") print("Discovering Characteristics for Service : \(service.uuid)") print(service.characteristics) } } override func viewDidLoad() { super.viewDidLoad() centralManager = CBCentralManager(delegate: self, queue: nil) } func centralManagerDidUpdateState(_ central: CBCentralManager) { if #available(iOS 10.0, *){ switch (central.state) { case CBManagerState

2022-05-15 09:39:10    分类:技术分享    ios   swift   printing   bluetooth

Swift CoreBluetooth: Should CentralManager run in a separate thread?

问题 现在我在主线程中运行所有东西,到目前为止,我只注意到很多次 UI 有点滞后。 我想知道 utilizint CoreBluetooth 库关于并发的一般做法是什么? 您能否提供一些示例,如果有的话,应该在其他队列中运行什么? 我对蓝牙的使用: 我扫描两个外围设备,通过发送适当的值作为 CBPeripheralManager 来控制它们,以使它们开始从 IMU 发送数据(50Hz/100Hz 取决于值)。 我从标签同步和规范化数据,并使用流媒体将它们写入文件。 传输完成后,我通过按钮触发相关操作手动发送数据文件。 我的代码 class BluetoothTagController: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate, CBPeripheralManagerDelegate{ static let sharedInstance = BluetoothTagController() var transferCharacteristic:CBMutableCharacteristic! var centralManager : CBCentralManager! var sensorTagPeripheral : CBPeripheral! var synchronizer

2022-05-15 07:24:16    分类:技术分享    ios   swift   multithreading   bluetooth   core-bluetooth

AT commands to hm10 over bluetooth with android

问题 回答1

2022-05-15 02:25:26    分类:技术分享    android   bluetooth   bluetooth-lowenergy   at-command   hm-10

Android BLE: "Scan failed, reason app registration failed for UUID"

问题 我正在使用RxAndroidBle库开发一个应用程序,该库大约每 30 秒定期执行 BLE 扫描,并且每分钟左右执行一些 BLE 操作。 几个小时后,通常在 5 到 24 小时之间,扫描停止工作。 每次应该开始扫描时,我都会得到: 09-05 09:08:37.160 8160-8160/myapp D/BluetoothAdapter: startLeScan(): null 09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON 09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON 09-05 09:08:37.165 8160-8160/myapp D/BluetoothLeScanner: Start Scan 09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON 09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON 09-05 09:08:37.170 8160-8160/myapp D/BluetoothAdapter: STATE_ON 09-05 09:08:37.170

2022-05-14 23:39:28    分类:技术分享    android   bluetooth   bluetooth-lowenergy   android-bluetooth   rxandroidble