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