이 튜토리얼은 리눅스 환경에서 노키아 N95에 내장된 GPS 모듈을 블루투스를 통해 노트북과 공유하는 전 과정을 단계별로 안내합니다.
참고: 이 가이드는 2008년에 처음 게시된 글로, 당시 소개된 일부 소프트웨어는 현재 더 이상 존재하지 않습니다. 이에 따라 구글 검색 데이터베이스에서의 삭제를 요청했으며, 본 문서는 기록 보관 목적으로만 온라인에 남겨두고 있습니다.
1. ExtGPS 앱 준비
먼저 Symarctic의 ExtGPS 앱을 다운로드해야 합니다(업데이트: 해당 소프트웨어는 더 이상 존재하지 않습니다). ExtGPS는 개인적·비상업적 용도로 무료로 사용할 수 있었습니다.
2. ExtGPS 실행 및 권한 허용
ExtGPS를 설치했다면 메뉴(Menu) → 응용 프로그램(Applications) → ExtGPS 순서로 실행할 수 있습니다. 실행 시 연결 응용 프로그램 사용과 위치 데이터 사용을 허용하라는 안내가 나타나는데, 두 항목 모두 예(Yes)를 선택합니다.


3. GPS 신호 수신 대기
GPS가 유효한 위성 신호를 받아 위치를 확정(fix)하기까지 상당한 시간이 걸릴 수 있습니다. 반드시 실외에서 하늘이 잘 보이는 개방된 장소에 있어야 합니다. 위치가 확정되면 위성 아이콘이 빨간색에서 초록색으로 바뀝니다.

4. 블루투스 검색 허용
휴대폰이 블루투스를 통해 검색될 수 있도록 설정합니다. 메뉴(Menu) → 도구(Tools) → 블루투스(Bluetooth)로 이동한 뒤, 여기서는 휴대폰을 5분 동안 표시되도록 설정했습니다.



5. SDP 검색으로 서비스 채널 확인
다음 단계부터는 명령줄에서 작업합니다. Fedora 9 시스템에서 실행한 결과는 다음과 같습니다.
[user@radon ~]$ sdptool search SP
Inquiring ...
Searching for SP on aa:bb:cc:dd:ee:ff ...
Service Name: Data Transfer
Service Description: Version
Service RecHandle: 0x1000f
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
Service Name: Symarctic ExtGPS
Service Description: Share phone's built-in GPS module via Bluetooth
Service Provider: Symarctic Solutions
Service RecHandle: 0x10019
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
6. rfcomm으로 시리얼 포트 생성
위 출력에는 휴대폰의 블루투스 MAC 주소와 함께, ExtGPS가 5번 채널에서 시리얼 포트 서비스를 제공하고 있다는 정보가 표시됩니다. 이제 이 두 정보를 묶어 /dev 디렉터리에 장치 항목을 만들어야 합니다.
[user@radon ~]$ sudo rfcomm bind 1 aa:bb:cc:dd:ee:ff 5
rfcomm bind 명령의 매개변수는 순서대로 rfcomm 장치 번호, 휴대폰의 블루투스 MAC 주소, 그리고 sdptool에서 확인한 채널 번호입니다. 이 명령을 실행하면 /dev/rfcomm1에 시리얼 포트가 생성됩니다.
7. NMEA 데이터 스트리밍 확인
이 시점에서 N95가 출력하는 원본 NMEA 문장을 콘솔로 직접 스트리밍받을 수 있는지 확인해 봅니다.
[user@radon ~]$ sudo cat /dev/rfcomm1
$GPGGA,022314.000,4826.67566,N,12322.19605,W,1,07,1.9,13.7,M,-18.3,M,,*52
$GPGLL,4826.67566,N,12322.19605,W,022314.000,A,A*4A
$GPGSA,A,3,30,29,10,21,24,26,15,,,,,,2.9,1.9,2.2*3D
$GPGST,022314.000,8.8,13.0,6.1,65.6,7.1,11.1,14.0*63
$GPGSV,3,1,11,05,09,179,,02,10,072,25,30,28,194,38,29,77,118,42*72
$GPGSV,3,2,11,10,42,059,36,16,24,315,27,21,45,256,43,24,84,024,40*79
$GPGSV,3,3,11,18,14,198,,26,10,114,38,15,09,128,33*49
$GPRMC,022314.000,A,4826.67566,N,12322.19605,W,0.1,159.6,151008,18.1,W,A*3B
$GPVTG,159.6,T,177.7,M,0.1,N,0.3,K,A*2C
^C
NMEA 문장이 콘솔로 흘러들어오는 동안 ExtGPS 화면의 블루투스 아이콘이 빨간색에서 초록색으로 변경됩니다.

8. gpsd 데몬 실행
연결이 완료되었으니 이제 좀 더 유용하게 활용해 보겠습니다. 먼저 컴퓨터에서 gpsd를 실행합니다.
[user@radon ~]$ sudo /usr/sbin/gpsd -N /dev/rfcomm1
-N 매개변수는 gpsd가 백그라운드 모드로 전환하지 않도록 지시하는 옵션입니다. gpsd를 항상 상주시키기보다는 필요할 때만 실행하고 Ctrl+C(^C)로 종료하는 방식을 선호합니다. 그 외 세부 옵션은 gpsd 맨 페이지(man page)를 참고하시기 바랍니다.
9. xgps로 위치 데이터 확인
이제 두 번째 터미널 창을 열고 xgps를 실행해 봅니다.
[user@radon ~]$ xgps
화면에 다음과 비슷한 결과가 표시될 것입니다.

클릭하면 확대됩니다
xgps에는 위도, 경도, 고도, 속도 등 일반적인 GPS 데이터가 표시됩니다.
GPS 데이터 활용하기
리눅스에서 GPS 장치를 활용할 수 있는 응용 프로그램은 매우 다양합니다. 필자는 워드라이빙(wardriving)을 할 때 Kismet과 GPSDrive를 조합해 사용하는 것을 선호합니다. 관심이 많다면 Kismet과 GPSDrive로 워드라이빙하는 방법에 대한 튜토리얼도 별도로 작성할 예정입니다.