為什麼我無法連接到 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...將「偵聽」傳入連線。在連線遺失時,該指令將重新啟動新的「監聽」狀態。

相關內容