GPSBabel 1.6.0 launched May 2, 2019.!

Hello, Babel-Heads!

It's admittedly been a long time since we released GPSBabel 1.5.4. That's on me, the Chief Babel-Head, for personal reasons.

This page is a work in progress while I'm scrambling to get 1.6 betas up and blowing dust out of the release process. We've done a LOT of behind-the-scenes work to improve stability and robustness. NOTE: this is a checkpoint. I intend to fix a lot of the links (they were copy-pasted) and reorder so all the garmin_fit traffic is together and such.

  • Added read support to GeoJSON
  • Various work for WebKit and WebEngine as distros move (or not) to supported versions of Qt. Rework the way the JNI handles the callbacks between C++ and Javascript for our map.
  • A fix for Geogrid OVL file reads.
  • Numerous enhancements in the interpolation filter fixing altitudes, sub-second times, and times beyond 1970 and 2106.
  • Change the Geocaching KML writer for Google Earthto remove several dead map types (Yahoo, Terraserver, Microsoft Research, StreetView) and securely request resources from Groundspeak HQ's web servers to better play with the web version of Google Earth that can't mix and match secure elements in the same view.
  • Improve handling in NMEA file reader of short sentences, particularly of GPGSA.
  • Major work in Garmin FIT format to handle V2 of these files, improving handling of UTC offsets, handle enhanced speed and enhanced altitude records, handling a VIRB Ultra 30, and fixing other reported bugs.
  • Improve time handling for new UTC/GPS time shifts, adding a command line flag so you can now override without a rebuild.
  • Make IGC better handle damaged input
  • Fix crashes in PCX
  • , improve handling of 'T' and 'R readers', improve date and time reading, parser improvements.
  • Improvements in itrackU and TPO for rich dates and times, removed use of a fixed length buffer, improved test coverage
  • Add Unicode argument support to Windows so arguments can be correctly ingested. Improve use of strings swapping between local 8-bit and UTF-8,
  • Treat Garmin USB and serial
  • devices mostly as Latin1.
  • Correctly read diff and terr from geocaching loc filesThank you, Rick Richardson
  • Synchronized ICAO country codes with Wikipedia #fixme add Linky-links
  • Improvements in ESRI shape files, finally making this format useful without source edits.
  • Fix Google Earth KML writer
  • in realtime track mode. Also add support for Unicode in path and environment variables.
  • Improve handling of UTF-8 in pathnames, command line and internally
  • Improve Google Earth KML handling of <TimeSpan> on read
  • Improve IGC writerfor more consistent rounding
  • Improve Garmin GPI reader and writer to fix memory leaks, properly encode category , add support for reading GPI files with dual language strings, add support for Unicode page 65001 a.k.a. UTF-8., fixes to the writer to use correct length of multibyte characters,
  • Fix XXXX as position filter could corrupt data structures. Fix where we underestimated speed time when there were multiple waypoints with the same name.
  • Added support for Garmin Fit for version 2.0 developer fields in the definition messages.
  • Finally remove long-deprecated options of -N, -c, and -l
  • Allow unicsv to use all numeric grid references
  • A near rewrite of the xcsv and unicsv readers and writers is well underway. This replaces a lot of finicky C code with implicit character set declarations and length issues with familiar container-based code.
  • Enhance EXIF reader and writer to handle uncompressed thumbnails, rich time, and rational fraction types for higher fidelity
  • Added KML 2.3 track element to the Google Extension gx: version of the same to the Google Earth KML reader and writer
  • Enhance GPX to handle multiple URLs in GPX, KML, and other similar formats
  • Fix xcsv reader
  • to not ignoe LAT_DIR and LON_DIR. This caused Globalsat DG-500 grief.
  • Enhance Garmin FITreader to handle absent speed or altitude. Observed on Garmin Oregon.
  • Fix track filterto not crash if all the tracks were filtered out by the stop options. UTC time is now used in both stop and pack options. Split option now documents that quantities and units are both required.
  • Teach Garmin FIT handlerto add track segment indicators for start button press events, allowing collections to not appear a a single continuous track.
  • Add version 4 and 5 handling to Lowrance USR
  • Many issues in Ozi w.r.t. legacy sloppiness of codecs in the upstream code. Nearly a rewritten module..
  • Use more native button handling when not on Windows
  • Major changes in map preview to work wiht WebEngine
  • Upgrade to Google Maps API v3
Internal developer notes
  • Remove Electric Fence and DEBUG_MEM support. Valgrind rocks!
  • Remove several obsolete MSVC proj files. They can be regenerated by qmake.
  • Major improvements in consistency of #include ordering
  • Added an appveyor build for Windows and MacOS. Handles debug/opt, msvc/gcc, 32/64 and such. #fixme more words
  • Hundreds and hundreds (really!) of fixes for warnings, const-correctness, more reliance on existing standardized library and template over home-grown data structures, such as our own linked list types, use more C++14 features that help us, clang-tidy use, and other general code hygeine improvements
  • make_windows_release generalized for MinGW and MSVC
  • Lots of meticulous cleanups preferring QLatin1Strings to bare char*
  • C++14 and Qt >= 5.9 (a LTS version) are now required. We test and ship some platforms with the nextLTS release, 5.12, so that seems a reasonable window.
  • Added Dockerfiles for building
  • Rely on a newer gperf to support C++.
  • Filters are now superclasses of a filter base class. Over time, the formats will move to a similar model.
  • Our linked-list data structure, central to so many of our larger data structures with unbounded length, have all been replaced with a normal STL or Qt container. This eliminates a whole class of bugs if an item is accidentally placed on a queue twice and generally makes the code more accessible to an experienced C++ programmer.
  • Something about CLion, codacy, appveyor, travis, clang-tidy, etc.BB

(Note to self: Talk about C++14, new Qt floor, new formats, automation, etc.)

For a more detailed list, see the changes in GPSBabel. For a mind-numbingly detailed list, see our source code.

Supporting the project

We get a constant stream of requests to support new hardware, adding support for new OSes, and such. It costs a lot of time and money to buy GPS receivers, programs, and computers for development. You can help fund the next generation (hey, someone funded what's there now...) by supporting the project with your time or your donation. If you have a way you'd like to see the money spent (i.e. improving Mac support, new GPS models, etc.) please mention that in your submission. We appreciate all the help we can get

Support GPSBabel Development!
GPSBabel Logo
PayPal Donation
We can accept credit cards via PayPal even if you do not have a PayPal account!
GPSBabel is free software that's immediately downloadable from this site. Thank you!


Robert Lipe,
Chief Babel-Head