蓝牙 IAP(iAP)协议简介
iAP(iPod Accessory Protocol)是 Apple 定义的一个专有协议,主要用于 Apple 设备(如 iPhone、iPad、iPod)与外部配件之间的通信。
iAP 协议最初是通过 USB 物理接口 实现的,后来扩展到通过 蓝牙(Bluetooth) 进行无线通信。
🌐 iAP 协议版本演变
协议版本 | 引入时间 | 传输方式 | 主要应用 |
---|---|---|---|
iAP1 | 2004 年 | USB(30-pin 接口) | 音频对接,控制指令 |
iAP2 | 2012 年 | 蓝牙、Wi-Fi、Lightning | CarPlay、音频设备、智能配件 |
🔎 iAP1(iPod Accessory Protocol 1)
- iAP1 是最初用于 iPod 的通信协议
- 主要使用 串行通信(UART/USB) 实现
- 常用于音频、设备控制、元数据传输(如曲目信息)
🔎 iAP2(iPod Accessory Protocol 2)
iAP2 是对 iAP1 的重大升级,增加了以下特性:
✅ 支持无线连接(Bluetooth/Wi-Fi)
✅ 增强的元数据传输(如封面、歌词)
✅ 提供更高效的命令集
✅ 引入 MFi(Made for iPhone) 认证机制
✅ 可用于 CarPlay、蓝牙音频设备、车载系统、智能家居设备等
📡 iAP2 协议传输方式
iAP2 主要通过以下传输方式来实现设备连接和数据传输:
1. USB
- 通过 Lightning 或 USB 连接
- iOS 设备与配件直接通过物理接口通信
2. Bluetooth(蓝牙)
iAP2 通过以下两种蓝牙协议传输:
- ✅ RFCOMM(串口仿真) → iAP2 通信协议的主要承载方式
- ✅ L2CAP → 用于更高效的底层数据传输
3. Wi-Fi
- iAP2 也可以通过 Wi-Fi 建立无线连接
- 主要用于大数据传输和高性能设备(如 CarPlay)
🌉 iAP2 连接建立流程(基于 Bluetooth)
① 配对与绑定
acl 建立连接
- 使用蓝牙标准配对方式进行设备发现和配对
② SDP(Service Discovery Protocol)发现 iAP 服务
- 通过 SDP 协议在 iOS 设备和配件之间发现 iAP 服务
- SDP 记录中标识 iAP 通道号(RFCOMM 通道)
③ RFCOMM 连接建立
- 使用 RFCOMM 建立点对点连接
- 设备使用指定的 RFCOMM 通道号进行通信
④ iAP2 握手
- 设备与 iOS 设备之间通过 iAP2 协议进行握手
- 握手过程包括设备认证、MFi 配置、协议协商等
⑤ 传输数据
- 通过 iAP2 定义的命令集和数据结构传输数据
- 设备可以发送播放状态、曲目信息、控制指令等
⑥ 断开连接
- 设备或 iOS 设备主动关闭 RFCOMM 连接
iap 协议通过 rfcomm 连接,会将 carplay 需要的 认证信息 传递完成。 此时 iap 就断开了。 由于要连接 carplay, 所以车机此时没有连接 hfp 和 a2dp 所以这里没有多余的 acl 链路, 此时 手机就 将 acl 断开了。
注意整个 carplay 过程中, 刚开始只需要 借助蓝牙 iap 协议来完成和手机直接的认证, 认证完后,就结束了。 此后,就开始使用 wifi 链路来 传输 carplay. 之后就没有蓝牙任何事情了。
🧩 iAP2 协议框架
iAP2 的通信数据包结构如下:
字段 | 大小 | 描述 |
---|---|---|
Packet Length | 2 Bytes | 整个数据包长度 |
Packet ID | 2 Bytes | 数据包 ID(唯一标识) |
Session ID | 1 Byte | 会话 ID |
Opcode | 1 Byte | 操作码(表示命令或响应) |
Payload | N Bytes | 负载数据 |
Checksum | 1 Byte | 校验位(确保数据完整性) |
🔑 iAP2 常见操作指令(Opcode)
Opcode | 说明 | 用途 |
---|---|---|
0x00 | 开始会话 | 建立通信 |
0x01 | 关闭会话 | 结束通信 |
0x02 | 发送数据 | 传输数据 |
0x03 | 设备认证 | MFi 认证 |
0x04 | 设备控制 | 控制播放、暂停等 |
0x05 | 状态更新 | 设备状态上报 |
0x06 | 元数据传输 | 发送曲目信息、封面等 |
🎯 iAP2 MFi 认证机制
MFi(Made for iPhone/iPad) 是 Apple 的官方认证机制,iAP2 设备需要通过 MFi 认证:
✅ 认证芯片(Apple Authentication Coprocessor)
✅ 安全握手(通过认证芯片校验身份)
✅ 设备配置文件(包括协议版本、功能声明等)
🚗 iAP2 在 CarPlay 中的应用
iAP2 是 CarPlay 的底层协议支持之一。
在 CarPlay 连接中,iAP2 的作用包括:
✅ 建立与汽车系统的连接
✅ 传输导航、音频、控制等数据
✅ 支持触控、语音控制、方向盘控制等
💡 iAP2 使用场景
✅ 车载系统(CarPlay)
✅ 无线音频设备(蓝牙音箱、耳机)
✅ 家庭娱乐系统(Apple TV)
✅ 智能配件(HomeKit)
✅ 医疗设备(蓝牙血压计、体重秤等)