不遵守关于 UUID 的蓝牙低功耗标准是否违法
Is it illegal to not follow bluetooth low energy standards regarding UUIDs
- 我可以在广告数据包中有任何 16-bit/32-bit UUID 用于类似过滤目的吗?
- 连接后的服务发现中是否必须要有广告包中列出的服务 UUID 列表才能使用?
- 我可以让标准的 GATT 服务在广告数据包中包含不相关的服务数据吗?
- 可以使用自定义制造商 ID 和数据制作制造数据吗?
- 我在哪里可以找到这些问题的商业和非商业目的的合法性?
我想在 android/iOS 和开发板上制作一个 BLE 服务器,但我找不到说明这些标准合法性的相关资源。
要查看的相关来源是蓝牙核心规范补充 (CSS),您可以在此处找到:https://www.bluetooth.com/specifications/bluetooth-core-specification/。
如您所见,它的指定非常松散。核心规范也没有对不同的 AD 类型说太多。
规范在描述中说 "The Service UUID data type is used to include a list of Service or Service Class UUIDs." 然后规范描述了不同格式的 16/32/128 位 UUID,不完整或完整列表。除此之外,规范没有说明这个列表来自哪里或它代表什么。然而,它在一个地方使用了公式 "If a device has no Service UUIDs of a certain size, ..." 。尽管规范说“16 位和 32 位 UUID 只能在蓝牙 SIG 分配时使用”,因此您不能选择任何未分配的 16 位或 32 位 UUID。所以不,你不能随便选择任何随机的 16 位或 32 位 UUID,它必须是分配的。
如 1. 规范中没有说明应该公布哪个列表。但众所周知,它应该代表设备的 GATT 数据库中存在的 GATT 服务列表。
"Service Data" 的规范非常简短。描述由一句话组成:"The Service Data data type consists of a service UUID with the data associated with that service"。对于数据格式,它表示数据由 UUID 后跟 "additional service data" 组成。在这里,又是常识(我猜?),关联数据必须由特定服务的规范定义。例如,Cycling Power Service 定义数据如下:"Cycling Power Service UUID followed by the Cycling Power Measurement characteristic value"。因此,通常关联的服务数据由启用了广播 属性 的特征的特征值组成。
如果严格遵守 CSS(逐字逐句),您可能会争辩说可以使用与 GATT 数据库中不同的服务 UUID 列表。您还可以争辩说,制造商可以在服务数据记录中放入自己的 "associated data" 服务。我会说这些是可能的解释,但这不是编写规范的人的意图。
"Manufacturer Specific Data" 的规范有以下描述:"The Manufacturer Specific data type is used for manufacturer specific data. The first two data octets shall contain a company identifier from Assigned Numbers. The interpretation of any other octets within the data shall be defined by the manufacturer specified by the company identifier." 这意味着您不能 "steal" 另一家公司的标识符并使用您定义的数据格式。
请注意,蓝牙比智能手机时代要古老得多。最初,每个实施蓝牙的人都是为了销售使用蓝牙技术的产品(耳机、扬声器、电话)。直到今天,在制作蓝牙"product"时,您需要成为蓝牙 SIG 会员(它是免费的,但只有公司才能成为蓝牙 SIG 会员)并且当您在您需要的产品上使用任何蓝牙商标时使其合格并在 Bluetooth SIG 上列出。您可以在 https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/ what actions and enforcements are taken if you fail to qualify a product. To qualify a product, you must follow the spec. There is a full test suite for qualification that you must pass. I'm pretty sure though it wouldn't catch if you use the wrong service list or "steal" a manufacturer's company id in manufacturer data. Developing software apps that run on already Bluetooth qualified smartphones is something that Bluetooth SIG hasn't thought of in my opinion. They have an option of qualifying as a "GATT-based Profile Client (app)" that costs 0 (https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/qualification-listing-fees/) 阅读,但这显然不适合您,因为您实现了服务器配置文件。到目前为止,我还没有听说过任何人完成了此应用程序资格认证。所以对我来说,我不太清楚应该如何对待智能手机应用程序。
最后的想法是每个人都应该遵循规范以确保不同产品之间的适当互操作性。
对于您的特定情况,如果您只想最小化广告数据,只需从蓝牙 SIG(免费)请求公司 ID 并使用制造商特定数据。
- 我可以在广告数据包中有任何 16-bit/32-bit UUID 用于类似过滤目的吗?
- 连接后的服务发现中是否必须要有广告包中列出的服务 UUID 列表才能使用?
- 我可以让标准的 GATT 服务在广告数据包中包含不相关的服务数据吗?
- 可以使用自定义制造商 ID 和数据制作制造数据吗?
- 我在哪里可以找到这些问题的商业和非商业目的的合法性?
我想在 android/iOS 和开发板上制作一个 BLE 服务器,但我找不到说明这些标准合法性的相关资源。
要查看的相关来源是蓝牙核心规范补充 (CSS),您可以在此处找到:https://www.bluetooth.com/specifications/bluetooth-core-specification/。
如您所见,它的指定非常松散。核心规范也没有对不同的 AD 类型说太多。
规范在描述中说 "The Service UUID data type is used to include a list of Service or Service Class UUIDs." 然后规范描述了不同格式的 16/32/128 位 UUID,不完整或完整列表。除此之外,规范没有说明这个列表来自哪里或它代表什么。然而,它在一个地方使用了公式 "If a device has no Service UUIDs of a certain size, ..." 。尽管规范说“16 位和 32 位 UUID 只能在蓝牙 SIG 分配时使用”,因此您不能选择任何未分配的 16 位或 32 位 UUID。所以不,你不能随便选择任何随机的 16 位或 32 位 UUID,它必须是分配的。
如 1. 规范中没有说明应该公布哪个列表。但众所周知,它应该代表设备的 GATT 数据库中存在的 GATT 服务列表。
"Service Data" 的规范非常简短。描述由一句话组成:"The Service Data data type consists of a service UUID with the data associated with that service"。对于数据格式,它表示数据由 UUID 后跟 "additional service data" 组成。在这里,又是常识(我猜?),关联数据必须由特定服务的规范定义。例如,Cycling Power Service 定义数据如下:"Cycling Power Service UUID followed by the Cycling Power Measurement characteristic value"。因此,通常关联的服务数据由启用了广播 属性 的特征的特征值组成。
如果严格遵守 CSS(逐字逐句),您可能会争辩说可以使用与 GATT 数据库中不同的服务 UUID 列表。您还可以争辩说,制造商可以在服务数据记录中放入自己的 "associated data" 服务。我会说这些是可能的解释,但这不是编写规范的人的意图。
"Manufacturer Specific Data" 的规范有以下描述:"The Manufacturer Specific data type is used for manufacturer specific data. The first two data octets shall contain a company identifier from Assigned Numbers. The interpretation of any other octets within the data shall be defined by the manufacturer specified by the company identifier." 这意味着您不能 "steal" 另一家公司的标识符并使用您定义的数据格式。
请注意,蓝牙比智能手机时代要古老得多。最初,每个实施蓝牙的人都是为了销售使用蓝牙技术的产品(耳机、扬声器、电话)。直到今天,在制作蓝牙"product"时,您需要成为蓝牙 SIG 会员(它是免费的,但只有公司才能成为蓝牙 SIG 会员)并且当您在您需要的产品上使用任何蓝牙商标时使其合格并在 Bluetooth SIG 上列出。您可以在 https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/ what actions and enforcements are taken if you fail to qualify a product. To qualify a product, you must follow the spec. There is a full test suite for qualification that you must pass. I'm pretty sure though it wouldn't catch if you use the wrong service list or "steal" a manufacturer's company id in manufacturer data. Developing software apps that run on already Bluetooth qualified smartphones is something that Bluetooth SIG hasn't thought of in my opinion. They have an option of qualifying as a "GATT-based Profile Client (app)" that costs 0 (https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/qualification-listing-fees/) 阅读,但这显然不适合您,因为您实现了服务器配置文件。到目前为止,我还没有听说过任何人完成了此应用程序资格认证。所以对我来说,我不太清楚应该如何对待智能手机应用程序。
最后的想法是每个人都应该遵循规范以确保不同产品之间的适当互操作性。
对于您的特定情况,如果您只想最小化广告数据,只需从蓝牙 SIG(免费)请求公司 ID 并使用制造商特定数据。