为什么我无法连接到 Linux 蓝牙串口?

为什么我无法连接到 Linux 蓝牙串口?

我在 Linux 3.12.5 ARM 系统上有一个 USB 蓝牙适配器。我一直在尝试从我的 Android 手机到 Linux 上的 USB 适配器建立蓝牙串行连接。我已经参考过这个问题在我尝试的其他来源中。任何建议都会很棒。

我已经能够通过以下方式将其配对:

bluetooth-agent 0000 &

然后通过我的手机进行配对。然后,我通过以下方式在设备上创建串行端口:

sudo mknod -m 666 /dev/rfcomm0 c 216 0
sudo sdptool add --channel=22 SP
sudo rfcomm listen /dev/rfcomm 22

然后,我在手机上使用 BlueTerm 尝试连接到串行端口。但是,它会立即失去连接。在Linux端,终端中出现以下内容:

Waiting for connection on channel 22
Authorizing request for /org/bluez/317/hci0/dev_xx_xx_xx_xx_00_46

似乎并没有让手机断开连接,那么到底发生了什么?

答案1

以下步骤对我有用:

首先,您必须配对设备。配对相对容易。我将呼叫客户端(开始说话)和服务器(回复)

您必须先设置服务器: 服务器端(作为 root):

sdptool add --channel=3 SP
mknod -m 666 /dev/rfcomm0 c 216 0
rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 115200 linux

客户端(作为 root):

sdptool add --channel=3 SP
rfcomm connect /dev/rfcomm0 [SERVER_ADDR] 3

现在在客户端上打开串行终端:

screen /dev/rfcomm0 115200

评论:

rfcomm connect当您在客户端中调用最后一个命令...时,/dev/rfcomm0将创建一个设备并将其关联到服务器/dev/recomm0。这代表两者之间的串行链接

最后一个服务器命令:rfcomm watch...将“侦听”传入连接。在连接丢失时,该命令将重新启动新的“监听”状态。

相关内容