0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
配置
连接低功耗蓝牙 (BLE) 设备并浏览完整的 GATT 树:服务、特征、描述符以及设备提供的数值,例如电量或厂商、型号和固件信息。全部过程只发生在你的设备与该设备之间。
可选设备
完整 UUID 或 16 位标识符,用逗号分隔。标准服务已自动请求

工作原理

把浏览器连接到低功耗蓝牙设备,并展示完整的 GATT 树:每个主服务、它包含的特征、每个特征支持的操作(读取、写入、通知或指示)以及关联的描述符,标准元素还会同时显示 128 位 UUID 和 16 位短标识符。

可读的数值会自动读取,并按照 Bluetooth SIG 规范解析:电量以百分比显示,Device Information 服务显示为厂商、型号、序列号以及固件、硬件和软件版本,PnP ID 显示为厂商与产品标识符对。没有定义含义的内容则以文本、数字或十六进制转储显示。

你还可以订阅会发送通知的特征,实时观察数值变化——心率、温度或计数器——并把整个遍历结果导出为 JSON。本工具只读取,绝不向设备写入。所有通信都通过 Web Bluetooth API 在你的设备与外设之间进行,不会发送到任何服务器。

示例

0x180F → 0x2A195B → 91 %Battery 服务只用一个字节表示剩余电量,因此 0x5B 相当于 91 %。
0x180A → 0x2A50 (PnP ID)USB Implementers Forum · VID 0x046D · PID 0xC52B · v1.0.0PnP ID 使用与 USB 相同的编码标识厂商和产品,因此可以在 usb.ids 目录中查询。
6e400001-b5a3-f393-e0a9-e50e24dcca9eNordic UART Service128 位 UUID 属于厂商自定义服务;其中最常见的,例如 Nordic 的串口服务,会显示名称。

使用场景

  • 无需安装厂商应用,即可查看传感器、体重秤或可穿戴设备的剩余电量。
  • 在升级设备或申请保修前,查看它的型号、序列号和固件版本。
  • 在固件开发过程中,验证外设是否以正确的属性广播预期的服务和特征。
  • 找出厂商自定义特征的 UUID,以便在自己的应用中使用。
  • 当某个应用收不到数据时,实时确认通知是否到达以及到达的频率。
  • 把设备完整的 GATT 树导出为 JSON,作为报告附件留档。

常见问题

为什么在我的 iPhone 或 Firefox 上无法使用?

Web Bluetooth API 只在基于 Chromium 的浏览器中实现——Chrome、Edge 和 Opera——支持 Windows、macOS、Linux、ChromeOS 和 Android。Firefox 与 Safari 没有实现它;在 iOS 上所有浏览器都使用系统内核,因此同样不可用。此外还需要 HTTPS,并且设备的蓝牙必须已开启。

设备已开机,但没有出现在列表中。

通常有三个原因:外设已经连接到其他应用或其他电脑,因而停止广播;它没有进入可被发现模式,很多设备需要长按按钮才能开启;或者所选的筛选条件太窄。请改用显示附近全部设备的选项,并把设备靠近一些。

为什么我看到的服务比原生应用少?

网页只能看到连接之前已经申请过的服务,因此本工具会申请全部标准服务,并允许你补充已知的厂商自定义 UUID。此外,浏览器还维护一份出于安全考虑的服务黑名单——其中包括人机接口设备 (HID) 和固件更新服务——任何网页都无法读取。

特征的各项属性是什么意思?

“读取”表示随时都可以请求该数值。“写入”和“无响应写入”表示设备接受接收数据,区别在于是否需要确认。“通知”和“指示”表示由设备在数值变化时主动发送;区别在于指示需要客户端确认,因此更慢但更可靠。

为什么有些元素的 UUID 很短,有些却非常长?

像 0x180F 或 0x2A19 这样的 16 位标识符由 Bluetooth SIG 保留,在规范中有明确含义,因此工具会显示它们的官方名称。128 位 UUID 属于厂商:只有厂商自己的应用知道其中内容,不过这里仍会以文本、数字或十六进制显示。

这个工具会向设备写入或修改任何内容吗?

不会。它只读取数值,并按你的选择启用通知,而订阅通知并不会修改设备的配置。它从不向特征写入,因此不会让外设进入意外状态。

设备数据会离开我的电脑吗?

不会。连接由浏览器通过你电脑的蓝牙适配器完成,读取到的任何数值都不会发送到服务器。权限由你在浏览器的选择器中逐个设备授予,并且可以随时撤销。