Устройство позволяет пользоваться загружаемыми векторными картами и имеет карточку памяти. Впрочем, все возможности ещё только предстоит научиться использовать. Карты надо научиться делать самим (те, что в продаже, стоят безумно дорого, но, главное, нормальных топографических карт нет, всё больше дороги…) — но это отдельная тема (кое-какие инструкции (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, но пока ничего с их помощью не произвёл.Ссылки по теме:


10 коммент.:
Приветствую!
Отличная инструкция, всё нормально и работает. Ещё хотел бы добавить, что OziExplorer прекрасно заводится под Wine. Так же вот написал небольшую замету о работе с программой Viking - http://v0lki.blogspot.com/2008/10/viking-c-gps-linux.html
Полезная статья! По этой теме мало информации.
Подскажите, а где можно использованную вами версию MapSource? Я пробовал устанавливать под wine'ом другие его версии (от Навиком - "Дороги России", и MapSource - Trip & Waypoint Manager 2.01, который шел в комплекте с моим Garmin GPSMap 60CS) - они встают, но не запускаются. И даже не удаляются. В первый раз пришлось вручную подчищать записи в wine'овском реестре, бэкапа не сделал. Версия wine у меня 1.0.0-1, по идее, должна быть близка к вашей 1.0-rc-1.
Версию MapSource я взял с диска, который шёл с устройством. Это версия 4.0. Карты в неё я доустанавливал отдельно. Хочу заметить, что первый запуск MapSource после установки был ОЧЕНЬ долгим (я думал, что она зависла). Однако последующие запуски проходили быстро. Потом опять был долгий запуск после установки каких-то карт. Ещё нюанс: у меня карты установлены на внешний USB-диск, и этот диск должен быть обязательно подключен перед запуском MapSource, иначе MapSource сходит с ума (просит себя переустановить). Сейчас это у меня работает и с wine-1.0.1.
Хочу, однако, заметить, что я тут недавно из любопытства поставил убунту, и в ней работа с GPS Garmin похоже поломана. Как в 8.04 Hardy, так и в 8.10 Intrepid, модуль garmin_gps (создающий устройство /dev/ttyUSB0) по умолчанию вообще заблокирован, предлагается полагаться на поддержку протокола Garmin непосредственно в пользовательских приложениях. Соответственно, раз нет /dev/ttyUSB0, MapSource прибора не видит вообще. Да и в gpsbabel опция usb: у меня не всегда работает (заработало, после создания правила udev).
Однако если даже модуль и включить, устройство появляется, но gpsbabel зависает при обращении к устройству. Соответственно, проблемы проецируются и на MapSource. Как сделать устройство видимым для wine без модуля garmin_gps — я не знаю.
В общем, хотели как лучше:
https://lists.ubuntu.com/archives/kernel-team/2008-February/002130.html
https://bugs.launchpad.net/ubuntu/+source/module-init-tools/+bug/114565
а получилось как всегда.
Думаю, если в ближайшее время разберусь, как заставить всё это добро работать в убунте, то отпишусь. Скорее же всего в ближайшее время вернусь обратно на Debian, где у меня всё работало нормально (к убунте есть и ряд других претензий).
>В общем, хотели как лучше:
>https://lists.ubuntu.com/archives/kernel-team/2008-February/002130.html
>https://bugs.launchpad.net/ubuntu/+source/module-init-tools/+bug/114565
>а получилось как всегда.
Вы знаете, а я буквально вчера и позавчера, как выяснилось, сидел, на этих же граблях, которые, как вот сейчас и выяснил, актуальны не только для убунты, но и для дебиана. Поясню. Я уже давно пользовался gpsbabel'ем, но до наст. вр. только в одну сторону - на выкачку с приемника, для сохранения на компе. А на днях мне понадобилось очистить приемник и залить другие данные. И такие глюки начались, шопес.. Трэки копировались кусками, из 160 трэкпойнтов становилось 12, вэйпойнты тоже заливались непонятно как. Поспрашивав в русскоязычных форумах и не получив ответа, я отписал в gpsbabel-рассылку, где меня первым же делом ткнули на эту самую багу, и в ней и оказалось дело. Блэклист + правило udev, и теперь gpsbabel в обе стороны - как часы. Вместо '/dev/ttyUSB0' адресом приемника стало 'usb:' Не знаю, есть ли мне теперь смысл возиться с MapSource, может, теперь с ним еще сложнее будет... Потому что у меня, в общем, налажены уже почти все необходимые gps-процессы: выкачка и закачка карт и трэков (gpsbabel), конвертация gdb и mps в gpx и обратно(gpsbabel), просмотр карт IMG вместе с трэками в gsb и точками в mps (GPSMapEdit под wine), редактирование трэков и точек (Viking, в конвертированных gpx). Осталось только запустить sendmap20 под wine'ом для заливки карт - к концу недели, наверное, найду на это время.
Хм. Может быть и так. Я раньше заливал GPSbabel-ем маршруты. Вроде бы получалось (но они были односегментные). Отдельные точки тоже заливались нормально. Может ли быть такое, что заливаемый трек был многосегментным? И соответственно при обратной заливке на устройство был залит как несколько отдельных треков… Сегменты можно объединить gpsbabel-ем.
Карты через wine sendmap20 я заливал (самодельные). Вроде нормально. Хотя в MapSource удобнее выбрать набор карт для заливки. Я, например, обычно заливаю, одну дорожную, несколько самодельных своих + самодельные изолинии сделанные другими людьми. Выбрать нужные файлы без MapSource было бы трудно.
Однако и для sendmap20 нужно настраивать "com-порт" в wine. Единственный способ который я знаю — символическая ссылка на /dev/ttyUSB0. А если его нет (без garmin_gps), то и com-порта в wine нет. А значит, не будут работать ни MapSource, ни sendmap20.
Похоже, что в этом случае остаётся только QLandkarte (который в последний раз, когда проверял, у меня не видел устройство).
А что такое gsb?
О кривой заливке треков. К сожалению, я не знаю, что значит "многосегментный" трек. В том треке из 160 трекпойнтов, который gpsbabel превращал при заливке в 12, все трекпойнты (в GPX файле) шли подряд, внутри одной теги trk.
О заливке самодельных карт MapSource'ом. Сколько я работал (под виндой) в MapSource, мне не удалось заставить его не только заливать, но даже просто открывать самодельные карты. Вносить изменения в реестр, согласно известным интсрукциям, пробовал, не прокатило. MapSource выдавал ошибку реестра.
О настройке com-порта для Sendmap20 и MapSource. Что-то я сразу не сообразил... Com-порт /dev/ttyUSB0 ведь не проблема включать/выключать, сколько и когда нужно. Я вот сейчас его снова включил (снял блэклист, удалил правило udev), запустил Sendmap20 под своим wine'ом - и успешно залил карты в приемник. Для работы с Sendmap20 его нужно включать, для работы с gpsbabel - выключать. Попробовал автоматизировать этот процесс при помощи скриптов; включить "на горячую", без перезагрузки, получилось, а выключить - почему-то нет. Не знаете, какую команду в Debian нужно выполнить, чтобы отработать новую запись в blacklist без перезагрузки? Скрипты у меня такие:
- для включения com-порта, работает без перезагрузки
#!/bin/bash
cat /etc/modprobe.d/blacklist | sed -e 's/\(blacklist garmin_gps\)/\# \1/' > /etc/modprobe.d/temp
cp -f /etc/modprobe.d/temp /etc/modprobe.d/blacklist
rm -f /etc/modprobe.d/temp
rm -f /etc/udev/rules.d/051_garmin.rules
- для выключения com-порта, требует перезагрузку
#!/bin/bash
cat /etc/modprobe.d/blacklist | sed -e 's/\# \(blacklist garmin_gps\)/\1/' > /etc/modprobe.d/temp
cp -f /etc/modprobe.d/temp /etc/modprobe.d/blacklist
rm -f /etc/modprobe.d/temp
echo SYSFS{idVendor}==\"091e\", SYSFS{idProduct}==\"0003\", MODE=\"666\" > /etc/udev/rules.d/051_garmin.rules
Что такое gsb. Извините, опечатался. Не gsb, а gdb. Я могу просматривать трэки GpsMapEdit'ом, если сохраняю их gpsbabel'ем в gdb.
Подготовить самодельные карты для использования в MapSource можно с помощью MapSetToolkit (http://cypherman1.googlepages.com/home). У меня получилось.
По поводу автоматизации включения/отключения garmin_gps — наверное, надо перед включением в blacklist ещё убедиться, что модуль уже выгружен из памяти (rmmod garmin_gps; lsmod | grep -q garmin_gps && echo still loaded)
http://takeoff.mipt.ru/wiki/index.php?title=Подготовка_карты_для_qlandkarte
Серж, это снова я спамлю в комментах :-)
1. Спасибо за пост - скачал и собрал последний gpsbabel, загружает треки с Гармина на ура.
2. поправь ссылку на Geofaq.ru: цитируемая тобой статья (очень хорошая, как, впрочем, и всегда) теперь тут.
3. sendmap20 работает, во всяком случае у меня на Дебиан Этч. Косяки с garmin_gps, видимо, убунтовские: на моём самосборном ядре 2.6.22.1RT всё играет и поёт :-)
Ещё раз спасибо за статью. Одним гарминоводом стало больше.
Спасибо! Ссылку я поправил.
В дебиан ленни у меня тоже всё без проблема работало.
Отправить комментарий