UWP C# 低功耗蓝牙:多个并发连接不起作用

问题描述

在我的 UWP Windows 10 应用程序中,我使用 Window.Devices.Bluetooth 扫描并连接到内部低功耗蓝牙设备。以下是用于连接的代码示例(内部设备的 mac 地址已知) 使用以下两个 API 的测试应用程序:

 using Windows.Devices.Bluetooth;
 using Windows.Devices.Bluetooth.GenericAttributeProfile;
 var bleDevice = BluetoothLEDevice.FromBluetoothAddressAsync
 var services = bleDevice.GetGattServicesAsync

对于多个设备广告,API GetGattServicesAsync 适用于第一个设备,但在第一个设备仍处于连接状态时尝试连接时返回“无法访问”状态。我们看到首先连接的任一设备的行为都相同。

类似的功能过去运行良好,但不适用于最新版本的 Windows 和 SDK(Windows 10 21H1,SDK 目标 19041,SDK 最低 17134)。

我是否缺少某些配置或不再支持功能。最小示例的源代码可在此处获得: https://drive.google.com/open?id=1SMU1LE6LJIxxvsj3MdLpHZJfJOUsd3vB

谢谢

解决方法

原来是联想 P52 笔记本电脑上的 BT 驱动程序有问题。该问题最初是通过使用外部 CSR4.0 加密狗而不是内部 BT 解决的。并且在最近的 Windows 更新到英特尔无线蓝牙驱动程序 v22.50.0.4 之后,多个连接也再次在内部 BT 上工作。