<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://forums.garmin.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Discussion - Recent Threads</title><link>https://forums.garmin.com/developer/fit-sdk/f/discussion</link><description>Discussion about all things FIT SDK</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 09 Sep 2026 10:07:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://forums.garmin.com/developer/fit-sdk/f/discussion" /><item><title>希望SDK增加字段“下一个闹铃启动时间”，便于表盘设计，实现用户能在表盘上直接看到下一个闹铃时间</title><link>https://forums.garmin.com/thread/443762?ContentTypeID=0</link><pubDate>Wed, 09 Sep 2026 10:07:36 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:9fafbb3a-1ae7-46ee-b6b8-08575e0aa63c</guid><dc:creator>3020145</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443762?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443762/sdk/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/pastedimage1788948398693v1.png" alt=" " /&gt;用户可以在表盘直观地看到下一个闹铃时间。&lt;/p&gt;</description></item><item><title>Why REM and AWAKE colors so similar?</title><link>https://forums.garmin.com/thread/443749?ContentTypeID=0</link><pubDate>Wed, 09 Sep 2026 07:23:02 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:23f4c578-16dd-4aa2-932a-420548943e3f</guid><dc:creator>1449457</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443749?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443749/why-rem-and-awake-colors-so-similar/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;If there are tiny awake moments vs REM you can&amp;#39;t tell. UI should be much simpler, especially for metrics that are so vastly different.&amp;nbsp;&lt;/p&gt;</description></item><item><title>what are the GPS "mode change" event message codes?</title><link>https://forums.garmin.com/thread/443720?ContentTypeID=0</link><pubDate>Tue, 08 Sep 2026 19:46:13 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:e0a10866-d643-4fc2-abfd-d19c21ab9c00</guid><dc:creator>RinseRepeat</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443720?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443720/what-are-the-gps-mode-change-event-message-codes/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;DC Rainmaker documented this series of events for GPS mode changes in the FIT file?&lt;/p&gt;
&lt;p&gt;This is neat, I was not aware that was recorded? Apparently that was in a Fenix7 series so I assume it survived to F8 and F9?&lt;/p&gt;
&lt;p&gt;Is it recorded in the single-band models?&lt;/p&gt;
&lt;p&gt;Would definitely like to decode those, curious of BeiDou is being used in continental US (hope so)&lt;/p&gt;
&lt;p&gt;ps. any chance a CIQ datafield can watch for these events in realtime and show on the screen the GPS band status?&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/mode_2D00_change.png" /&gt;&lt;/p&gt;</description></item><item><title>Activity Profile Editor for Edge devices</title><link>https://forums.garmin.com/thread/443113?ContentTypeID=0</link><pubDate>Mon, 31 Aug 2026 16:49:23 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:d45382b1-5923-43e9-9d88-6c3cb05bc30f</guid><dc:creator>dscurtis</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/443113?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443113/activity-profile-editor-for-edge-devices/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:150%;"&gt;For anyone who is interested in editing their Edge Activity Profile screens and data fields on a computer vs the Edge itself, this project may have what you&amp;rsquo;re looking for.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;a href="https://github.com/fullcarbonbike/Activity-Profile-Editor"&gt;github.com/.../Activity-Profile-Editor&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;I only have my own Edge 530 to test this on, so the confirmed field IDs, screen types, and layouts are all specific to that model. The underlying screen/data-field mechanism looks like it should carry over to other Edge models (same 10-field-per-screen cap, same layout patterns from what I&amp;#39;ve seen in demo videos of newer touchscreen units), but that&amp;#39;s unconfirmed without real testing on other hardware &amp;mdash; collaboration from anyone with a different model would help a lot.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;You can use it in purely a &amp;ldquo;read&amp;rdquo; mode, if you just want to start by viewing existing Profiles. The deploy method pushes the changed Activity Profile .fit files through the NewFiles folder/restart mechanism to make the changes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Here are the features that are built into this toolkit and available in the GUI:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;- Cloning - copy an existing Activity Profile to a new name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Backups - backup Activity Profiles to local disk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Backup pruning - delete old backups&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Change Screens - Add/Delete/Reorder/Hide/Layout-A/B&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Data Fields - Add/Delete/reorder/Modify the data fields within a screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Startup.txt - Change the text and display timer value of the boot message file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Restore - restore a deleted Activity Profile if it was previously backed up by the toolkit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Import - import a Profile from another source or other backup method&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;- Favorite - save a favorite screen to reuse/transfer to another Activity Profile&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;The code is written in Python and uses the garmin-fit-sdk and wxPython for the GUI interface.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;There are also a set of CLI tools, in case you want to use individual aspects of the toolkit without the gui_app.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:150%;"&gt;The tools are compatible with MacOS (tested on MacOS 26) as well as Windows (tested on Win 11). It was also tested on Win 10 - 32-bit, but requires manual install of the Python version and the wxPython (see the README for those details).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Here&amp;rsquo;s a sample output of a couple of the cli tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;% python3 garmin_device.py detect&lt;br /&gt;Garmin device found at: /Volumes/GARMIN/Garmin&lt;br /&gt; Manufacturer: garmin&lt;br /&gt; Product: edge_530&lt;br /&gt; Serial: xxxxxxxxxxxx &amp;lt;-not showing my actual serial number&lt;br /&gt; Software version: 981&lt;/p&gt;
&lt;p&gt;% python3 fit_dump.py screens ./CyclingRoadClonebox.fit&lt;br /&gt;=== Screen order as viewed on-device (reorderable via --swap-order) ===&lt;br /&gt; POS SLOT CNT LAY FLAG TYPE FIELDS&lt;br /&gt; 1 [ 0] 6f B Screen 1 Timer, Distance, Power Graph, Heart Rate Graph, Speed, Cadence&lt;br /&gt; 2 [ 7] 7f Screen 4 Cadence Bars, Lap HR, Last Lap HR, EPOC, HR Zone Graph, Anaerobic TE, Aerobic Training Effect&lt;br /&gt; 3 [ 1] 2f Lap Summary Speed, Distance&lt;br /&gt; 4 [ 2] 0f Map &lt;br /&gt; 5 [ 3] 2f Elevation Percent Grade, Elevation (ft)&lt;br /&gt; 6 [ 8] 0f GroupTrack List &lt;br /&gt; 7 [13] 2f ClimbPro Percent Grade, Elevation (ft)&lt;br /&gt; 8 [ 4] 2f Cycling Dynamics Power Phase Left, Power Phase Right&lt;br /&gt; 9 [ 5] 2f Screen 2 Avg Speed, HR Zone Graph&lt;br /&gt; 10 [ 6] 7f Screen 3 Speed Bars, HR Bars, Power Bars, Lap HR, Last Lap HR, Lap %Max HR, Respiration&lt;br /&gt; 11 [ 9] 10f Screen 5 Lap Time, Odometer, Dest. Ahead, Lap Dist., Last Lap Speed, Total Descent, Lap Speed, Reps to Go, Lap Power, Target Power&lt;br /&gt; 12 [11] 10f Screen 6 Target, Step Time, Duration, Workout Comparison, Workout Step, Light Battery, Last Lap Power, Lap Time Standing, Lap Time Seated, Avg PCO&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Also, here&amp;#39;s a few screen shots of the GUI&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/Profile_2D00_Editor_2D00_ProfileList.jpg" alt=" " /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/Profile_2D00_Editor_2D00_ScreenList.jpg" alt=" " /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/Profile_2D00_Editor_2D00_ScreenEdit.jpg" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>RE: Activity Profile Editor for Edge devices</title><link>https://forums.garmin.com/thread/2060862?ContentTypeID=1</link><pubDate>Mon, 07 Sep 2026 17:10:23 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:33e80ecb-8443-4990-b633-fe5bc96d3382</guid><dc:creator>dscurtis</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2060862?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443113/activity-profile-editor-for-edge-devices/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Follow up on my earlier reply in this thread, where I quoted my project&amp;#39;s&lt;br /&gt;README describing a hard limitation around Connect IQ data fields. That&lt;br /&gt;limitation turned out not to be a limitation at all &amp;mdash; it was a message my&lt;br /&gt;tooling wasn&amp;#39;t writing. Posting the details here since it&amp;#39;s undocumented in&lt;br /&gt;the published FIT Profile and may save someone else the same investigation.&lt;/p&gt;
&lt;p&gt;**Background.** Activity Profile files contain screen definitions where each&lt;br /&gt;screen carries an array of numeric data field IDs. Third-party Connect IQ&lt;br /&gt;data fields appear in that array as ID **216**. Editing such a file directly &amp;mdash;&lt;br /&gt;reordering fields, adding or removing fields on a screen holding a Connect IQ&lt;br /&gt;field &amp;mdash; produced a file that looked correct by every measure I could apply,&lt;br /&gt;but rendered the Connect IQ field as **&amp;quot;Timer&amp;quot;** on the device. Whole-profile&lt;br /&gt;copies preserved it; any structural edit broke it. I had concluded the linkage&lt;br /&gt;was device-side and unreachable from the file.&lt;/p&gt;
&lt;p&gt;**That was wrong.** The linkage is in the file, in **`mesg_num` 170** &amp;mdash; which&lt;br /&gt;is absent from the published `Profile['mesg_num']` table entirely (I checked&lt;br /&gt;directly against `garmin_fit_sdk` 21.213.0; there are gaps at 163, 166, 168,&lt;br /&gt;170&amp;ndash;173, 175&amp;ndash;176).&lt;/p&gt;
&lt;p&gt;**The record.** One message-170 record exists per Connect IQ app used by the&lt;br /&gt;profile, with exactly two fields:&lt;/p&gt;
&lt;p&gt;| field | size | meaning |&lt;br /&gt;|---|---|---|&lt;br /&gt;| 1 | 16 &amp;times; `uint8` | the Connect IQ app&amp;#39;s UUID, big-endian |&lt;br /&gt;| 2 | 5 &amp;times; `uint32` (20 bytes) | packed placement list, see below |&lt;/p&gt;
&lt;p&gt;**Field 2** is a packed array of **15-bit entries**, one per placement of that&lt;br /&gt;app within the profile:&lt;/p&gt;
&lt;p&gt;```&lt;br /&gt;bits 0-4 screen slot index (the screen record&amp;#39;s message_index), 0-31&lt;br /&gt;bits 5-14 ONE-HOT field position within that screen, bit (5 + position)&lt;/p&gt;
&lt;p&gt;entry = (1 &amp;lt;&amp;lt; (5 + field_position)) | slot_index&lt;br /&gt;```&lt;/p&gt;
&lt;p&gt;Entries are stored in ascending slot order. Five slot bits (31 slots) plus ten&lt;br /&gt;position bits (the ten-field-per-screen maximum) is exactly 15.&lt;/p&gt;
&lt;p&gt;**Field ID 216 is not an app identity.** This was the part that misled me&lt;br /&gt;longest. 216 is a generic &amp;quot;a Connect IQ data field goes here&amp;quot; marker &amp;mdash; I&lt;br /&gt;confirmed this by placing two *different* Connect IQ apps on the same screen&lt;br /&gt;at adjacent positions, and both were stored as 216. All app identity lives in&lt;br /&gt;the message-170 records and nowhere else.&lt;/p&gt;
&lt;p&gt;**So the &amp;quot;Timer&amp;quot; behavior has a simple explanation.** 216 tells the device to&lt;br /&gt;render a Connect IQ field at that position. The device then looks for a&lt;br /&gt;message-170 entry claiming that exact (slot, position) pair. No matching&lt;br /&gt;entry, nothing resolves, and Garmin&amp;#39;s generic Timer fallback renders instead.&lt;br /&gt;Every symptom I&amp;#39;d seen follows from that one rule: whole-profile copies work&lt;br /&gt;because the records come along unchanged; moving a *screen* in the display&lt;br /&gt;order works because that changes a different field and not the slot index;&lt;br /&gt;editing a screen&amp;#39;s field layout breaks it because positions shift and the&lt;br /&gt;record doesn&amp;#39;t follow.&lt;/p&gt;
&lt;p&gt;**Confirmed on hardware.** All of the following were verified by round-trip&lt;br /&gt;on a real Edge 530 &amp;mdash; write the file, deploy, check the device:&lt;/p&gt;
&lt;p&gt;- moving a Connect IQ placement to a different position on the same screen&lt;br /&gt;- adding a placement to a screen that never had one&lt;br /&gt;- choosing *which* app renders, by choosing which record receives the entry&lt;br /&gt;- removing a placement cleanly, with no Timer left behind&lt;br /&gt;- a position shift occurring as a side effect of inserting a neighbouring&lt;br /&gt; field, which is the ordinary &amp;quot;add a field&amp;quot; case that broke originally&lt;/p&gt;
&lt;p&gt;The one case I have **not** yet tested is creating a message-170 record from&lt;br /&gt;scratch in a profile that carries none &amp;mdash; i.e. adding a Connect IQ field to a&lt;br /&gt;profile that has never had that app. Everything above involves editing records&lt;br /&gt;the device itself wrote.&lt;/p&gt;
&lt;p&gt;**Credit:** the idea to look at this record&amp;#39;s second field came from the&lt;br /&gt;author of Fit File Viewer (fitfileviewer.com), who had independently labeled&lt;br /&gt;170 as a Connect IQ record with a &amp;quot;field bits&amp;quot; column. That column is exactly&lt;br /&gt;bits 5&amp;ndash;14 above.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;## What this means in practice&lt;/p&gt;
&lt;p&gt;This is now implemented and working in my toolkit, so for anyone doing the&lt;br /&gt;same kind of file editing, here&amp;#39;s where the line actually falls.&lt;/p&gt;
&lt;p&gt;**Works:** moving a Connect IQ field to a different position on a screen,&lt;br /&gt;adding or removing ordinary fields around one, removing a Connect IQ field&lt;br /&gt;outright, and reordering or deleting whole screens that hold one. All of it&lt;br /&gt;just requires updating that app&amp;#39;s entry alongside the field-array write.&lt;/p&gt;
&lt;p&gt;**Doesn&amp;#39;t work, and this is a property of the format rather than a choice:**&lt;br /&gt;adding a Connect IQ field where one isn&amp;#39;t already. Since 216 is generic and&lt;br /&gt;carries no app identity, nothing in the edit says which app a new marker&lt;br /&gt;should resolve to &amp;mdash; you&amp;#39;d be writing a field the device can&amp;#39;t resolve, which&lt;br /&gt;renders as &amp;quot;Timer&amp;quot;. Likewise, a screen holding *two* Connect IQ fields can&amp;#39;t&lt;br /&gt;be safely rearranged from a field array alone: both are 216, so there&amp;#39;s no&lt;br /&gt;way to tell which app ended up where afterward.&lt;/p&gt;
&lt;p&gt;**The practical workaround is cloning.** Place the Connect IQ fields once&lt;br /&gt;using the device&amp;#39;s own editor, then copy that profile &amp;mdash; the records come&lt;br /&gt;along byte-for-byte &amp;mdash; and edit the copy freely. That gives you as many&lt;br /&gt;variants as you want off one on-device setup, which covers most of what you&amp;#39;d&lt;br /&gt;otherwise want a &amp;quot;place a Connect IQ field&amp;quot; feature for.&lt;/p&gt;
&lt;p&gt;One deliberate design note, in case it&amp;#39;s useful to anyone building something&lt;br /&gt;similar: I kept the marker id as a small constant set and specifically did&lt;br /&gt;*not* build any table of known Connect IQ apps or their UUIDs. The tool&lt;br /&gt;describes the file format and never needs to know which apps exist, so there&amp;#39;s&lt;br /&gt;no registry to keep current as people install new ones.&lt;/p&gt;
&lt;p&gt;Happy to answer questions if anyone&amp;#39;s working in the same area.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Developer onboarding blocked</title><link>https://forums.garmin.com/thread/2060736?ContentTypeID=1</link><pubDate>Mon, 07 Sep 2026 06:15:11 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:e868868f-ce8d-4bc5-98bd-d730372de044</guid><dc:creator>3236378</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2060736?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/435484/developer-onboarding-blocked/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Same here. This is rubbish. I&amp;#39;ve bought expensive garmin stuff and now I can&amp;#39;t connect with my application. Guess I&amp;#39;ll go back to hammerhead. Their support and developers are great.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Developer onboarding blocked</title><link>https://forums.garmin.com/thread/435484?ContentTypeID=0</link><pubDate>Wed, 29 Apr 2026 13:19:37 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:f3b00b40-bf83-498a-9fc5-8f71e91238aa</guid><dc:creator>Noah</dc:creator><slash:comments>6</slash:comments><comments>https://forums.garmin.com/thread/435484?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/435484/developer-onboarding-blocked/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I have emailed&amp;nbsp;&lt;a id="" href="mailto:connect-support@developer.garmin.com"&gt;connect-support@developer.garmin.com&lt;/a&gt;multiple times with no response. The developer onboarding form has been down for more than a month. Has anyone had any success recently onboarding to the developer account or getting access to the activity API?&lt;/p&gt;</description></item><item><title>Multisport FIT file rejected as "invalid" by Garmin Connect (unknown_233 message type)</title><link>https://forums.garmin.com/thread/442501?ContentTypeID=0</link><pubDate>Sun, 23 Aug 2026 15:32:16 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:274c5de2-b80d-427f-9269-5098cc2581e5</guid><dc:creator>1337595</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/442501?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442501/multisport-fit-file-rejected-as-invalid-by-garmin-connect-unknown_233-message-type/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;I recorded a multisport activity (run-bike-run duathlon) on my Forerunner &lt;br /&gt;965 on 2026-08-23. Garmin Connect rejects the file as &amp;quot;invalid&amp;quot; via all &lt;br /&gt;import paths (auto-sync, Garmin Express, manual web import).&lt;/p&gt;
&lt;p&gt;Inspecting the file with a third-party FIT tool shows it&amp;#39;s complete and &lt;br /&gt;readable (7,394 messages, 1,561 record entries, 11 laps, all sessions &lt;br /&gt;present). It contains an unofficial/undocumented message type &lt;br /&gt;(unknown_233, 2,632 occurrences) that isn&amp;#39;t in the official FIT SDK &lt;br /&gt;profile &amp;mdash; possibly what&amp;#39;s tripping Connect&amp;#39;s server-side validator.&lt;/p&gt;
&lt;p&gt;Has anyone seen this before, or is there someone here who could take a &lt;br /&gt;look with FFRT (Fit File Repair Tool)?&lt;/p&gt;
&lt;p&gt;Device: Forerunner 965[View:/cfs-file/__key/communityserver-discussions-components-files/502/rennen.zip:320:240]&lt;br /&gt;File attached.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;</description></item><item><title>RE: Multisport FIT file rejected as "invalid" by Garmin Connect (unknown_233 message type)</title><link>https://forums.garmin.com/thread/2060385?ContentTypeID=1</link><pubDate>Sat, 05 Sep 2026 14:29:26 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:3a4c87eb-b260-445d-9170-48c33660de57</guid><dc:creator>instezz</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2060385?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442501/multisport-fit-file-rejected-as-invalid-by-garmin-connect-unknown_233-message-type/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This was very interesting. The very own Fit SDK&amp;nbsp;recognizes&amp;nbsp;this file as legit and just fine, with absolutely no troubles. &lt;br /&gt;&lt;br /&gt;The fitfileviewer reports are false positives and the resulting file would actually mess up your training. &lt;br /&gt;&lt;br /&gt;I tried to run this through multiple passes by a) stripping out everything non-essential data b) spltting the file in its own 5 separate activities and c) trying to increase the first transition time a bit (since it is just 1s) with &lt;a id="" href="https://fitsplit.fit"&gt;https://fitsplit.fit&lt;/a&gt;&amp;nbsp;.&lt;br /&gt;&lt;br /&gt;Nothing worked, Connect would still not accept this.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The kicker is that both &lt;a id="" href="https://intervals.icu"&gt;https://intervals.icu&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a id="" href="https://app.trainingpeaks.com/"&gt;https://app.trainingpeaks.com/&lt;/a&gt;&amp;nbsp; happily accept the file without an issue.&lt;br /&gt;&lt;br /&gt;So all of this points to a bug in Garmin Connect upload processing system... I would open a bug to them since there is nothing wrong with your file.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Recomputing session/lap HR aggregates after structural FIT edits: sane approach? (+ looking for weird multi-session files to test against)</title><link>https://forums.garmin.com/thread/443469?ContentTypeID=0</link><pubDate>Sat, 05 Sep 2026 11:47:44 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:914dc778-e9d5-4e82-a328-fcc6e001f1c5</guid><dc:creator>instezz</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443469?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443469/recomputing-session-lap-hr-aggregates-after-structural-fit-edits-sane-approach-looking-for-weird-multi-session-files-to-test-against/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;been building a browser tool on the JS SDK (&lt;span&gt;currently 21.178.0)&amp;nbsp;&lt;/span&gt;that does a few structural rewrites to FIT files: splicing in a second sensor&amp;#39;s HR stream record-by-record (nearest-timestamp match against a chest-strap export), moving the boundary between sessions in a multisport file, and cropping/splitting a recording.&lt;/p&gt;
&lt;p&gt;After any of these, the original session/lap HR (and speed/cadence/power) aggregates are obviously stale, so I recompute avg/max by re-scanning the record window rather than trusting the device-written values. &lt;br /&gt;&lt;br /&gt;Two things I&amp;#39;d like a sanity check on from people who&amp;#39;ve been deeper in the profile than I have:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Lap&amp;rarr;session linkage&lt;/strong&gt;: I&amp;#39;m matching a lap/length to its owning session purely by timestamp overlap against the session&amp;#39;s window, since there&amp;#39;s no explicit foreign key from lap/length to session in the profile as far as I can tell. Is that the right assumption, or is there an index-based chain (message_index/first_lap_index/num_laps) that&amp;#39;s meant to be authoritative instead, that I&amp;#39;d be wrong to ignore? I couln&amp;#39;t figure it out.&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;2. Boundary rounding&lt;/strong&gt;: when I split a lap that straddles a moved session boundary, I&amp;#39;ve had to add a ~1s tolerance because start_time is 1-second resolution while total_elapsed_time (which I use to derive an end timestamp) is sub-second, so a lap&amp;#39;s recorded start and an adjacent session&amp;#39;s derived end can disagree by up to a second for what&amp;#39;s really the same instant. Is that a known quirk of the encoding, or something specific to how certain devices round on write?&lt;/p&gt;
&lt;p&gt;Separately:&lt;br /&gt;&lt;br /&gt;if anyone has a genuinely odd multi-session FIT lying around (COROS, Suunto, Wahoo, or a Garmin multisport structure that doesn&amp;#39;t follow the usual swim&amp;rarr;bike&amp;rarr;run shape), I&amp;#39;d genuinely like to try my tool against it and see where it breaks. Free QA for me, and I&amp;#39;ll tell you if I find anything wrong with the file too. Or if you want to do that yourself and let me know how it went you can find the tool in live beta at &lt;a id="" href="https://thesplit.fit"&gt;https://thesplit.fit&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Thanks in advance for your help&amp;nbsp;&lt;br /&gt;Stefano&lt;/p&gt;</description></item><item><title>could a developer make a tiny FIT file to toggle the auto-brightness setting despite missing menu option</title><link>https://forums.garmin.com/thread/443433?ContentTypeID=0</link><pubDate>Fri, 04 Sep 2026 18:21:16 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:07083180-2d8b-4e68-9e44-c42840269af0</guid><dc:creator>RinseRepeat</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443433?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443433/could-a-developer-make-a-tiny-fit-file-to-toggle-the-auto-brightness-setting-despite-missing-menu-option/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;please take a look at my idea over here to force auto-brightness to turn off despite no menu option to do so&lt;/p&gt;
&lt;p&gt;I found in the settings.fit file there is such an option and I remember from the early HRV days we had the same problem with no menu option&amp;nbsp;to turn on logging so garmin released a tiny FIT file to import and toggle the option directly&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to try setting it to zero to see if it disables adaptive brightness on AMOLED on FenixE/8 series&lt;/p&gt;
&lt;p&gt;&amp;nbsp;[mention:a5e36cb1ed8d46cfadc9697fec0d1f11:f586769b0822468ab7f3a94d480ed9b0]&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://forums.garmin.com/beta-program/fenix-8-series/f/community-discussion/443109/23-27-screen-brightness-issue/2060207"&gt;https://forums.garmin.com/beta-program/fenix-8-series/f/community-discussion/443109/23-27-screen-brightness-issue/2060207&lt;/a&gt;&lt;/p&gt;</description></item><item><title>RE: Activity Profile Editor for Edge devices</title><link>https://forums.garmin.com/thread/2059836?ContentTypeID=1</link><pubDate>Thu, 03 Sep 2026 17:29:22 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:2d58e07d-0e94-486a-814b-115ef04e399d</guid><dc:creator>dscurtis</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/2059836?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443113/activity-profile-editor-for-edge-devices/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p dir="auto"&gt;NOTE: SEE UPDATE IN MY REPLY BELOW&lt;/p&gt;
&lt;p dir="auto"&gt;Ran into an interesting issue while testing this toolkit against my Edge 530: a Connect IQ third-party data field (WindField, in my case) that I&amp;#39;d set via the GUI on a screen showed up correctly in the file and in the toolkit&amp;#39;s own display &amp;mdash; but rendered as Timer on the actual device. Same thing happened whether I moved it to a full-width slot, a half-width slot, a brand new screen, or a completely fresh test profile.&lt;/p&gt;
&lt;p dir="auto"&gt;After a lot of byte-level comparison between working and broken files, a few things came out clearly:&lt;/p&gt;
&lt;ul dir="auto"&gt;
&lt;li&gt;
&lt;p dir="auto"&gt;Every Connect IQ field gets assigned a plain numeric ID by the device itself &amp;mdash; not by the app&amp;#39;s author. WindField&amp;#39;s author (Scott Beam) confirmed this directly: &amp;quot;that&amp;#39;s not anything I set in the code at all.&amp;quot; He also commented that Timer may be Garmin&amp;#39;s generic fallback whenever a Connect IQ reference can&amp;#39;t be resolved, which matched exactly what I was seeing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir="auto"&gt;That numeric ID isn&amp;#39;t tied to one specific app. I installed a second, completely free Connect IQ app on the same device, and the device reused the same numeric ID that had previously meant WindField &amp;mdash; now pointing at the new app instead. Since one of the two apps involved has no license or subscription at all, this rules out any licensing/anti-piracy explanation; it&amp;#39;s just how Garmin links a screen slot to whichever Connect IQ app is currently installed in that device-assigned slot.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir="auto"&gt;The file itself doesn&amp;#39;t carry enough information to recreate this link. There&amp;#39;s a secondary record in the file that looks like a per-app identifier, but it&amp;#39;s constant no matter where the field is placed, and copying it byte-for-byte into a fresh slot didn&amp;#39;t make it work. Whatever actually resolves a Connect IQ field must be checked against state that lives on the device, not in the file.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir="auto"&gt;Practical result: this toolkit can reliably preserve a working Connect IQ field placement (cloning a whole profile that already has one) and can relocate it within a profile that already has it working &amp;mdash; but it can&amp;#39;t originate one in a slot that&amp;#39;s never had it. Only Garmin&amp;#39;s own on-device editor can do that first placement, at least with the testing I&amp;#39;ve done.&lt;/p&gt;
&lt;p dir="auto"&gt;As of the latest version, the toolkit reflects this directly: any field ID known to behave this way now shows up as a generic &amp;quot;CIQ Data Field&amp;quot; (rather than guessing at a specific app name that might be wrong on someone else&amp;#39;s device), and both the CLI and GUI refuse outright to try writing one into a new slot &amp;mdash; rather than silently producing a file that looks right and doesn&amp;#39;t work.&lt;/p&gt;
&lt;p dir="auto"&gt;Full write-up with the byte-level detail is on github in PROJECT_NOTES.md (Doc rev 95&amp;ndash;97) if anyone wants to dig further or has a different device/app combination to compare against.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Upload.fit datei nicht möglich</title><link>https://forums.garmin.com/thread/443273?ContentTypeID=0</link><pubDate>Wed, 02 Sep 2026 19:41:47 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:e2adb81c-8b09-486b-805b-05e77ff107c8</guid><dc:creator>4653394</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/443273?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/443273/upload-fit-datei-nicht-moglich/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;ich w&amp;uuml;rde gerne eine .fit datei hochladen, erstens wird meine .fit datei nicht erkannt, d.h. wenn ich sie hochladen will muss ich sie &amp;uuml;ber drag&amp;amp;drop rein ziehen. Beim Hochladen kommt die fehlermeldung: &amp;bdquo;&lt;span&gt;Beim Hochladen der Daten ist ein Fehler aufgetreten. Versuche es erneut.&amp;ldquo;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;k&amp;ouml;nnen sie mir weiterhelfen&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Title: Garmin Connect Activity API access</title><link>https://forums.garmin.com/thread/442746?ContentTypeID=0</link><pubDate>Wed, 26 Aug 2026 13:40:06 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:28b7af42-e2af-4f0e-a2f9-5a79b230e775</guid><dc:creator>4019245</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/442746?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442746/title-garmin-connect-activity-api-access/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="1388" data-end="1520"&gt;Hi,&lt;br data-start="1391" data-end="1394" /&gt; I&amp;rsquo;m interested in using the Garmin Connect Activity API to access activity data from Garmin devices with user authorization.&lt;/p&gt;
&lt;p data-start="1525" data-end="1624"&gt;I understand that new Garmin Connect Developer Program API access requests may currently be paused.&lt;/p&gt;
&lt;p data-start="1629" data-end="1751"&gt;Is there currently any way to request access to the Activity API, or any waitlist I can join for when applications reopen?&lt;/p&gt;
&lt;p data-start="1756" data-end="1832"&gt;I would also be interested in the Health API and Training API in the future.&lt;/p&gt;
&lt;p data-start="1837" data-end="1844"&gt;Thanks.&lt;/p&gt;</description></item><item><title>RE: Title: Garmin Connect Activity API access</title><link>https://forums.garmin.com/thread/2058381?ContentTypeID=1</link><pubDate>Sun, 30 Aug 2026 18:37:25 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:a08bf39f-4c6e-46a3-97a7-83478b1e038d</guid><dc:creator>&amp;#193;lvaro7914606</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2058381?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442746/title-garmin-connect-activity-api-access/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Me uno a este mensaje, ya que yo tambien estoy interesado, deberia ser mas facil poder acceder a tus &amp;quot;propias actividades&amp;quot; e informaci&amp;oacute;n, ya sea de una ruta realizada o un FIT cargado para realizar un trayecto y poder leer su informaci&amp;oacute;n.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Types sheet in Profile.xlsx needs some explanation</title><link>https://forums.garmin.com/thread/2057963?ContentTypeID=1</link><pubDate>Fri, 28 Aug 2026 20:58:48 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:9b711734-d857-4369-9db7-f9fa9439ea23</guid><dc:creator>Eli FIT</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2057963?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442784/types-sheet-in-profile-xlsx-needs-some-explanation/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The sport and language bits types are used in the CapabilitiesMesg&amp;#39;s sports and languages arrays respectively. For Activity FIT files, the types &amp;quot;sport&amp;quot; and &amp;quot;sub_sport&amp;quot; are what are used to classify an activity&amp;#39;s sport(s). Other types may be publicly documented but used in undocumented messages, files, etc.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Regarding the second point, &amp;quot;file_flags&amp;quot; is a &amp;quot;uint8z&amp;quot; type, meaning that it is a uint8 where &amp;quot;0&amp;quot; is the invalid value, rather than 255. Almost all &amp;quot;z&amp;quot; types in the SDK are used as bitmasks for bitfields. so it is exactly the case where a value of 0x0E would correspond to readable, writable, and erasable. Another example of a &amp;quot;z&amp;quot; type is workout_capabilities, which is a uint32z bitmask type used in a WorkoutMesg&amp;#39;s capabilities bitfield.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Types sheet in Profile.xlsx needs some explanation</title><link>https://forums.garmin.com/thread/442784?ContentTypeID=0</link><pubDate>Wed, 26 Aug 2026 20:29:13 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:2ffdc80c-c443-436f-899a-d41bb6001eeb</guid><dc:creator>BESSELING.FRANK</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/442784?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442784/types-sheet-in-profile-xlsx-needs-some-explanation/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I need some clarification regarding the Types sheet in Profile.xlsx. It may be documented somewhere, but I haven&amp;rsquo;t been able to find it. Two things are unclear to me.&lt;/p&gt;
&lt;p&gt;First, I noticed that of the roughly 200 documented Types, only about 140 are actually used in the Messages. For example, &amp;quot;language_bits_1&amp;quot; through &amp;quot;language_bits_4&amp;quot; do not appear in any Message. The same applies to &amp;quot;sport_bits_1&amp;quot; through &amp;quot;sport_bits_6&amp;quot;. What is the purpose of these unused Types?&lt;/p&gt;
&lt;p&gt;Second, the use of hexadecimal values in the Value column is not always explained. In some cases it&amp;rsquo;s clear, such as in the comments for &amp;quot;file.mfg_range_min&amp;quot; and &amp;quot;file.mfg_range_max&amp;quot;. But for the type &amp;quot;file_flags&amp;quot;, it could be interpreted that the bits can be used cumulatively. In that case, 0x0E would correspond to readable &amp;amp; writable &amp;amp; erasable. And maybe other uses of hexadecimal values are applicable elsewhere.&lt;/p&gt;
&lt;p&gt;Can someone clarify this, or provide a link to existing documentation?&lt;br /&gt;Many thanks!&lt;/p&gt;</description></item><item><title>RE: Multisport FIT file rejected as "invalid" by Garmin Connect (unknown_233 message type)</title><link>https://forums.garmin.com/thread/2055767?ContentTypeID=1</link><pubDate>Sun, 23 Aug 2026 17:39:17 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:5ab79cf3-0f43-43e2-9b41-d3963caf6242</guid><dc:creator>HermoT</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2055767?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442501/multisport-fit-file-rejected-as-invalid-by-garmin-connect-unknown_233-message-type/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;If you load this in&amp;nbsp;&lt;a id="" href="https://www.fitfileviewer.com"&gt;https://www.fitfileviewer.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;it detects and auto correct issues and you can download a corrected file.&lt;/p&gt;
&lt;p&gt;For your file the following errors were detected:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/502/IMG_5F00_4881.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: JS SDK: decoder crash on unknown field before an accumulated field</title><link>https://forums.garmin.com/thread/2055004?ContentTypeID=1</link><pubDate>Thu, 20 Aug 2026 12:09:26 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:241c175a-55dd-4e36-a80c-b43e6af5b3b8</guid><dc:creator>Ufie</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2055004?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442200/js-sdk-decoder-crash-on-unknown-field-before-an-accumulated-field/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thanks for taking a look. I wrote up a minimal reproduction, but the forum&amp;#39;s spam&lt;br /&gt;filter hid the post and the appeal was declined, so it never became visible. Happy to&lt;br /&gt;send it directly if there&amp;#39;s a better channel, or to link a GitHub gist if links are&lt;br /&gt;allowed here.&lt;/p&gt;
&lt;p&gt;In the meantime the repro is short enough to describe in words. Build a FIT file with&lt;br /&gt;one record message (global mesg num 20) whose field definitions are, in this exact&lt;br /&gt;order:&lt;/p&gt;
&lt;p&gt;field 253, size 4, base type uint32 (timestamp)&lt;br /&gt; field 200, size 1, base type uint8 (not present in the profile)&lt;br /&gt; field 5, size 4, base type uint32 (distance -- isAccumulated in the profile)&lt;/p&gt;
&lt;p&gt;(Field 200 is only an example -- any field number with no entry in the record profile&lt;br /&gt;reproduces it. Note 200 IS defined in the session message, so it has to be a record.)&lt;/p&gt;
&lt;p&gt;Decode it with includeUnknownData: true. Because field 200 has no profile entry but is&lt;br /&gt;still added to the message, the lookup in #setAccumulatedField returns undefined and&lt;br /&gt;throws &amp;quot;Cannot read properties of undefined (reading &amp;#39;components&amp;#39;)&amp;quot;. Decoding then&lt;br /&gt;stops, so every remaining message in the file is lost.&lt;/p&gt;
&lt;p&gt;Swap the order of field 5 and field 200 and the same file decodes cleanly -- when the&lt;br /&gt;accumulated field is read first, the unknown field isn&amp;#39;t in the message yet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>JS SDK: decoder crash on unknown field before an accumulated field</title><link>https://forums.garmin.com/thread/442200?ContentTypeID=0</link><pubDate>Tue, 18 Aug 2026 19:45:14 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:ff6caf26-cadd-4038-8bc4-ccd1b2e3e8d5</guid><dc:creator>Ufie</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/442200?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442200/js-sdk-decoder-crash-on-unknown-field-before-an-accumulated-field/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Decoding with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-epitaxy-inline-code=""&gt;Decoder.read({ includeUnknownData: true })&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;fails with:&lt;/p&gt;
&lt;p&gt;&amp;quot;Cannot read properties of undefined (reading &amp;#39;components&amp;#39;)&amp;quot;&lt;/p&gt;
&lt;p&gt;Decoding stops at that point, so all remaining messages in the file are lost.&lt;/p&gt;
&lt;p&gt;Cause is in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;code data-epitaxy-inline-code="" data-epitaxy-file-ref=""&gt;src/decoder.js&lt;/code&gt;&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-epitaxy-inline-code=""&gt;#setAccumulatedField()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(line 719 in 21.213.0):&lt;/p&gt;
&lt;p&gt;let components = messageDefinition.fields[containingField.fieldDefinitionNumber].components ?? []&lt;/p&gt;
&lt;p&gt;With&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-epitaxy-inline-code=""&gt;includeUnknownData: true&lt;/code&gt;, fields that have no Profile entry are present in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-epitaxy-inline-code=""&gt;message&lt;/code&gt;, so this lookup returns undefined. It only triggers when the unknown field comes before an accumulated field (distance, total_cycles, accumulated_power) in the message definition &amp;mdash; the same fields in the opposite order decode fine.&lt;/p&gt;
&lt;p&gt;Fix is the optional chaining already used on the next lookup two lines down:&lt;/p&gt;
&lt;p&gt;let components = messageDefinition.fields[containingField.fieldDefinitionNumber]?.components ?? []&lt;/p&gt;
&lt;p&gt;Reproduced on 21.208.0 and 21.213.0, Node 22. Happy to post a minimal repro script if that helps.&lt;/p&gt;</description></item><item><title>Where can I find the name of the product  whose ID is 16338</title><link>https://forums.garmin.com/thread/442260?ContentTypeID=0</link><pubDate>Wed, 19 Aug 2026 15:33:57 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:ea66fd61-2681-4f37-9e18-0879f2fac543</guid><dc:creator>KenDuffill</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/442260?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442260/where-can-i-find-the-name-of-the-product-whose-id-is-16338/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;When decoding the Device Info message from y Forerunner 45 watch I cannot find a description for product ID 16338&lt;/p&gt;</description></item><item><title>Where can I find the name of the manufacturer whose ID is 36084</title><link>https://forums.garmin.com/thread/442259?ContentTypeID=0</link><pubDate>Wed, 19 Aug 2026 15:30:11 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:91b4cc01-6d76-45f3-814a-b87855938d48</guid><dc:creator>KenDuffill</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/442259?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442259/where-can-i-find-the-name-of-the-manufacturer-whose-id-is-36084/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;When I decode Device Info Messages from my Forerunner 45 watch I find that manufacturer ID 36084 is&amp;nbsp;Unknown.&lt;/p&gt;</description></item><item><title>RE: JS SDK: decoder crash on unknown field before an accumulated field</title><link>https://forums.garmin.com/thread/2054742?ContentTypeID=1</link><pubDate>Wed, 19 Aug 2026 14:31:34 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:a5cb599c-2cc6-4594-969c-bcb22d19ef56</guid><dc:creator>Grace FIT</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/2054742?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/442200/js-sdk-decoder-crash-on-unknown-field-before-an-accumulated-field/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;We will look into this. A minimal reproduction script would be useful, thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Developer onboarding blocked</title><link>https://forums.garmin.com/thread/2054626?ContentTypeID=1</link><pubDate>Wed, 19 Aug 2026 07:12:05 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:b70ea069-faca-4d0d-a48f-2284e7613c52</guid><dc:creator>dobssi</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/2054626?ContentTypeID=1</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/435484/developer-onboarding-blocked/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I got this in July: does not seem like anything has changed since then. Really want to connect MyRunningDashboard app beta to the Garmin API.&lt;br /&gt;&lt;br /&gt;Thank you for your interest in the Garmin Connect Developer Program.&lt;br /&gt; We are currently evolving and modernizing the Garmin Connect Developer Program.&lt;br /&gt; During this transition, we have temporarily paused the review and approval of new API access requests.&lt;br /&gt; &lt;br /&gt; We appreciate your understanding as this work continues.&lt;br /&gt; At this time, we are unable to provide a specific timeline for when new application processing will resume.&lt;br /&gt; &lt;br /&gt; We will share additional updates as they become available.&lt;br /&gt; Thank you again for your interest in Garmin&amp;#39;s Developer Programs.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Suggestion: Show estimated recovery date and time (not only hours)</title><link>https://forums.garmin.com/thread/433098?ContentTypeID=0</link><pubDate>Mon, 16 Mar 2026 12:30:43 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:15e93733-9244-4f18-aa54-bd5e760f1a21</guid><dc:creator>1181255</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/433098?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/fit-sdk/f/discussion/433098/suggestion-show-estimated-recovery-date-and-time-not-only-hours/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="197" data-end="203"&gt;Hello,&lt;/p&gt;
&lt;p data-start="205" data-end="309"&gt;I would like to suggest a small improvement regarding the &lt;strong data-start="263" data-end="280"&gt;Recovery Time&lt;/strong&gt; metric shown after workouts.&lt;/p&gt;
&lt;p data-start="311" data-end="553"&gt;Currently, Garmin devices display recovery as a number of hours (for example: &lt;em data-start="389" data-end="399"&gt;38 hours&lt;/em&gt;). While this is helpful, it could be even more practical if the device or app also showed the &lt;strong data-start="494" data-end="552"&gt;estimated date and time when full recovery is expected&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-start="555" data-end="569"&gt;For example:&lt;/p&gt;
&lt;ul data-start="570" data-end="640"&gt;
&lt;li data-section-id="n0vywy" data-start="570" data-end="610"&gt;
&lt;p data-start="572" data-end="610"&gt;Current time: &lt;strong data-start="586" data-end="608"&gt;16 Mar 2026, 14:00&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-section-id="2ohja4" data-start="611" data-end="640"&gt;
&lt;p data-start="613" data-end="640"&gt;Recovery time: &lt;strong data-start="628" data-end="640"&gt;38 hours&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="642" data-end="760"&gt;Instead of displaying only &lt;em data-start="669" data-end="674"&gt;38h&lt;/em&gt;, it could also show something like:&lt;br data-start="710" data-end="713" /&gt; &lt;strong data-start="713" data-end="760"&gt;Estimated full recovery: 18 Mar 2026, 04:00&lt;/strong&gt;&lt;/p&gt;
&lt;p data-start="762" data-end="888"&gt;This would make it much easier for athletes to plan their next training session without having to manually calculate the time.&lt;/p&gt;
&lt;p data-start="890" data-end="1057"&gt;If such a feature already exists in &lt;strong data-start="926" data-end="959"&gt;FIT SDK fields or Garmin APIs&lt;/strong&gt;, I would appreciate any guidance. Otherwise, it might be a useful enhancement for future updates.&lt;/p&gt;
&lt;p data-start="1059" data-end="1069"&gt;Thank you!&lt;/p&gt;</description></item></channel></rss>