June 6, 2021
Garmin IMG file format
I have downloaded several ".img" files from garmin.openstreetmap.nl.
So far I have not been able to get them to display on my device and
I am curious to find out how these IMG files are laid out and what they
contain.
The garmin "imgdecode" program
This is what I found on SourceForge by John Mechalas (copyright in 2005, but BSD license).
It is 4000 some lines of C++ that aims to "dump" a Garmin IMG file.
This project has seen no activity since 2015
There is a "configure" file, so I type "configure ; make" and get
a variety of compiler warnings. I add an include of cstring.h to
garminimg.cc and fix two other warnings and I get a clean compile with
less than 10 minutes effort. However when I run it against one of the image files
I downloaded from garmin.openstreetmap.nl it goes into some kind of loop, keeps the CPU
busy and never gives me any output. I let it go for several minutes and then give up.
It does create a directory with several files inside. When I run it on US-Tucson.img
I get a US-Tucson directory with the contents:
-rw-rw-r-- 1 tom tom 3997 Jun 6 15:40 00371a00-00371acf.LBL.header
-rw-rw-r-- 1 tom tom 1421 Jun 6 15:40 0036da55-0036da68.TRE.levels
-rw-rw-r-- 1 tom tom 2459 Jun 6 15:40 0036d8bc-0036da54.TRE.mapinfo
-rw-rw-r-- 1 tom tom 2970 Jun 6 15:40 0036d800-0036d8bb.TRE.header
-rw-rw-r-- 1 tom tom 41147 Jun 6 15:40 00000001-000091ff.DSKIMG.header
-rw-rw-r-- 1 tom tom 4679 Jun 6 15:40 003718a7-003718ee.TRE.polylines
-rw-rw-r-- 1 tom tom 562632 Jun 6 15:40 0036da69-0037177a.TRE.subdivs
-rw-rw-r-- 1 tom tom 7519 Jun 6 15:40 003718d7-0037194b.TRE.polygons
-rw-rw-r-- 1 tom tom 211 Jun 6 15:40 00371ac4-00371ad9.LBL.sort
-rw-rw-r-- 1 tom tom 117 Jun 6 15:40 003718a7-00371780.TRE.unknown1
-rw-rw-r-- 1 tom tom 19952 Jun 6 15:40 00371781-003718a6.TRE.points
-rw-rw-r-- 1 tom tom 268 Jun 6 15:40 0037177b-00371780.TRE.copyright
-rw-rw-r-- 1 tom tom 117 Jun 6 15:40 0036d800-00371780.TRE.unknown2
-rw-rw-r-- 1 tom tom 2085723286 Jun 6 15:42 00371ada-XXXXXXXX.LBL.labels
The "labels" file is big, and growing all the time. It contains this over and over:
| | Offset 0x000000
0037177e | f1 7b 00 | XXX
Clearly a bug.
Wikipedia description
The claim is that a Garmin IMG file is a filesystem, complete with partition table.
The linux "file" command says "DOS/MBR boot sector", which is consistent with that.
However, although some references call this a FAT type filesystem, it is by no means
a windows FAT, FAT32, or any other windows FAT. It is its own thing entirely.
The OSM Wiki gives a lot of details. Also note that if "garmin.openstreetmap.nl" is generating
IMG files, it must include code that can generate the format.
Have any comments? Questions?
Drop me a line!
Tom's backpacking pages / tom@mmto.org