过去几个小时我一直尝试将我的 HC-05 arduino 蓝牙模块与我的 Ubuntu 机器配对,但没有成功。
我运行了以下命令:
sdptool add --channel=1 SP
hcitool scan
sudo rfcomm bind rfcomm0 <MAC address of the HCO5 module>
但是如果我尝试连接并发出以下命令:
sudo rfcomm connect 0
我收到错误:
Can't connect RFCOMM socket: Connection refused
我还将该/etc/bluetooth/rfcomm.conf
文件编辑如下:
# # RFCOMM 配置文件。#
rfcomm0 {
# # Automatically bind the device at startup
bind yes;
#
# # Bluetooth address of the device
device 20:14:02:17:17:38;
#
# # RFCOMM channel for the connection
channel 1;
#
# # Description of the connection
comment "Arduino Bluetooth module";
}
但我总是不断收到Connection refused
错误。我还尝试从蓝牙管理器小程序与模块配对。默认密码是1234
,我已通过我的安卓手机成功连接到我的蓝牙模块。但在这里,我看到列出的 HC-05 模块是,Unknown
因此当我尝试使用默认密码连接时,蓝牙管理器会生成一个随机密码并要求我在另一台设备上输入该密码以完成配对请求,而我显然无法做到这一点。
当我尝试时,rfcomm connect
并没有看到配对请求窗口,我只能像在 Android 手机上一样输入密码。
我读过博客,蓝牙模块可以连接到 Linux 机器,所以我肯定我遗漏了一些简单的东西。任何帮助都值得感激。
答案1
我遇到了和你描述的一样的问题,蓝牙小程序会生成一个随机 PIN 码让我在 HC-05 上输入,然后就说连接失败。不过这个教程对我有用:
它适用于 raspberry pi,但在我的 ubuntu 实例上也同样适用。它基本上告诉你将 1234 引脚添加到
/var/lib/bluetooth/xx:xx:xx:xx:xx:xx/pincodes
其中 xx:xx:xx:xx:xx:xx 是您的蓝牙适配器(不是 HC-5)的 MAC 地址。我认为/var/lib/bluetooth/xx:xx:xx:xx:xx:xx
当您插入适配器时会自动为您创建目录,因此您可能只有一个目录/var/lib/bluetooth/
是正确的目录。
答案2
至少在两个不同的地方有相当多的事情需要管理。
实际的 HC-05 具有 MAC 地址、默认 PIN 码 (1234) 和默认公共身份 (HC-05)。可以更改这些设置以提高安全性,但使用默认设置更容易学习。如果您提前更改这些设置,则必须记住所做的更改。
在 Linux 方面,您必须设置软件来识别这些默认值(或您最终更改的任何值)
此外,在 Linux 方面,每次想要使用蓝牙时,您都必须启动一个守护进程,除非您修改 INIT 列表以在每次重新启动 Linux 计算机时启动守护进程。
另外,需要检查 /dev/rfcomm0 以查看谁拥有使用蓝牙串行端口的 Unix 权限。使用 ls -l 查看列表。您可能必须将常规登录名分配给特殊组,否则 rfcomm0 将忽略您。