Вчера стали обладателями вот такого устройства, GPS-навигатора Garmin GPSmap 60Cx:
Устройство позволяет пользоваться загружаемыми векторными картами и имеет карточку памяти. Впрочем, все возможности ещё только предстоит научиться использовать. Карты надо научиться делать самим (те, что в продаже, стоят безумно дорого, но, главное, нормальных топографических карт нет, всё больше дороги…) — но это отдельная тема (кое-какие
инструкции (1)
уже (2)
нашёл (3)). Вчера же вечером прокатились на велосипедах, чтобы записать тестовый трек, а после я пытался «подружить» это чудо со своим GNU/Linux. Ниже краткий конспект.
Подключается GPSmap 60Cx по USB (кабеля для подключения по последовательному порту в комплекте нет). Причём может подключаться в двух режимах: USB Mass Storage (ну с этим всё понятно, как флэшка, при отключении — устройство перезапускается) и по своему собственному протоколу (по умолчанию). Дальше я буду писать в основном про второй режим подключения.
Похоже, что в дистрибутивном ядре Debian (2.6.24-1-686) нужные драйвера garmin-gps уже включены, потому что сразу после подключения устройства
dmesg
выдаёт следующее:
usb 4-1: new full speed USB device using uhci_hcd and address 9
usb 4-1: configuration #1 chosen from 1 choice
garmin_gps 4-1:1.0: Garmin GPS usb/tty converter detected
usb 4-1: Garmin GPS usb/tty converter now attached to ttyUSB0
Из чего следует, что устройство подключается как /dev/ttyUSB0.
Передача точек маршрута (Waypoints) и треков (Tracks)
Вначале пробую программу
gpsman
. Интерфейс не сверхудобный, куча не связанных между собой окошек, между которыми приходится переключаться, кнопки, которые распахиваются в меню, но зато всё это дело работает! :)
Настройки потребовались минимальные: в главном окошке в диалоге Options указать GPS Model «Garmin» и Serial port «/dev/ttyUSB0». Всё, после этого в окошке GPS Reciever
— там, где написано offline нажимаем и выбираем check — надпись сменится на зелёную online, а кнопки внизу станут активные. Именно эти кнопки и надо использовать чтобы скачивать с устройства (Get) или загружать на устройство (Put) разные типы объектов.
Я пробовал скачивать точки маршрута и записанный трек (кнопки WPoint и Track соответственно). После их нажатия программа получает с устройства список имеющихся в нём объектов, и уже в другом окошке можно выбрать нужный и сохранить/экспортировать. Треки можно сразу экспортировать в формате GPX. Ещё треки можно просматривать и редактировать на «карте» в
gpsman
. Слово «карта» написал в кавычках — потому что вначале это чистый лист, подложку с картой сделать вроде бы можно, но как — пока не разбирался.
Можно загрузить трек и точки маршрута с устройства при помощи программы
gpsbabel
, из коммандной строки. Если устройство подключено к
/dev/ttyUSB0
, а нужен трек с точками в формате GPX, то получить его можно так:
$ gpsbabel -t -w -i garmin -f /dev/ttyUSB0 -o gpx -F мойтрек.gpx
Другой способ получить эту информацию — скопировать с устройства GPX-файл в режиме USB Mass Storage, а потом уже его конверировать-преобразовывать… Этот файл с названием вида ГГГГММДД.gpx появляется на карточке памяти только если включена соответствующая функция в приборе. В него пишутся копии всех треков за день, сам прибор никак этой информацией не пользуется.
gpsman
же позволяет скачивать треки, находящиеся в памяти прибора. На мой взгляд, использовать
gpsman
проще, потому что треки и точки пути будут уже разделены и называться так же, как и на устройстве.
Лирическое отступление: Как вставить GPX-трек на Google Earth или Google Maps? Совет нашёл
на Geofaq.ru (загрузка данных GPS на растровую карту). Если кратко, то трек нужно преобразовать в формат KML, а затем выложить куда-нибудь в веб, а в Google Maps указать URL этого файла. В Google Earth KML-файл можно открыть непосредственно. В случае использования свободного софта, преобразовать файл из GPX в KML может
GPSBabel:
$ gpsbabel -i gpx -f 20080611.gpx -o kml -F 20080611.kml
Эта команда говорит: исходный формат GPX (
-i gpx
), исходные данные брать из файла 20080611.gpx (
-f имяфала
), конечный формат KML (
-o kml
), писать результат в файл 20060811.kml (
-F имяфала
). Всё, полученный файл можно просмотреть в Google Earth или Google Maps.
Загружать точки-треки-маршруты с компьютера на навигатор я ещё не пробовал, но в целом создалось впечатление, что работать с точками-треками-маршрутами можно без проблем.
Другие способы: у
gpsman
есть интерфейс коммандной строки (ещё не пробовал), есть программа
gpstrans
, умеющая делать примерно то же самое, тоже с интерфейсом коммандной строки (тоже ещё не пробовал).
Далее речь пойдёт о загрузке в прибор карт, прежде всего неофициальных (потому что покрытие официальных гарминовских топографических карт весьма неудовлетворительное).
Использование официальной MapSource4.0
С устройством поставляется программа MapSource4.0, необходимая для установки официльных карт, годная и для скачивания-закачивания треков, маршрутов и точек. Программа без проблем установилась под wine (версия 1.0-rc-1), даже на русском языке.
Народ на форумах подсказал, что нужно сделать вот так:
$ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1
и после этого перезапустить MapSource. После этого программа стала находить подключенный по USB прибор и с ним работать. Проверил передачу треков и точек пути, загрузку карт на прибор. Вроде всё нормально.
Использование неофициальной QLandkarte
QLandkarte — свободная программка с неплохим интерфейсом предназначенная заменить собой несвободную MapSource, в том числе загружать на устройство карты. В данный момент мне удалось с её помощью просматривать карты в формате IMG, но вот соединяться с устройством QLandkarte никак не хочет. Выдаёт мистическую «Device link error», а в настройках прямо сказано, что имя порта для USB-устройств игнорируется… В общем, надо разбираться, копать список рассылки, потому что программа похоже стоит того.
Другие способы загружать на устройство карты
Копирование карт в режиме USB Mass Storage.
Вот здесь предлагают такой способ:
Q: I copied the IMG files onto my GPS, but don't see anything.
A: Garmin GPS's have to use the gmapsupp.img file in the Garmin folder (USB Drive Letter:\Garmin\GMAPSUPP.IMG) and there can only be one of this file. Either rename the 1 file you want to gmapsupp.img or use sendmap20 to compile all the img's you want into one gmapsupp.img file.
Попробовал, создал на карточке устройства папку. Клал туда IMG-файлы. Устройство не видит. Переименовывал тот или иной файл в GMAPSUPP.IMG. Не находит. Пробовал называть строчными буквами (хотя там же всё равно FAT?). Не помогает. То ли карты не те, то ли надо что-то с устройством вначале сделать.
Есть программка
sendmap20
. Бесплатная её версия для Linux не работает: точнее не находит /dev/ttyUSB0. И что с ней можно сделать — я не придумал. Зато вот на этом
польском форуме написали, что если в wine связать порт com1 c /dev/ttyUSB0 (см. выше про MapSource), то под wine будет работать бесплатная Windows-версия
sendmap20
.
И действительно,
sendmap20
без проблем работает в wine после привязки порта, карты на устройство загружаются. Также в wine хорошо работает
GPSMapEdit
, которым можно создавать и редактировать карты. Бинарная бесплатная версия
cgpsmapper
, который конвертирует файлы из «польской нотации» в формат IMG, используемый Garmin, — тоже работает. Так что уже даже удалось создать и загрузить на устройство самодельную карту. При использовании
sendmap20
нужно каждый раз стирать с устройства все карты и заливать весь нужный набор заново, это особенность программы.
Резюме: подключение GPS устройства Garmin GPSmap 60Cx в Linux проблем не вызвало, передача точек пути, треков и маршрутов похоже работает нормально (как минимум, в
MapSource
и в
gpsman
), конвертировать данные в другие форматы умеет
gpsbabel
, карты можно загружать на устройство с помощью
sendmap20
или
MapSource
под wine; сами карты в формате IMG в Linux можно просмотреть в QLandkarte или официальном MapSource, полный цикл подготовки карт можно выполнить при помощи бесплатного (но несвободного) ПО, но замену некоторым программам можно найти. В этом плане я связываю надежды с QGIS и GRASS, но пока ничего с их помощью не произвёл.
Ссылки по теме: