Embedded Ubuntu.Linux에서 Bluetooth 인증파일은 도대체 어디에?

[목차(도우미)]
우분투리눅스(Ubuntu Linux)에서 블루투스(Bluetooth)접속을 하려면 약간 고생하게 된다. 우선 리눅스의 정보가 어디있는지 찾기 어렵다는 것이 한가지 이유가 되고, 뭐든지 체계적으로 상세하고도 방대한 지식이 없이 하려고 하는 것이 고생의 원인이 된다.

Permission Denied Error

화면이 없는 리눅스 즉 임베디드 용 리눅스 머신에서 블루투스 접속을 하려면 흔히 일어나는 에러는 Permission Denied 에 관한 것이다.
블루투스에 관해서 화면에 나타나는 에러 메시지
Can't open RFCOMM device: Permission denied

rfcomm.conf File

접속을 위해서 /etc/bluetooth/rfcomm.conf 파일을 아무리 뚫어지게 보아도 잘못된 부분이 없는데 hcitool scan으로도 잘 되면서 정작 접속이 안되는 경우가 생긴다.

rfcomm0 {
         bind yes;
         device 00:12:34:56:78:9A ;
         channel 1;
         comment "Serial Port";
         }

그런 경우 일단 임베디드용 리눅스로 확인해 보지 말고 GUI가 있는 같은 계열 리눅스로 접속해 본다. 그러면 도중에 PIN코드를 넣으라든지 인증을 허용할 것인지 물어보는 과정이 생긴다.

linkeys File

일단 인증과정이 통과되면 linkkeys 파일을 생성해서 블루투스 접속을 허용하게 된다. 그 때 생긴
"/var/lib/bluetooth/(local_mac_address)/linkkeys" 파일을 임베디드 리눅스에 복사해 넣어 준다.


 일부 문헌에서는 pincodes파일을 만들어 주는 것으로 접속이 가능하도록 인증처리를 한다는 문헌도 있었으나 실제 테스트 해보았을 때는 영향이 없었다.

관련 URL:
Where and how bluetooth stacks storing linkkeys?
http://bluetooth-pentest.narod.ru/doc/where_and_how_bluetooth_stacks_storing_linkkeys.html

pincodes File

 한편 위의 컴퓨터가 아닌 다른 컴퓨터(Debian) 에서는 어떻게 거동하는지를 확인해 보았다. 결과적으로 pincodes 파일이 유효하다는 것을 확인하게 되었는데 이전 컴퓨터의 업그레이드 문제가 생긴 것으로 추측하고 있다.pincodes 파일의 형식은 단순하다. MAC_address PIN_CODE의 구조로 되어 있고 여러 줄에 복수개의 정보를 기입해도 유효하다는 것을 확인하였다.(Debian 6버전) 디렉토리에 없으면 파일을 만들어 주면 된다. (한번도 만들어 준 적이 없을 것이므로 처음에는 당연히 파일이 없다.)

예) /var/lib/bluetooth/(local_mac_address)/pincodes
00:11:22:33:44:55:66 1234 
AA:BB:CC:EE:FF:99 0000

그러면 동시에 pincodes, linkkeys파일이 존재하면 어떻게 되는가? 실험결과로 볼 때 pincodes가 우선순위가 높았다. pincodes 파일이 존재하지 않고 linkkeys 파일이 존재하면 linkkeys파일을 읽어서 연결된다.

참고 사항 hcid.conf File

/etc/bluetooth/hcid.conf 파일을 수정하면 제대로 접속할 수 있다는 문헌은 많이 있다. 다만 우분투 리눅스의 경우는 hcid.conf 파일 자체가 없는 경우도 있다.

관련 URL:
http://linux.die.net/man/5/hcid.conf --- 영어 페이지
http://wabar.tistory.com/11 --- 블루투스 디버깅 관련 - Permission denied 의 수정예를 보여주고 있다.
by 금메달.아빠 on 2011. 9. 16. 00:51