在 Android 中为低功耗蓝牙实现 Internet 协议支持配置文件 (IPSP)
Posted
技术标签:
【中文标题】在 Android 中为低功耗蓝牙实现 Internet 协议支持配置文件 (IPSP)【英文标题】:Implementing Internet Protocol Support Profile (IPSP) for Bluetooth Low Energy in Android 【发布时间】:2015-07-01 21:43:23 【问题描述】:蓝牙 4.1 引入了 Internet 协议支持配置文件,该配置文件“提议支持通过低功耗蓝牙传输在设备之间交换 IPv6 数据包”。此配置文件绕过常规 GAP 和 GATT 协议,直接进入 L2CAP 层。它定义了“节点”和“路由器”角色。这将如何在 android 端实现?
file:///Users/shreyashirday/Downloads/INT_IP_Support_Profile_SPEC_V1.0.0%20(1).pdf 这对于概述很有用,但我什至不确定当前的 Android 是否可以支持。
【问题讨论】:
【参考方案1】:我也很好奇某些 Android 设备是否已经支持此功能。
关于配置文件,了解它的最佳方式是以下 2 个 RFC:
https://www.rfc-editor.org/rfc/rfc4944
https://www.rfc-editor.org/rfc/rfc7668
第一个描述了 6LoWPAN - IPv6 over low power networks。第二个描述了 6LoWPAN 如何专门通过蓝牙 LE 实现。 Bluetooth SIG IPSP 规范对实现细节很轻,只是为这两个 RFC 中的细节提供了框架。
目前可用的两种实现似乎是在 Linux v. 3.18 或更高版本上运行的 BlueZ,以及 Nordic Semiconductor nRF52 开发板。如果有更多可用的实现,我想听听。
【讨论】:
【参考方案2】:由于 IPSP 需要基于 L2CAP Credit 的流控制模式,也称为 LE 数据通道,因此在 Android 的蓝牙堆栈中对此的支持是强制性的。不久前 blueZ 就支持它。
在这种情况下,可能存在对堆栈具有低级访问权限的内部实现。如果没有,Android 将需要在更高级别的 Java API 中支持它。
因此,最好的办法是获取/找到可以运行 blueZ 的 Android 设备。在那里,如果没有完成,IPSP 至少在工作中,参见例如https://github.com/NordicSemiconductor/Linux-ble-6lowpan-joiner/blob/master/readme.md
【讨论】:
以上是关于在 Android 中为低功耗蓝牙实现 Internet 协议支持配置文件 (IPSP)的主要内容,如果未能解决你的问题,请参考以下文章
Android BLE低功耗蓝牙开发极简系列(二)之读写操作