Having spent a week or so getting Memory-Map to display custom icons (see Exploring 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.