I want to use the runn data field on my forerunner 965 so I get incline when running on a treadmill. The data field is not supported on the 965, but I have it installed on my Venue.
Is there any way I can transfer it from my Venue to my FR965?
I want to use the runn data field on my forerunner 965 so I get incline when running on a treadmill. The data field is not supported on the 965, but I have it installed on my Venue.
Is there any way I can transfer it from my Venue to my FR965?
So, purely for educational purposes and with all the disclaimers previously mentioned, here's what I would do if I wanted to sideload Runn or any other CIQ app available on the store. For this you need…
Thank you so much. Got the data field working on my 965 following the steps you provided :) Ended up using my old Vivoactive3 as source :)
Maybe you should return the Runn sensor and buy it again if the manufacturer adds support for 965 in the future.
Sideloading is certainly possible, but it's not a good long-term solution for the reasons already stated and also because you won't get updates.
If you really want to sideload, there's a couple of ways I can think of for getting a PRG:
1) It's possible that the PRG is accessible on your Venu. I don't know if you have a Venu or Venu 2, but if it's the original Venu, it's possible that it's old enough that only music apps are hidden. (On my 945 LTE, released 2021, music apps and data fields are hidden. The original Venu was released in 2019). Then again, that assumes that the policy for hiding data fields is based on the age of watch, which isn't necessarily the case.
2) If you know someone with an old non-music watch like 935, you could ask them to grab the PRG from their watch
3) Ask the developer to send you a PRG for another device (this is probably the most unlikely scenario)
However, even if it's technically possible, I don't think it's a good idea, especially since you're basing a hardware purchase on the availability of the CIQ app. Since you're paying good money for the sensor, I think it's better in this case to avoid sideloading, especially sideloading a PRG meant for a different device.
So, purely for educational purposes and with all the disclaimers previously mentioned, here's what I would do if I wanted to sideload Runn or any other CIQ app available on the store. For this you need a source watch (to copy the PRG from) and a destination watch (these can be the same watch if you want to restore apps after a factory reset.) As mentioned, for this to work properly, the source watch can't hide the app type you need to sideload (in this case, data fields). The easiest way to be sure of this is to find someone with an older watch that doesn't support music.
1) Install VS Code on your computer
2) Determine whether the source watch hides the app type you're interested in
If the source watch is an old model that doesn't support music (e.g. 235 or 935), then it almost certainly does not hide any type of apps. You can tell for sure as follows:
2a) Connect watch to computer with cable
2b) From the watch, copy \GARMIN\GARMINDEVICE.XML somewhere on your computer (like the desktop)
2c) Open garmindevice.xml with VS Code
2d) In VS Code, press SHIFT-ALT-F (SHIFT-OPTION-F on a Mac) to format the document
2e) Search (CTRL/CMD-F) for "IQWatchFaces". You will see the locations of the various CIQ app types as follows:
<DataType> <Name>IQWatchFaces</Name> <File> <Specification> <Identifier>PRG</Identifier> </Specification> <Location> <Path>GARMIN/APPS</Path> <FileExtension>PRG</FileExtension> </Location> <TransferDirection>InputOutput</TransferDirection> </File> </DataType> <DataType> <Name>IQDataFields</Name> <File> <Specification> <Identifier>PRG</Identifier> </Specification> <Location> <Path>GARMIN/APPS/MEDIA</Path> <FileExtension>PRG</FileExtension> </Location> <TransferDirection>InputOutput</TransferDirection> </File> </DataType> <DataType> <Name>IQWatchApps</Name> <File> <Specification> <Identifier>PRG</Identifier> </Specification> <Location> <Path>GARMIN/APPS</Path> <FileExtension>PRG</FileExtension> </Location> <TransferDirection>InputOutput</TransferDirection> </File> </DataType> <DataType> <Name>IQWidgets</Name> <File> <Specification> <Identifier>PRG</Identifier> </Specification> <Location> <Path>GARMIN/APPS/MEDIA</Path> <FileExtension>PRG</FileExtension> </Location> <TransferDirection>InputOutput</TransferDirection> </File> </DataType>
^ This example is from my 945 LTE. "IQDataFields" and "IQWidgets" are stored in "GARMIN/APPS/MEDIA" (which means they're inaccessible). "IQWatchFaces" and "IQWatchApps" are stored in "GARMIN/APPS", which means they're visible and can be copied off the watch
3) Once you have a source watch which doesn't hide the type of app you're interested in (in this case, IQDataFields), install the app on the watch as normal
4) In the Connect IQ app, configure the app settings as desired (in general, it's ideal to do this on the source watch, since app settings can vary between different device types, although in your case, you could probably get away with using the .SET file from your Venu.)
5) Copy the app and settings off the source watch:
5a) On the source watch, open garmindevice.xml in VS Code and format it as outlined above
5b) Search garmindevice.xml for the app name (e.g. "Runn".) You will see text which looks like this:
<App> <AppName>Runn</AppName> <StoreId>...</StoreId> <AppId>...</AppId> <AppType>data-field</AppType> <Version>99</Version> <FileName>ABCD1234.PRG</FileName> </App>
5c) In this example, the app filename (unique to that watch) is ABCD1234.PRG. Copy the following files from the watch to your PC:
\GARMIN\APPS\ABCD1234.PRG
\GARMIN\APPS\SETTINGS\ABCD1234.SET
6) Sideload the app on to the destination watch
6a) Connect your destination watch to your computer
6b) Copy the PRG file from 5) to \GARMIN\APPS. (Note that it doesn't matter that the app type actually lives in \GARMIN\APPS\MEDIA on the destination watch - the watch will automatically move the PRG and you won't be able to access it again from \GARMIN\APPS)
6c) Open, format and search garmindevice.xml as in 5), and determine the new name of the app file (it might change). For the sake of this example, let's say the new name is 1234ABCD.PRG.
6d) Rename the .SET (settings) file to match the new app name: 1234ABCD.SET
6e) Copy the renamed .SET file to \GARMIN\APPS\SETTINGS
If you need to delete a sideloaded app which is not accessible via the "file system", you can use the Connect IQ app on your phone.
I will take a look at it tomorrow. I have a vivoactive3 and a venue1, so hopefully I can sort it out.
The Dev said it is on the roadmap to add support for 965, but no timeframe.
How much work is it to add support for new devices?
How much work is it to add support for new devices?
As far as code changes go, depends on how complex the app is. In the case of data fields, the nature of the displayed data also matters. For example, if the data is a static label with simple text (much like most built-in fields), no code changes may be necessary. In this case, looks like the data has a dynamic label, which means that the code to draw the data field isn't as simple as the other case, and supporting new devices might require code changes.
Then there's also the QA process. The most famous piece of advice on this forum is "the simulator isn't perfect; for best results, test on a real device" (heavily paraphrased). Especially for "serious" companies that sell a product for money (as opposed to hobby coders), they may want to get their hands on a real device to test with, even if they have no reason to believe that the updated code won't work on a real device.
Not to mention the fact that in order to support new devices, they may have to update to a new SDK version. Now they run the tiny (but non-zero) risk that this will break the app for existing devices, so they may have to do QA for *all* devices again. (There's no official way to build an app with multiple versions of the SDK.) This is a non-trivial effort given that there are dozens of devices. (Even if you eliminate similar devices, there's still a large number of "families", especially if you support older devices.)
Unfortunately, in software development, even a "five minute change" rarely takes five minutes.
I have a vivoactive3
If it's a non-music VA3, you might be in luck. (Another issue with sideloading from a different device is you may lose out on certain features if they're only available for newer / more advanced devices. For an app as straightforward as this, that's probably not the case.)
Thank you so much. Got the data field working on my 965 following the steps you provided :) Ended up using my old Vivoactive3 as source :)
Nice! Glad it worked out for ya