Free Maps on Garmin eTrex 10 (and all Garmin GPS)

Despite it is sold as a non-cartographic handled GPS device, with limited storage capacity of 10 MB and the inability to expand it, the eTrex 10 GPS, like almost all Garmin devices, is capable of reading Garmin maps in IMG format. However, the storage limitation prevents to use standard Garmin maps, which are hundreds of megabyte big, not well updated and expensive. We can overcome these limits by utilizing the vast resources of OpenStreetMap (OSM), a collaborative mapping project that empowers users to contribute and update maps themselves.

Garmin eTrex 10

I’d like to advocate for the eTrex 10 by highlighting its compatibility with OSM maps, which can be a game-changer for outdoor enthusiasts and adventurers, at a fair price of around 90$. With just 5 MB of storage, I have been able to map out half of southern Sardinia, including contour lines, thanks to OpenStreetMap.

Now, let’s delve into two methods to integrate OpenStreetMap data into your Garmin device:

The easy way: bbbike extract

The easiest way to obtain Openstreetmap maps in Garmin format, is to use BBBike extractor service.

  1. Select the are you want to download
  2. Choose a Garmin format from the select box
  3. Put your email and press the “Extract” button

BBBike export example

Within minutes, your map file will be ready for download. Some Garmin devices, such as the eTrex, require the map file to be named gmapsupp.img for compatibility.

Crafting Customized Maps

For those who enjoy tinkering and want to optimize their maps further, manual customization is an option; this method allow for instance selecting only desidered OSM features, add contour lines, simplify tracks, etc.

1. Download osm data

Download roads and all OSM data for your area using Overpass-api services like You can select specific features, such as roads, trails, rivers, peaks, and notable points of interest like churches and railways.

First you need to define an osm-script containing your query; you can write it in XML or OverpassQL; use this wiki as reference: Overpass_API#Simple_usage_examples.

The most important thing you have to specify in the query is the bounding box of the area you want to download.

<osm-script timeout="900" element-limit="1073741824">
  <bbox-query s="51.15" w="7.0" n="51.35" e="7.3"/>

After defining and saving your query, use wget or similar software in order to download osm data:

wget --post-file=your_query_file.xml -O map.osm

2. Create contour lines (optional)

If you are going to use this map for outdoor sports, sometimes is useful to also have contour lines.

Contour lines

You can use Srtm2Osm to obtain an OSM file of digital elevation models for your area of interest.

3. Transform .osm to .img

Now that we have openstreetmap data files, we can use a tool named mkgmap in order to convert those file to a Garmin .img file.

This is the command I use, but it can customized with parameters in order to fit with your needs:

mkgmap --reduce-point-density=3 --gmapsupp --input-file=contour.osm --input-file=map.osm --merge-lines 
  • --reduce-point-density: simplifies lines
  • --gmapsupp: create a gmapsupp map file
  • --merge-lines: try to merge straight lines

Now copy the file to your device, using an appropriate name and it’s done.


Both methods are compatible with any Garmin device that supports the Garmin .img map format, ensuring you always have up-to-date maps at your fingertips. Whether you opt for the convenience of BBBike Extract or the customization of manual crafting, OpenStreetMap offers a wealth of possibilities for enhancing your outdoor adventures.

Have fun!


The Time I Built a Probabilistic Computer

5 minute read

In early 2023, I embarked on a journey to explore the field of probabilistic computing. This endeavor culminated in the construction of a hardware prototype,...

Back to Top ↑


Expanding the Commodore 64 Quantum Emulator

1 minute read

In a recent article I wrote, “Quantum Computing on a Commodore 64 in 200 Lines of BASIC”, published both on Medium and, shows a two-qubit quantu...

Back to Top ↑


OCaml and Quantum Computing

1 minute read

Qiskit is a python SDK developed by IBM and allows everyone to create quantum circuits, simulate them locally and also run the quantum circuit on a real quan...

Yallo, a new Tezos language

2 minute read

As someone noticed from the previous post, last weeks I started to write a new programming language for Tezos smart contracts. This project was initially int...

King of Tezos: a smart-ponzi on Tezos

2 minute read

While writing a new programming language, it is often useful to write some real use-cases to test the syntax, the language expressiveness and the code cleann...

Favorite dev quote

less than 1 minute read

Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing

New blog

less than 1 minute read

This is my new blog, based on jekyll. I’ll soon import old posts from my old blog.

Back to Top ↑


Contractvm: decentralized applications on Bitcoin

less than 1 minute read

Contractvm is a general-purpose decentralized framework based on blockchain. The framework allows to implement arbitrary decentralized applications in an eas...

Back to Top ↑


Dices provably fair - Nonce overflow vulnerability

less than 1 minute read

Most of bitcoin dice software use a system to prove the fair play of the server for each bet. Most of them implement this mechanism using two seed (server se...

Back to Top ↑


Apache2: redirect different domains to subfolder

less than 1 minute read

In the aim to merge two of my server on digitalocean, today I tried to write a mod_rewrite rule to redirect a secondary domain to a subfolder. After one hour...

Back to Top ↑


MineML: F# miner

less than 1 minute read

MineML is a multithread CPU based bitcoin miner written in F#. At the moment it’s a slow implementation, but the class structure offers the possibility to im...

Back to Top ↑