Suunto app Forum Suunto Community Forum
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Popular
    Log in to post
    • All Time
    • Day
    • Week
    • Month
    • All Topics
    • New Topics
    • Watched Topics
    • Unreplied Topics

    • All categories
    • S

      Race 2 accuracy

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Race 2
      118
      0 Votes
      118 Posts
      11k Views
      S
      @dreamer_ I’m built similarly to you so glad I stuck with the Race 2. Maybe you’ll change back after the update! I didn’t want to pay an additional £100 for a torch and bigger battery, neither of which I need. This would also come with more bulk and omission of the scroll wheel which I like for zooming the maps. I wonder whether this update will be included in the next quarterly one or a separate earlier fix…
    • Dimitrios KanellopoulosD

      Suunto Ocean update 2.51.28

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Ocean
      42
      15 Votes
      42 Posts
      4k Views
      SquirrelS
      @valentoni said in Suunto Ocean update 2.51.28: Once I’ve sent the logs, do I need to contact Dimitrios Kanellopoulos? Yes, as per linked post After that send me a private message with your email or account name used for the Suunto app. Do not share your email here in the forums as a post please. Use the chat function under my profile. https://forum.suunto.com/user/dimitrios-kanellopoulos ⋮Blue circle menu on the right
    • E

      My Vertical 2 Wishlist for Next Update in 2026

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2 vertical2 wishlist vertical
      92
      9 Votes
      92 Posts
      12k Views
      Ze StuartZ
      @Mff73 always nice when someone else has done the work! Thanks, I didn’t know about that post, or Sonny’s work.
    • Kraisun TuntaK

      Third-party chest strap with ZoneSense on SuuntoPlus?

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Race 2
      22
      0 Votes
      22 Posts
      960 Views
      G
      Scusate ma non capisco il voto negativo!!!
    • Adrian.SA

      Suunto Vertical 1 – A Few Questions About the Future + Questions About the Vertical 2 and a Comparison with the Coros Nomad / the New Vertix 2026

      Watching Ignoring Scheduled Pinned Locked Moved Watches
      22
      1 Votes
      22 Posts
      1k Views
      dreamer_D
      @Highlands said in Suunto Vertical 1 – A Few Questions About the Future + Questions About the Vertical 2 and a Comparison with the Coros Nomad / the New Vertix 2026: @dreamer_ I hope they put a sapphire crystal on R2S. About this, I think my wife’s 46mm Run could fit a 1.4 inches screen. Perhaps they could fit that screen aize in the Race 2 S playing with the bezels and making you think the watch is not that “S” but something comparable to a Fenix 8 47mm . That simple change would make a lot of noise for marketing in my opinion and very likely much better sales (just for that)
    • Łukasz SzmigielŁ

      Constantin: monitor effort drift against your session average

      Watching Ignoring Scheduled Pinned Locked Moved SuuntoPlus™ Sports Apps
      21
      3
      24 Votes
      21 Posts
      1k Views
      S
      @Łukasz-Szmigiel I loaded it up and was able to start an activity. However when I hit the lap button Constantin disappeared the first time I tried. On the second attempt I was able to keep it on the screen. Looks like it might be fixed.
    • Mister PYCM

      A BIG BIG BIG THANKS and APLAUSE to SUUNTO Team both watch and IT designer ...

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2
      20
      10 Votes
      20 Posts
      1k Views
      Mister PYCM
      @2b2bff well well well … if you tell to someone who is doing a diet that he lost 5000 g and to his wife that she lost 5 kg … you are right … this is not the same … the wife will be super happy but the man wearing a suunto and for who 43 and 43.0 make a difference will start to question himself about the precision of instrument … how it could have been possible that he arrives preciselly to exact 5000 Joking !!!
    • Speed ManS

      Suunto Spark

      Watching Ignoring Scheduled Pinned Locked Moved Headphones
      48
      0 Votes
      48 Posts
      4k Views
      dreamer_D
      @Ze-Stuart it’s really a pity. I really hope they can push an update soon to improve the user experience.
    • S

      [Question] No stupid questions - ask anything here

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Plus Development
      144
      4 Votes
      144 Posts
      15k Views
      M
      @DonTomGot This may be too complex as a first project. But let me start with giving you the overall structure of the code as that seems to be the problem at this point. Manifest.json declares what input you need from the watch firmware, what data you intend to output from main.js to t.html and settings you use in the watch. This is parts of manifest.json "in": [ { "name": "Power", "source": "/Activity/Move/-1/Power/Current", "type": "subscribe" }, { "name": "HeartRate", "source": "/Activity/Move/-1/HeartRate/Current", "type": "subscribe" }, { "name": "Speed", "source": "/Activity/Move/-1/Speed/Current", "type": "subscribe" }, { "name": "SpeedAvg", "source": "/Activity/Lap/-1/Speed/Avg", "type": "subscribe" } ], "out": [ { "name": "PaceTarget" }, { "name": "TimeRemaining" }, { "name": "Debug" } ], "template": [ { "name": "t.html" } ], "settings": [ {"shownName": "Repeat count", "path": "appSettings.repeatCount", "type": "int", "min": 1, "max": 19}, {"shownName": "Target pace for WarmUp (m/s)", "path": "appSettings.targetPaceWarm", "type": "float", "min": 1, "max": 6}, {"shownName": "Target pace for Interval (m/s)", "path": "appSettings.targetPaceInterval", "type": "float", "min": 1, "max": 6}, {"shownName": "Target pace for Recovery (m/s)", "path": "appSettings.targetPaceRecovery", "type": "float", "min": 1, "max": 6}, {"shownName": "Target pace for CoolDown (m/s)", "path": "appSettings.targetPaceCool", "type": "float", "min": 1, "max": 6}, {"shownName": "Duration for WarmUp (s)", "path": "appSettings.durationWarm", "type": "int", "min": 1, "max": 14400}, {"shownName": "Duration for Interval (s)", "path": "appSettings.durationInterval", "type": "int", "min": 1, "max": 14400}, {"shownName": "Duration for Recovery (s)", "path": "appSettings.durationRecovery", "type": "int", "min": 1, "max": 14400}, {"shownName": "Duration for CoolDown (s)", "path": "appSettings.durationCool", "type": "int", "min": 1, "max": 14400} ] The main.js contains declarations for some variables // App settings, see also manifest and data.json var settings; var isPaused; // State machine var currentState = 'WarmUp'; var currentRepition = 1; var repeatCount = 3; var timeRemainingInStep = 10; var currentPaceTarget = 2.326; // Average pace and max HR for last lap var lastLapAvgPace; var lastLapPeakHR; There is also a number methods that deal with the state machine needed for interval training. I give only their declarations and purpose for now. // Function to translate speed to a pace string var speedToPace = function(speed) // Training session State Machine // Get next step, set remaining time // And increment interval counter var setNextState = function() // Function to get target pace for current state var getTargetPace = function() // Function to set text for the top right text block var setTextBlock = function() // Update last lap data, avg pace and peak HR var updateLastLap = function(input, output) The evaluate method may be of interest. Here it comes // System starts calling this about once per second after the sports app is selected // i.e. before the exercise is actually started. // input: contains resources specified in "in" section of the manifest. // output: resources passed to the device (specified in "out" section of the manifest). function evaluate(input, output) { // If we are in an Interval step remember average pace and max HR from this step updateLastLap(input, output) // Count down time remaining in current step if (!isPaused) { timeRemainingInStep -= 1; // Handle the state transition if time remaining is zero if (timeRemainingInStep === 0) { // Trigger a silent lap // $.put('Activity/Trigger', 24); // Set the next state setNextState(); } // End of if time remaining is 0 // Output remaining time to HTML after the new durations is set // If we are done and countdown is negative display positive value output.TimeRemaining = (timeRemainingInStep < 0) ? -timeRemainingInStep : timeRemainingInStep; } // End of if not paused // Get target pace for current step getTargetPace(); // Output target to HTML output.PaceTarget = currentPaceTarget; // Update the top right text block setTextBlock(); } Settings are loaded in onLoad and defaults provided, like this // main.js loaded and system starts calling evaluate() function onLoad(input, output) { // Load app settings settings = localStorage.getObject("appSettings"); // Create default settings if none found if (settings == null) { settings = { targetPaceWarm: 2.326, targetPaceInterval: 2.857, targetPaceRecovery: 2.083, targetPaceCool: 2.083, durationWarm: 10, durationInterval: 12, durationRecovery: 5, durationCool: 20, repeatCount: 2 } } isPaused = true; } The bulk of this code deals with interval training and not the gauges, so if you are only interested in the gauges, you do not need most of the things above. In t.html the code should go inside quotes in the onLoad and onActivate methods, the beginning looks like this. <uiView onActivate = " $.subscribe('/Dev/Time/Tick10hz', function(){ control('#cnv', 'REFRESH'); }) // Subscribe to HR, pace and targets to use in drawing gauges in the canvas $.subscribe('/Activity/Move/-1/HeartRate/Current', function(v) { currentHR = parseFloat(v) * 60; }) $.subscribe('/Activity/Move/-1/Speed/Current', function(v) { currentPace = parseFloat(v); }) $.subscribe('/Zapp/{zapp_index}/Output/PaceTarget', function(v) { paceTarget = parseFloat(v); }) " onLoad=" // Subscribed values var currentHR; var currentPace; var paceTarget; // Target zones var hrZones = [0, 133, 144, 155, 165, 185]; var paceZones = [0, 2.299, 2.5, 2.703, 2.857, 5.556]; // Radius of the display in pixels var radius = 233; // Zone colors (muted, suitable as gauge backgrounds) var z1Color = '#5B8FA8'; // Zone 1 - blue var z2Color = '#6AA87A'; // Zone 2 - green var z3Color = '#C4B050'; // Zone 3 - yellow var z4Color = '#C87D45'; // Zone 4 - orange var z5Color = '#B85555'; // Zone 5 - red var zoneColors = [z1Color, z2Color, z3Color, z4Color, z5Color]; // Other colors var outColor = '#B85555'; // Out of target range (low and high sectors) var inColor = '#6AA87A'; // Target range (mid sector) var inactiveColor = '#999999' // Inactive sector var ptrColor = '#CCCCCC' // Gauge pointer var bkgColor = '#000000' // Black background // For debugging var temp1 = '-'; var temp2 = '-'; // Functions to draw gauges on canvas ---------------------------------- // Draw an arc for a gauge // from from angle in degrees // to to angle in degrees // color arc color // width width of the arc function arcSegment(ctx, from, to, color, width) { ctx.beginPath(); ctx.arc( radius, radius, // center of display radius - 2 - width / 2, // radius - leave a small margin outside arc Math.PI * from / 180, // Angles from - to in degrees converted to radians Math.PI * to / 180 ); ctx.strokeStyle = color; ctx.lineWidth = width; ctx.stroke(); } --- snip --- Apart from the code for rendering the gauge background and pointer which you already have above, you also need methods to identify the current zone to highlight. // Get the index of the the active zone for a 3 zone target gauge // value current value // targetLow low end of target range // targetHigh high end of target range function getActiveTarget(v, targetLow, targetHigh) { if (!isFinite(v)) return 0; if (v > targetHigh) { return 2; } else if (v > targetLow) { return 1; } else { return 0; } } // Get the index of the the active zone for a 5 zone HR gauge // v current value // zones an array of 4-values defining the 5 zones function getActiveZone(v, zones) { if (!isFinite(v)) return 0; for (var i = 1; i < zones.length; i++) { if (v < zones[i]) return i - 1; } return zones.length - 1; } The environment is very challenging to work in, you get very little support. Often the app just silently fails. A few tips. build up in small steps and commit frequently check thoroughly for typos and other mistakes that would be caught by other IDE in the simulator toggle on “developer tools” , that will reveal some mistakes insert systemEvent statements where you can put information in the event log
    • M

      Training Peaks - interval notification

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Race 2
      18
      1 Votes
      18 Posts
      691 Views
      stromdiddilyS
      @2b2bff said: @stromdiddily there is no universal “This is a workout file, deal with it watch” format. If you are pushing a workout to Garmin, you define the steps. If you push the workout to Suunto, you define a SuuntoPlus Guide. I don’t know how Coros or Apple Watch does handle it. So, Training Peaks - or any other platform for that matter - has to include the respective framework for each brand individually… The other way around, if you read the finished activity from the watch, there is a format that has been widely adopted: Garmin FIT files. I see, this makes sense…thank you
    • peegeeP

      Strap/Band color suggestion for 90th Anniversary Edition

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2
      17
      1 Votes
      17 Posts
      924 Views
      S
      @Stefano-M64 darn it, package got lost somewhere… still waiting
    • laufbursche7L

      Race titanium with Wahoo TRACKR HR

      Watching Ignoring Scheduled Pinned Locked Moved Accessories and other products
      17
      0 Votes
      17 Posts
      715 Views
      OutdoorManO
      @Elipsus no worries, I just shared the “why” : )
    • U

      Disable Morning Report?

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2
      17
      0 Votes
      17 Posts
      853 Views
      C DC
      @elbee I agree, there should be a simple toggle for morning report without doing anything about sleep tracking.
    • sky-runnerS

      Race S: Extremely high battery use rate

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Race S
      66
      5 Votes
      66 Posts
      5k Views
      A
      If the only way to use my smart watch is to turn every single feature off just to get the battery to limp itself to 4-5 days, that means there’s something massively wrong with the watch. Garmin and Coros seem to be good alternatives since Suunto can’t push an update that doesn’t massively break something to save their life.
    • Dimitrios KanellopoulosD

      Crash reports collection Q1 2026

      Watching Ignoring Scheduled Pinned Locked Moved Watches
      14
      9 Votes
      14 Posts
      1k Views
      sky-runnerS
      @stromdiddily said: isn’t it just touch that’s disabled when you lock it? can still scroll thru the various screens Zooming the map and climb guidance (elevation profile) are very important functions that I personally use very frequently even during a race. Perhaps I am even more likely to zoom during a race because normally I have waypoints for all aid stations and checkpoints. Furthermore, now with the configurable bottom field on the map and climb guidance screens, touch is also very useful on those two screens. If I lock the watch, all these features become unavailable.
    • dreamer_D

      Several navigation issues (feedback)

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2
      61
      1
      1 Votes
      61 Posts
      9k Views
      E
      @Joaquin Be careful not to chase perfection and in the end nothing is completed. The komoot route is a bit cumbersome and komoot is far from perfect (even if I tell komoot to not change the route, the route on my suunto race s is different than on my wife’s apple watch.) The garmin/wahoo way (select a gpx file and use the open with app) would be an improvement, even if not all tbt alerts are perfect. My first gps watch (a ambit 3 sport) only had breadcrumb navigation. Did I ever got lost? No. My watch after that, a forerunner 935, had breadcrumb and tbt alerts. (Which didn’t work well. A route could only have 50 navigation alerts and if you did your route reversed you lost all tbt alerts). Did I ever got lost? No. My first watch with maps (a forerunner 965) and having some context is nice. Eventually garmin fixed the 50 alert limit, but not the reverse problem and they introduced a timing bug (up to 10k the alerts are before a corner, after 20k alerts are in a corner, or after). And yes, on a twisty road you get alerts for every corner. Did I ever get lost? No. Now I have a suunto. Komoot is fine, but could be better. Autodetect of going reverse is good. No problem if I do a round route and the end is detected before the start (garmin has problems with this. Navigations stops when you reach the goal, which could be before you actually started). Autozoom actually works as one would except (garmin had autozoom, but that doesn’t work, or not as one should expect). But do I get lost ever? No. In the end, all are equally good in the “do not get lost” requirement. Is everything perfect? No. But don”t wait until everything is perfect. Release small steps. Get feedback. Improve some more.
    • Ecki D.E

      Is there still demand for a modern MIP endurance watch?

      Watching Ignoring Scheduled Pinned Locked Moved Watches
      122
      7 Votes
      122 Posts
      11k Views
      VoiGASV
      @Brad_Olwin Really? Very interesting as XC Skiing is my other Usecase for the Vertical. Sun and Snow together are so bright that the MIP really shines. Also the Solar power collection is welcome. For running I really like the Race S as it is much lighter and the OHR works perfectly since the last update. Waiting for an Ocean 2 Titanium in the Race 2 case. If the new display is that much better it would serve all my demands. But as long as RaceS (discounted), Vertical Titanium (used) and Mares Divecomp together cost less than the Ocean I will stick with this trio
    • S

      [Discussion] Share your projects

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Plus Development discussion peer-support
      90
      1 Votes
      90 Posts
      11k Views
      D
      First of - thanks to Suunto for opening up the possibility to enrich their marvelous watch lines with features that many users have been missing! It is always amazing to see where the combination of ingenuity and a (somewhat) open development platform takes us. Being a road-runner with some sort of ambition to optimize races I have been missing a race pacer that allows for freely defining pace segments. The races I have participated in (Gothenburg area, Sweden) are quite often pretty hilly and I have found that I waste energy in the wrong places and therefore needed an app that could provide some guidance. The requirements were pretty close to “RaceWarden Pacer” - but I was missing the possibility to define the distance for the various segments of the race. And. With age comes poor eyesight, so I needed BIG (and clear) numbers to control the pace. The logic/thinking: You define your pacing strategy based on the elevation profile of the race and potentially other factors - this is all done outside of the app. Example from “Göteborgsvarvet” where I decided to try Jack Daniels’ Running Formula which roughly translates to -8s/km/%-gradient (uphill) and +5s/km/%-gradient (downhill). But that is outside the app, just the background to the pacing strategy. [image: 1780157300180-2026-05-18_19-54-08.png] The pacing strategy is pushed to the app through user defined app settings: Segment Distances (km or mile): 2.45 1.79 1.36 1.36 6.59 7.8 Segment paces (min/km or min/mile): 5:18 5:03 5:37 4:55 5:12 5:14 (Is it possible to have two input fields in app settings?) With the user input the total race length is calculated by summation of the Segment Distances (21,35km) - overall race target time (1:51:26) as well as target pace (general) is also calculated. Then comes the tricky part. What is really needed / what can be displayed to help pacing (remember: poor eyesight)? I removed heart rate as I have found it does not work (for me) during races, and landed in the following configuration: [image: 1780125397727-2026-05-30_00-06-13.png] Segment Target Pace: Derived from user input and displayed once a segment is recognized/completed. In essence this is a pretty static value, that only changes when a segment is completed. Segment Pace: Calculated. Similar to Lap Pace but utilizes the user defined Segment Distances/Segment paces, so it’s dynamic and updates as you run. Total Seconds ahead/behind Race Plan: Defined as the deviation between race plan and completed distance/time; naturally dynamic. Needed Pace: Based on initial user input finishing time and total race length are calculated. This is the pace needed for the remaining part of the race to reach the target What would you see as missing? The remaining challenges: I would like to have (I believe) at least some indication on heart rate - but I am not able to get the standard zone gauge to work and lack the skills to create one by myself with the canvas mysteries I tested to include an additional ahead/behind indicator focusing on ahead/behind per segment - but felt that it became more confusing and the display became to crowded - could this potentially be incorporated as a gauge? Compatibility - I believe maximizing fonts will be problematic for smaller watches but have not really had the energy to investigate what/how to make sure it works also for smaller displays Contrast - to me it seems yellow offers the best contrast, but is it just my eyes or a more common phenomenon? All input welcome! (unfortunately it seems my application for the partner development has got lost in the mail, as I applied many weeks ago) Also - I used the app (very successfully) during a recent race!
    • Dimitrios KanellopoulosD

      What sport mode is missing from our watches in your opinion?

      Watching Ignoring Scheduled Pinned Locked Moved Watches
      270
      4 Votes
      270 Posts
      74k Views
      SuperFlo75S
      Honestly, I have to admit that walking with crutches is definitely something I miss
    • sky-runnerS

      [Vertical 2, 2.53.42] Map and Navigation features are greatly improved but there are still a lot of old issues and also new bugs introduced in the latest update

      Watching Ignoring Scheduled Pinned Locked Moved Suunto Vertical 2
      41
      12
      14 Votes
      41 Posts
      4k Views
      EzioAuditoreE
      @peegee If I understood correctly than yes same button on Vertical 2 can zoom in / zoom out. Short press zoom in long press zoom out. Same like middle button: short press advance screen long press go back (previous). Cheers!