Проверено в 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 и канал:
в моём примере стоит rfcomm0, так как других serial connect у меня не было.
соответственно для каждого последующего устройства число возрастает на
1 (rfcomm1, rfcomm2 etc)
запускаем:
sudo rfcomm release 0
продолжаем (коннектим приёмник):
rfcomm connect 0
GPS в Ubuntu работает через демон gpsd,
на программу XGPS можно будет создать ярлык в меню или на рабочий стол,
чтобы не запускать каждый раз в терминале.
и запуск сервиса GPS достаточно прост:
включаем приёмник и запускаем gpsd (gpsd /dev/rfcomm0).
в общем всё. можно пользоваться GPS в любой программе, поддерживающей
работу с GPS-приёмником,
например GPSDRIVE
PS лирическое послесловие:
с приёмником GlobalSat BT-338 пробовал непрерывно использовать GPS в
течении более трёх суток (приёмник и ноутбук были подключены к сети) -
недостижимое время непрерывной работы для одной малоизвестной ОС с
северо-запада США в ней что-нибудь, да у падёт за это время точно...
Дополнение от пользователя ur7icj:
Пытался несколько раз по этой инструкции завести свой HOLUX, не
получалось, после этих манипуляций все завелось: