“bluetoothctl info”列出的 UUID 是什么?

“bluetoothctl info”列出的 UUID 是什么?

当我运行时,bluetoothctl info它会显示有关我已连接的 COWIN E9 耳机的信息,

Device REDACTED (public)
    Name: COWIN E9
    Alias: COWIN E9
    Class: 0x00240418
    Icon: audio-card
    Paired: yes
    Trusted: yes
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Vendor specific           (REDACTED)
    UUID: Serial Port               (REDACTED)
    UUID: Headset                   (REDACTED)
    UUID: Audio Sink                (REDACTED)
    UUID: A/V Remote Control Target (REDACTED)
    UUID: Advanced Audio Distribu.. (REDACTED)
    UUID: A/V Remote Control        (REDACTED)
    UUID: Handsfree                 (REDACTED)
    UUID: PnP Information           (REDACTED)
    UUID: Generic Access Profile    (REDACTED)
    UUID: Generic Attribute Profile (REDACTED)
    UUID: Battery Service           (REDACTED)
    UUID: Google                    (REDACTED)
    Modalias: bluetooth:REDACTED

为什么这款耳机有一个UUID: Google,这些 UUID 有何用途?为什么一款耳机需要这么多唯一标识符?这些是由耳机上的蓝牙控制器提供的吗?

答案1

蓝牙 UUID 涵盖完全不同的用途。 16 位 UUID 的范围保留用于

  • 协议标识符(例如:HTTP 为 0x000C)
  • 服务类别和配置文件(例如:0x1108 表示耳机)
  • GATT 服务(例如:0x180F 表示电池)
  • 单位(对于我的业务,​​蓝牙传感器,例如:0x272F 表示摄氏度)
  • GATT 特征和对象类型(例如:0x2A1C 用于温度测量)
  • 蓝牙 SIG 成员(例如:0xFCF1 和 Google 的其他成员。当然,并不是每个成员都有自己的 UUID,我们没有,您通常也不需要它。其他人有一堆 UUID。)

还有一些我不关心的。

因此,这些 UUID 具有完全不同的含义,但都服务于一个目的:互操作性。在握手设备上交换 UUID 以相互了解。当我们的仪器搜索温度传感器时,它可以扫描所有支持它的设备,而不仅仅是我们自己的传感器。

并非每个耳机都支持远程控制或电池服务,因此 UUID 有助于了解您的应用程序对特定设备的期望。

这对于蓝牙SIG的认证也起到了重要的作用。您必须证明您正确支持您宣传的所有协议。

答案2

您发布了几个相关问题。

这些 UUID 有何用途?
它们用于识别类型、服务和配置文件蓝牙特别兴趣小组 (Bluetooth SIG)定义并指定。请注意,UUID 是 128 位。 为了效率,并且由于 16 字节将占用链路层 27 字节数据有效负载长度的很大一部分,因此BLE(蓝牙低功耗)规范添加了两种额外的缩短的 UUID 格式:16 位和 32 位。

为什么一款耳机需要这么多唯一标识符?
因为它有很多服务。 UUID 不是标识符设备(您可能的猜测,问题的来源)。

这些是由耳机上的蓝牙控制器提供的吗?
是的。

为什么这款耳机有一个 UUID:Google?
这可能与谷歌快速配对服务,但我不确定。

查看完整列表这里

有关的:

  1. https://www.bluetooth.com/specations/signed-numbers/
  2. https://stackoverflow.com/questions/13964342/android-how-do-bluetooth-uuids-work

相关内容