蓝牙串口、文件传输、通话控制如何实现?
摘要:liwen01 2026.01.02 前言 日常生活中,我们用到的很多蓝牙功能,都是基于蓝牙 RFCOMM 传输协议来实现,比如: 手机与手机间通过蓝牙分享名片、短信、图片、文件等 手机与车机之间的来电显示、电话接听、挂断、音量调节等 蓝牙
liwen01 2026.01.02
前言
日常生活中,我们用到的很多蓝牙功能,都是基于蓝牙 RFCOMM 传输协议来实现,比如:
手机与手机间通过蓝牙分享名片、短信、图片、文件等
手机与车机之间的来电显示、电话接听、挂断、音量调节等
蓝牙模拟串口的数据透传等
对应的蓝牙Profile(配置文件)有:OPP/FTP,PBAP/MAP/SYNC,BPP/BIP,HFP/HSP,SPP,DUN等等
它们间的层级关系如下图:
具体功能如下表:
Profile
中文名称
主要功能
常见设备
OPP
对象推送
文件、名片传输
手机间传文件
FTP
文件传输
访问远程文件系统
手机、电脑
SPP
串口通信
数据传输通道
MCU 模块、扫描枪
DUN
拨号联网
调制解调器上网
手机 → 电脑
HSP
耳机
基础语音通信
蓝牙耳机
HFP
免提
电话控制与语音通话
车载系统
PBAP
电话本访问
读取联系人
车机
MAP
短信访问
读/发短信
车机、智能手表
SYNC
信息同步
联系人、日历同步
手机与电脑
BPP
基本打印
蓝牙打印
手机打印机
BIP
图像传输
图片传输与控制
相机、打印机
这里,我们只简单介绍蓝牙的串口数据透传、文件传输、通话控制。
(一)RFCOMM 简介
RFCOMM 是金典蓝牙(BR/EDR)的一个传输层协议,它是串口数据透传、文件传输、通话控制等应用功能的基础。
(1)RFCOMM 历史
RFCOMM (Radio Frequency Communication)诞生于 20 世纪 90 年代末,当时计算机和外设(如调制解调器、打印机)主要通过物理串口(COM 口)连接。
RFCOMM 的核心任务是在蓝牙连接之上模拟传统的 RS-232 串口(Serial Port)通信,它是蓝牙协议栈中极为重要的一个传输层协议。
蓝牙技术联盟(Bluetooth SIG)在制定蓝牙 V1.0 版本规范时,目标之一就是电缆替代。为了让原本基于串口工作的旧软件能无缝迁移到无线蓝牙,开发者需要一种协议来模拟串口,于是就有了 RFCOMM。
RFCOMM 是基于 ETSI TS 07.10 标准修改而来,而 TS 07.10 是 GSM 蜂窝网络中用于在移动设备和终端之间进行多路复用串口通信的标准。 具体定义可以查看官网的《RFCOMM WITH TS 07.10》。
(2)RFCOMM 的技术变迁
(A)信号模拟
最初的 RFCOMM 仅实现了对 RS-232 九针串口信号(如 RTS/CTS, DTR/DSR)的逻辑映射。这使得早期的蓝牙手机可以像接了串口线一样,被电脑识别为一个无线调制解调器。
(B)基于信用的流控制
最初 RFCOMM 依赖底层的 L2CAP 进行简单的流控,但在高负载下容易丢包或死锁。
在蓝牙核心规范 V1.1 及后续版本中引入了信用(Credit)机制。发送方必须先获得接收方的信用额度才能发送数据包。
每发送一个包,信用减一;接收方处理完数据后,再返还信用。这极大地提高了大规模数据传输(如文件传输)的稳定性。
(C)安全性增强
随着蓝牙版本从 V2.1 进化到 V5.x 及目前最新的 V6.x,RFCOMM 本身虽然结构未变,但其底层的链路层引入了 SSP(安全简易配对) 和 AES-128 加密,使得通过 RFCOMM 传输的串口数据安全性有了大幅度的提升。
(3)模拟串口
(A)RFCOMM 的两种连接方式
这是最常见、最标准的 蓝牙串口通信方式(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)。
电脑看上去就像直接用串口连着那台设备一样。
(A)RFCOMM 串口端口号
在一个会话中,理论上可以支持最大60个端口号。
