проверено в Ubuntu 7.10 с двумя bluetooth GPS-приёмниками: GlobalSat BT-338 и Nokia LD-3W
установим (если не установлен) пакет
bluez-utils через synaptic или:
sudo apt-get install bluez-utils
посмотрим файл
/etc/default/bluetooth:
должна быть строка:
BLUETOOTH_ENABLED=1по умолчанию служба serial в bluetooth не работает при старте системы. исправим это:
sudo gedit /etc/bluetooth/serial.service
заменяем содержимое на следующее:
[Bluetooth Service]
Identifier=serial
Name=Serial service
Description=Bluetooth Serial Port service
Autostart=trueотредактируем файл
hcid.conf :
sudo gedit /etc/bluetooth/hcid.conf
заменяем содержимое файла на следующее:
#
# HCI daemon configuration file.
#
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security user;
# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;
# PIN helper
#pin_helper /usr/bin/bluepin;
# D-Bus PIN helper
#dbus_pin_helper;
# Default PIN code for incoming connections
passkey "1234";
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "%h-%d";
# Local device class
class 0x3e0100;
# Default packet type
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept;
# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;
# Authentication and Encryption (Security Mode 3)
#auth enable;
#encrypt enable;
}
рестарт bluetooth:
sudo /etc/init.d/bluetooth restart
включаем наш GPS-приёмник и вводим:
hcitool scan
смотрим вывод:
Scanning ...
00:0D:B5:37:3B:A9 Nokia LD3W
нам нужен MAC-адрес GPS-приёмника - в данном случае это
00:0D:B5:37:3B:A9 конечно это MAC конкретного устройства (уникальный) и для каждого устройства следует узнать и
использовать его собственный MAC.
теперь узнаем точно канал приёмника:
sdptool browse 00:0D:B5:37:3B:A9
в выводе находим строчку
Channel: 1это и есть нужный нам канал.
вообще, по умолчанию он и должен быть Channel: 1
кстати приёмник Nokia LD-3W показал вывод этой команды, а BT-338 почему-то нет.
и я просто использовал Channel: 1 с обоими приёмниками.
далее используем полученные MAC и канал:
sudo gedit /etc/bluetooth/rfcomm.conf
добавляем:
rfcomm0 {
bind yes;
device 00:0D:B5:37:3B:A9;
channel 1;
comment "Serial Port";
}в моём примере стоит rfcomm0, так как других serial connect у меня не было.
соответственно для каждого последующего устройства число возрастает на 1 (rfcomm1, rfcomm2 etc)
запускаем:
sudo rfcomm release 0
продолжаем (коннектим приёмник):
rfcomm connect 0
GPS в Ubuntu работает через демон
gpsd,
устанавливаем всё, что нам минимально необходимо:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients
запускаем gpsd:
gpsd /dev/rfcomm0
теперь можно посмотреть что там со спутниками:
xgps
на программу
XGPS можно будет создать ярлык в меню или на рабочий стол, чтобы не запускать каждый раз в терминале.
и запуск сервиса GPS достаточно прост:
включаем приёмник и запускаем gpsd (gpsd /dev/rfcomm0).
в общем всё. можно пользоваться GPS в любой программе, поддерживающей работу с GPS-приёмником,
например
GPSDRIVEPS лирическое послесловие:
с приёмником GlobalSat BT-338 пробовал непрерывно использовать GPS в течении более трёх суток (приёмник и ноутбук были подключены к сети) -
недостижимое время непрерывной работы для одной малоизвестной ОС с северо-запада США
в ней что-нибудь, да у падёт за это время точно...