Linux 蓝牙串口通信基础
蓝牙串口通信(Serial Port Profile, SPP)是 Linux 系统中实现设备无线数据传输的重要方式,广泛应用于嵌入式开发、物联网设备调试、传感器数据采集等场景,本文将详细介绍 Linux 下蓝牙串口的配置、连接及使用方法,帮助读者快速掌握这一技术。

蓝牙适配器与设备准备
在配置蓝牙串口前,需确保硬件环境支持,检查 Linux 系统是否已识别蓝牙适配器,可通过以下命令查看:
hciconfig -a
若输出显示蓝牙适配器信息(如设备地址、型号等),则说明硬件正常;若无输出,需安装蓝牙驱动(如 bluez)或检查适配器兼容性。
对于目标蓝牙设备(如手机、传感器模块等),需确保其支持 SPP 协议,并进入可被发现模式,在 Linux 端,使用 bluetoothctl 工具管理蓝牙设备:
bluetoothctl [bluetooth]# power on # 开启蓝牙功能 [bluetooth]# scan on # 扫描附近设备
扫描到目标设备后,记录其 MAC 地址,并通过以下命令配对:
[bluetooth]# pair [设备MAC地址]
根据设备提示完成配对(部分设备需输入 PIN 码)。
串口服务绑定与设备创建
配对成功后,需将蓝牙设备绑定到串口服务,在 bluetoothctl 中执行以下命令:
[bluetooth]# connect [设备MAC地址]
连接成功后,系统会自动创建虚拟串口设备,通常位于 /dev/ 目录下,如 /dev/rfcomm0 或 /dev/ttyACM0,可通过以下命令确认设备是否存在:

ls /dev/rfcomm* ls /dev/ttyACM*
若未自动创建,可手动绑定串口通道,查询设备的 SDP(Service Discovery Protocol)记录,获取串口通道 ID(通常为 1):
sdptool browse [设备MAC地址]
随后,使用 rfcomm 命令手动绑定:
rfcomm bind /dev/rfcomm0 [设备MAC地址] 1
此命令将设备 MAC 地址与通道 1 绑定至 /dev/rfcomm0。
串口通信测试
虚拟串口创建后,可通过工具(如 minicom、screen 或 cat)进行数据收发测试,以 minicom 为例,首先安装并配置:
sudo apt install minicom # 安装 minicom sudo minicom -s # 进入配置界面
选择 “Serial port setup”,设置串口设备(如 /dev/rfcomm0)、波特率(通常为 9600)、数据位(8)、停止位(1)及校验位(None),保存配置并退出。
启动 minicom 后,即可在终端与蓝牙设备进行双向通信,向设备发送 AT 指令:
AT+TEST\r\n
若收到设备响应,则说明通信正常,可通过 screen 简单测试:

screen /dev/rfcomm0 9600
输入数据后按 Ctrl+A,再按 D 退出会话,数据将发送至对端设备。
常见问题与解决方案
- 无法连接设备:检查蓝牙是否开启,设备是否处于可被发现模式,或尝试重新配对。
- 串口设备未创建:确认设备支持 SPP 协议,手动绑定串口通道或重启蓝牙服务(
sudo systemctl restart bluetooth)。 - 数据传输失败:检查串口参数(波特率、数据位等)是否与设备一致,或尝试更换串口工具(如
cu)。 - 权限问题:确保当前用户对串口设备有读写权限,可通过
sudo usermod -aG dialout $USER将用户加入dialout组,并重新登录。
自动化脚本与高级应用
为提高效率,可通过 Shell 脚本实现蓝牙串口的自动连接与数据收发,以下脚本可实现自动连接并读取串口数据:
#!/bin/bash DEVICE_MAC="XX:XX:XX:XX:XX:XX" RFCOMM_DEV="/dev/rfcomm0" # 绑定串口 rfcomm bind $RFCOMM_DEV $DEVICE_MAC 1 # 读取数据 cat $RFCOMM_DEV
将脚本保存为 bt_serial.sh,赋予执行权限(chmod +x bt_serial.sh)后运行即可。
Python 的 pyserial 库可进一步扩展蓝牙串口功能,实现复杂的数据处理逻辑,如:
import serial
ser = serial.Serial('/dev/rfcomm0', 9600, timeout=1)
ser.write(b'Hello, Bluetooth!')
data = ser.read(10)
print(data.decode())
ser.close()
Linux 蓝牙串口通信结合了无线灵活性与串口稳定性,是嵌入式开发与物联网应用的核心技术之一,通过本文的介绍,读者可掌握从硬件准备到数据通信的全流程,并结合实际需求进行扩展开发,掌握这一技术,将极大提升设备调试与数据传输的效率。
















