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

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

Linux 3.12.5 ARM 시스템에 USB 블루투스 동글이 있습니다. 나는 안드로이드 폰에서 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

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

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

다음을 수행하기 전에 서버를 설정해야 합니다. 서버 측(루트로):

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.... 들어오는 연결을 '수신'합니다. 연결이 끊어지면 명령은 새로운 '수신' 상태를 다시 시작합니다.

관련 정보