Over the last few weeks I’ve tried some technological explorations into the presentation of geocaches in various mapping tools. Read my Exploring 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.