如何在Linux上始终连接到相同的rfcomm端口?

时间:2011-02-28 12:53:07

标签: linux bluetooth rfcomm

我有几个蓝牙设备,我正在尝试连接到Linux。除了一个设备外,我对任何设备都没有任何问题。不同之处在于所有其他设备都以标准方式处理其(我假设的)蓝牙连接,即它们等待主机设备(PC)发起连接。另一方面,另一个设备尝试每隔几秒启动一次连接,其间有两秒左右的睡眠。

对于其他设备,我一直在这样连接:

rfcomm connect /dev/rfcommX <deviceMacAddress>

(其中X是任何未使用的rfcomm端口号)

在发出此命令之前,我使用所需的配对键运行bluetooth-agent。这里的一切都很好。

对于有问题的设备,这在设备配对之前首次运行良好。但是,配对后,rfcomm connect命令很可能失败。这是因为设备本身正在尝试初始化连接..当设备处于休眠状态时,连接失败(“主机关闭”)。

相反,我发现,对于这个设备,以下命令就像魅力一样:

rfcomm listen /dev/rfcommX

(我必须先通过sdptool添加一个串口添加SP)

由于PC将坐在那里等待来自设备的传入连接,因此每次都可以工作。

然而,当我有多个设备时会出现问题。 rfcomm listen命令运行良好,但似乎没有办法控制哪个设备(由Mac地址标识)连接到哪个rfcomm端口;如果打开了多个设备,则第一个尝试连接的设备将连接,无论如何。但是,在我们的应用程序中,我们希望用户知道他们要连接到哪个设备。

之前有没有人处理过类似的事情?我们正在考虑编写bluez蓝牙套件的自定义版本,所以我们将非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

每次write a udev rule创建一个同名的符号链接,或者按照/sys的相应路径访问设备。