All wearable devices should implement local-host functionality and capability by default, failure to do so it's not acceptable from the perspective of Murphy's Law [1], [2].
Yup, I have a Garmin Fenix 8 AMOLED. It's an excellent watch. I run for 6-8 hours a week and I only need to charge it once a week. It is very hard wearing and has so many capabilities I don't know where to start. It even has a flashlight with red LED for during the night. With Garmin connect down I can just grab the FIT file from the watch and upload to Strava manually or perform my own analysis locally.
To add to what others have posted... Activity (i.e. running, walking, cycling, etc.) FIT files are found in the GARMIN/Activity directory on the watch after connecting it to a computer over USB. File names are date time stamps.
Sure. It's a binary file and there is a spec for it on the garmin website. There's lots of libraries available for most popular languages for decoding and encoding. You can download an app for your computer. I believe it's called Garmin Express, which allows you to sync fit files to your machine.
I'm building a running analytics app, which is really just for myself but if it turns out to be any good then I'll might turn it into a SaaS. Target market would be for fairly decent amateur runners (e.g. 2:20-2:30 marathon) but not good enough to be pro. The pros have awesome tools but sadly most are not available for us mere mortals but I can build some of them! Example features:
1. The strava GAP model doesn't fit very well for me. So I've made my own. I update the model each month too.
2. I've also built a wind resistance model which works quite well. I'm trying to do the same for surface types, heat and humidity as well.
3.Using adjused pace data I built a pace/duration model to estimate critical speed and this model forms the basis of tracking progress over time. Clearly most training wont be all out efforts, so I also estimate race performances based upon current fitness as well. E.g. if you ran X speed for Y time at a sub maximal effort then you can estimate what a maximal effort would be based upon the remaining aerobic and anaerobic power. From reading sports science literure, this is the most advanced way to track performance at the moment. The actual model I use is called an omniduration model [1].
4. I also have build some other models, e.g. Daniels running formula, which can be used but I don't find them to be as useful as the omniduration model.
5. I'm also trying to model how a workout will effect your fitness. Where it's base/aerobic, threshold, VO2max or an anaerobic effect. Then, the idea would be to look at future training performance to assess whether the model was correct. This was you might be able to determine which types of sessions result in the best outcomes for you.
Can confirm, everything runs in the watch, no connection to the app is needed. All your workouts are stored in the watch locally and synced to the Connect App once it is available. I never take my phone with me while doing workouts because its not really needed.
I've just started exploring analysing runs from my Garmin watch. In summary:
- Attach watch to laptop via USB-C -> opens like a USB drive, showing all the config and activity data files. You aren't locked into Garmin Connect or Strava or any other platform.
- You can also use the Garmin Connect API and go via the web service. I tried that first. But since discovering the raw data is available directly on the watch, I don't anymore.
- Activity data files are in the FIT format. Garmin has an SDK on GitHub in languages including Python, C# and a few others. I've tried the Python one.
- There are a couple of projects on GitHub for decoding FIT files. I've just started writing my own as I want to output modern Pydantic models. (And the Python code in the Garmin SDK is not the most efficient or idiomatic).
I've had my Garmin watch for 10 months now, and rate it as my best ever purchase for improving my fitness and performance, and for overall motivation to be more active. Having easy access to the raw data files is a huge bonus that I didn't originally consider.
To answer your question, there is no "embrace of opensource tools" and I'm not aware of any in existence. They could exist, I haven't looked for them.
Here's a quick writeup of my experience:
I'm a very happy Garmin customer. I'm on my 2nd watch, a Venu 3. My favorite feature: the battery lasts multiple days, usually a week, w/o a charge (depending on how I use it).
The watch provides access to its flash storage using MTP (Media Transfer Protocol). This allows me to access the contents and update the music on it using my Linux computer.
I manage the other watch features (tap-to-pay, custom watchfaces, apps) using the Garmin Connect and Garmin IQ app on an Android phone. These are not open source, and I don't know of clones.
The watch UI itself is a pretty clunky, menu-driven design. It took quite a bit of tweaking to configure it to my tastes, but the combination of "glances" and "shortcuts" let me access the features I want within a few swipes, taps, or button presses.
Configuring apps and custom watchfaces requires internet access, as these use javascript-based applets running on your phone inside the Garmin app to do the configuration. This is annoying. Everything else works offline, or with a bluetooth connection to an offline phone (for example, I have a habit of changing the time to my destination timezone when I'm on a flight, this works once I update the timezone on my phone with no internet).
There is a desktop Garmin program for updating firmware, but it is terrible. It is designed to work with every Garmin product (not just watches) and has a definite "design by committee" feel. Luckily, I don't need it. I think I would need to use it if I had one of the larger watches that supports offline maps.
The features I use the most:
- the clock
- sports tracking, step & stair tracking
- tap-to-pay (this is so nice)
- pulse
- the compass (sometimes I just want a cardinal direction when I'm disoriented)
The sleep tracking is interesting, though I don't need it (mostly it says I don't sleep enough).
They don't directly embrace open source, but their more advanced watches that don't require the connect app for certain features like sleep (such as the fenix series) are nearly completely supported by https://gadgetbridge.org/ - the only thing I can think of that doesn't work is the weather map. You can even update the firmware and maps over wifi directly on the watch or use the PC software.
I got one for Christmas. The OS is a bit unique and very much not open source.
They let you develop apps with an API and a proprietary programming language called Monkey C that looks a bit more like JavaScript / ActionScript. It runs in a bespoke VM that has been reverse engineered but I don’t think anyone ported another programming language or LLVM to it.
There is a small open source community.
Overall it’s not that different than developing open source apps for Apple, but with much fewer people.
Garmin makes solid products but I will say to be prepared for non-intuitive UX across everything. I am only guessing about watches specifically, but having used an InReach and a Zumo XT motorcycle navigator extensively, I will posit that they are much more an engineering culture than a design culture.
as a user, cant say much about the hardware side - but on the software side they aren't the most developer friendly IMO.
APIs are locked behind "contact us" button and is only reserved for enterprise users with seemingly arbitrary criteria on what/who they want to work with
Yes, but not too long ago they ruined the Android app and made it depend on their servers. At least the watch works fine, but I suspect it's only because the battery isn't large enough to cut lazy devs and hasty PMs from working on harder problems.
The UI revamp from around January 2024 made the app reliant on internet access to show history and it's something you'd noticed right away if you had spotty and slow internet access as the app started to be pretty blank at startup.
The watches don't need the server to function (I'm wearing one), which seems to satisfy what you are saying.
I think the only major impact is that "coached" activities won't be available, but everything else in the watches works without a network connection. Data history isn't hugely available on the watch either, but that's just an inconvenience.
same. All of the data should still be stored on the watch and the app, since that works local via Bluetooth. Sync to other services like strava or trainingpeaks should happen once the services are online. Even the external sync on the watches should work, i just updated my deezer playlist on my epix 2 without issues and with connect down.
It might be annoying, but it still works. Without a note in the app, i would not have noticed.
I use Gadgetbridge[1] exactly for this reason. It's a FOSS app (on f-droid as well) that tricks wearables into thinking that your phone is actually communicating legitimately with the server.
Garmin support[2] is not really good. Some commenters here mentioned that Garmin watches can work without servers, maybe that's why.
It's not local-first by definition, because you still need a phone with an app, but it's the best I got for now (apart from finally assembling my PineTime watch).
[1] Local-first software:
https://localfirstweb.dev/
[2] Murphy's law:
https://en.wikipedia.org/wiki/Murphy%27s_law