1. 개요


라즈베리파이의 bluetooth 를 이용하여 beacon broadcast 기능을 수행하기 위해서는 bluez 라는 라이브러리가 가장 많이 사용되는 편이며, 또한 그 사용법 역시 인터넷에 제일 많이 검색되는 편입니다.


하지만 대체로 bluez 의 사용법을 설명하는 내용은 많으나 정작 비콘 브로드캐스팅 시 여타 장비에서 검색되는 beacon local name 을 변경하는 부분에 대한 설명이 없어 그 내용을 공유하고자 합니다.



2. 수정방법


최초 bluez 를 사용하여 라즈베리파이를 비콘화 하는 경우, 스마트폰을 이용하여 장비를 탐색하면 다음과 같이 나오게 됩니다.


제가 가진 라즈베리파이의 bluetooth 주소는 B8:27:EB:63:33:C6 입니다

위와 같이 장치 명이 라이브러리 이름인 BlueZ 5.50 으로 되어 있는 것이 보입니다.

바로 이 부분을 변경해 보도록 하겠습니다.




라즈베리파이 터미널에서 다음 명령어를 기입하시면 bluez 의 설정 파일 내용을 볼 수 있습니다.




설정 파일의 6번째 줄에 보시면 Name = BlueZ 부분이 주석 (#) 처리 되어 있는 것이 보입니다. 이 부분을 다음과 같이 변경합니다.



변경이 완료되면 Ctrl + X 입력 후, Y 를 통해 저장하고 나오도록 합니다.


이후 sudo reboot -h now 명령어를 통해 라즈베리파이를 재시작 하신 후, 다시 스마트폰 앱을 통해 비콘을 탐색하면 다음과 같이 검색이 됩니다.



bluetooth 주소를 보시면 처음 검색 했을 때와 같은 장비임을 알 수 있습니다.

하지만 장치명을 보면 raspberryp 로 나오는 것이 보입니다.


이상하죠?

분명 설정에서 Name = BlueZ 로 바꿨으니 저희가 의도한 상황은 아닙니다.


다시 설정 파일의 내용을 봅시다.



설정 파일에 주석으로 된 부분에 중요한 내용이 있군요.

대충 해석 하자면 hostname 플러그인이 로딩 된 경우에는 Name 설정을 hostname으로 덮어 쓴다는 내용입니다.

그리고 바로 아랫 줄에 또 중요한 내용이 있습니다.


/etc/machine-info 파일에 PRETTY_HOSTNAME=장치명 으로 설정하면 된다고 나오는 군요.

알려주는대로 해 봅니다.




nano 명령어를 통해 machine-info 파일을 열어보면 아무런 내용이 나오지 않습니다.

bluez 를 최초 설치한 경우 별 다른 설정을 하지 않으면 해당 파일이 존재하지 않기 때문이죠.

하여 우리는 새로운 파일을 생성하여 위와 같이 장치명을 입력하여 준 뒤, Ctrl + X, Y를 통해 저장하여 주도록 합니다.


이후, 아까와 마찬가지로 sudo reboot -h now 명령어를 통해 라즈베리파이를 재부팅 하도록 합니다.



드디어 원하는대로 장치명이 변경 되었습니다.


괄호 안에 나오는 (아이비콘) 의 경우 제가 사용한 어플리케이션에서 자동으로 붙여준 부분입니다.

아마 다른 앱을 사용하시면 장치명이 설정한 장치명만 나오게 될 듯 합니다.


장치명은 최대 10글자로 제한 됩니다.

설정 파일에서 10글자 이상으로 길게 기입하더라도 실제 검색되는 이름은 앞에서 10글자까지 잘려서 표시되게 됩니다.

이는 ibeacon 의 패킷 payload 상 장치명에 할당 된 길이가 10 byte 이기 때문입니다.

+ Recent posts