Не так давно решил разориться на GPS-навигатор, так как по многим местам приходится мотаться и ходить по отечественным картам уже нет никакой возможности. Вспомнив о том, как ув.тов.
jetxee нахваливал Garmin GPSMap 60CSx, решил его прикупить. Естественно, сразу встал вопрос о том, как закачивать в него карты.
Выглядит он как достаточно крупных габаритов мобильник (середины 90-х, если кто помнит). Покупал на ebay, так как платить две цены здесь желания особого нет. Отсюда есть одна особенность: навигатор с английским меню, так что русские карты должны быть в транслитерации.

Итак, вариантов закачки карт в GPS-навигатор, собственно, два: через эмуляцию /dev/ttyUSB0 по закрытому протоколу Garmin и по Mass Storage.
Закачка карт в GPS-навигатор по протоколу Garmin
Этот вариант оказался самым жизнеспособным. Если ваше ядро собрано с поддержкой garmin_gps, то после подключения навигатора к USB штепселю ядро нам должно написать в логах dmesg так:
usb 4-1: new full speed USB device using uhci_hcd and address 3
usb 4-1: configuration #1 chosen from 1 choice
drivers/usb/serial/usb-serial.c: USB Serial support registered for Garmin GPS usb/tty
garmin_gps 4-1:1.0: Garmin GPS usb/tty converter detected
usb 4-1: Garmin GPS usb/tty converter now attached to ttyUSB0
usbcore: registered new interface driver garmin_gps
drivers/usb/serial/garmin_gps.c: garmin gps driver v0.28
Выделенная строчка нам говорит о том, что у нас появился новый порт имени /dev/ttyUSB0 куда мы будем закачивать наши карты.
Где взять карты для GPS-навигаторов Garmin?
Это философский вопрос, и в одном посте на него не ответить. Но для начала можно воспользоваться открытыми картами OpenStreetMaps (после регистрации имеем возможность экспортировать нужные вам куски карт в XML формат).
Уже собранные карты для Garmin, на всякий случай, есть здесь. После распаковки будет много файлов, нам нужен только 008XXX.img
Программы для закачки карт в GPS-навигаторы для Linux
Софта под Linux для закачки gps-карт в навигатор немного. Из опробованного мной могу сказать про sendmap. Скажу сразу: версия sendmap17Lstatic, которая Stable version of sendmap with RS support only, не работает у меня никак. При попытке отправить в навигатор карту ругается:
./sendmap17Lstatic /dev/ttyUSB0 -s57600 moscowregion.img
GPS SendMap & GetMap version 17, Kozicki@gps.chrisb.org
Checking input files
Preparing...
Failure to communicate with GPS or no maps can be upload into GPS
Зато работает новая версия, которая на сайте обозначена как Free sendMap20 rev 4.2 BETA for Linux with experimental USB support. С её-то помощью и удалось закачать карту, сделанную для московской области:
./sendmap20 -t/dev/ttyUSB0 -s9600 moscowregion.img
Detected : GPSMap60CSX Software Version 3.60
Available memory : 120 MB
Max number of maps: 2025
Final map size : 486 kB
Maps uploaded!
После этого карта появляется в списке карт навигатора (на всякий случай - у Garmin в устойстве карта может быть только одна, загрузка новой стирает предыдущую).
Параметры можно менять, например, изменить скорость закачки (-s115200) и присвоить карте другое отображаемое имя (-mMOSCOW )
./sendmap20 -t/dev/ttyUSB0 -mMOSCOW -s115200 63240001.img
После этого навигатор карту видит и может с ней работать. Правда, на той карте географическая привязка была какая-то странная...Для Windows программы для закачки карт в GPS-навигатор называются MapSource и GPSMapEdit.
Закачка карт в GPS-навигатор через Mass Storage
Если выбрать в меню навигатора этот вариант, он станет большой флешкой и вы сможете на него закачивать карты:
usb 4-1: new full speed USB device using uhci_hcd and address 4
usb 4-1: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
scsi 0:0:0:0: Direct-Access Garmin 60x microSD 1.00 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 246016 512-byte hardware sectors (126 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] 246016 512-byte hardware sectors (126 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 0:0:0:0: [sda] Attached SCSI removable disk
sd 0:0:0:0: Attached scsi generic sg0 type 0
usb-storage: device scan complete
По идее, монтируем /dev/sda1 и наступает нам счастье. После этого, по идее, нужно создать каталог garmin и закачать туда вашу карту с названием gmapsupp.img
Но здесь есть нюанс: если вы это делаете в первый раз, закачать карты можно, но навигатор карт не видит. Это связано, как я понял, с регистром символов: каталог должен называться Garmin - так, как его создаёт программа sendmap при первой заливке карт.
И ещё. Как выяснилось на форумах, закачать на флешку несколько карт и выбирать из них в Garmin 60 CSx не получится. С флешки видно только одну карту.
Читать далее