核心内容摘要
探秘ISO2023标准下的“苏晶体结构”粉色视频:一场视觉与认知的双重盛宴
liwen01
2026.
0
02前言日常生活中我们用到的很多蓝牙功能都是基于蓝牙 RFCOMM 传输协议来实现比如手机与手机间通过蓝牙分享名片、短信、图片、文件等手机与车机之间的来电显示、电话接听、挂断、音量调节等蓝牙模拟串口的数据透传等对应的蓝牙/* by yours.tools - online tools website : yours.tools/zh/imagetotiff.html */ Profile配置文件有/* by yours.tools - online tools website : yours.tools/zh/imagetotiff.html */ OPP/FTPPBAP/MAP/SYNCBPP/BIPHFP/HSPSPPDUN等等它们间的层级关系如下图具体功能如下表Profile中文名称主要功能常见设备OPP对象推送文件、名片传输手机间传文件FTP文件传输访问远程文件系统手机、电脑SPP串口通信数据传输通道MCU 模块、扫描枪DUN拨号联网调制解调器上网手机 → 电脑HSP耳机基础语音通信蓝牙耳机HFP免提电话控制与语音通话车载系统PBAP电话本访问读取联系人车机MAP短信访问读/发短信车机、智能手表SYNC信息同步联系人、日历同步手机与电脑BPP基本打印蓝牙打印手机打印机BIP图像传输图片传输与控制相机、打印机这里我们只简单介绍蓝牙的串口数据透传、文件传输、通话控制。
一RFCOMM 简介RFCOMM 是金典蓝牙(BR/EDR)的一个传输层协议它是串口数据透传、文件传输、通话控制等应用功能的基础。
1RFCOMM 历史RFCOMM Radio Frequency Communication诞生于 20 世纪 90 年代末当时计算机和外设如调制解调器、打印机主要通过物理串口COM 口连接。
RFCOMM 的核心任务是在蓝牙连接之上模拟传统的 RS-232 串口Serial Port通信它是蓝牙协议栈中极为重要的一个传输层协议。
蓝牙技术联盟Bluetooth SIG在制定蓝牙 V
0 版本规范时目标之一就是电缆替代。
为了让原本基于串口工作的旧软件能无缝迁移到无线蓝牙开发者需要一种协议来模拟串口于是就有了 RFCOMM。
RFCOMM 是基于 ETSI TS
0
10 标准修改而来而 TS
0
10 是 GSM 蜂窝网络中用于在移动设备和终端之间进行多路复用串口通信的标准。
具体定义可以查看官网的《RFCOMM WITH TS
0
10》。
2RFCOMM 的技术变迁A信号模拟最初的 RFCOMM 仅实现了对 RS-232 九针串口信号如 RTS/CTS, DTR/DSR的逻辑映射。
这使得早期的蓝牙手机可以像接了串口线一样被电脑识别为一个无线调制解调器。
B基于信用的流控制最初 RFCOMM 依赖底层的 L2CAP 进行简单的流控但在高负载下容易丢包或死锁。
在蓝牙核心规范 V
1 及后续版本中引入了信用Credit机制。
发送方必须先获得接收方的信用额度才能发送数据包。
每发送一个包信用减一接收方处理完数据后再返还信用。
这极大地提高了大规模数据传输如文件传输的稳定性。
C安全性增强随着蓝牙版本从 V
1 进化到 V
x 及目前最新的 V
xRFCOMM 本身虽然结构未变但其底层的链路层引入了 SSP安全简易配对 和 AES-128 加密使得通过 RFCOMM 传输的串口数据安全性有了大幅度的提升。
3模拟串口ARFCOMM 的两种连接方式这是最常见、最标准的 蓝牙串口通信方式SPP 类两个设备都有蓝牙功能Type 1 与 Type 2二者通过 蓝牙链路BT 进行通信。
在这条链路上运行 RFCOMM 协议从而提供虚拟串口连接。
典型的应用是手机Type 1与 蓝牙 GPS 模块Type 2通过蓝牙虚拟串口传输 NMEA 数据。
这里多了一个 Device C没有蓝牙功能蓝牙设备 Type 2 在此扮演中继桥接gateway角色。
把蓝牙 RFCOMM 链路与传统的有线串口相连接。
典型的应用是电脑Type 1通过蓝牙连接到蓝牙-转-串口适配器Type 2 而该适配器再通过 RS-232 连接到一台老式工业设备Device C。
电脑看上去就像直接用串口连着那台设备一样。
ARFCOMM 串口端口号在一个会话中理论上可以支持最大60个端口号。
但是实际上大多数蓝牙受内存和调度能力限制一般只支持1 ~ 7个端口。
二数据透传1SPP 简介SPP 的全称是Serial Port Profile。
它的核心定义是如何在两个蓝牙设备之间建立仿真串口连接。
它在蓝牙链路上模拟了 RS232 控制信号使得传统的串口应用程序可以无缝迁移到蓝牙无线传输上而无需修改应用层逻辑。
2SPP 的协议栈架构SPP 是构建在RFCOMM协议之上的应用协议它依赖于RFCOMM、SDP、L2CAP的支持。
RFCOMM 层SPP 的直接承载者。
RFCOMM 在 L2CAP 之上模拟了 9 针串口信号支持多路复用即一个蓝牙链路可以跑多个虚拟串口。
SDP(Service Discovery Protocol)服务发现协议。
客户端通过查询 SDP 记录找到服务器上 SPP 服务对应的RFCOMM Server Channel(1~
。
L2CAP 层负责数据的分段与重组为 RFCOMM 提供面向连接的数据服务。
3SPP 的建立连接流程要实现两个设备间的串口通信通常需要经历以下四个阶段A查询与发现(Inquiry/Discovery)主设备Client扫描周围的蓝牙设备。
B服务发现(SDP Query)主设备向从设备Server发起 SDP 请求查询其是否含有UUID 为0x1101的服务。
从设备返回其对应的RFCOMM 通道号。
C链路建立(Connection) 主设备发起 RFCOMM 连接请求指定通道号。
此时底层会依次建立 ACL 链路和 L2CAP 通道。
D数据传输(Data Exchange)一旦 RFCOMM 通道打开两端就可以像读写本地串口文件如 Linux 下的/dev/rfcomm0一样发送原始字节流。
4SPP 与 BLE (GATT) 串口的区别在蓝牙
0 之后存在两种实现串口的方式特性经典蓝牙 SPPBLE 透传 (GATT)标准性SIG 标准定义通用性强非 SIG 标准各厂商自定义 UUID数据量适合大吞吐量、持续传输适合小包、间歇性传输功耗较高极低系统支持Android 支持iOS 不支持(需 MFi)Android、iOS 均完美支持如果你的产品需要连接 iPhone且不打算申请 Apple 的 MFi 认证那么请务必选择 BLE 透传而非 SPP。
三文件传输OBEX、OPP 与 FTPOBEX (Object Exchange) 协议最初是由红外标准组织IrDA开发的后来被蓝牙协议栈吸收。
它的设计哲学与 HTTP 非常相似采用了经典的请求-响应模型。
1OPP (Object Push Profile)轻量级推送OPP 是最基础的文件传输方式。
它的核心特点是无状态和点对点直接推送。
A核心逻辑在 OPP 中Client发送方不需要知道 Server接收方的文件系统结构。
它就像是把一张名片或一张照片扔给对方对方可以选择接收或拒绝。
B交互流程SDP 查询Client 查找 UUID 为0x1105的服务。
OBEX 连接建立临时会话。
PUT 操作Client 发送PUT请求头部携带Name和Length。
Server 弹出提示框。
如果用户点击同意Server 返回Continue (0x
Client 开始分段发送Body。
断开传输完成连接立即释放。
主要应用场景有两台手机通过蓝牙分享一张联系人名片vCard或一张图片。
2FTP (File Transfer Profile)全功能文件管理器虽然名字也叫 FTP但它和互联网上的 FTP 协议不同它是OBEX 上的 FTP。
相比 OPP它提供了完整的远程文件系统访问权限。
A核心功能核心功能有浏览目录、路径切换、多文件操作浏览目录Client 可以请求 Server 的文件夹列表。
路径切换使用SetPath操作在文件夹间跳转。
多文件操作支持连续的GET下载或DELETE删除。
B关键点Folder Listing Object当 Client 想要查看 Server 端的文件夹时Server 会返回一个特殊的XML 对象。
这个 XML 描述了当前目录下所有的文件和子文件夹信息。
folder-listingversion
0 parent-folder/ filenamereport.pdfsize102400modified20231027T103000Z/ foldernamePhotos/ /folder-listingCOPP 与 FTP 对比特性OPP (Object Push)FTP (File Transfer)UUID0x11050x1106控制力只能发送/推送无法查看对方文件可以浏览、下载、删除、创建文件夹交互复杂度低推完即断高需要维持会话进行多次操作安全性每次推送通常需要手动确认建立连接时一次性鉴权后续操作更自由典型案例手机互发一张照片电脑管理嵌入式设备的日志文件夹3OBEX 的扩展在蓝牙协议栈中有不少重要的Profile都是 OBEX 的的变种PBAP(Phone Book Access)把电话本看作一个文件进行 GET。
MAP(Message Access)把短信/邮件看作对象进行操作。
四蓝牙通话控制HSP 与 HFP1核心角色定义在通话协议中蓝牙定义了两个核心角色AG(Audio Gateway)音频网关。
通常指手机。
它是音频数据的来源也是连接移动网络的网关。
HF(Hands-Free) / HS (Headset)免提端/耳机端。
通常指蓝牙耳机、车载中控。
它作为 AG 的远程控制器和音频 IO 设备。
2HSP (Headset Profile) 简约的先驱HSP 是最早的通话协议它只提供了最基本的功能耳机作为手机的音频输入/输出设备并能进行简单的控制。
功能子集接听电话、挂断电话、调节音量。
控制机制基于RFCOMM传输极简的 AT 指令。
局限性它不支持查看来电号码、不支持拒接只能接听后再挂断、不支持三方通话。
目前的现状就是现代蓝牙设备中HSP 几乎已经被 HFP 完全取代仅作为协议兼容性的最低保障存在。
3HFP (Hands-Free Profile) 现代通话的标准HFP 是目前 TWS 耳机和车载系统的标配。
它在 HSP 的基础上进行了巨大的功能扩充目前主流版本为v
7或v
8。
A协议栈架构HFP 的实现依赖于两条完全并行的链路控制链路(Control Plane)运行在RFCOMM之上。
用于传输 AT 指令负责拨号、同步联系人、电量显示、通话状态切换等。
音频链路(User Plane)运行在基带层Baseband之上使用SCO (Synchronous Connection Oriented)或eSCO链路。
它绕过了 L2CAP直接传输同步语音数据以保证极低的延迟。
BHFP 的
关键技术流程要实现一次完美的蓝牙通话必须经过以下三个关键步骤1服务级连接建立 (SLC - Service Level Connection)当耳机连接上手机后双方会先在 RFCOMM 上进行一系列暗号对接确认彼此支持的功能特性协商HF 发送ATBRSFBluetooth Retrieve Supported Features告诉手机“我支持降噪、支持电量显示”。
指标更新通过ATCIND获取手机当前的信号强度、电量、漫游状态。
事件报告通过ATCMER开启事件通知这样手机有来电时才会主动推送RING。
2 语音链路的建立 (SCO vs eSCO)这是决定通话音质的关键SCO传统的语音链路带宽固定为 64kbps通常使用CVSD编码。
音质类似于老式座机采样率 8kHz。
eSCO(Extended SCO)HFP
5 引入。
支持数据重传抗干扰能力更强。
宽带语音(Wideband Speech)HFP
6 引入使用mSBC编码采样率提升至16kHz高清通话这是目前大多数蓝牙耳机“通话清晰”的技术支撑。
3典型通话信令示例当一个电话打入时RFCOMM 上的 AT 指令流如下AG - HF: RING振铃 AG - HF: CLIP: 13800138000,129来电显示号码 HF - AG: ATA用户按下耳机键Answer AG - HF: OK手机响应通话接通 后续: 建立 eSCO 语音链路声音开始传输。
C HFP 特有的高级功能三方通话(Three-Way Calling)支持保持当前通话并接听等待中的第二个来电。
语音拨号(Voice Recognition)通过ATBVRA唤醒手机端的 Siri 或小爱同学。
电量上报通过特定的厂商自定义指令如 Apple 的ATIPHONEACCEV或标准指令在手机右上角显示耳机电量。
结尾这里我们简单地介绍了一下蓝牙的串口、文件传输和通话控制应用下一章我们将详细地分析介绍蓝牙鼠标的工作原理。
------------------End------------------如需