The Problem at Hand

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 improved upon my previous attempt. It’s 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 or not. Another was the inability to tell which caches are disabled. I regularly spend ages at a site looking for a cache before realizing 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. I discovered 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 cache type as follows. The custom icons on my Montana to reflect these names. 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 -> Indicates “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 to worry what type of event each one is. I always know in advance whether I’m going or not, so having them on the GPS is not necessary really.
  • Webcam Cache.bmp -> Used for Adventure Labs points. There’s so few webcams left that there’s no point in giving them their own icon.
  • Traditional.bmp -> Used for traditionals and for the HQ cache.
  • Geocache.bmp -> Identifies disabled and archived caches, plus random non-caches (like waymarks and benchmarks) that might creep in.
  • Virtual Cache.bmp -> Used for virtuals, webcams and locationless, should one of those fall through the net.
  • 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 use it only for puzzles, multis, letterboxes and wherigos.
  • I use all other icons to display the native cache types if they are uncorrected, active and not mine (Multi, Unknown, Letterbox, Wherigo.
  • Geocache Found.bmp -> Used to display any cache that I found. I normally don’t download them, but sometimes they slip through the net. The Montana checks this before anything else, so it is always used for finds.
  • 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).


Some icons represent more than one cache type. In this case 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 assume this is because the device won’t implement it properly.

The little bits of magenta in the icons are because the Montana translates magenta (RGB 255:0:255 or #ff00ff) into “transparent”. The icons look a little neater on the Montana than on the PC.

So to execute this method, install the pack of icons onto the \Garmin\CustomSymbols folder of the Montana’s onboard storage. Don’t put them onto any installed microSD card. In GSAK, run the SetSymbols macro, then download caches to the GPSr using the Send Waypoints option. Finally, run the RestoreSymbols macro to reset GSAK.