1. 목적
ㄱ. 리눅스 베이스에서 블루투스 통신 프로그래밍을 해보자.
ㄴ. 기반을 준비해 보자
2. 준비
ㄱ. BlueZ 라이브러리 소개
리눅스 상에서 블루투스 장비를 프로그래밍 하기위해서는 보통 BlueZ 라이브러리를 이용합니다. (씨리얼 방식으로 통신하기도 하는 듯합니다.)
BlueZ 라이브러리는 리눅스 환경에서 Bluetooth 무선 표준 스펙을 구현한 구현물입니다. 공식적으로 이 프로젝트는 Kernel 2.4, 2.6 을 지원합니다.
http://www.bluez.org/
ㄴ. BlueZ 라이브러리 설치 및 설정
리눅스 상에서 BlueZ 를 동작하도록 하기 위해서는 우선 라이브러리를 설치해야합니다.
http://www.bluez.org/download.html
a. 아래 명령어를 통해 BlueZ 라이브러리를 받음
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.2.tar.xz
tar xf bluez-5.2.xz
cd bluez-5.2
./configure
b. 우분투에서 상기 명령어들을 실행하면 ### ERROR: configure: error: GLib >= 2.28 is required 발생
이유 : glib가 설치 되어 있지 않기 때문에 -> 아래 명령어로 glib 설치
apt-get install libglib2.0-dev
c. 위 명령어 후 다시 실행하면 ### ERROR: configure: error: D-Bus >= 1.4 is required 발생
apt-get install dbus-*dev
d. 또 실행하면 ### ERROR: configure: error: USB library support is required 발생
apt-get install libusb-dev
e. 다시 실행하면 ### ERROR: configure: error: libudev >= 143 is required 에러 발생
apt-get install libudev-dev
f. 실행하면 ### ERROR: configure: error: libical is required 발생
apt-get install libical-dev
e. ### ERROR: /usr/bin/ld: cannot find -lreadline 나 reading headline 에러가 발생하면
apt-get install libreadline-dev
f. 위설정들 설치 후에 다시 아래 명령어들 수행
./configure --disable-systemd
make
make install
상기의 페이지에서 BlueZ 라이브러리의 최신버전을 받으시고, 컴파일한뒤 구동 환경으로 복사하시기 바랍니다.
이때, BlueZ 라이브러리를 구동하는 환경이 커널 2.4 시리즈인 경우 커널상에 Bluetooth 스택이 올라가있지 않은 경우가 있습니다. 이 경우 패치 커널에 적용하고 다시 설치해야만 정상적으로 블루투스를 이용할 수 있습니다.
각 커널 별 블루투스 스택 지원 사항에 대한 설명과 패치 파일 및 패치 과정에 관련된 설명은 아래 사이트를 참고하시기 바랍니다.
http://www.holtmann.org/linux/kernel/
일단 커널 스택과 라이브러리가 정상적으로 설치되었다면 블루투스 동글을 삽입한뒤 다음과 명령어를 통해서 삽입된 블루투스 장비가 있다는 사실을 확인하시기 바랍니다. (제 경우에는 USB 형태의 동글을 이용했습니다.)
만약, 리눅스 커널이 삽입된 동글을 인식했다면 hci0 라는 디바이스가 잡힐 것 입니다.
명령어를 이용해서 해당 디바이스를 활성화시키시면 모든 준비작업이 끝납니다.
3. 결론
ㄱ. 블루투스 프로그래밍을 위해 BlueZ 라이브러리를 설치하고 기반을 준비해보았다.
ㄴ. 블루투스 장비를 리눅스에서 인식시켜 보았다.