임베디드 Linux 시스템에서 직렬 블루투스를 통해 휴대폰에 연결하는 데 문제가 있습니다. 다음은 연결을 설정하기 위해 취한 단계입니다. (bluetoothctl을 사용하여 페어링하고 연결할 수 있습니다.)
OS: Linux nut6x 4.1.15-2.0.0-ga+yocto+g651db0b #1 SMP 선점 Thu 2월 16일 15:53:27 PST 2017 armv7l armv7l armv7l GNU/Linux
root@embeddedsystem:~# echo 0 > /sys/class/rfkill/rfkill0/state
root@embeddedsystem:~# echo 1 > /sys/class/rfkill/rfkill0/state
root@embeddedsystem:~# hciattach -t 30 -s 115200 /dev/ttymxc2 texas 3000000 flow
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/ti-connectivity/TIInit_7.6.15.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Bluetooth: HCI UART driver ver 2.3
Bluetooth: HCI UART protocol H4 registered
Bluetooth: HCI UART protocol LL registered
Device setup complete
root@embeddedsystem:~# hciconfig hci0 up
root@embeddedsystem:~# hciconfig hci0 sspmode 1 //simple pairing
//Enable controller
root@embeddedsystem:~# bluetoothctl
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# default-agent
[bluetooth]# quit
root@embeddedsystem:~# rfcomm bind /dev/rfcomm0 AA:AA:AA:AA:AA:AA 22
root@embeddedsystem:~# sdptool add --channel=22 SP //Serial port on channel 22
root@embeddedsystem:~# rfcomm //check to see if channel is ok
rfcomm0: AA:AA:AA:AA:AA:AA channel 22 clean
root@embeddedsystem:~# rfcomm connect /dev/rfcomm0 AA:AA:AA:AA:AA:AA 22
Can't connect RFCOMM socket: Connection refused
이것이 내가 붙어있는 곳입니다. bluetoothctl을 사용하여 문제없이 연결할 수 있는데 왜 연결이 거부되는지 모르겠습니다(휴대폰에서 확인됨). 여기까지 오는 데 시간이 좀 걸렸기 때문에 bluetoothctl과 rfcomm의 차이점이 무엇인지 잘 모르겠습니다. 이리저리 놀다가 직렬 연결을 얻으려면 rfcomm을 사용해야 한다는 것을 발견했습니다. 내가 원하는 것은 명령줄을 사용하여 전화기에서 모바일 연락처를 가져오는 것입니다. rfcomm을 사용하지 않고 bluetoothctl을 통해 연결하지 않고 전화 연락처를 얻을 수 있는지도 묻고 있는 것 같습니다.
PS OBEX를 사용하지 않고 명령줄을 통해 내 휴대폰에서 파일을 가져오는 방법을 아는 사람이 있다면 알려주시면 감사하겠습니다!