Linux Bluetooth 직렬 포트에 연결할 수 없는 이유는 무엇입니까?

Linux Bluetooth 직렬 포트에 연결할 수 없는 이유는 무엇입니까?

Linux 3.12.5 ARM 시스템에 USB Bluetooth 어댑터가 있습니다. Android 휴대폰에서 Linux의 USB 어댑터로 Bluetooth 직렬 연결을 설정하려고 했습니다. 나는 이미 언급했다이 문제내가 시도한 다른 소스 중에서. 어떤 제안이라도 좋을 것입니다.

다음을 통해 페어링할 수 있었습니다.

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

다음 단계가 나에게 효과적이었습니다.

먼저 장치를 페어링해야 합니다. 페어링은 비교적 쉽습니다. 클라이언트(대화 시작)와 서버(응답)에 전화하겠습니다.

먼저 서버를 설정해야 합니다. 서버 측(루트로):

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

클라이언트(루트로서):

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

이제 클라이언트에서 직렬 터미널을 엽니다.

screen /dev/rfcomm0 115200

논평:

rfcomm connect클라이언트에서 마지막 명령을 호출하면 /dev/rfcomm0장치가 생성되어 서버에 연결됩니다 /dev/recomm0. 이는 둘 사이의 직렬 링크를 나타냅니다.

마지막 서버 명령은 다음 rfcomm watch과 같습니다. ...들어오는 연결을 "수신"합니다. 이 명령은 연결이 끊어지면 새로운 "수신" 상태를 다시 시작합니다.

관련 정보