我在 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
...将“侦听”传入连接。在连接丢失时,该命令将重新启动新的“监听”状态。