Bluetooth 网络蓝牙错误“;关贸总协定运作未获授权”;仅在Windows上发生

Bluetooth 网络蓝牙错误“;关贸总协定运作未获授权”;仅在Windows上发生,bluetooth,bluetooth-lowenergy,bluetooth-gatt,web-bluetooth,Bluetooth,Bluetooth Lowenergy,Bluetooth Gatt,Web Bluetooth,在过去的几个月里,我一直在iOS和ChromeOS上使用网络蓝牙,没有任何问题。但是今天,我第一次尝试在Windows上运行我的一些示例,令我惊讶的是,我实现的大多数东西都不能在Windows上运行。我能够成功地连接到我的外围设备,但每当我尝试向具有自定义特征的自定义服务读取或写入任何内容时,就会出现错误“GATT操作未授权”。我试着四处看看,但没有任何关于这方面的信息 下面我举了一个最简单的例子,它只用于打开/关闭nrf52832板上的LED。只实现了一个自定义服务和一个自定义特性,其值控制L

在过去的几个月里,我一直在iOS和ChromeOS上使用网络蓝牙,没有任何问题。但是今天,我第一次尝试在Windows上运行我的一些示例,令我惊讶的是,我实现的大多数东西都不能在Windows上运行。我能够成功地连接到我的外围设备,但每当我尝试向具有自定义特征的自定义服务读取或写入任何内容时,就会出现错误“GATT操作未授权”。我试着四处看看,但没有任何关于这方面的信息

下面我举了一个最简单的例子,它只用于打开/关闭nrf52832板上的LED。只实现了一个自定义服务和一个自定义特性,其值控制LED的状态。这在Chromebook和Mac上没有任何问题,但在Windows上不起作用。下面是这个简单项目的链接,包括嵌入式代码和web应用程序。


我已经实现了两个相同的东西,一个基于Promissions,另一个基于AsyncWait,分别位于文件夹“WebApp(async)”和“WebApp(Promissions)”中。这两种实现在Mac和Cromebook上都可以正常工作,但在Windows上不行。

众所周知,在Windows上使用Web Bluetooth无法访问安全特性。在其他平台上,配对会自动进行,但在Windows上不会。存在跟踪此问题的问题:


我也坚持这一点,至于解决办法,我建议windows平台首先使用windows本身配对设备,而不是通过浏览器配对设备(作为解决办法)。不多,但希望这有帮助,至少有一点。
另外,它只能通过windows配对一次,这样PC就会记住设备,而且只要PC记住设备,您就可以通过浏览器配对。

您需要授权吗?如果是,请尝试将其删除,然后重试。顺便说一句,回购协议缺少嵌入的代码,因此我自己无法看到。嵌入的代码位于打开链接时看到的另一个文件夹中。我可以通过将嵌入代码中的权限从SECMODE_ENC_NO_MITM更改为SECMODE_OPEN来解决这个问题。然而,我仍然不明白为什么这个问题只发生在Windows上?Mac和Linux只是忽略了这个设置吗?我还没有找到任何关于BLE权限是什么以及协议如何使用它们的解释。我怀疑ChromeOs和iOS会自动与设备配对(即加密连接和交换密钥),而Windows要求您明确地这样做。不确定是不是这样,但这可以解释你所看到的。北欧有一个很好的教程重新CCCD:我想更多可能正在进行。这个bug可能是相关的,但不是完全相同的东西。这个特定的bug是针对期望PIN响应的安全字符集的。我看到了一些类似于问题描述的东西,这可能是一个全新的错误,需要向chromium人员报告。如果您可以在crbug.com上提交一个问题,那么这将对我们非常有帮助,特别是如果您包括重现该问题的nRF板的代码。我知道我们办公室里有一些这样的设备(目前由于新冠病毒-19而关闭,这会让事情变慢)。我试过了,但在使用windows蓝牙扫描仪时看不到我们的BLE设备,尽管它显示在Chrome扫描仪中。