1. 목적

ㄱ. BlueZ의 simplescan 예제를 테스트 한다.

ㄴ. gcc를 통해 blueZ를 포함하여 컴파일 하는 법을 배워본다.


2. 본론

ㄱ. mit 대학의 bluetooth 관련 강의의blueZ 예제를 참고한다.

ㄴ. ㄱ의 소스는 simplescan.c의 소스이다. 컴파일은 다음의 명령어를 통해 하게 된다.

gcc -o scantest simplescan.c -lbluetooth

ㄷ.  컴파일 후 생성되는 scantest 파일일 실행하게 되면 다음과 같은 결과를 볼 수 있다.



3. 결론

ㄱ. BlueZ를 통한 simplescan.c 예제를 실습해보았다.

ㄴ. 블루투스 기기들이 검색되는 것을 볼 수 있다.

Posted by 시크한공돌이
,

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 형태의 동글을 이용했습니다.)

hciconfig

만약, 리눅스 커널이 삽입된 동글을 인식했다면 hci0 라는 디바이스가 잡힐 것 입니다.

hciconfig hci0 up 

명령어를 이용해서 해당 디바이스를 활성화시키시면 모든 준비작업이 끝납니다.


3. 결론
ㄱ. 블루투스 프로그래밍을 위해 BlueZ 라이브러리를 설치하고 기반을 준비해보았다.
ㄴ. 블루투스 장비를 리눅스에서 인식시켜 보았다.


Posted by 시크한공돌이
,