Using Garmin 276C in 2017

Garmin 276C was released in 2004, discontinued for sale in 2010 and not supported since 2013. It was marketed as a chartplotter, a marine mapping device. Suprisingly it got really popular in Russia, not a sea country at all.

Garmin 276C installed on dash in my Patrol

The reason is that marine navigation tools built in the unit accidentially became very handy to navigate in any open 2D space, not only sea. This applies to any offroad activity, be it a 4x4 car, motorcycle, ATV or snowmobile. Combined with overall unit rigidity, an awesome UI and limited abilities for reprogramming, it become unit of choice for many people for many years. Despite of its poor SirfSTAR II receiver, none of the later Garmin units for travellers were able to dethrone the king. Montana, Oregon, eTrex and GPSMAP all were ignored by 276C fans, until in 2017 Garmin released updated new shiny and pricy 276Cx. But that’s a different story. This article is about 276C, how geeks keep using it today and why.

Awesome User Interface

The unit features rubber buttons, a luxury that we can’t afford in the modern touchscreen era. The buttons provide feedback to your fingertips, so you don’t need to keep your eyes focused on the screen, when you do routine tasks as zooming and scrolling. You can keep driving with your left hand, look forward and stay safe. No matter how bumpy the terrain is, your fingers will do what you intended. Compare switching to next song on a smartphone and on old style CD player while driving. Same story.

The button combination at first glance seems crazy. I would compare this to first experience with the vi(1) editor. But when you got used to it, you admit, that designer of the interface was not an idiot, but a genius.

The toolset for an open terrain traveller is much richer than in street navigatos like Nuvi, or modern smartphone applications from Google or Apple. Withing a sub second interval, user can:

At four corners of the screen user may put any data they can imagine, e.g. current metrics (speed, elevation, voltage), distances (next turn, destination, travelled), etc.

Hacking the unit to prolong its life

To provide a longer life to discontinued device, some efforts need to be made. Of course Garmin didn’t plan that we will hack the firmware, upload free maps or build larger memory cards. But we did. First, the firmware was hacked to localize UI and ability to use Cyrillics in map data was added. Second, a DIY memory cards with larger capacity were soldered. One can find them on the Internet on sale or DIY recipes. Finally, we want to upload custom maps.

OpenStreetMap and other free stuff

When I purchased my 276C in 2006, everybody was using commercial maps, either Garmin or 3rd party. This usually required purchasing a memory card or sending your card to be programmed.

Situation changed (at least for me) with OpenStreetMap. Now I am able to use free maps drawn by crowd and myself, combine it with elevation contours (also free data) and no longer depend on commercial maps.

I can either use prebuilt OSM maps or, I can create my own rules of rendering and use mkgmap.

I can combine them with elevation contours, which are derived from free SRTM data. Here is torrent share for contours of the world and more precise contours of Russia and CIS.

However, having all maps built isn’t enough. Now they need to be loaded into the unit.

Uploading custom maps

Back in early 2000s all Garmin devices were officially able to get custom maps uploaded by user, and 276C isn’t exclusion. To achieve this a free Mapsource application for Windows was used. Later on, Garmin tried to grasp the model of receiving money not for the hardware, but for later software updates, forcing people to pay for maps and avoid altering their units. The Mapsource started to lose functionality, making people to stick to older version and later on was discontinued. As substitute to Mapsource a new application Basecamp was suggested. It talked a lot about adventures, allowing you to manipulate your traces and waypoints, but provided less functionality to upload custom maps.

Since my desktop operating system is FreeBSD, and I do all my work with maps there, refreshing maps on my Garmin was always a pain in the ass. It required me to get a hold of Windows PC, mount all my maps via SMBFS, get all the shit working and burn the maps in. The problem is that usually the shit working 6 months ago won’t work later. Yes, this happens often in the Windows world! :) New Windows version, fresh updates, new USB drivers - all these things were breaking my procedure. Mapsource not starting or hanging, failing to work with longer file list, failing to display mapset, bailing out during upload, etc. Asking for Garmin support was useless as Mapsource is discontinued, as well as the unit. Putting new maps gradually become more and more difficult, sometimes requring more than an evening of black Windows magic.

bhyve, the BSD hypervisor, to the rescue!

Some time ago bhyve got two important features:

To pass one of USB buses of my desktop to the guest I added to my /boot/loader.conf:

pptdevs="8/0/0"
vmm_load="YES"

Then I launch the guest, forwarding the bus to it:

#!/bin/sh

bhyve   -H -c 8 \
        -S -m 8G \
        -s 0,hostbridge \
        -s 3,ahci-hd,GarminWin10.img \
        -s 8,passthru,8/0/0 \
        -s 10,virtio-net,vmnet3 \
        -s 31,lpc \
        -s 29,fbuf,w=1600,h=900 \
        -s 30,xhci,tablet \
        -l com1,/dev/nmdm0A \
        -l com2,/dev/nmdm1A \
        -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
        -w GarminWin10

Finally I connect to the Windows guest with vncviewer. In the guest I have set everything up including SMB mounts to the host, all Garmin tools and drivers. I did the black magic once and finally got it working. Here I am uploading mapset for my 2017 vacation:

Mapsource running on Windows in bhyve

Then, after successful upload, I have shut the guest down and said:

zfs snapshot zroot/vms/GarminWin10@276C_works

God bless the bhyve and zfs. Now my 276C will work forever.