More Garmin Icons

More Garmin Icons

Over the last few weeks I’ve tried some technological explorations into the presentation of geocaches in various mapping tools. Read my Memory-Map and Back to BaseCamp posts. My success in doing so has lead to a measure of confidence in such things. So I tried to do some more Garmin icons based on the work in other tools. I have a Garmin Montana 650 that I use for long days of caching.

I probably understand such things at a level well above the average geocacher right now. It seemed reasonable to investigate how to extend this work into the display on the Garmin Montana. It was slow work, but I eventually made something that’s better than my previous attempt. Better, but not quite as good as I wanted.


Not long after I got the Garmin Montana (the first one, which I ultimately lost down a drain in Letchworth) I explored changing the icons to make them more visible against the collection of fairly busy and colourful maps on the device. I was happy with the results (see Garmin Custom Icons) at that point, but a couple of things still irritated me about it.

One irritation was the inability to tell whether a puzzle (or multi, letterbox or wherigo) was solved already of not. Another was the inability to tell which caches are disabled. I regularly spend ages at a site looking for a cache before realising it had been disabled for some time. Sometimes they are there, so I still want them on the GPSr, but I like to know when I start searching that it might not be there.


It proved to be a very frustrating dive into some fairly dark recesses of the internet. After much pain I eventually found a post on a forum site from a well-known London cacher. It stressed that on the Montana your options are very limited. He suggested the best thing to do, and that’s what I’ve implemented. What he confirmed was :

  • Custom icons on the Montana can only be applied to waypoints, not to geocaches
  • The Montana relies on a fixed relationship between cache type and icon which is embedded in the firmware somewhere, not in a configuration file – the <sym> tag in a GPX file is irrelevant because the Montana doesn’t use it
  • The list of acceptable names for geocache icons is quite limited – it doesn’t cover the full range of geocache types at all, presumably because many of them are rarely available in practice
  • If you provide a Montana with a cache type it doesn’t understand then it defaults to the bucket “Geocache” icon

What this means in practice is that it can’t even represent every single cache type, never mind having variations relating to status. You’ve got to get a bit creative with it. The way to implement your creativity is to amend the cache type in GSAK before downloading to the device. I guess I kind of knew this already, and had previously been using the “Benchmark” cache type to highlight solved puzzles, and the like. I’d been doing this manually, by changing attributes in GSAK one-by-one. Tedious, and prone to error.


I wrote a macro for GSAK that changes the apparent cache type as follows. I then changed the custom icons on the Montana to reflect this. It’s very bespoke, but it does what I want, or at least the closest I’m going to get to it :

  • Cache In Trash Out Event.bmp -> Used to indicate “owned” caches, represented by something that looks like a star in a green circle
  • Event Cache.bmp -> Used for all event types (CITO, Event, Mega, Giga, GPS Maze, Community Celebration) – there’s never enough of them for me to care what type of event each one is. I always know in advance whether I’m going to go to an event, so having them on the GPS map is a bit redundant anyway.
  • Webcam Cache.bmp -> Used to identify disabled and archived caches – there’s so few webcams left that there’s no point in giving them their own icon.
  • Virtual Cache.bmp -> Used for both virtuals and webcams.
  • Mega-Event Cache.bmp -> Used to highlight caches that have corrected coordinates, represented by an icon that looks like a piece of a jigsaw puzzle. I know you can use this for any cache type now, but I’m using it only for puzzles, multis, letterboxes and wherigos.
  • All other icons represent cache types where the cache is not corrected, owned or disabled.
  • Geocache.bmp -> Used for anything else, so all the “funny” cache types like Lab Caches, Groundspeak HQ, or Project APE.
  • Geocache Found.bmp -> Used to display any cache that I found. I normally don’t download them, but sometimes they slip through the net. You can’t use this icon for anything other than found caches anyway. This is checked before checking any other attributes.
  • The six other icons represent the child waypoint types of the same name (Trailhead, Question to Answer, Stages of a Multicache, Reference Point, Parking Area and Final Location).

Garmin Custom Icons

Where an icon is used for more than one cache type, I just add the cache type onto the end of the name. It’s rarely a thing of significance, to be honest.

If Garmin ever changes the firmware to allow more of the standard geocache types or to allow a “corrected” modifier then I’ll revise this scheme, but it doesn’t seem to be high on their priority list.


To implement this, I created yet another pack of icons (shown above), and two macros for GSAK. One macro changes the cache type in GSAK, recording the original settings into the “User Data” fields. The second macro restores the original settings from User Data so that the GSAK database is as it was previously. This is necessary because the GSAK menu option to download to a Montana doesn’t allow any configuration. I now have assumed this is because any configuration wouldn’t be implemented properly on the device.

The little bits of magenta in the icons are there because the Montana translates pure magenta (RGB 255:0:255 or #ff00ff) into “transparent”, so they look a little neater on the display.

So to execute this method, install the pack of icons onto the \Garmin\CustomSymbols folder of the Montana’s onboard storage (not onto any installed microSD card). In GSAK, run the SetSymbols macro, then download caches to the GPSr using the Send Waypoints option, and finally run the RestoreSymbols macro.

Back to Basecamp

Back to Basecamp

Having spent a week or so getting Memory-Map to display custom icons (see Memory-Map), I went back to Basecamp. Basecamp is a preferred technology for some locations. You can get good-quality, free, vector maps that can be mimicked on the GPSr.

Garmin doesn’t publish a lot of documentation about customization. They must assume that most users don’t delve deeply enough for this to be an issue. The fact that there is little internet chat supports that assertion. Most people aren’t in the game for heavy customisation. A few people are, and I’m one of those. So this post is very much in the “niche” category. I make no apology for that.


As a geocacher, most of my dislike for Basecamp stems from the fact that there are only two on-screen symbols. They are a locked treasure chest and an open treasure chest brimming with gold. These represent an unfound cache and a found cache respectively. So by default there is no method of telling different types of cache from one-another. There is no way of indicating whether those caches are mine or someone else’s, or whether I corrected the coordinates. And finally, there is no way or highlighting disabled or archived ones. That makes the tool of limited use for planning journeys.

So my objective was to figure out how to make it more useful by being able to use custom icons to display those various status flags. Simple, really.


Garmin advises that you can use custom icons (see Garmin Support – Custom Icons). This page gives some basics about what custom icon files need to look like and where you have to put them. What it doesn’t tell you is how to use them.

I did some research and discovered that the symbol displayed by Basecamp is whatever is defined in the <sym> tag of the input GPX file. GSAK has a number of different ways of producing a GPX file, depending on what you’re intending to do. Put another way, GSAK outputs GPX files using different tags according to what the destination application wants to see. There are options for Garmin POI files, generic GPX files, Basecamp specific files, and so on. My focus was on the generic “GPX/GGZ/LOC File…” and the “Garmin MapSource/BaseCamp File…” options. You can see the dialogs that those options spawn in the pictures below.

The key points to observe on these two diagrams are :

  • On the Basecamp export (right side) there’s a list of cache types and associated symbols which are placed in the output file – these can be altered by pressing the Change button
  • Also on the Basecamp export you can see checkboxes labelled Override with database symbol name… and Use a macro for symbol generation – the meaning of the second one is obvious but the first caused me to go looking – there is a database field called Symbol
  • On the generic export dialog (left side) you can see there’s various controls that talk about symbols, but not at the level of granularity that’s on the Basecamp specific one – experimentation showed that with the Force use of Geocache symbols only and Make symbols same as last GPS send checkboxes both off, the <sym> tag in the output takes the value of the database Symbol field

The net result of this investigation is that it’s possible to select various methods of setting the symbol to a custom value, and that they can be achieved using macros. My plan was therefore clear – draw up a map of the custom symbols I want to use, and then figure out how to implement that in a macro in GSAK.


The steps to implement the solution turned out to be rather straightforward. There are just 3 things to do :

Firstly, configure GSAK so it knows about the custom icons. Download the configuration file, unzip it and move it to the local data folder for GSAK. In my case (on Windows 10) this is C:\Users\’Me’\AppData\Roaming\gsak where ‘Me’ is the folder for the current user. Look at the Export to MapSource dialog above. If you press the Change button you get a further dialog in which you can assign individual custom icons to each set of statuses.

We only need to do this for child waypoints, because for geocaches we’re going to use a macro to populate the database and then use the Override with database symbol method. Once you’ve installed the config file and restarted GSAK you should see the new icon numbers and names in the dropdown lists on this dialog. Go to the Child Waypoints tab and configure the six child waypoint types with custom icon numbers 58 thru 63 as per the picture below.

Secondly, set up GSAK. Download the Macro file and install it into GSAK as normal. Change your display of columns in GSAK so that you can see the Symbol field. Try running the macro – you should see the value of the Symbol field changing as you do so.

Finally, install some icons for Basecamp to use. Download the icons file and unzip the contents into the folder where Basecamp expects to find them. On my Windows 10 PC this is at C:\Users\’Me’\Documents\My Garmin\Custom Waypoint Symbols.


And that should, theoretically, be the end of it. Having tested it, you can now either use the generic GPX output or the Basecamp one. Both place the content of the Symbol database field into the <sym> tag of the output file, and that seems to be all that Basecamp uses. Browse to an output file through Basecamp and install it, and you should see the new icons straight away. You’ll notice also that they have been imported into Basecamp as geocaches, not waypoints, so when you double-click you’ll still get the geocache dialog.

The macro allocates custom symbols as per the rules shown in the GarminOther.txt configuration file. You are free to change these, and the icons, as you see fit. The convention for naming the icon files is 000.bmp, 001.bmp, etc. This convention automatically associates the <sym> tag “Custom 1” with the icon file 001.bmp. You can use any of the other standard Garmin icon names if you want, but you’d need to change the macro to match what you’re setting up.

Note also the specifics of how I wanted to see the icons. I’ve used little indicators in the icons to show corrected coordinates and active/disabled. Ones I own have a totally different icon style, as do ones which are archived or found.

Final Annoyance

Surely, there can be no more annoyances! There are. One stands out.

Basecamp, by default, shows a text name alongside each cache or waypoint. Whether this is displayed or not is controlled by a tag in the GPX file, but there is no way in GSAK to set that tag, as far as I can tell. It is contained within an extension to GPX that GSAK doesn’t use.

You can open each item in the cache/waypoint list and suppress display of the name by changing “Symbol and Name” to “Symbol Only”, but for some reason in Basecamp you can bring up an “Open” dialog for multiple waypoints but not for multiple caches. For caches you have to do it one-by-one, which is tedious in the extreme.

The quick way is to select all caches and waypoints and then “Export Selection” in Basecamp to produce a new GPX file. This contains the relevant tag, so you can edit it and substitute all instances of “SymbolandName” with “SymbolOnly”, save it, and import that one back into Basecamp. Bob’s yer proverbial uncle. It’s irritating that I didn’t figure out how to programme that, but it’s a fairly small irritation, and to be honest, unless you’re loading thousands of caches into Basecamp you might find the labels useful.

Show me some pictures then

Pictures below show a few examples of how this looks in Basecamp.

On the left you can see a picture of my current list of caches to do in Milton Keynes. The small cyan coloured dot on some of the icons is how I represent a puzzle, multi, letterbox or wherigo when I’ve added some corrected coordinates. You can also see a few of the trads have a white bar through them, indicating that they are temporarily disabled.

In the centre you can see what the area of my Flags of All Nations series looks like. The circular stars are “owned” caches. The red boxes with crosses are archived. I’m using the pink benchmark icon (“Benchmark” cache type in GSAK) for planning locations to replace the archived ones. The circle with star is a bit bigger than the other icons, so I might change that one.

On the right you can see a bunch of smiley-face icons with corrected coordinates. These represent a massive puzzle series I did in France in 2018 (see Val D’Oise Madness).

All of these examples are shown with Freizeitkarte maps, but obviously the icons will superimpose over whatever maps you choose to use.