1. 목적

ㄱ. 리눅스 상에서 블루투스를 통한 통신을 하기 위하여 rfcomm 방식의 통신의 예를 통해 통신하여 본다.


2. 본론

ㄱ. 먼저 블루투스 통신은 크게 2가지로 나뉜다. 

a. TCP 같은 기능을 하는 RFCOMM : TCP는 65535개의 포트를 지원하지만 RFCOMM은 30개의 포트를 지원함

b. UDP와 같은 기능을 하는 L2CAP


ㄴ. 아래의 소스코드는 RFCOMM 예제이이다. RFCOMM 프로토콜은 더욱 믿을 수 있는 연결을 지원한다(TCP와 유사함)


ㄷ. 다음의 명령어를 통해 서버측 디바이스의 블루투스 address를 알아 볼 수 있다.

$ hcitool dev

Devices:
hci0 00:1F:81:03:11:22


ㄹ. RFCOMM server.c 소스


ㅁ. RFCOMM client.c 소스


3. 결론

ㄱ. 블루투스의 RFCOMM  프로토콜 통신의 예를 통해 학습하여 보았다.

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 시크한공돌이
,