You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bash脚本中自动向bluetoothctl传递PIN码配对HC-05

自动配对HC-05蓝牙模块(无需手动输入PIN码)

一、修复bluetoothctl自动配对的方法

1. 使用expect脚本处理交互式输入

bluetoothctl的配对提示并非读取标准输入,管道方式无法触发正确的输入时机,因此可以用expect工具模拟交互式操作:

先安装expect:

sudo apt install expect

创建配对脚本pair_hc05.sh:

#!/usr/bin/expect -f
set MAC [lindex $argv 0]
set PIN [lindex $argv 1]

spawn bluetoothctl
expect "Agent registered"
send "pair $MAC\r"
expect "Enter PIN code:"
send "$PIN\r"
expect "Pairing successful"
send "quit\r"
expect eof

赋予执行权限并运行:

chmod +x pair_hc05.sh
sudo ./pair_hc05.sh XX:XX:XX:XX:XX:XX 1234

2. 提前配置蓝牙设备的PIN码

通过修改系统蓝牙配置文件,让系统自动调用指定PIN完成配对:

  1. 创建设备配置目录(若不存在):
sudo mkdir -p /var/lib/bluetooth/[你的蓝牙适配器MAC]/

注:可用bluetoothctl show查看适配器MAC,比如Controller AA:BB:CC:DD:EE:FF中的AA:BB:CC:DD:EE:FF即为适配器MAC

  1. 创建设备配置文件/var/lib/bluetooth/[适配器MAC]/[HC-05的MAC]/info,写入以下内容:
[General]
Name=HC-05
Class=0x000000
SupportedTechnologies=BR/EDR;
Trusted=true
Blocked=false
Services=00001101-0000-1000-8000-00805f9b34fb;

[LinkKey]
Key=你的PIN码对应的16进制值(比如1234对应00000000000000000000000031323334)
Type=4
PINLength=4

[DeviceID]
Source=2
Vendor=0x0000
Product=0x0000
Version=0x0000

注:PIN码转16进制可执行echo -n "1234" | xxd -p获取

  1. 重启蓝牙服务:
sudo systemctl restart bluetooth

之后执行bluetoothctl pair XX:XX:XX:XX:XX:XX即可自动完成配对。

二、树莓派OS上的替代工具

可以使用bluez-tools包中的bt-device命令,支持直接指定PIN码配对:

  1. 安装bluez-tools:
sudo apt install bluez-tools
  1. 执行配对命令:
sudo bt-device --pair XX:XX:XX:XX:XX:XX --pin 1234

若需自动连接,可追加命令:

sudo bt-device --connect XX:XX:XX:XX:XX:XX

内容的提问来源于stack exchange,提问作者T0maas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:55:16