OpenStreetMap for Garmin Fenix

I’ve recently bought a Garmin Fenix Multisport Smartwatch. The watch offers support for navigation and maps. By default it came with some topo maps for Europe. However I wanted to use more detailed maps from OpenStreetMap.

Freizeitkarte for Garmin Fenix loaded into QMapShack

After some search I’ve discovered the wonderful Freizeitkarte project, which is a project to offer maps for Garmin devices. The default maps work OKish on the device. However as the smart watch doesn’t have a high end processor zooming and fast scrolling on the map is very slow. Also the display of the Fenix isn’t very saturated, so you need to work with different contrasts to display the map nicely.

So I’ve downloaded the Freizeitkarte Map Development Environment (MDE) and tried to find out how the map is generated and how you could improve it. It is really simple to use and well documented!

First I removed power lines from the map, you really don’t need them on a fitness tracker and they often confused me because the display was similar to roads and it looks like the is a junction of a road but there wasn’t a road.

Then I reduced the Points of Interest (POI) to remove what we really don’t need. Things like car, beauty or fashion shops, power and communication towers, bowling and horse stuff and many more.

The next step as to improve the look of the map. The MDE comes already with different files which define how a map looks, those are called TYP files. It has an outdoorc.TYP file which has a more contrasty look for a map but not enough for the Fenix. So I created a new TYP file especially for the Fenix and improved some icons I find important like restaurants, supermarkets, pharmacies and hospitals, parking lots and (bus) stops.

Also there had been problems with the map on fenix. The draw order really matters and I needed to draw forests earlier as they didn’t show up on smartwatch, but worked fine when loaded in QMapShack.

My current version of the Fenix style for Freizeitkarte can be found in a Merge Request (MR) for FZK MDE.

If you want to play with an already rendered map, I’ve uploaded a map of Bavaria and the Alps here:

fzk_fenix_bavaria_de.img.xz (262 MB)
fzk_fenix_alps_de.img.xz (1.4 GB)

Download the file, unzip it and copy the fenix_fzk_bayern_de.img to the GARMIN folder on the device using MTP. Make sure to use None as the Map theme to get the one from the map!

In case you want a map for your region you can build it yourself using the MDE.

Here are my build steps:

# Build Freizeitkarte for Fenix

1. Bootstrap (needed only once)
  ./mt.pl bootstrap urls http://osm.thkukuk.de/data/bounds-latest.zip http://osm.thkukuk.de/data/sea-latest.zip
  ./mt.pl create

2. Fetch OSM and Elevation and join them
      ./mt.pl --downloadbar fetch_osm Freizeitkarte_BAYERN
      ./mt.pl --downloadbar fetch_ele Freizeitkarte_BAYERN
      ./mt.pl --ram=22528 --cores=11 join Freizeitkarte_BAYERN

3. Split and build the map
      ./mt.pl --ram=22528 --cores=11 --language=de split Freizeitkarte_BAYERN
      ./mt.pl --ram=22528 --cores=11 --typfile=fenix.TYP --style=fzk-fenix --language=de build Freizeitkarte_BAYERN
      ./mt.pl --ram=22528 --cores=11 --typfile=fenix.TYP --style=fzk-fenix --language=de gmapsupp Freizeitkarte_BAYERN

Note: For using 1 CPU core you need 2GB of RAM. I have 12 cores (24 threads) and 32GB of RAM in my machine. The above values I use are a good compromise between speed and a still usable system :-)

Feedback is welcome as well as code/style contributions.

You may also like...

3 Responses

  1. Phil says:

    How does this compare to the maps from the Garmin Explore app? It seems to use OpenStreetmap and download the relevant basemap, then transfer it to the watch.

  2. I’ve never tried the Garmin Explore App. However this way I can the modifications to the map that I want 🙂

  3. Miso says:

    Nice map style. I am using freemap.sk project maps (osm based), but the are specific and rendered only for sk/cz/hu

Leave a Reply

Your email address will not be published. Required fields are marked *