Data Field: Surf Tracker

[FONT=Arial Black]Surf Tracker[/FONT]

Version 1.20

Track your surfing sessions in real time! This data field estimates the number of waves ridden using a speed and time threshold to mark the start and end of a wave ride.

Info shown (from left to right):

  • your total number of waves ridden and the total wave ride time (min:sec)
  • for your latest wave ride: wave ride time (seconds), maximum speed during the wave ride (km/hr or mph) and the distance covered (meters or yards)
  • the numbers in red show the maximum values for the wave ride time, speed and distance during the activity
  • For square watches, the bottom line shows the time of day and elapsed time of the activity. For round watches and the Vivo HR, the top line shows the time of day and the bottom line shows the elapsed time.


1) This data field must be used in a 1-field data screen and should be set up before starting the activity. I use an Activity > Other > Paddle, but any activity with GPS ON should work. Open water swim will work but the GPS tracks are noisier since the sampling rate is lower, but it may be the better option for surfing when your arm is in and out of the water. Some activities smooth the speed data more than others and will give less accurate results (eg. a walking activity will not work as well as paddling or cycling). Vivoactive users try the Cycling activity, the Run activity will smooth the speed values to much to even out the Pace and this won't work well with the wave detection.

2) The summary stats and a speed plot are saved to Garmin Connect once the Activity is ended and saved:

3) This has been tested many times with standup paddle surfing. It has taken a while to get the thresholds working accurately. The detection thresholds can be changed using the Garmin Connect Mobile app (see for help):

There are four settings to mark a wave ride based on speed, time and distance.

An event starts when the speed is >= 9 kph, it must last at least 6 seconds (above 9kph) and have a max speed of at least 13 kph to be counted. The event ends when it falls below 9kph. The min distance is set to 0m, but this can be changed to avoid false detections. These thresholds work well for standup paddle surfing, but try changing them and post your results. It should work for: standup paddle surfing, surfing, kayak surf, surf ski and maybe standup paddle downwinding.

Threshold ranges and defaults:
1) Start/stop threshold: default 9kph, range 5-50 kph
2) Time threshold: default 6s, range 2-60s
3) Max speed in event has to be >= 13kph, range 0-50kph
4) Min distance: default 0m (disabled), range 0-1000m

Typical values:
Standup paddle surfing: general setting for all waves
9kph, 6s, 13kph, 0m

Standup paddle downwinding (Hood River)
10kph, 10s, 12kph, 20m

4) The stats from each wave ride can be saved to a text file using the instructions at the bottom of the page (advanced users only, unsupported).

----------------- Planned Updates------------------

1) none hopefully

----------------- Version History ------------------

0.2 datafield now updates even when not visible.

0.3 added min distance to threshold test (now min 9km/hr for 5s and 15 m) to avoid paddling out/false wave counts, especially for SUP (eventually these values will be user selectable).

0.4 more tweaks after on-water tests (now min 9km/hr for 6sec), 19 waves and only 2 false readings and that was when I was chucked over the falls...

0.5 changed totdist and elapsed time to use the last good point of the event, instead of first one below the threshold, since when falling in it might take a while to get gps fix again and this will add to the waveride time. This should only decrease the wave ride time. The threshold test is now: >= 9km/hr for >= 6 sec and maxspeed >= 13 km/hr, redesign screen, add total wave ride time in min:sec

0.6 add fenix support.

0.7 bug fixed- crash when data field is in view and GPS just becomes active

0.8 D2Bravo, Epix and Vivoactive (separate app) support, compile using SDK 1.1.4. Latest numbers are green during an event (shows green if above speed threshold, even if below time threshold).

v0.9 new SDK 1.2.1, support for fr230/fr235

v0.95 new SDK, 2.1.3, support for Vivoactive HR

v1.0 added GCM settings for thresholds, changed distance calculation (should be shorter and more accurate), added 1 field Vivoactive support (got rid of the separate version)

v1.20 Garmin Connect summary stats and wave speed plot output
** Advanced user only+unsupported method to save each wave ride to a text file on your device:

Place a *.TXT file in the /GARMIN/APPS/LOGS folder on your device, where * is the name of the .PRG file in the /GARMIN/APPS folder. Look for a file that is ~12 kilobytes. On my device it is 69SI5820.PRG, so I would create an empty file in /GARMIN/APPS/LOGS/69SI5820.TXT

To find out the filename, uninstall Surf Tracker, make a note of the *.PRG files in the /GARMIN/APPS folder, install Surf Tracker then note which PRG file is new.

Sample output format:
Wave# TimeofDay WaveRideTime(sec) WaveRideMaxSpeed(kph) WaveRideDistance(m)
1 07:26 20 28.8 113.4
2 07:28 13 27.6 76.8
3 07:33 21 30.2 122.2

Copy the file to your computer after a few sessions. I copy and paste the details into the notes section of the activity on Garmin Connect. The file will be appended to until it gets too big (10KB), then it will be overwritten. I had 3 days of sessions saved and it was only 1.8KB.
  • Hi Dallas: sorry for the late reply. Your settings look fine. It is hard to prevent false readings if your GPS is jumping around. I'm open to suggestions on how to catch them. Have you tried lowering the Ignore Speeds Above threshold? Maybe that will catch them. Also what activity are you using, I have no issues with the SUP activity, but I'm out of the water more compared to regular surfing.
  • This looks like a great app so I bought a Garmin Vivoactive HR just so I could use the app - so bear with me, new to the VA HR and Surf Tracker2. I downloaded the datafield and applied it to the SUP activity. Tried it out and looks great just needs tweaking.I have waded through this thread trying to get to grips re the settings and have a few questions - to register left and rights, I just need to face the sea from the beach and get the compass bearing and enter it on the VA. How do I do this at the beach? I cannot seem to find a place on the watch to do this. I SUP at different places so want to enter the bearing wherever I am SUPping. I tried Garmin connect on my iPhone 8 but cannot see where to enter the setting. I can do this on Garmin Express on my Mac, but I dont want to take Mac to the beach.
  • You can change the settings in Garmin Connect Mobile (on your iPhone):

    I am working on a new version that allows you to measure the beach angle before you start the activity. You just point your wrist so the watch is facing the waves (12 o'clock) and let it measure the heading for 10s or so, and then hit START. This is better for multple beaches or new spots. Stayed tuned for the new version.
  • Thanks for the feedback bwd1. Using Garmin Connect I go to Devices, Vivoactive HR, App Management, Datafields, Sutf Tracker2. Hit the 3 dots top right, the only option is uninstall. No option to change settings. I have Vivoactive HR and iPhone 8. With Garmin Express on Mac I can change the settings.
  • Not sure, you should see a Settings line in Garmin Connect Mobile on your iphone, as shown
  • Thanks for getting back to me. The option does not appear bu not to worry. The data field works great and I will set the parameter in Garmin Express before leaving home. I will however check with a friend how his works with iPhone and Garmin 5. Thanks again.
  • Sorted. Reinstalled the Datafield and all good. Thanks for this great feature
  • Hello bwd1, I recently updated my fenix5 to the latest beta software which supports CIQ SDK 3.0. Since then, I get no surf tracker data saved to the activity, not sure if it's related.
  • Please try the new version:


    - add Beach Facing Detection measurement as a option before hitting START (calibrate compass, then point watch 12 hand at waves, perpendicular to beach, then go to data field page and get a stable/reliable heading, then hit START)

    - updated to latest SDK, added permission for using location to fix crash/no data written (see
  • Thanks for the update Dave, all is working well again... I must just remember to set the beach direction :p