蓝牙连接和调试
安装蓝牙
sudo apt-get install bluez
详见上一篇。
蓝牙调试(主机)
- 命令行进入:
sudo bluetoothctl
- 查看:
default-agent
- 注册anget:
agent on
- 扫描:
scan on
- 停止扫描:
scan off
- 找到要配对的蓝牙配对:
pair xx:xx...xx:xx
- 添加信任:
trust xx:xx...xx:xx
- 连接:
connect xx:xx...xx:xx
- 设置蓝牙可被发现状态:
discoverable yes
上面的操作,虽然可以配对并连接蓝牙,但是无法进行调试。
需要在树莓派上设置SPP。
开启蓝牙设备
- 编辑文件:
sudo vi /etc/systemd/system/dbus-org.bluez.service
- 找到
ExecStart=/usr/lib/bluetooth/bluetoothd
,更改并添加为:
ExecStart=/usr/lib/bluetooth/bluetoothd -C
ExecStartPost=/usr/bin/sdptool add SP
- 查看蓝牙服务:
hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:11:67:00:00:00 ACL MTU: 510:8 SCO MTU: 48:10
UP RUNNING PSCAN
RX bytes:27177 acl:504 sco:0 events:1654 errors:0
TX bytes:56051 acl:1309 sco:0 commands:194 errors:0
- 查看适配器提供的各种功能
sudo sdptool browse local
- 等待连接:
sudo rfcomm watch hci0
会自动进行连接,测试时没有成功。 - 开启蓝牙可被发现功能:
sudo hciconfig hci0 piscan
- 查看rfcomm0串口
连接成功后,ls /dev
会看到rfcomm0端口。 - 连接成功后,可通过
minicom
进行蓝牙串口通信。
蓝牙自动化设置
- 添加rfcomm服务文件
sudo vi /etc/systemd/system/rfcomm.service
文件内容为:
[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service
[Service]
ExecStart=/usr/bin/rfcomm watch hci0
[Install]
WantedBy=multi-user.target
设置自启动:
sudo systemctl enable rfcomm
重启树莓派,会重启蓝牙:sudo systemctl start rfcomm
打开手机蓝牙调试程序进行连接。
其他
sudo bciconfig hci0 piscan
sudo bluetooth-agent 1234
sdptool add --channel=3 SP
sdptool browse local
sudo rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 linux 115200