TomTomWatch is a Java application for downloading content from the TomTom GPS watches. I created it because I do not want to use the TomTom cloud for maintaining my tracks. Anno 2023 TomTom stops their cloud service, so this software can be used to continue using the TomTom watches.

The software downloads the track files (ttbin files) from the watch. By default the ttbin files are automatically saved in a similar directory structure as TomTom MySports. It is possible to export the tracks to GPX 1.1 format. Since version 0.2 it is possible to upload track planning (routes) from GPX (route must be present as route <rte> or track <trk>). This feature has been greatly enhanced since version 1.5.

I miss the function on the TomTom Watch to log waypoints. A special feature of TomTomWatch is the logging of Waypoints when saving to GPX: when during your workout or trip you pause track logging and resume within 5 seconds (default), the GPX converter treats it as the logging of a Waypoint. If the pause is longer, the GPX converter treats it as the start of a new track segment.



Source is available on GitHub.


  1. Unpack the binary zip in a directory of choice. This results in following files (for version 1.5).
  2. Modify, especially define the paths where the application stores the files or looks for files
    Alternatively, you can use the makeworkingdirs.bat script to create the working directory that corresponds to the properies file enclosed.
  3. Start via java -jar TomTomWatch-<version>.jar, where <version> is the version number
  4. If under Windows the Serial number is shown as ‘Unknown’ (like in the image at the top of this page), use Zadig to replace the HidUsb driver by the WinUSB driver for the device ‘Workout Drive’. This solves the problem.
    Note that the original TomTom MySports software won’t communicate to the watch when changing the driver!!

Release notes

This software is maintained minimally. I replaced my TomTom Adventurer with the Garmin Fenix 7.

Version 1.12 (10-05-2024)

  • Added proxy support
  • Added a setting to disable TLS Certificate validation, in order to use the alternative Ephemeris https URLs, which don’t seem to have valid certificates. USE AT OWN RISK!!! Disabling is for all internet access!

Version 1.11

  • Added support for other Ephemeris URLs from (removed depenency from TomTom MySports website)

Version 1.10 (05-11-2023)

  • Several updates to the documentation on Github (FAQ)
  • Workouts available for Runner 3 and Spark 3
  • Cadence added to workouts
  • Added pace and steps to running GPX
  • Update for service termination of TomTom (config service used for ephemeris file)
  • Vulnerability fixes
  • Bug fixes

Version 1.9 (09-09-2023)

  • Solved bug in Douglas-Peucker track compression algorithm. Now the maximum compression error can be set in meters in the Be sure to set it to say 0.3 or 0.4 m in existing files (in earlier versions it was set to 0.01).

Version 1.8 (26-08-2023)

  • Changed license to MIT license 🙂
  • Dependency version update (protobuf, json, gson; dependabot advise)
  • USB4Java update, finally!!!
  • Removed -jar-with-dependency suffix in jar file

Version 1.7 (12-04-2022)

  • Code improvements
  • GPX file name suggestions changed (cycle_20220404_description.gpx -> cycling_…)

Version 1.6 (21-12-2020)

  • Import/export of workouts from/to JSON file: allows for own workout defintion
  • Added track compression by means of Douglas-Peucker method
  • Added git version to about box
  • Added ttbin tag 0x30 (number of seconds to satellite fix)
  • Build jar file with dependencies – only the jar file is needed to execute the code
  • Improvement of communication to the watch
  • Update protobuf to 3.9.1
  • Various code improvents, bugfixes, unit tests and cosmetics

Version 1.5 (14-09-2019)

  • Upgrade usb4java from 1.2.0 to 1.3.0 which enables TomTomWatch under Windows 10 (yeah!)
  • Improved route management (Track planning on the Adventurer)
  • Strava compatibility enhancement by adding Garmin GPX extensions
  • Added OSM (with pan and zoom) next to Google Maps; added Google maps key support
  • Color per track segment
  • Added more unit tests using Mockito
  • Added dependency injection to enable unit testing (nerds know what is meant 😉
  • Several bugfixes

Version 1.4 (08-07-2018)

  • Layout made consist across Windows and Linux (a.o. by choosing other Font)
  • Possibility to download only three latest activities i.s.o. downloading all activities
  • Activities shown in reversed order (latest first)
  • Possibility to upload 7-day ahead GPS quick fix
  • Bug fixes

Version 1.3 (01-01-2018)

  • Support for the Multisports (tested and debugged)
  • Heights from Google Elevation Service for non Adventurer watches
  • Software updates now include BLE updates
  • List routes button
  • Factory reset (in debug mode)
  • Several small improvements

Version 1.2 (26-11-2017)

  • Listing of watch settings
  • Watch sync to PC clock
  • Code improvements
  • Added heart rate recovery (bpm/min, score) from TTBIN file
  • Added additional <extensions> fields to GPX trk (device, track smoothing factor, fitnesspoints) and trkseg (hr recovery, hr recovery score)
  • Added climb (cumulative hight increase) to trkpt <extensions> in the GPX
  • Added HDOP (Horizontal Dilution of Precision) to trkpt <extenions> in the GPX

Version 1.1 (30-09-2017)

  • Bug fix in firmware upgrade function. Firmware upgrade tested 🙂
  • Added watch reboot feature to debug menu
  • Added file upload feature to the debug menu
  • Added support for ttbin version 10 (since firmware 1.6.26)
  • Added tracked activity (steps, calories, distance, heartrate, sleep, etc) display
  • Added delete feature for tracked activity (delete 0x00b1nnnn files)
  • Added playlist display feature
  • Display of TomTom ‘Activity Points’ in track overview
  • Automatic detach of USB driver under Linux
  • Serial number display (does not work under windows due to bug in USB lib)
  • Several small bugs fixed

Version 1.0 

  • Technical functions in debug menu. By default not shown. Enable from properties file.
  • Firmware updating added (UNTESTED!!!)
  • Simulation mode in which the software runs on the downloaded watch data (debug function; enable from properties file)
  • Download watch data for simulation (debug function)
  • Deleting individual files (debug function)
  • Save individual files (debug function)
  • Display of device log and device update log  (debug function)
  • Code improvements
  • Code to GitHub, converted to Maven
  • Track smoothing added

Version 0.3 (21-05-2017)

  • Automatic display of last imported track
  • Display route map when selecting GPX file for route upload
  • Distance indication in list of routes on device
  • List of history (tag-value list for the last 10 activities per type; next to history summary)
  • Erasing of all history & route data
  • Route directory added to the configuration file
  • Long routes compressed to max. 500 route points (like original TomTom MySports route planning)
  • Code improvements

Version 0.2 (05-2017)

  • Upload routes from GPX (track planning)
  • Erasing routes
  • List of routes on device (ID and name)
  • Show preference file
  • List files on the device (ID and size)
  • Set Device Name
  • Save file from the watch as binary file to disk
  • List history summary (last 10 activities per type)
  • Improved error handling
  • Activities sorting
  • Upload of ttbin files from disk (for conversion to GPX format)
  • Resolved small bugs

Version 0.1 (05-2017)

  • Show watch name
  • Show watch time (UTC)
  • Download of ttbin files
  • Google maps preview
  • Automatic saving of ttbin files in a similar structure as TomTom Mysports
  • Export to GPX format
  • Erasing the ttbin files from the watch
  • Upload GPS Quickfix data
  • Configuration via file

Known issues

  • Wrong icon, wrong picture: I-GotU iso. TomTom 🙂
  • Serial number of watch cannot be read under Windows 7 due to a bug(?) in USB4Java lib
  • Tested on Adventurer, Runner 3 Music, Multisports Cardio
  • Watch time is displayed in UTC on the screen

Refer to the TomTomWatch Design page for the UML design of the application.

Refer to the Reverse Engineering Page for a description of the TomTom Watch interface.

Guinea pigs used for testing: Multisports Cardio, Runner 3 Music, Adventurer


Debug mode

When setting debuggingMenu=true in the file, an additional menu becomes enabled, allowing to perform file operations. Be warned that you might ruin your watch when using these features.

Height from Google elevation service

Apart from the Adventurer, the watches do not measure elevation. Optionally, the elevation can be requested from the Google Elevation Service. An API key from Google is required.

To enable this feature, set heightService=google and fill in the API key in heightServiceKey in the properties file Next graphs show the comparison between the height as measured by the Adventurer and the height data as obtained from the Google Elevation Service. Resolution of the Adventurer is 1 m, clearly visible in the third graph.

Mountainous area

Small height changes; peeks in the Google curve correspond to forests, apparently top of the canopy, whereas I run on the ground… Small deviation of the Aventurer curve (start and end should be at the same level) due to barometric pressure difference during the trip

Flat area with a 30 m hill, apparently flattened/averaged out by Google

Heart rate sensor

The cardio watches contain a heart rate sensor.These sensors measure small differences in blood perfusion in the wrist due to the heart beat. Under some circumstances blood perfusion is too low to measure. These kind of sensors pick up other beats, like pace when cycling or running. Next graph shows the sensor measured heart beat and the heart beat measured by a chest strap during the same run. The latter is far more reliable.


The application is based on the excellent ttwatch application of Ryan Binns.

Libraries used:


I provide the software for free, including source code. The software may contain bugs. It might damage your TomTom GPS Watch. I won’t take responsibility for any damage.