Compare commits

...

4 Commits

Author SHA1 Message Date
Philip Abbey
799288f36f Added new review to Etiquette documentation. 2026-04-02 16:41:50 +01:00
Philip Abbey
2a68fcc95d Send last known location in Background Service (#350)
Changes to location sending and accuracy.
2026-03-16 19:56:39 +00:00
Joseph Abbey
b781c054d2 Merge branch 'main' into 348-send-gps-location-with-last-known-quality 2026-03-16 18:33:36 +00:00
Philip Abbey
cc32abab28 Amended documentation to cover Glance view crash 2026-03-13 10:34:47 +00:00
6 changed files with 188 additions and 165 deletions

View File

@@ -18,7 +18,7 @@ A user has reported a maximum of 26 items with Ver 3.5. This measurement has sho
As a worked example, for Ver 3.6 working on an `instinct2x` device:
| Feature | Memory (bytes) | Cost (bytes) |
|--------------------------------------|---------------:|-------------:|
|:-------------------------------------|---------------:|-------------:|
| Declared available to application | 98,304 | |
| Measured available to application | 94,112 | (4,192 less) |
| Application used | 65,696 | |
@@ -28,167 +28,188 @@ As a worked example, for Ver 3.6 working on an `instinct2x` device:
Our test menu presently contains a mix of 28 items, consisting of nested group, toggle, tap, info and numeric items with templates. So each item requires (12,624 + 14,856) / 28 = 982 bytes.
## Glance Memory Usage
Using a `venu2` device the Glance view memory statistics are:
| Measure | Memory (bytes) |
|:----------|----------------:|
| Total | 61,344 |
| Peak Used | 32,224 |
| Free | 29,120 |
This means that for older devices listed below, with only 32 kB of Glance memory, the Glance view crashes with an "_Out Of Memory Error_". There is no opportunity in the code to intervene and no way to catch this fatal error. Nor is there any way to disable the Glance view on a device by device basis. Therefore, the only answer at present is to allow the Glance view to crash. It may display "HomeAssistant" as the Glance view text before crashing.
This problem has been explored via a [Github issue](https://github.com/house-of-abbey/GarminHomeAssistant/issues/347). This is now listed as a [known issue](./README.md#known-issues).
## Garmin Devices
The following table details all the devices as at 1 October 2025 and whether they are supported by Garmin HomeAssistant. The available application memory is also detailed so that it can be compared to an application version listed above. Of particular concern are the 'Instinct' range of devices, being the smallest we currently support. New feature requests are now being vetted against how they might affect our ability to support the 'Instinct' range of devices. At some point support may have to be withdrawn in order to allow the Garmin HomeAssistant application to grow further.
The following table details all the devices as at March 2026 and whether they are supported by Garmin HomeAssistant. The available application and glance memory is also detailed so that it can be compared to an application version listed above. Of particular concern are the 'Instinct' range of devices, being the smallest we currently support. New feature requests are now being vetted against how they might affect our ability to support the 'Instinct' range of devices. At some point support may have to be withdrawn in order to allow the Garmin HomeAssistant application to grow further.
| Device | Supported | Application Memory |
|----------------------------|:---------:|--------------------:|
| d2bravo | N | 65,536 |
| d2bravo_titanium | N | 65,536 |
| fenix3 | N | 65,536 |
| fenix3_hr | N | 65,536 |
| fr230 | N | 65,536 |
| fr235 | N | 65,536 |
| fr630 | N | 65,536 |
| fr920xt | N | 65,536 |
| vivoactive | N | 65,536 |
| descentg1 | Y | 98,304 |
| instinct2 | Y | 98,304 |
| instinct2s | Y | 98,304 |
| instinct2x | Y | 98,304 |
| instinctcrossover | Y | 98,304 |
| approachs60 | N | 131,072 |
| enduro | Y | 131,072 |
| fenix5 | Y | 131,072 |
| fenix5s | Y | 131,072 |
| fenix6 | Y | 131,072 |
| fenix6s | Y | 131,072 |
| fenixchronos | Y | 131,072 |
| fr245 | Y | 131,072 |
| fr55 | Y | 131,072 |
| fr645 | Y | 131,072 |
| fr735xt | N | 131,072 |
| fr935 | Y | 131,072 |
| instinct3solar45mm | Y | 131,072 |
| instincte40mm | Y | 131,072 |
| instincte45mm | Y | 131,072 |
| venusq | Y | 131,072 |
| vivoactive3 | Y | 131,072 |
| vivoactive3d | N | 131,072 |
| vivoactive_hr | N | 131,072 |
| edge_520 | N | 262,144 |
| fr255 | Y | 524,288 |
| fr255s | Y | 524,288 |
| approachs50 | Y | 786,432 |
| approachs7042mm | Y | 786,432 |
| approachs7047mm | Y | 786,432 |
| d2airx10 | Y | 786,432 |
| d2mach1 | Y | 786,432 |
| descentg2 | Y | 786,432 |
| descentmk343mm | Y | 786,432 |
| descentmk351mm | Y | 786,432 |
| enduro3 | Y | 786,432 |
| epix2 | Y | 786,432 |
| epix2pro42mm | Y | 786,432 |
| epix2pro47mm | Y | 786,432 |
| epix2pro47mmsystem7preview | Y | 786,432 |
| epix2pro51mm | Y | 786,432 |
| fenix7 | Y | 786,432 |
| fenix7pro | Y | 786,432 |
| fenix7pronowifi | Y | 786,432 |
| fenix7s | Y | 786,432 |
| fenix7spro | Y | 786,432 |
| fenix7x | Y | 786,432 |
| fenix7xpro | Y | 786,432 |
| fenix7xpronowifi | Y | 786,432 |
| fenix843mm | Y | 786,432 |
| fenix847mm | Y | 786,432 |
| fenix8pro47mm | Y | 786,432 |
| fenix8solar47mm | Y | 786,432 |
| fenix8solar51mm | Y | 786,432 |
| fenixe | Y | 786,432 |
| fr165 | Y | 786,432 |
| fr165m | Y | 786,432 |
| fr255m | Y | 786,432 |
| fr255sm | Y | 786,432 |
| fr265 | Y | 786,432 |
| fr265s | Y | 786,432 |
| fr57042mm | Y | 786,432 |
| fr57047mm | Y | 786,432 |
| fr955 | Y | 786,432 |
| fr965 | Y | 786,432 |
| fr970 | Y | 786,432 |
| instinct3amoled45mm | Y | 786,432 |
| instinct3amoled50mm | Y | 786,432 |
| instinctcrossoveramoled | Y | 786,432 |
| marq2 | Y | 786,432 |
| marq2aviator | Y | 786,432 |
| system8preview | N | 786,432 |
| venu2 | Y | 786,432 |
| venu2plus | Y | 786,432 |
| venu2s | Y | 786,432 |
| venu3 | Y | 786,432 |
| venu3s | Y | 786,432 |
| venu441mm | Y | 786,432 |
| venu445mm | Y | 786,432 |
| venusq2 | Y | 786,432 |
| venusq2m | Y | 786,432 |
| venux1 | Y | 786,432 |
| vivoactive5 | Y | 786,432 |
| vivoactive6 | Y | 786,432 |
| approachs62 | N | 1,048,576 |
| d2air | Y | 1,048,576 |
| edge1030 | Y | 1,048,576 |
| edge1030bontrager | Y | 1,048,576 |
| edge1030plus | Y | 1,048,576 |
| edge1040 | Y | 1,048,576 |
| edge1050 | Y | 1,048,576 |
| edge520plus | Y | 1,048,576 |
| edge530 | Y | 1,048,576 |
| edge540 | Y | 1,048,576 |
| edge550 | Y | 1,048,576 |
| edge820 | Y | 1,048,576 |
| edge830 | Y | 1,048,576 |
| edge840 | Y | 1,048,576 |
| edge850 | Y | 1,048,576 |
| edgeexplore | Y | 1,048,576 |
| edgeexplore2 | Y | 1,048,576 |
| edgemtb | Y | 1,048,576 |
| edge_1000 | N | 1,048,576 |
| epix | N | 1,048,576 |
| fr645m | Y | 1,048,576 |
| legacyherocaptainmarvel | Y | 1,048,576 |
| legacyherofirstavenger | Y | 1,048,576 |
| legacysagadarthvader | Y | 1,048,576 |
| legacysagarey | Y | 1,048,576 |
| venu | Y | 1,048,576 |
| venud | Y | 1,048,576 |
| venusqm | Y | 1,048,576 |
| vivoactive3m | Y | 1,048,576 |
| vivoactive3mlte | Y | 1,048,576 |
| vivoactive4 | Y | 1,048,576 |
| vivoactive4s | Y | 1,048,576 |
| d2charlie | N | 1,310,720 |
| d2delta | Y | 1,310,720 |
| d2deltapx | Y | 1,310,720 |
| d2deltas | Y | 1,310,720 |
| descentmk1 | N | 1,310,720 |
| descentmk2 | Y | 1,310,720 |
| descentmk2s | Y | 1,310,720 |
| fenix5plus | Y | 1,310,720 |
| fenix5splus | Y | 1,310,720 |
| fenix5x | Y | 1,310,720 |
| fenix5xplus | Y | 1,310,720 |
| fenix6pro | Y | 1,310,720 |
| fenix6spro | Y | 1,310,720 |
| fenix6xpro | Y | 1,310,720 |
| fr245m | Y | 1,310,720 |
| fr745 | Y | 1,310,720 |
| fr945 | Y | 1,310,720 |
| fr945lte | Y | 1,310,720 |
| marqadventurer | Y | 1,310,720 |
| marqathlete | Y | 1,310,720 |
| marqaviator | Y | 1,310,720 |
| marqcaptain | Y | 1,310,720 |
| marqcommander | Y | 1,310,720 |
| marqdriver | Y | 1,310,720 |
| marqexpedition | Y | 1,310,720 |
| marqgolfer | Y | 1,310,720 |
| gpsmap66 | Y | 2,359,296 |
| gpsmap67 | Y | 2,359,296 |
| gpsmap86 | N | 2,359,296 |
| gpsmaph1 | Y | 2,359,296 |
| montana7xx | Y | 2,359,296 |
| oregon7xx | N | 2,359,296 |
| rino7xx | N | 2,359,296 |
| Device | Supported | Application Memory | Glance Memory |
|:---------------------------|:---------:|-------------------:|---------------:|
| approachs50 | Y | 786,432 | 65,536 |
| approachs60 | N | 131,072 | |
| approachs62 | N | 1,048,576 | |
| approachs7042mm | Y | 786,432 | 65,536 |
| approachs7047mm | Y | 786,432 | 65,536 |
| d2air | Y | 1,048,576 | |
| d2airx10 | Y | 786,432 | 65,536 |
| d2bravo | N | 65,536 | |
| d2bravo_titanium | N | 65,536 | |
| d2charlie | N | 1,310,720 | |
| d2delta | Y | 1,310,720 | |
| d2deltapx | Y | 1,310,720 | |
| d2deltas | Y | 1,310,720 | |
| d2mach1 | Y | 786,432 | 65,536 |
| d2mach2 | Y | 786,432 | 65,536 |
| descentg1 | Y | 98,304 | 32,768 |
| descentg2 | Y | 786,432 | 65,536 |
| descentmk1 | N | 1,310,720 | |
| descentmk2 | Y | 1,310,720 | 32,768 |
| descentmk2s | Y | 1,310,720 | 32,768 |
| descentmk343mm | Y | 786,432 | 65,536 |
| descentmk351mm | Y | 786,432 | 65,536 |
| edge1030 | Y | 1,048,576 | |
| edge1030bontrager | Y | 1,048,576 | |
| edge1030plus | Y | 1,048,576 | |
| edge1040 | Y | 1,048,576 | 65,536 |
| edge1050 | Y | 1,048,576 | 65,536 |
| edge130 | N | | |
| edge130plus | N | | |
| edge520plus | Y | 1,048,576 | |
| edge530 | Y | 1,048,576 | |
| edge540 | Y | 1,048,576 | 65,536 |
| edge550 | Y | 1,048,576 | 65,536 |
| edge820 | Y | 1,048,576 | |
| edge830 | Y | 1,048,576 | |
| edge840 | Y | 1,048,576 | 65,536 |
| edge850 | Y | 1,048,576 | 65,536 |
| edgeexplore | Y | 1,048,576 | |
| edgeexplore2 | Y | 1,048,576 | 65,536 |
| edgemtb | Y | 1,048,576 | 65,536 |
| edge_1000 | N | 1,048,576 | |
| edge_520 | N | 262,144 | |
| enduro | Y | 131,072 | 32,768 |
| enduro3 | Y | 786,432 | 65,536 |
| epix | N | 1,048,576 | |
| epix2 | Y | 786,432 | 65,536 |
| epix2pro42mm | Y | 786,432 | 65,536 |
| epix2pro47mm | Y | 786,432 | 65,536 |
| epix2pro47mmsystem7preview | Y | 786,432 | 65,536 |
| epix2pro51mm | Y | 786,432 | 65,536 |
| etrextouch | Y | 2,359,296 | |
| fenix3 | N | 65,536 | |
| fenix3_hr | N | 65,536 | |
| fenix5 | Y | 131,072 | |
| fenix5plus | Y | 1,310,720 | |
| fenix5s | Y | 131,072 | |
| fenix5splus | Y | 1,310,720 | |
| fenix5x | Y | 1,310,720 | |
| fenix5xplus | Y | 1,310,720 | |
| fenix6 | Y | 131,072 | 32,768 |
| fenix6pro | Y | 1,310,720 | 32,768 |
| fenix6s | Y | 131,072 | 32,768 |
| fenix6spro | Y | 1,310,720 | 32,768 |
| fenix6xpro | Y | 1,310,720 | 32,768 |
| fenix7 | Y | 786,432 | 65,536 |
| fenix7pro | Y | 786,432 | 65,536 |
| fenix7pronowifi | Y | 786,432 | 65,536 |
| fenix7s | Y | 786,432 | 65,536 |
| fenix7spro | Y | 786,432 | 65,536 |
| fenix7x | Y | 786,432 | 65,536 |
| fenix7xpro | Y | 786,432 | 65,536 |
| fenix7xpronowifi | Y | 786,432 | 65,536 |
| fenix843mm | Y | 786,432 | 65,536 |
| fenix847mm | Y | 786,432 | 65,536 |
| fenix8pro47mm | Y | 786,432 | 65,536 |
| fenix8solar47mm | Y | 786,432 | 65,536 |
| fenix8solar51mm | Y | 786,432 | 65,536 |
| fenixchronos | Y | 131,072 | |
| fenixe | Y | 786,432 | 65,536 |
| fr165 | Y | 786,432 | 65,536 |
| fr165m | Y | 786,432 | 65,536 |
| fr230 | N | 65,536 | |
| fr235 | N | 65,536 | |
| fr245 | Y | 131,072 | 32,768 |
| fr245m | Y | 1,310,720 | 32,768 |
| fr255 | Y | 524,288 | 65,536 |
| fr255m | Y | 786,432 | 65,536 |
| fr255s | Y | 524,288 | 65,536 |
| fr255sm | Y | 786,432 | 65,536 |
| fr265 | Y | 786,432 | 65,536 |
| fr265s | Y | 786,432 | 65,536 |
| fr45 | N | | |
| fr55 | Y | 131,072 | 32,768 |
| fr57042mm | Y | 786,432 | 65,536 |
| fr57047mm | Y | 786,432 | 65,536 |
| fr630 | N | 65,536 | |
| fr645 | Y | 131,072 | |
| fr645m | Y | 1,048,576 | |
| fr735xt | N | 131,072 | |
| fr745 | Y | 1,310,720 | 32,768 |
| fr920xt | N | 65,536 | |
| fr935 | Y | 131,072 | |
| fr945 | Y | 1,310,720 | 32,768 |
| fr945lte | Y | 1,310,720 | 32,768 |
| fr955 | Y | 786,432 | 65,536 |
| fr965 | Y | 786,432 | 65,536 |
| fr970 | Y | 786,432 | 65,536 |
| garminswim2 | N | | |
| gpsmap66 | Y | 2,359,296 | |
| gpsmap67 | Y | 2,359,296 | |
| gpsmap86 | N | 2,359,296 | |
| gpsmaph1 | Y | 2,359,296 | |
| instinct2 | Y | 98,304 | 32,768 |
| instinct2s | Y | 98,304 | 32,768 |
| instinct2x | Y | 98,304 | 32,768 |
| instinct3amoled45mm | Y | 786,432 | 65,536 |
| instinct3amoled50mm | Y | 786,432 | 65,536 |
| instinct3solar45mm | Y | 131,072 | 32,768 |
| instinctcrossover | Y | 98,304 | 32,768 |
| instinctcrossoveramoled | Y | 786,432 | 65,536 |
| instincte40mm | Y | 131,072 | 32,768 |
| instincte45mm | Y | 131,072 | 32,768 |
| legacyherocaptainmarvel | Y | 1,048,576 | |
| legacyherofirstavenger | Y | 1,048,576 | |
| legacysagadarthvader | Y | 1,048,576 | |
| legacysagarey | Y | 1,048,576 | |
| marq2 | Y | 786,432 | 65,536 |
| marq2aviator | Y | 786,432 | 65,536 |
| marqadventurer | Y | 1,310,720 | 32,768 |
| marqathlete | Y | 1,310,720 | 32,768 |
| marqaviator | Y | 1,310,720 | 32,768 |
| marqcaptain | Y | 1,310,720 | 32,768 |
| marqcommander | Y | 1,310,720 | 32,768 |
| marqdriver | Y | 1,310,720 | 32,768 |
| marqexpedition | Y | 1,310,720 | 32,768 |
| marqgolfer | Y | 1,310,720 | 32,768 |
| montana7xx | Y | 2,359,296 | |
| oregon7xx | N | 2,359,296 | |
| rino7xx | N | 2,359,296 | |
| system8preview | N | 786,432 | 65,536 |
| venu | Y | 1,048,576 | |
| venu2 | Y | 786,432 | 65,536 |
| venu2plus | Y | 786,432 | 65,536 |
| venu2s | Y | 786,432 | 65,536 |
| venu3 | Y | 786,432 | 65,536 |
| venu3s | Y | 786,432 | 65,536 |
| venu441mm | Y | 786,432 | 65,536 |
| venu445mm | Y | 786,432 | 65,536 |
| venud | Y | 1,048,576 | |
| venusq | Y | 131,072 | |
| venusq2 | Y | 786,432 | 65,536 |
| venusq2m | Y | 786,432 | 65,536 |
| venusqm | Y | 1,048,576 | |
| venux1 | Y | 786,432 | 65,536 |
| vivoactive | N | 65,536 | |
| vivoactive3 | Y | 131,072 | |
| vivoactive3d | N | 131,072 | |
| vivoactive3m | Y | 1,048,576 | |
| vivoactive3mlte | Y | 1,048,576 | |
| vivoactive4 | Y | 1,048,576 | |
| vivoactive4s | Y | 1,048,576 | |
| vivoactive5 | Y | 786,432 | 65,536 |
| vivoactive6 | Y | 786,432 | 65,536 |
| vivoactive_hr | N | 131,072 | |
| vivolife | N | | |

View File

@@ -142,6 +142,8 @@ On Mon, 6 May 2024 at 09:01, <noreply@garmin.com> wrote:
![Please help me set this up](images/etiquette/2024-05-06_GHA_Bad_Review.png)
<img src="images/etiquette/2026-04-02_GHA_Bad_Review.png" width="70%" title="Not working">
Answer: Make sure you meet the [minimum requirements for being a user](#etiquette) please! Provide more information on what the problem actually is. Clearly the support reply pointing to the documentation was either not read or not considered helpful, hence the point about meeting the minimum user requirements.
On Fri, 31 Oct 2025 at 11:45, <noreply@garmin.com> wrote:
@@ -390,10 +392,10 @@ Don't get an embarrassing retort, I call out those who "click & complain" withou
Two words. Perhaps too lazy to consider why others gave rave reviews and ponder what he was doing wrong? Perhaps did not consider there might be some documentation to assist or support routes (subject to [getting a polite reply](getting-help-with-a-polite-reply))?
<img src="images/etiquette/2026-01-21 GHA_Bad_Review.png" width="70%" title="Two words">
<img src="images/etiquette/2026-01-21_GHA_Bad_Review.png" width="70%" title="Two words">
---
Blaming the wrong application. Just rude. Please get your facts straight. And it was such a simple workaround for the Garmin Connect IQ app bug.
<img src="images/etiquette/2025-11-19%20GHA_Bad_Review.png" width="85%" title="Misplaced blame">
<img src="images/etiquette/2025-11-19_GHA_Bad_Review.png" width="85%" title="Misplaced blame">

View File

@@ -467,7 +467,7 @@ Check the latest unresolved [issues](https://github.com/house-of-abbey/GarminHom
10. There are memory limits, particularly for older devices. Please see the [explanation of the memory limits](Devices.md) and device support.
11. There is a 32 kB memory limit for any Glance views that mean too large a menu definition can cause the Glance view to crash. The symptom is that a previously 'Available' menu (green text) now appears as 'Unavailable' (red text) because the HTTP request to both retrieve the menu and convert it to `Dictionary` objects (from which the glance view can extract the `glance` field) ran out of memory. Out of memory exceptions are fatal and cannot be caught in order to code around them. Therefore the Glance status does not get updated to 'Available' as you would expect. The solution is to limit the size of your JSON menu definition by experimentation. For the same reason, the Glance view can no longer cache the menu to `Storage` ahead of the main application as the keys in that storage are limited to 8 kB. Remember its an app running on your watch not a desktop!
11. There is a 32 kB memory limit for Glance views on some devices that mean the code and data for the Glance view is too large to load and the Glance view crashes before any code can intervene to prevent the fatal "Out Of Memory Error". Nor is it possible to disable the Glance view in the [application manifest](./manifest.xml) on a per device basis. The simple advice is, for older watches affected, do not try to use the Glance view. To see if your device is affected, please trawl the [devices page](./Devices.md).
# Authors & Contributors

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB