OSM Map On Garmin

From OpenStreetMap Wiki
Jump to: navigation, search
Available languages
česky Deutsch English français 한국어 italiano magyar Nederlands 日本語 русский

OSM Map On Garmin

Garmin Colorado 300 showing routable OSM made with mkgmap

Many Garmin GPS devices can show maps on their display. This overview page explains how you can get OSM maps on your Garmin device.

Pre-made maps

Some people have done the work of creating Garmin maps for parts of the globe. You can download these files and put them straight onto your device.

See OSM Map On Garmin/Download

Creating your own maps from OSM data

Software

Program License .osm to .mp .mp to .img .osm to .img IMG aggregation Routing Generates .TYP Generates .TDB Relief contours Upload Developed for OSM? User interface Platform
Mkgmap GPL No Yes Yes Yes Yes Yes Yes No Yes command cross-platform (Java)
QLandkarte GPL No No No Yes No Yes No GUI Linux, Mac OS X, Windows
cGPSmapper proprietary No Yes No No Yes Yes Yes No No No command Linux (CLI), Windows (CLI & GUI)
sendmap proprietary No No No Yes No No No No Yes No command Linux, Windows
Mapwel proprietary Yes Yes Yes Yes Yes Yes No No Yes No GUI Windows
osm2mp GPL Yes No No No Yes No Yes command Linux, Windows
OSM Composer proprietary No No Yes No No Yes Yes Yes Yes Yes GUI cross-platform (requires Java 1.6)
GroundTruth GPL Yes No Yes No No Yes Yes Yes Yes Yes command Windows/Mono (.NET 3.5 SP1 required)
Osm2garminGUI GPL No Yes Yes Yes Yes No Yes Yes No Yes GUI Windows, Linux (Java + NetBeans RCP)
  • Mkgmap is an Open Source Java program developed specifically for converting OSM data into Garmin map image files. You should probably look at this first.
  • QLandkarte is an Open Source program to display and work with Garmin maps.
  • cGPSmapper is a program to convert a textual presentation of a Garmin map into binary map files. cGPSmapper can not read OSM files directly. MapCenter is a web interface to cGPSmapper.
  • sendmap is a companion program to cGPSmapper for aggregating and uploading map images files.
  • Mapwel is an all-in-one program for GPS mapping. Mapwel supports OSM files and their conversion to Garmin IMG format with routing.
  • osm2mp can create routable garmin maps, see this forum thread for details and download.
  • OSM Composer is a GUI for simplifying the process of creating Garmin map images from OSM and SRTM data. It does not generate maps itself but controls existing tools.
  • GroundTruth is an open source command line application for creating Garmin maps from OSM data. It has a wiki-based rule engine for specifying how map features should look like (which it then uses to generate Garmin TYP files). It can also generate relief contours from SRTM data for Garmin maps. It uses cGPSmapper to generate IMG's from .MP files.
  • Osm2garminGUI is an Open Source program for downloading/updating OSM Planet file and elevation contours SRTM3 data, extracting data for given regions and processing extracted regions with Splitter and Mkgmap in a single step.

Directions: Creating your map from OSM data

These are generally the steps involved (also see the Software section above):

  1. Get OSM data:
    • The easiest way of all is to use the Export tab on the site. This will download the map you have currently on display. Choose the OpenStreetMap XML data option when downloading (active for zoomlevel >= 11).
    • If you want an entire country or maybe even the whole world, use the planet dump or one of the many excerpts available.
    • You can use JOSM to select and download the data, then choose Save As. (But note that this is inefficient for large data sets, as JOSM will attempt to draw the data, which can take many minutes, and which you don't need to do if you're only trying to use the data on a GPS unit.)
    • For a command-line download, see Getting Data or GroundTruth For Dummies#Downloading OSM Data.
    • If you are writing software, download through the XAPI.
  2. Split large area: If your area is a big region or a whole country before compiling OSM data to a garmin IMG file you need to split it with : Splitter
  3. Convert to IMG file: You need to convert the .osm file to a Garmin map image file (.img). You should probably use Mkgmap or GroundTruth for this. Mkgmap will not process arbitrarily large input files, so you probably need to cut the osm file into smaller chunks, most easily with the new splitter. A workaround is to NOT download raw .osm data but directly use the .img tiles by User:Computerteddy, which cover the whole world. You can use [1] to calculate the URLs of the tiles you need for a given rectangular region.
  4. Creating GMAPSUPP.IMG files (optional): If you would like to directly upload your map onto your Garmin GPS you need to pack your IMG files into an aggregate image file called GMAPSUPP.IMG. Mkgmap and cGPSmapper perform this process. Programs such as sendmap and MapSource create this file automatically when uploading files. If you plan on using these programs to upload it onto your GPS skip this step and move to the #Installing the map onto your GPS section.

If you are interested on building the map for a single country on a windows machine, User:GPS-Marco provides a software package collecting all the needed tools and a script that executes all the above steps with a simple double click. The script relies on the download.geofabrik.de server for OSM data downloading: you can check there for the list of available countries. The script generates a compiled map (gmapsupp.img) that is up-to-date, is routable (optimized for motor vehicles) and is ready to be uploadad on a Garmin GPS. A .reg file will be also generated for a simplified MapSource intallation.

How to assemble your own map

(this information needs checking and either deleted or integrated into the above instructions)

User:Computerteddy provides weekly updated tiles for the whole world which are available for download (1 GB archive of all tiles, access to gzipped single tiles). These can be combined to a Garmin gmapsupp.img using the free sendmap program (download).

  1. Determine the list of tiles that you are interested in with either of these scripts: Script based on Google Maps, script based on lat/lng coordinates
  2. Download the necessary tiles from the links mentioned above (be aware that no tiles are available for areas for which no map data is available, e.g. pure ocean tiles). Extract them if necessary.
  3. Copy sendmap20.exe to the folder where you stored the downloaded tiles.
  4. Use sendmap to create a gmapsupp.img: "sendmap20 -l tile1.img tile2.img tile3.img ... tileN.img"
    This script can generate the corresponding sendmap command if you need many tiles but be aware that you may have to remove the tile names for which no tiles exist (ocean tiles).
    Alternatively use mkgmap: "java -jar mkgmap.jar --gmapsupp tile1.img tile2.img tile3.img ... tileN.img"
    It's also a good idea to give the resulting .img file an internal description for when multiple files are loaded onto your Garmin or sharing with friends: see Topographic_maps_for_garmin_devices#Combining_the_data for adding a description.
  5. Upload your map to your device and enjoy your map.

Creating your own topographic maps

See the dedicated page on topographic maps for garmin devices.

Installing the map onto your GPS

Installing direct to your GPS: The easiest way to install a map on your Garmin device is to put it in USB mass storage mode and copy the gmapsupp.img file(s) that you want to install to a directory called Garmin, or Map. If neither of these exist (such as on some Nüvi 1xxx models), create the latter. For more details on this see OSM Map On Garmin/Mass Storage Mode.

The following example describes how to copy the file in Linux:

   wget http://path/to/gmapsupp.img
   mkdir /mnt/gpsdevice/Garmin (if this folder doesn't exist)
   cp gmapsupp.img /mnt/gpsdevice/Garmin/

Note that the installed map(s) show up at "tools / settings / map / map info" from which you need to select the new map over the Garmin base map.

Note also that you may need to install the gmapsupp.img file(s) on your GPS unit's SD card (if it has one). (At least on one Nuvi 1490 maps installed on the device's Garmin folder did not show up in the "map info" view.

Installing using sendmap: If your GPS doesn't support USB mass storage mode you may have to use sendmap or other proprietary software to transfer it to the device.

Using MapSource: Alternatively you can Load your map into Garmin's Mapping program MapSource and download it from there. Instructions for installing your map in MapSource are here OSM Map On MapSource Once the maps are installed in MapSource select the map function in the tools menu. Then highlight all the maps you want to download. you can change between different mapsets while doing this. Then choose the "send to device" function. This will Overwrite the existing map files (except the Garmin base map).

What if I have an existing gmapsupp.img file?

Some Garmin devices/applications support more than one img file. Try renaming your OpenStreetMap .img file to a different name like gmapsup2.img or gmapprom.img.

When tested on an Oregon 200 (firmware 3.42) and GPSMAP 62S (firmware 2.80), eTrex 20 (firmware 2.30), it will load any .img files in the Garmin directory. The nüvi 1xxx and 3xxx series will load any .img file in the Map directory. You don't need one named gmapsupp.img at all. Partly off-topic: in fact, if you don't want the device to see a map for testing purposes, you need to move the file out of the Garmin directory or rename it so it won't end with .img.

When multiple ".img" files are installed, it is difficult to differentiate them in the on-device menu when they all have the default "OSM Street Map" (or similar) name set in the ".img" file header, but it is relatively simple to change the on-device name:

  1. Open the ".img" file in an editor that can handle binary data. Those editors are commonly referred to as hex editors (for Windows Frhed seems to be a good choice; it can partially open files which is important as .img files can be quite big). However, this is not an easy task for average computer users.
  2. Edit bytes 0x49-0x5C to assign a new name using ASCII printable characters.
    • Pad unused characters at the end of the name with spaces.
    • In some map files, 0x5D is a space character, but it is not part of the name field.
  3. Additional map descriptive text may be placed in characters 0x65-0x82.
    • Unused characters at the end of the field are padded out with spaces.
    • The descriptive text may not appear in the list of maps on-device. For example, on the eTrex 20, the descriptive text only shows up when the map name is selected.
    • Some devices may not display the entire descriptive text field. For example, the eTrex 20 seems to display only characters 0x65-0x73.
    • On some devices, when both name and description fields are populated, a space is either needed at the end of the name field, or at the beginning of the description field. For example, the eTrex 20 needs a space at either 0x5C or at 0x65 to be sure the two fields are separated by a space on some screens. Lack of a space in one of these locations can cause the name to truncate due to line-wrap issues.
    • Character 0x83 is also technically part of the description text, but a null character (0x00) is always required at this position.
  4. Save the edited ".img" file.

Older procedures

On Windows
No memory card
  • The easiest way is to use sendmap, a command line tool, which sends the gmapsupp.img file to the Garmin device. Already existing maps will be overwritten, so create a backup first.
  • It is also possible (didn't work for me with a Vista C) to transfer any section of a map together with all othly er maps on your unit after the map has been registered in MapSource. There is a section on how to do that (This is the same as the method above): OSM Map On MapSource.
    After integration of maps, in MapSource select ALL maps at once. That works across different map sets as well. Then choose "send to device". The transfer will take quite a while.
Memory card
  • If you don't already have any gmapsupp.img file on your internal memory, and you have a memory card, you can simply copy your gmapsupp.img file into a folder called Garmin on the memory card using a card reader or USB mass storage mode.
On Mac OS X

Garmin has a product called MapInstall and MapManager for the Mac software version 2.1.3 as of January 5, 2010 Download (21.24 MB) It's similar to Garmin Mapsource. The files from user:Lambertus Garmin OSM World routable (should) work.

Very similar to Linux. The difference is that the Garmin device is automatically mounted into the /Volume path instead of "/mnt/gps" (or whatever). You can rename the device path name from the default by marking the device symbol and accessing the information panel (command+i). Now rename it to e.g. "GARMIN". So you get the device path /Volume/GARMIN . On this device create a directory named "Garmin" and copy the file "gmapsupp.img" into it. That's it.

Older firmware versions of the Garmin GPSmap 76CSx are confused by files that OSX places on the card when indexing it with spotlight. After connecting the Garmin in mass storage mode, the next time the Garmin is powered off it will sound a continuous low error tone, only fixable by removing the batteries.

The fix is either to update the firmware, or to place a file called .metadata_never_index in the root folder of the Garmin memory card. To create the file, open a terminal and issue the following:

cd /Volume/"NO NAME" substituting the name the garmin card auto mounted as
touch .metadata_never_index

You may also need to clean up the spotlight files if they have already been placed

ls -a

will show you all the hidden files and

rm -rf <filename>

will delete them. Basically delete anything that's not the Garmin folder the .metadata_never_index file, or the gmapsupp.img file. Don't forget to delete any hidden files inside the Garmin folder:

cd Garmin
ls -a
rm -rf <hidden file to delete>
Everywhere else

Your existing gmapsupp.img file contains your current map. You can merge your existing map and these maps into a new gmapsupp.img file with mkgmap:

   java -jar mkgmap.jar --gmapsupp your-existing-map.img map-you-want-to-add.img

(The order in which the .img files are provided does not matter)

Note: Sometimes merging two gmapsupp.img files together doesn't seem to work but merging the two files that were used to produce them will work, e.g.:

   java -jar mkgmap.jar --gmapsupp 1234567.img 2345678.img

Once you have a gmapsupp.img file copy it to your Garmin device:

   sudo cp gmapsupp.img /mnt/gps/Garmin/

Converting MapSource format maps to Mac OS X format

You first need to convert the downloaded OSM data into a tdb and img file:

   java -Xmx512m -jar mkgmap.jar --tdbfile --gmapsupp map.osm

Maps in the MapSource format (a .tdb file and a bunch of .img files) can be converted to the Mac OS X .gmapi format using Gmapibuilder. This way the maps can be used in Roadtrip.

Using POIs from OSM along with Garmin Maps

If you want to use just POIs from OSM (e.g. "amenities") on your Garmin device, along with the maps that Garmin provided, have a look at the "Using POIs from OSM along with Garmin Maps" page.

Garmin also offers a free POI Extra pack that is generated out of OSM data (Europe) and released under ODbL.

Raster Maps

GPSmap 62s with OSM Mapnik raster map

Newer Generations of Garmin Devices can display raster maps via the KMZ capability and Birdseye view. Garmin's use of the KMZ format is rather limited and allows only for small maps with only 1 zoom level. The proprietary JNX format of the Birdseye view on the other hand allows for maps with up to 50000 tiles on 5 zoom levels. The JNX format has been re-engineered and there are multiple tools to create JNX Raster Maps that can be used after appying a firmware patch.

Devices

OSM maps should work on all Garmin devices which support uploading maps. These include the Colorado, eTrex Legend, eTrex Vista, eTrex Summit, eTrex Venture, GPSMAP, Nüvi, Zūmo, Oregon, Quest and Streetpilot ranges.

If you know of any Garmin devices which support maps but do not work with OSM maps, please list them here.

Other stuff

  • OSMGarminMap is an older XSLT style sheet to convert OSM data into files which can then be read and converted by cGPSmapper. It is probably not useful to you unless you want to hack around.
  • Cycle map explains how to create a custom "rendering" of OSM data using Mkgmap.
  • GPS Maps From OSM Data describes a web-based interface to generating GPS maps from OSM data.
  • See /Format for more information about these Garmin map image files.
  • See /WINE MapSource how to use the original MapSource in wine to transfer maps (if neither sendmap nor qlandkarte work for you).
  • GroundTruth, generates maps for Garmin GPS units using OpenStreetMap data and NASA's SRTM digital elevation model
  • See /Postcode Search On Garmin how to use open codePoint data set to enable postcode searching.
  • OS OpenData Contours on Garmin - add UK contours from Ordnance Survey OpenData.

External links

  • GPSMapEdit can be used to view and convert the garmin format (.img) back to polish format (.mp). The polish format is input for the MapCenter database.
  • MapSetToolKit can be used to open up an IMG file set (or just 1 IMG tile) and create a Garmin MapSource view. (it requires cGPSmapper which is free to download) it has been done before, but i forgot how exactly (might require editing zoom levels with GPSMapEdit
  • PocketMV is an shareware ($20) program for an Windows PDA that can display the garmin IMG file.
  • Mario Advisor is a free java utility to display Garmin IMG maps in your mobile phone.
  • www.digitalmobilemap.com is a J2ME program that can display garmin IMG map on any mobile phone. The application supports routeable maps and uses A* algorithm for AutoRouting
  • PTGMAP Program for WindowsMobile Device to display maps in the Garmin format.
  • Glopus (EUR 20, German) Another great shareware program for Windows PDA, PNA and PC to display maps in the Garmin format, mainly developed to show raster maps, but can show IMG maps as an overlay.