From ee8c735b6b5f190735ed26a0c544d6074cead67e Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 21 Jan 2020 16:26:13 +0100 Subject: [PATCH 01/61] Update Garmin Client version. --- grmn/updateserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/updateserver.py b/grmn/updateserver.py index 01ac8d5..0827263 100644 --- a/grmn/updateserver.py +++ b/grmn/updateserver.py @@ -13,7 +13,7 @@ import requests PROTO_API_GETALLUNITSOFTWAREUPDATES_URL = "http://omt.garmin.com/Rce/ProtobufApi/SoftwareUpdateService/GetAllUnitSoftwareUpdates" WEBUPDATER_SOFTWAREUPDATE_URL = "https://www.garmin.com/support/WUSoftwareUpdate.jsp" -GRMN_CLIENT_VERSION = "6.17.0.0" +GRMN_CLIENT_VERSION = "6.19.4.0" class UpdateInfo: def __init__(self): From 8437981e20ab16fcf8b28fffba845b9ea45b4992 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 21 Jan 2020 16:26:31 +0100 Subject: [PATCH 02/61] Add new hwids. --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index f94ac5b..c0f9fc2 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -575,6 +575,7 @@ DEVICES = { 2310: "Forerunner 630 APAC", 2311: "ForeAthlete 630J", 2313: "ForeAthlete 230J", + 2315: "eTrex 209x/309x CHN", 2316: "eTrex 20x/30x JPN", 2317: "eTrex 20x/30x SEA", 2325: "UAT-B2325-00", @@ -954,6 +955,7 @@ DEVICES = { 3390: "Fusion MS-RA210 FFP Build Version", 3391: "Fusion MS-ERX400 Final Factory Production Release Version", 3393: "Approach S62", + 3394: "Approach S62, Touchscreen", 3396: "Approach S62, ANT_BLE", 3399: "Approach S62, Sensor Hub", 3405: "Swim 2", From cc9cd320c7cbf97782f81befe7a4eea678509b31 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 21 Jan 2020 16:26:42 +0100 Subject: [PATCH 03/61] Calculate and show largest gap in list_missing_hwids.py. --- list_missing_hwids.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/list_missing_hwids.py b/list_missing_hwids.py index 9a38b12..0c32ec6 100644 --- a/list_missing_hwids.py +++ b/list_missing_hwids.py @@ -6,13 +6,19 @@ from grmn import devices import sys +largest_gap = -1 +gap_counter = 0 last_id = 0 missing = [] for i in range(0, 9999): if i in devices.DEVICES: last_id = i + if gap_counter > largest_gap: + largest_gap = gap_counter + gap_counter = 0 continue missing.append(i) + gap_counter += 1 missing_count = 0 cur_line = [] @@ -37,6 +43,7 @@ if len(cur_line) > 0: print() print("{} unknown ids.".format(missing_count)) print("Last known id is: {:04}".format(last_id)) +print("Largest gap is: {}".format(largest_gap)) if len(sys.argv) > 1: @@ -46,7 +53,7 @@ if len(sys.argv) > 1: print("./get_updates.py", end="") cur_line = 0 - for i in range(last_id + 1, last_id + 200): + for i in range(last_id + 1, last_id + 300): if i % 10 == 0 and cur_line > 5: print() print("./get_updates.py", end="") From 898dd543c4728fc063b84b5aaeba958f7273a3e5 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 5 Feb 2020 12:03:42 +0100 Subject: [PATCH 04/61] New hwids. --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index c0f9fc2..1c6169d 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -936,6 +936,7 @@ DEVICES = { 3321: "Forerunner 245M APAC", 3324: "D2 Delta PX APAC", 3330: "GPS Software 3330", + 3341: "Drive 52 APAC", 3349: "Edge 530 ASIA", 3350: "Edge 830 ASIA", 3354: "DriveSmart x5 ASIA", @@ -990,6 +991,7 @@ DEVICES = { 3455: "GPSMAP 86sci", 3459: "Montana 700/700i/750i", 3463: "RV-700", + 3465: "Dash Cam Tandem", 3466: "Instinct Solar", 3469: "Forerunner 45 ASIA", 3472: "Forerunner 45 ASIA, Sensor Hub", From d7a47ac08687b0ec432a92bd34b0ae97d6fe670e Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 5 Feb 2020 12:04:00 +0100 Subject: [PATCH 05/61] Updated readme. --- README.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 19fdabc..20eb515 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Garmin Firmware Tools ===================== -This is a parser and some tools for working with GCD files (firmware updates). +This is a parser and some tools for working with Garmin firmware updates (GCD/RGN files). It's in Python, so feel free to add cool new features and submit pull requests. @@ -14,12 +14,22 @@ Most info from: * hours of looking at hex numbers +How YOU can help +---------------- + +If you'd like to help, feel free to get all the SKU numbers from your `GarminDevice.xml` +(numbers starting with 006-B...) and post them under "Issues" (create a new issue with the +name of your device). + +Of course, pull requests are much appreciated, too. + + Tools ----- -### gcdstruct.py [gcdfile] +### gcdstruct.py [gcdfile] / rgnstruct.py [rgnfile] -Will show the general structure of the GCD file and also validate the contained checksums, e.g.: +Will show the general structure of the GCD/RGN file and also validate the contained checksums, e.g.: ``` $ ./gcdstruct.py fenix5Plus_510.gcd @@ -167,3 +177,13 @@ Checks Express and WebUpdater for updates for the given hw_ids (1-4 digits) or f The first one is used as the main device in the query. Shouldn't make a big difference in the results, though. Special thanks to Alex W. for [his update check](https://github.com/AlexWhiter/GarminRelatedStuff). + + +### list_missing_hwids.py + +Shows a list of hw_ids not yet listed in the `devices.py`. It prepends a call to `get_updates.py` for an +easy way to check the update servers for new devices. + +To find future devices, you can supply a parameter (can be anything) and it will output 300 more hw_ids +after the last known. + From 4e1663a3db83097a74164944eb0a3869716304eb Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 16 Mar 2020 17:04:53 +0100 Subject: [PATCH 06/61] Add new devices. --- grmn/devices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 1c6169d..8a17f1b 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -999,6 +999,7 @@ DEVICES = { 3477: "vivoactive 3 Daimler APAC", 3480: "Dash Cam 56", 3481: "Dash Cam 66W", + 3484: "zumo XT", 3488: "Pro 550 Plus, EL & FR", 3489: "Pro 550 Plus, EH", 3494: "MARQ ASIA Series, Sensor Hub", @@ -1034,6 +1035,7 @@ DEVICES = { 3624: "MARQ Adventurer", 3648: "MARQ Adventure APAC", 3649: "GPS Chipset MTK (3649)", + 3663: "GPSMAP 63csx CHN_OPM", 3669: "vivomove 3 Classic ASIA, Sensor Hub", 3670: "vivomove 3/3S ASIA, Sensor Hub", 3687: "eTrex 32x CHN", @@ -1042,4 +1044,5 @@ DEVICES = { 3691: "eTrex 22x/32x MN", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", + 3750: "GPS Software (3750)", } From aadda7d788c26d994b22c5eda7c35a3f44070339 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 16 Mar 2020 17:05:36 +0100 Subject: [PATCH 07/61] Small change to summary lines. --- list_missing_hwids.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/list_missing_hwids.py b/list_missing_hwids.py index 0c32ec6..f7d68bf 100644 --- a/list_missing_hwids.py +++ b/list_missing_hwids.py @@ -40,9 +40,9 @@ cur_line += queue if len(cur_line) > 0: print("./get_updates.py {}".format(" ".join(cur_line))) +known_count = len(devices.DEVICES) print() -print("{} unknown ids.".format(missing_count)) -print("Last known id is: {:04}".format(last_id)) +print("{} known, {} unknown ids. Last known id is: {:04d}".format(known_count, missing_count, last_id)) print("Largest gap is: {}".format(largest_gap)) From 20ad193dc3746693c9821ef7ea3184228ca99ab8 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 31 Mar 2020 21:41:11 +0200 Subject: [PATCH 08/61] Parsed Perry files for 006-B* and GUP* and added hwids. --- components.txt | 240 +++++++ components2.txt | 1728 +++++++++++++++++++++++++++++++++++++++++++++++ grmn/devices.py | 90 ++- 3 files changed, 2045 insertions(+), 13 deletions(-) create mode 100644 components.txt create mode 100644 components2.txt diff --git a/components.txt b/components.txt new file mode 100644 index 0000000..8b076b1 --- /dev/null +++ b/components.txt @@ -0,0 +1,240 @@ +GUP1630:forerunner/Forerunner620.rgn +GUP1630:forerunner/Forerunner920XT.rgn +GUP1752:forerunner/Forerunner220.rgn +GUP1752:forerunner/Forerunner620.rgn +GUP1850:forerunner/Forerunner220.rgn +GUP1850:forerunner/Forerunner620.rgn +GUP1851:forerunner/Forerunner220.rgn +GUP1851:forerunner/Forerunner620.rgn +GUP1908:vivo/vivoactive.rgn +GUP1909:fenix_D2_tactix/D2Bravo.rgn +GUP1909:fenix_D2_tactix/D2BravoTitanium.rgn +GUP1909:fenix_D2_tactix/fenix3HRBeta.zip +GUP1909:fenix_D2_tactix/fenix3HR.rgn +GUP1909:fenix_D2_tactix/fenix3.rgn +GUP1909:fenix_D2_tactix/fenix3_tactixBravo_quatix3Beta.zip +GUP1909:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +GUP1909:vivo/vivoactive.rgn +GUP1909:vivo/vivosmartHRplus.rgn +GUP1909:vivo/vivosmart_HR.rgn +GUP1909:vivo/vivosmartHR.rgn +GUP1942:forerunner/Forerunner920XT.rgn +GUP1955:vivo/vivosmartAPAC.rgn +GUP1955:vivo/vivosmart.rgn +GUP1969:forerunner/Forerunner15.rgn +GUP2005:vivo/vivosmartAPAC.rgn +GUP2005:vivo/vivosmart.rgn +GUP2047:astro_alpha/T5_TT15Mini.rgn +GUP2047:edge/Edge25.rgn +GUP2047:edge/HMD_regionfileonly_.rgn +GUP2047:edge/VariaVision.rgn +GUP2047:forerunner/Forerunner225.rgn +GUP2047:forerunner/Forerunner25.rgn +GUP2047:forerunner/Forerunner30.rgn +GUP2047:forerunner/Forerunner35.rgn +GUP2047:forerunner/Forerunner920XTBeta.zip +GUP2047:forerunner/Forerunner920XT.rgn +GUP2047:misc_marine/GarminNautix_regionfileonly_.rgn +GUP2051:fenix_D2_tactix/D2Bravo.rgn +GUP2051:fenix_D2_tactix/fenix3.rgn +GUP2051:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +GUP2059:vivo/vivoactive.rgn +GUP2108:fenix_D2_tactix/D2Bravo.rgn +GUP2108:fenix_D2_tactix/fenix3.rgn +GUP2108:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +GUP2151:forerunner/Forerunner225.rgn +GUP2159:forerunner/Forerunner230.gcd +GUP2159:forerunner/Forerunner235.gcd +GUP2159:forerunner/Forerunner630.gcd +GUP2196:fenix_D2_tactix/D2BravoTitanium.rgn +GUP2196:fenix_D2_tactix/D2Charlie.gcd +GUP2196:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +GUP2196:fenix_D2_tactix/DescentMk1.gcd +GUP2196:fenix_D2_tactix/fenix3HRBeta.zip +GUP2196:fenix_D2_tactix/fenix3HR.rgn +GUP2196:fenix_D2_tactix/fenix5Beta.zip +GUP2196:fenix_D2_tactix/fenix5.gcd +GUP2196:fenix_D2_tactix/fenix5PlusBeta.zip +GUP2196:fenix_D2_tactix/fenix5SBeta.zip +GUP2196:fenix_D2_tactix/fenix5S.gcd +GUP2196:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP2196:fenix_D2_tactix/fenix5XBeta.zip +GUP2196:fenix_D2_tactix/fenix5X.gcd +GUP2196:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP2196:fenix_D2_tactix/fenix6ProBeta.zip +GUP2196:fenix_D2_tactix/fenix6SProBeta.zip +GUP2196:fenix_D2_tactix/fenix6XProBeta.zip +GUP2196:forerunner/Forerunner630.gcd +GUP2196:forerunner/Forerunner935.gcd +GUP2196:MARQ/MARQAdventurerBeta.zip +GUP2196:MARQ/MARQAthleteBeta.zip +GUP2196:MARQ/MARQAviatorBeta.zip +GUP2196:MARQ/MARQBeta.zip +GUP2196:MARQ/MARQCaptainBeta.zip +GUP2196:MARQ/MARQCommanderBeta.zip +GUP2196:MARQ/MARQDriverBeta.zip +GUP2196:MARQ/MARQExpeditionBeta.zip +GUP2197:forerunner/Forerunner630.gcd +GUP2202:baseball_golf/TruSwing.rgn +GUP2202:golf_baseball/TruSwing.rgn +GUP2228:forerunner/Forerunner225.rgn +GUP2338:vivo/vivoactiveHR.gcd +GUP2339:vivo/vivoactiveHR.gcd +GUP2340:vivo/vivoactiveHR.gcd +GUP2358:vivo/vivosmart_HR.rgn +GUP2358:vivo/vivosmartHR.rgn +GUP2369:forerunner/Forerunner235Beta.zip +GUP2369:forerunner/Forerunner235.gcd +GUP2392:fenix_D2_tactix/fenixChronosBeta_USB.zip +GUP2392:fenix_D2_tactix/fenixChronosBeta.zip +GUP2392:fenix_D2_tactix/fenixChronos.gcd +GUP2393:fenix_D2_tactix/fenixChronosBeta_USB.zip +GUP2393:fenix_D2_tactix/fenixChronosBeta.zip +GUP2393:fenix_D2_tactix/fenixChronos.gcd +GUP2403:baseball_golf/ApproachS20.rgn +GUP2403:golf_baseball/ApproachS20.rgn +GUP2405:baseball_golf/ApproachX40.rgn +GUP2405:golf_baseball/ApproachX40.rgn +GUP2414:fenix_D2_tactix/D2BravoTitanium.rgn +GUP2414:fenix_D2_tactix/fenix3HR.rgn +GUP2415:fenix_D2_tactix/fenix3HRBeta.zip +GUP2415:fenix_D2_tactix/fenix3HR.rgn +GUP2423:fenix_D2_tactix/fenixChronos.gcd +GUP2423:forerunner/Forerunner230Beta.zip +GUP2423:forerunner/Forerunner230.gcd +GUP2423:forerunner/Forerunner235Beta.zip +GUP2423:forerunner/Forerunner235.gcd +GUP2423:forerunner/Forerunner630Beta.zip +GUP2423:forerunner/Forerunner630.gcd +GUP2423:forerunner/Forerunner735XTBeta.zip +GUP2423:forerunner/Forerunner735XT.gcd +GUP2423:vivo/vivoactiveHR.gcd +GUP2447:edge/HMD_regionfileonly_.rgn +GUP2447:edge/VariaVision.rgn +GUP2447:misc_marine/GarminNautix_regionfileonly_.rgn +GUP2510:forerunner/Forerunner735XT.gcd +GUP2511:forerunner/Forerunner735XT.gcd +GUP2527:baseball_golf/ApproachX40.rgn +GUP2527:golf_baseball/ApproachX40.rgn +GUP2527:vivo/vivosmartHRplus.rgn +GUP2560:fenix_D2_tactix/D2BravoTitanium.rgn +GUP2583:astro_alpha/DeltaSmart.rgn +GUP2583:delta/DeltaSmart.rgn +GUP2605:fenix_D2_tactix/fenix5XBeta.zip +GUP2605:fenix_D2_tactix/fenix5X.gcd +GUP2657:baseball_golf/ApproachS60Beta.zip +GUP2657:golf_baseball/ApproachS60Beta.zip +GUP2661:fenix_D2_tactix/fenix5Beta.zip +GUP2661:fenix_D2_tactix/fenix5.gcd +GUP2662:fenix_D2_tactix/fenix5SBeta.zip +GUP2662:fenix_D2_tactix/fenix5S.gcd +GUP2663:fenix_D2_tactix/D2Charlie.gcd +GUP2663:fenix_D2_tactix/fenix5XBeta.zip +GUP2663:fenix_D2_tactix/fenix5X.gcd +GUP2664:fenix_D2_tactix/DescentMk1.gcd +GUP2665:forerunner/Forerunner935_1157_SNS_623_Beta.zip +GUP2665:forerunner/Forerunner935_1157_SNS_625_Beta.zip +GUP2665:forerunner/Forerunner935Beta.zip +GUP2665:forerunner/Forerunner935.gcd +GUP2666:vivo/vivoactive3.gcd +GUP2699:vivo/vivoactive3.gcd +GUP2699:vivo/vivoactive3t.gcd +GUP2752:baseball_golf/ApproachS60Beta.zip +GUP2752:baseball_golf/ApproachS60.gcd +GUP2752:golf_baseball/ApproachS60Beta.zip +GUP2752:golf_baseball/ApproachS60.gcd +GUP2792:foretrex/Foretrex601_701_WebUpdater_.gcd +GUP2818:xero/XeroA1_i_.gcd +GUP2820:fenix_D2_tactix/D2Charlie.gcd +GUP2822:vivo/vivoactive3.gcd +GUP2827:baseball_golf/Impact.rgn +GUP2827:golf_baseball/Impact.rgn +GUP2869:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +GUP2869:fenix_D2_tactix/DescentMk1.gcd +GUP2887:forerunner/Forerunner645MusicBeta.zip +GUP2896:forerunner/Forerunner645BetaBeta.zip +GUP2897:forerunner/Forerunner645MusicBeta.zip +GUP2957:chipset_firmware/Type_M/GPSChipsetTypeM5_2957_Beta.zip +GUP2957:fenix_D2_tactix/fenix5Beta.zip +GUP2957:fenix_D2_tactix/fenix5PlusBeta.zip +GUP2957:fenix_D2_tactix/fenix5SBeta.zip +GUP2957:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP2957:fenix_D2_tactix/fenix5XBeta.zip +GUP2957:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP2957:fenix_D2_tactix/fenixChronosBeta_USB.zip +GUP2957:fenix_D2_tactix/fenixChronosBeta.zip +GUP2957:forerunner/Forerunner935Beta.zip +GUP2983:vivo/vivoactive3t.gcd +GUP2993:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +GUP3013:fenix_D2_tactix/fenix5PlusBeta.zip +GUP3013:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP3013:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP3014:fenix_D2_tactix/fenix5PlusBeta.zip +GUP3014:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP3014:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP3015:fenix_D2_tactix/fenix5PlusBeta.zip +GUP3015:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP3015:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP3044:baseball_golf/ApproachS20.rgn +GUP3044:golf_baseball/ApproachS20.rgn +GUP3078:forerunner/Forerunner245Beta.zip +GUP3079:forerunner/Forerunner245MBeta.zip +GUP3107:chipset_firmware/Type_S/GPSChipsetTypeS1_3107_Beta.zip +GUP3114:forerunner/Forerunner945Beta.zip +GUP3127:fenix_D2_tactix/InstinctBeta.gcd +GUP3127:fenix_D2_tactix/InstinctBeta.zip +GUP3127:fenix_D2_tactix/Instinct.gcd +GUP3153:fenix_D2_tactix/fenix5PlusBeta.zip +GUP3153:fenix_D2_tactix/fenix5SPlusBeta.zip +GUP3153:fenix_D2_tactix/fenix5XPlusBeta.zip +GUP3204:forerunner/Forerunner245Beta.zip +GUP3205:forerunner/Forerunner245MBeta.zip +GUP3252:MARQ/MARQAdventurerBeta.zip +GUP3252:MARQ/MARQAthleteBeta.zip +GUP3252:MARQ/MARQAviatorBeta.zip +GUP3252:MARQ/MARQBeta.zip +GUP3252:MARQ/MARQCaptainBeta.zip +GUP3252:MARQ/MARQCommanderBeta.zip +GUP3252:MARQ/MARQDriverBeta.zip +GUP3252:MARQ/MARQExpeditionBeta.zip +GUP3252:MARQ/MARQSensorHubBeta.zip +GUP3253:MARQ/MARQAdventurerBeta.zip +GUP3253:MARQ/MARQANT_BLE_BTBeta.zip +GUP3253:MARQ/MARQAthleteBeta.zip +GUP3253:MARQ/MARQAviatorBeta.zip +GUP3253:MARQ/MARQBeta.zip +GUP3253:MARQ/MARQCaptainBeta.zip +GUP3253:MARQ/MARQCommanderBeta.zip +GUP3253:MARQ/MARQDriverBeta.zip +GUP3253:MARQ/MARQExpeditionBeta.zip +GUP3292:fenix_D2_tactix/fenix6Beta.zip +GUP3292:fenix_D2_tactix/fenix6SBeta.zip +GUP3293:fenix_D2_tactix/fenix6ProBeta.zip +GUP3293:fenix_D2_tactix/fenix6S_6_6XPro_ANT_BLE_BTBeta.zip +GUP3293:fenix_D2_tactix/fenix6SProBeta.zip +GUP3293:fenix_D2_tactix/fenix6XProBeta.zip +GUP3294:fenix_D2_tactix/fenix6SBeta.zip +GUP3294:fenix_D2_tactix/fenix6SProBeta.zip +GUP3294:fenix_D2_tactix/fenix6SProSensorHubBeta.zip +GUP3294:fenix_D2_tactix/fenix6SSensorHubBeta.zip +GUP3295:fenix_D2_tactix/fenix6Beta.zip +GUP3295:fenix_D2_tactix/fenix6ProBeta.zip +GUP3295:fenix_D2_tactix/fenix6ProSensorHubBeta.zip +GUP3295:fenix_D2_tactix/fenix6SensorHubBeta.zip +GUP3296:fenix_D2_tactix/fenix6XProBeta.zip +GUP3296:fenix_D2_tactix/fenix6XProSensorHubBetaBeta.zip +GUP3296:fenix_D2_tactix/fenix6XProSensorHubBeta.zip +GUP3296:fenix_D2_tactix/fenix6XSensorHubBeta.zip +GUP3303:forerunner/Forerunner945Beta.zip +GUP3315:baseball_golf/ApproachS40.gcd +GUP3315:golf_baseball/ApproachS40.gcd +GUP3316:baseball_golf/ApproachS40.gcd +GUP3316:golf_baseball/ApproachS40.gcd +GUP3406:swim/Swim2BetaBeta.zip +GUP3506:chipset_firmware/Type_S/GPSChipsetTypeS1_3506_Beta.zip +GUP5423:vivo/vivosmartAPAC.rgn +GUP5424:vivo/vivosmartAPAC.rgn +GUP6182:edge/HMD_regionfileonly_.rgn +GUP6182:edge/VariaVision.rgn +GUP6182:misc_marine/GarminNautix_regionfileonly_.rgn +GUP7124:vivo/vivoactive3t.gcd diff --git a/components2.txt b/components2.txt new file mode 100644 index 0000000..2d84006 --- /dev/null +++ b/components2.txt @@ -0,0 +1,1728 @@ +006-B0119:nuvi/nuvi1490TV_GCDFile_.gcd +006-B0181:oem_sensor/Carmax310A_GCDFile_.gcd +006-B0181:oem_sensor/Carmax310V_GCDFile_.gcd +006-B0206:drive/SW,HondaPH.gcd +006-B0223:drive/SW,Captain.gcd +006-B0223:drive/SW,Storm.gcd +006-B0421:etrex/eTrexLegendCx_VistaCx_VentureCx_regionfileonly_.rgn +006-B0421:etrex/vista/eTrexLegendCx_VistaCx_VentureCx_regionfileonly_.rgn +006-B0426:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0426:zumo/zumo4xx_5xx_GCDFile_.gcd +006-B0426:zumo/ZumoHonda_WebUpdater_.gcd +006-B0450:edge/Edge205_305.rgn +006-B0476:edge/Edge605_705.gcd +006-B0478:baseball_golf/ApproachS1_WebUpdater_.gcd +006-B0478:baseball_golf/ApproachS2APAC_GCDfile_.gcd +006-B0478:baseball_golf/ApproachS2.gcd +006-B0478:baseball_golf/ApproachS2J_GCDfile_.gcd +006-B0478:baseball_golf/ApproachS3,APAC_GCDfile_.gcd +006-B0478:baseball_golf/ApproachS3.gcd +006-B0478:edge/Edge205_305.rgn +006-B0478:forerunner/Forerunner110.gcd +006-B0478:forerunner/Forerunner205_305_forWebUpdater_.rgn +006-B0478:forerunner/Forerunner210.gcd +006-B0478:golf_baseball/ApproachS1_WebUpdater_.gcd +006-B0478:golf_baseball/ApproachS2APAC_GCDfile_.gcd +006-B0478:golf_baseball/ApproachS2.gcd +006-B0478:golf_baseball/ApproachS2J_GCDfile_.gcd +006-B0478:golf_baseball/ApproachS3,APAC_GCDfile_.gcd +006-B0478:golf_baseball/ApproachS3.gcd +006-B0478:nuvi/nuvi2xx_regionfileonly_.gcd +006-B0478:nuvi/nuvi2xx_WebUpdater_.gcd +006-B0478:nuvi/nuvi2xxWide_regionfileonly_.gcd +006-B0478:nuvi/nuvi2xxW_regionfileonly_.gcd +006-B0478:nuvi/nuvi300_350_regionfileonly-MLC_.gcd +006-B0478:nuvi/nuvi300.exe +006-B0478:nuvi/nuvi310_360_370_regionfileonly_.gcd +006-B0478:nuvi/nuvi310_360_370_regionfileonly-MLC_.gcd +006-B0478:nuvi/nuvi310.exe +006-B0478:nuvi/nuvi350.exe +006-B0478:nuvi/nuvi360.exe +006-B0478:nuvi/nuvi370.exe +006-B0478:nuvi/nuvi610.exe +006-B0478:nuvi/nuvi660.exe +006-B0478:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0478:nuvi/nuvi7x5_GCDFile_.gcd +006-B0478:nuvi/nuvi7xx_GCDfile_.gcd +006-B0478:oem_sensor/HondaNaviGen3.rgn +006-B0478:streetpilot/c5x0/StreetPilotc510.exe +006-B0478:streetpilot/c5x0/StreetPilotc530.exe +006-B0478:streetpilot/c5x0/StreetPilotc550.exe +006-B0478:streetpilot/Navus2.exe +006-B0478:zumo/zumo4xx_5xx_GCDFile_.gcd +006-B0478:zumo/zumo660_GCDFile_.gcd +006-B0478:zumo/zumo665_GCDFile_.gcd +006-B0478:zumo/ZumoHonda_WebUpdater_.gcd +006-B0482:dezl/dezl560_GCDfile_.gcd +006-B0482:dezl/dezl570.gcd +006-B0482:dezl/dezl760_GCDfile_.gcd +006-B0482:dezl/dezl770.gcd +006-B0482:dezl/dezlCam.gcd +006-B0482:drive/drive40_50.gcd +006-B0482:drive/drive60_70.gcd +006-B0482:drive/Drive61.gcd +006-B0482:drive/DriveandDriveSmart40_50.gcd +006-B0482:drive/DriveandDriveSmart51.gcd +006-B0482:drive/DriveandDriveSmart60_70.gcd +006-B0482:drive/DriveAssist50_520_USB.gcd +006-B0482:drive/DriveAssist50.gcd +006-B0482:drive/DriveAssist51.gcd +006-B0482:drive/Drive,DriveSmart60_70,andDriveTrack70.gcd +006-B0482:drive/Drive_DriveSmart60_70_andDriveTrack70.gcd +006-B0482:drive/DriveLuxe50.gcd +006-B0482:drive/DriveLuxe51.gcd +006-B0482:drive/DriveSmart61.gcd +006-B0482:drive/SW,Captain.gcd +006-B0482:drive/SW,HondaPH.gcd +006-B0482:drive/SW,Storm.gcd +006-B0482:fleet/fleet590EU.gcd +006-B0482:fleet/fleet590NA.gcd +006-B0482:fleet/fleet590U.S..gcd +006-B0482:nuvi/nuLink23xx_GCDFile_.gcd +006-B0482:nuvi/nuvi12xx_GCDFile_.gcd +006-B0482:nuvi/nuvi12xx_GCDFile-MTK_.gcd +006-B0482:nuvi/nuvi13xxand14xxseries_GCDFile_.gcd +006-B0482:nuvi/nuvi13xxand14xxseries_GCDFile-MTK_.gcd +006-B0482:nuvi/nuvi140_150_GCD_File.gcd +006-B0482:nuvi/nuvi140_150_GCDFile_.gcd +006-B0482:nuvi/nuvi1490TV_GCDFile_.gcd +006-B0482:nuvi/nuvi16xxNA_regionfileonly_.gcd +006-B0482:nuvi/nuvi2495LTGLONASS_GCDFile_.gcd +006-B0482:nuvi/nuvi24x5and25x5_GCDFile_.gcd +006-B0482:nuvi/nuvi24xx_GCDFile_.gcd +006-B0482:nuvi/Nuvi2580SouthAmerica_WebupdaterGCDfile_.gcd +006-B0482:nuvi/nuvi25x9C4.gcd +006-B0482:nuvi/nuvi25x9.gcd +006-B0482:nuvi/nuvi26x9C4.gcd +006-B0482:nuvi/nuvi26x9.gcd +006-B0482:nuvi/nuvi2798.gcd +006-B0482:nuvi/nuvi27x7and27x8_GCDFile_.gcd +006-B0482:nuvi/nuvi27x7_GCDFile_.gcd +006-B0482:nuvi/nuvi27x9_7g0.gcd +006-B0482:nuvi/nuvi27x9.gcd +006-B0482:nuvi/nuvi2x5_GCDFile_.gcd +006-B0482:nuvi/nuvi2x5_GCDFile-MTK_.gcd +006-B0482:nuvi/nuvi2x5W_GCDFile_.gcd +006-B0482:nuvi/nuvi2x5W_GCDFile-MTK_.gcd +006-B0482:nuvi/nuvi2xx7and2xx8C4.gcd +006-B0482:nuvi/nuvi2xx7and2xx8.gcd +006-B0482:nuvi/nuvi2xx7and2xx8_GCDFile_.gcd +006-B0482:nuvi/nuvi2xx7_GCDFile_.gcd +006-B0482:nuvi/nuvi300_350_regionfileonly-MLC_.gcd +006-B0482:nuvi/nuvi300.exe +006-B0482:nuvi/nuvi30_GCDfile_.gcd +006-B0482:nuvi/nuvi310_360_370_regionfileonly_.gcd +006-B0482:nuvi/nuvi310_360_370_regionfileonly-MLC_.gcd +006-B0482:nuvi/nuvi310.exe +006-B0482:nuvi/nuvi34xx_GCDFile_.gcd +006-B0482:nuvi/nuvi350.exe +006-B0482:nuvi/nuvi35x7and35x8_GCDFile_.gcd +006-B0482:nuvi/nuvi35x7_GCDFile_.gcd +006-B0482:nuvi/nuvi35xx_GCDFile_.gcd +006-B0482:nuvi/nuvi360.exe +006-B0482:nuvi/nuvi370.exe +006-B0482:nuvi/nuvi37xx_GCDFile_.gcd +006-B0482:nuvi/nuvi40and50_GCDfile_.gcd +006-B0482:nuvi/nuvi42and52_GCDfile_.gcd +006-B0482:nuvi/nuvi42and52_GCDFile_.gcd +006-B0482:nuvi/nuvi465T_GCDFile_.gcd +006-B0482:nuvi/nuvi55_56.gcd +006-B0482:nuvi/Nuvi55&56.gcd +006-B0482:nuvi/Nuvi55_56.gcd +006-B0482:nuvi/nuvi57_58.gcd +006-B0482:nuvi/nuvi5xx_regionfileonly_.gcd +006-B0482:nuvi/nuvi610.exe +006-B0482:nuvi/nuvi65_66.gcd +006-B0482:nuvi/Nuvi65&66.gcd +006-B0482:nuvi/Nuvi65_66.gcd +006-B0482:nuvi/nuvi660.exe +006-B0482:nuvi/nuvi67_68.gcd +006-B0482:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0482:nuvi/nuvi7x5_GCDFile_.gcd +006-B0482:nuvi/nuvi7xx_GCDfile_.gcd +006-B0482:nuvi/nuviCam.gcd +006-B0482:nuvi/nuvix2andx4_GCDFile_.gcd +006-B0482:oem_sensor/Carmax310A_GCDFile_.gcd +006-B0482:oem_sensor/Carmax310V_GCDFile_.gcd +006-B0482:streetpilot/c5x0/StreetPilotc510.exe +006-B0482:streetpilot/c5x0/StreetPilotc530.exe +006-B0482:streetpilot/c5x0/StreetPilotc550.exe +006-B0482:streetpilot/Navus2.exe +006-B0482:zumo/BMWMotorradNavigatorV.gcd +006-B0482:zumo/BMWMotorradNavigatorVI.gcd +006-B0482:zumo/BMWNavigatorV.gcd +006-B0482:zumo/zumo2x0_GCDFile_.gcd +006-B0482:zumo/zumo350_GCDFile_.gcd +006-B0482:zumo/Zumo396.gcd +006-B0482:zumo/zumo3x0_GCDFile_.gcd +006-B0482:zumo/Zumo3x5.gcd +006-B0482:zumo/zumo4xx_5xx_GCDFile_.gcd +006-B0482:zumo/zumo590.gcd +006-B0482:zumo/Zumo595.gcd +006-B0482:zumo/zumo660_GCDFile_.gcd +006-B0482:zumo/zumo665_GCDFile_.gcd +006-B0482:zumo/ZumoHonda_WebUpdater_.gcd +006-B0484:forerunner/Forerunner205_305_forWebUpdater_.rgn +006-B0546:mapsource/MapSource.exe +006-B0553:nuvi/nuvi310_360_370_regionfileonly_.gcd +006-B0553:nuvi/nuvi310_360_370_regionfileonly-MLC_.gcd +006-B0553:nuvi/nuvi310.exe +006-B0553:nuvi/nuvi360.exe +006-B0553:nuvi/nuvi370.exe +006-B0553:nuvi/nuvi610.exe +006-B0553:nuvi/nuvi660.exe +006-B0553:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0553:nuvi/nuvi7xx_GCDfile_.gcd +006-B0553:streetpilot/c5x0/StreetPilotc510.exe +006-B0553:streetpilot/c5x0/StreetPilotc530.exe +006-B0553:streetpilot/c5x0/StreetPilotc550.exe +006-B0553:zumo/zumo4xx_5xx_GCDFile_.gcd +006-B0553:zumo/ZumoHonda_WebUpdater_.gcd +006-B0570:astro_alpha/Astro220_regionfileonly_.rgn +006-B0577:rino/Rino520HCx_530HCx.rgn +006-B0580:zumo/zumo4xx_5xx_GCDFile_.gcd +006-B0596:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0617:astro_alpha/Astro220_regionfileonly_.rgn +006-B0617:edge/Edge605_705.gcd +006-B0625:edge/Edge605_705.gcd +006-B0630:dezl/dezl560_GCDfile_.gcd +006-B0630:dezl/dezl570.gcd +006-B0630:dezl/dezl760_GCDfile_.gcd +006-B0630:dezl/dezl770.gcd +006-B0630:dezl/dezlCam.gcd +006-B0630:drive/AvtexTourerOnePlus.gcd +006-B0630:drive/drive40_50.gcd +006-B0630:drive/drive60_70.gcd +006-B0630:drive/Drive61.gcd +006-B0630:drive/DriveandDriveSmart40_50.gcd +006-B0630:drive/DriveandDriveSmart51.gcd +006-B0630:drive/DriveandDriveSmart60_70.gcd +006-B0630:drive/DriveAssist50_520_USB.gcd +006-B0630:drive/DriveAssist50.gcd +006-B0630:drive/DriveAssist51.gcd +006-B0630:drive/Drive,DriveSmart60_70,andDriveTrack70.gcd +006-B0630:drive/Drive_DriveSmart60_70_andDriveTrack70.gcd +006-B0630:drive/DriveLuxe50.gcd +006-B0630:drive/DriveLuxe51.gcd +006-B0630:drive/DriveSmart61.gcd +006-B0630:drive/SW,Captain.gcd +006-B0630:drive/SW,HondaPH.gcd +006-B0630:drive/SW,Storm.gcd +006-B0630:fleet/fleet590EU.gcd +006-B0630:fleet/fleet590NA.gcd +006-B0630:fleet/fleet590U.S..gcd +006-B0630:nuvi/nuLink23xx_GCDFile_.gcd +006-B0630:nuvi/nuvi12xx_GCDFile_.gcd +006-B0630:nuvi/nuvi12xx_GCDFile-MTK_.gcd +006-B0630:nuvi/nuvi13xxand14xxseries_GCDFile_.gcd +006-B0630:nuvi/nuvi13xxand14xxseries_GCDFile-MTK_.gcd +006-B0630:nuvi/nuvi140_150_GCD_File.gcd +006-B0630:nuvi/nuvi140_150_GCDFile_.gcd +006-B0630:nuvi/nuvi1490TV_GCDFile_.gcd +006-B0630:nuvi/nuvi16xxNA_regionfileonly_.gcd +006-B0630:nuvi/nuvi2495LTGLONASS_GCDFile_.gcd +006-B0630:nuvi/nuvi24x5and25x5_GCDFile_.gcd +006-B0630:nuvi/nuvi24xx_GCDFile_.gcd +006-B0630:nuvi/Nuvi2580SouthAmerica_WebupdaterGCDfile_.gcd +006-B0630:nuvi/nuvi25x9C4.gcd +006-B0630:nuvi/nuvi25x9.gcd +006-B0630:nuvi/nuvi26x9C4.gcd +006-B0630:nuvi/nuvi26x9.gcd +006-B0630:nuvi/nuvi2798.gcd +006-B0630:nuvi/nuvi27x7and27x8_GCDFile_.gcd +006-B0630:nuvi/nuvi27x7_GCDFile_.gcd +006-B0630:nuvi/nuvi27x9_7g0.gcd +006-B0630:nuvi/nuvi27x9.gcd +006-B0630:nuvi/nuvi2x5_GCDFile_.gcd +006-B0630:nuvi/nuvi2x5_GCDFile-MTK_.gcd +006-B0630:nuvi/nuvi2x5W_GCDFile_.gcd +006-B0630:nuvi/nuvi2x5W_GCDFile-MTK_.gcd +006-B0630:nuvi/nuvi2xx7and2xx8C4.gcd +006-B0630:nuvi/nuvi2xx7and2xx8.gcd +006-B0630:nuvi/nuvi2xx7and2xx8_GCDFile_.gcd +006-B0630:nuvi/nuvi2xx7_GCDFile_.gcd +006-B0630:nuvi/nuvi30_GCDfile_.gcd +006-B0630:nuvi/nuvi34xx_GCDFile_.gcd +006-B0630:nuvi/nuvi35x7and35x8_GCDFile_.gcd +006-B0630:nuvi/nuvi35x7_GCDFile_.gcd +006-B0630:nuvi/nuvi35xx_GCDFile_.gcd +006-B0630:nuvi/nuvi37xx_GCDFile_.gcd +006-B0630:nuvi/nuvi40and50_GCDfile_.gcd +006-B0630:nuvi/nuvi42and52_GCDfile_.gcd +006-B0630:nuvi/nuvi42and52_GCDFile_.gcd +006-B0630:nuvi/nuvi55_56.gcd +006-B0630:nuvi/Nuvi55&56.gcd +006-B0630:nuvi/Nuvi55_56.gcd +006-B0630:nuvi/nuvi57_58.gcd +006-B0630:nuvi/nuvi5xx_regionfileonly_.gcd +006-B0630:nuvi/nuvi65_66.gcd +006-B0630:nuvi/Nuvi65&66.gcd +006-B0630:nuvi/Nuvi65_66.gcd +006-B0630:nuvi/nuvi67_68.gcd +006-B0630:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0630:nuvi/nuvi7x5_GCDFile_.gcd +006-B0630:nuvi/nuvi7xx_GCDfile_.gcd +006-B0630:nuvi/nuviCam.gcd +006-B0630:nuvi/nuvix2andx4_GCDFile_.gcd +006-B0630:oem_sensor/Carmax310A_GCDFile_.gcd +006-B0630:oem_sensor/Carmax310V_GCDFile_.gcd +006-B0630:rv/AvtexTourerOnePlus.gcd +006-B0630:rv/Camper_RV660.gcd +006-B0630:rv/rv760.gcd +006-B0630:rv/RV760.gcd +006-B0630:rv/RVandCamper760.gcd +006-B0630:rv/RVandCamper770.gcd +006-B0630:rv/RV_Camper770.gcd +006-B0630:zumo/BMWMotorradNavigatorV.gcd +006-B0630:zumo/BMWMotorradNavigatorVI.gcd +006-B0630:zumo/BMWNavigatorV.gcd +006-B0630:zumo/zumo350_GCDFile_.gcd +006-B0630:zumo/Zumo396.gcd +006-B0630:zumo/zumo3x0_GCDFile_.gcd +006-B0630:zumo/Zumo3x5.gcd +006-B0630:zumo/zumo590.gcd +006-B0630:zumo/Zumo595.gcd +006-B0630:zumo/zumo660_GCDFile_.gcd +006-B0630:zumo/zumo665_GCDFile_.gcd +006-B0660:nuvi/nuvi2xx_regionfileonly_.gcd +006-B0661:colorado/Colorado_WebUpdater_.gcd +006-B0680:chipset_firmware/Type_B/GPSChipsetTypeB.gcd +006-B0680:chipset_firmware/Type_B/GPSChipsetTypeB_RegionFile_.rgn +006-B0680:chipset_firmware/Type_B/GPSChipsetTypeB.rgn +006-B0680:nuvi/nuvi2xx_regionfileonly_.gcd +006-B0680:nuvi/nuvi2xx_WebUpdater_.gcd +006-B0680:nuvi/nuvi2xxWide_regionfileonly_.gcd +006-B0680:nuvi/nuvi2xxW_regionfileonly_.gcd +006-B0680:rino/Rino520HCx_530HCx.rgn +006-B0689:astro_alpha/Astro320_270_USB.gcd +006-B0689:astro_alpha/Astro320.gcd +006-B0689:astro_alpha/DC20,DC30,DC40.gcd +006-B0695:etrex/summit/eTrexSummitHC_VentureHC.rgn +006-B0695:etrex/venture/eTrexSummitHC_VentureHC.rgn +006-B0711:zumo/ZumoHonda_WebUpdater_.gcd +006-B0723:nuvi/nuvi5xx_regionfileonly_.gcd +006-B0733:chipset_firmware/Type_M/GPSChipsetTypeM.gcd +006-B0733:colorado/Colorado_WebUpdater_.gcd +006-B0733:drive/SW,Captain.gcd +006-B0733:drive/SW,HondaPH.gcd +006-B0733:drive/SW,Storm.gcd +006-B0733:nuvi/nuvi2xx_regionfileonly_.gcd +006-B0733:nuvi/nuvi2xx_WebUpdater_.gcd +006-B0733:nuvi/nuvi2xxWide_regionfileonly_.gcd +006-B0733:nuvi/nuvi2xxW_regionfileonly_.gcd +006-B0733:nuvi/nuvi7x5_GCDFile_.gcd +006-B0733:nuvi/nuvi7xx_GCDfile_.gcd +006-B0733:oem_sensor/Carmax310A_GCDFile_.gcd +006-B0733:oem_sensor/Carmax310V_GCDFile_.gcd +006-B0733:oem_sensor/HondaNaviGen3.rgn +006-B0733:zumo/zumo660_GCDFile_.gcd +006-B0733:zumo/zumo665_GCDFile_.gcd +006-B0737:nuvi/nuvi2xxW_regionfileonly_.gcd +006-B0739:chipset_firmware/Type_M/GPSChipsetTypeM2_RegionFile_.rgn +006-B0740:oem_sensor/HondaNaviGen3.rgn +006-B0754:nuvi/nuvi7xx_GCDfile_.gcd +006-B0765:oem_sensor/HondaNaviGen3.rgn +006-B0775:rino/Rino520HCx_530HCx.rgn +006-B0781:oem_sensor/GPS17xHVS.rgn +006-B0795:oregon/Oregon200.exe +006-B0795:oregon/Oregon300.exe +006-B0795:oregon/Oregon400c.exe +006-B0795:oregon/Oregon400i.exe +006-B0795:oregon/Oregon400t.exe +006-B0795:oregon/Oregon_WebUpdater_.gcd +006-B0823:dashcam/Dashcam45-O.gcd +006-B0823:dashcam/DashCam45-O.gcd +006-B0823:dashcam/Dashcam45-S.gcd +006-B0823:dashcam/DashCam45-S.gcd +006-B0823:dashcam/Dashcam55.gcd +006-B0823:dashcam/DashCam55.gcd +006-B0823:dashcam/Dashcam65W.gcd +006-B0823:dashcam/DashCam65W.gcd +006-B0823:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B0823:nuvi/nuvi300_350_regionfileonly-MLC_.gcd +006-B0823:nuvi/nuvi310_360_370_regionfileonly_.gcd +006-B0823:nuvi/nuvi310_360_370_regionfileonly-MLC_.gcd +006-B0823:nuvi/nuvi6xx_regionfileonly_.gcd +006-B0827:nuvi/nuvi2x5W_GCDFile_.gcd +006-B0834:nuvi/nuvi2xx_WebUpdater_.gcd +006-B0835:nuvi/nuvi2xxWide_regionfileonly_.gcd +006-B0851:nuvi/nuvi2x5_GCDFile_.gcd +006-B0862:zumo/zumo665_GCDFile_.gcd +006-B0870:nuvi/nuvi7x5_GCDFile_.gcd +006-B0896:oregon/Oregon550_WebUpdater_.gcd +006-B0896:oregon/Oregonx50_WebUpdater_.gcd +006-B0901:drive/SW,Captain.gcd +006-B0901:drive/SW,HondaPH.gcd +006-B0901:drive/SW,Storm.gcd +006-B0901:nuvi/nuvi12xx_GCDFile_.gcd +006-B0901:nuvi/nuvi12xx_GCDFile-MTK_.gcd +006-B0901:nuvi/nuvi13xxand14xxseries_GCDFile_.gcd +006-B0901:nuvi/nuvi13xxand14xxseries_GCDFile-MTK_.gcd +006-B0901:nuvi/nuvi1490TV_GCDFile_.gcd +006-B0901:nuvi/nuvi30_GCDfile_.gcd +006-B0901:nuvi/nuvi40and50_GCDfile_.gcd +006-B0901:nuvi/nuvi42and52_GCDfile_.gcd +006-B0901:nuvi/nuvi42and52_GCDFile_.gcd +006-B0901:nuvi/nuvix2andx4_GCDFile_.gcd +006-B0901:oem_sensor/Carmax310A_GCDFile_.gcd +006-B0901:oem_sensor/Carmax310V_GCDFile_.gcd +006-B0924:zumo/zumo660_GCDFile_.gcd +006-B0943:nuvi/nuvi465T_GCDFile_.gcd +006-B0957:etrex/legend/eTrexLegend_VistaH.rgn +006-B0957:etrex/vista/eTrexLegend_VistaH.rgn +006-B0960:dakota/Dakota_2.50_Update.RGN +006-B0960:dakota/Dakota_2.70_Update.RGN +006-B0960:dakota/Dakota_2.80_Update.RGN +006-B0960:dakota/Dakota_2.90_Update.RGN +006-B0960:dakota/Dakota_3.00_Update.RGN +006-B0960:dakota/Dakota_3.10_Update.RGN +006-B0960:dakota/Dakota_3.70_Update.RGN +006-B0960:dakota/Dakota_3.80_Update.RGN +006-B0960:dakota/dakota382.GCD +006-B0960:dakota/Dakota_470_Update.RGN +006-B0960:dakota/Dakota_WebUpdater_.gcd +006-B0960:dakota/Dakota_WebUpdater_.RGN +006-B0969:drive/FirmwareUpdateforFMICableswithTraffic.rgn +006-B0969:garmin_uilities/FirmwareUpdateforFMICableswithTraffic.gcd +006-B0969:nuvi/nuvi465T_GCDFile_.gcd +006-B0970:zumo/zumo660_GCDFile_.gcd +006-B0970:zumo/zumo665_GCDFile_.gcd +006-B0971:nuvi/nuvi12xx_GCDFile_.gcd +006-B0972:nuvi/nuvi13xxand14xxseries_GCDFile_.gcd +006-B0978:nuvi/nuvi7x5_GCDFile_.gcd +006-B0979:chipset_firmware/Type_M/GPSChipsetTypeM3.gcd +006-B0979:edge/Edge500.gcd +006-B1005:baseball_golf/ApproachG5_WebUpdater_.gcd +006-B1005:golf_baseball/ApproachG5_WebUpdater_.gcd +006-B1033:zumo/zumo660_GCDFile_.gcd +006-B1033:zumo/zumo665_GCDFile_.gcd +006-B1036:edge/Edge500.gcd +006-B1046:nuvi/nuvi16xxNA_regionfileonly_.gcd +006-B1059:chipset_firmware/Type_M/GPSChipsetTypeM3_RegionFile_.rgn +006-B1074:nuvi/nuvi2x5_GCDFile-MTK_.gcd +006-B1091:nuvi/nuvi2x5W_GCDFile-MTK_.gcd +006-B1095:misc_marine/GPS72H_forWebUpdater_.rgn +006-B1099:nuvi/nuvi16xxNA_regionfileonly_.gcd +006-B1100:nuvi/nuvi16xxNA_regionfileonly_.gcd +006-B1101:nuvi/nuvi37xx_GCDFile_.gcd +006-B1104:nuvi/nuvi13xxand14xxseries_GCDFile-MTK_.gcd +006-B1106:nuvi/nuvi12xx_GCDFile-MTK_.gcd +006-B1113:gpsmap62_64_78/GPSMAP62_78_WebUpdater_.gcd +006-B1124:forerunner/Forerunner110.gcd +006-B1136:baseball_golf/ApproachG3_WebUpdater_.gcd +006-B1136:golf_baseball/ApproachG3_WebUpdater_.gcd +006-B1138:zumo/zumo2x0_GCDFile_.gcd +006-B1147:zumo/zumo665_GCDFile_.gcd +006-B1148:forerunner/Forerunner110.gcd +006-B1169:edge/Edge800.gcd +006-B1211:dezl/dezl570.gcd +006-B1211:dezl/dezl760_GCDfile_.gcd +006-B1211:dezl/dezl770.gcd +006-B1211:drive/drive40_50.gcd +006-B1211:drive/drive60_70.gcd +006-B1211:drive/Drive61.gcd +006-B1211:drive/DriveandDriveSmart40_50.gcd +006-B1211:drive/DriveandDriveSmart51.gcd +006-B1211:drive/DriveandDriveSmart60_70.gcd +006-B1211:drive/DriveAssist50_520_USB.gcd +006-B1211:drive/DriveAssist50.gcd +006-B1211:drive/DriveAssist51.gcd +006-B1211:drive/Drive,DriveSmart60_70,andDriveTrack70.gcd +006-B1211:drive/Drive_DriveSmart60_70_andDriveTrack70.gcd +006-B1211:drive/DriveLuxe50.gcd +006-B1211:drive/DriveLuxe51.gcd +006-B1211:drive/DriveSmart61.gcd +006-B1211:nuvi/nuvi25x9C4.gcd +006-B1211:nuvi/nuvi25x9.gcd +006-B1211:nuvi/nuvi26x9C4.gcd +006-B1211:nuvi/nuvi26x9.gcd +006-B1211:nuvi/nuvi27x9_7g0.gcd +006-B1211:nuvi/nuvi27x9.gcd +006-B1211:nuvi/nuvi2xx7and2xx8C4.gcd +006-B1211:nuvi/nuvi34xx_GCDFile_.gcd +006-B1211:nuvi/nuvi35x7and35x8_GCDFile_.gcd +006-B1211:nuvi/nuvi35x7_GCDFile_.gcd +006-B1211:nuvi/nuvi35xx_GCDFile_.gcd +006-B1211:nuvi/nuvi37xx_GCDFile_.gcd +006-B1211:rv/Camper_RV660.gcd +006-B1211:rv/RVandCamper770.gcd +006-B1211:rv/RV_Camper770.gcd +006-B1247:rino/Rino6xx_WebUpdater_.gcd +006-B1254:nuvi/nuLink23xx_GCDFile_.gcd +006-B1258:nuvi/nuvi35xx_GCDFile_.gcd +006-B1264:forerunner/Forerunner210.gcd +006-B1265:forerunner/Forerunner210.gcd +006-B1269:dezl/dezl560_GCDfile_.gcd +006-B1270:nuvi/nuLink23xx_GCDFile_.gcd +006-B1271:baseball_golf/ApproachS1_WebUpdater_.gcd +006-B1271:golf_baseball/ApproachS1_WebUpdater_.gcd +006-B1272:baseball_golf/ApproachS1_WebUpdater_.gcd +006-B1272:golf_baseball/ApproachS1_WebUpdater_.gcd +006-B1273:nuvi/nuvi24xx_GCDFile_.gcd +006-B1275:montana/Montana_WebUpdater_.gcd +006-B1279:nuvi/nuLink23xx_GCDFile_.gcd +006-B1296:nuvi/nuLink23xx_GCDFile_.gcd +006-B1304:etrex/eTrex_10_20_30/eTrex10.gcd +006-B1304:etrex/eTrex_10_20_30/eTrex10_Webupdater_.gcd +006-B1305:etrex/eTrex_10_20_30/eTrex20_30_230_Update.RGN +006-B1305:etrex/eTrex_10_20_30/eTrex20_30_240_Update.RGN +006-B1305:etrex/eTrex_10_20_30/eTrex20_30_250_Update.RGN +006-B1305:etrex/eTrex_10_20_30/eTrex20_30.gcd +006-B1305:etrex/eTrex_10_20_30/eTrex20_30_Webupdater_.gcd +006-B1325:edge/Edge200.gcd +006-B1339:astro_alpha/Astro320_270_USB.gcd +006-B1339:astro_alpha/Astro320.gcd +006-B1340:gpsmap62_64_78/GPSMAP62sc_62stc_WebUpdater_.gcd +006-B1349:nuvi/nuvi30_GCDfile_.gcd +006-B1350:nuvi/nuvi40and50_GCDfile_.gcd +006-B1371:nuvi/nuvi24x5and25x5_GCDFile_.gcd +006-B1376:nuvi/nuvi34xx_GCDFile_.gcd +006-B1379:chipset_firmware/Type_M/GPSChipsetTypeM3_Aviation_.gcd +006-B1381:baseball_golf/ApproachS40.gcd +006-B1381:baseball_golf/ApproachS60.gcd +006-B1381:edge/HMD_regionfileonly_.rgn +006-B1381:edge/VariaVision.rgn +006-B1381:fenix_D2_tactix/D2Bravo.rgn +006-B1381:fenix_D2_tactix/D2BravoTitanium.rgn +006-B1381:fenix_D2_tactix/D2Charlie.gcd +006-B1381:fenix_D2_tactix/D2Delta.gcd +006-B1381:fenix_D2_tactix/D2DeltaPX.gcd +006-B1381:fenix_D2_tactix/D2DeltaS.gcd +006-B1381:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B1381:fenix_D2_tactix/DescentMk1.gcd +006-B1381:fenix_D2_tactix/fenix3HR.rgn +006-B1381:fenix_D2_tactix/Fenix3.rgn +006-B1381:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B1381:fenix_D2_tactix/fenix5.gcd +006-B1381:fenix_D2_tactix/fenix5Plus.gcd +006-B1381:fenix_D2_tactix/fenix5S.gcd +006-B1381:fenix_D2_tactix/fenix5SPlus.gcd +006-B1381:fenix_D2_tactix/fenix5X.gcd +006-B1381:fenix_D2_tactix/fenix5XPlus.gcd +006-B1381:fenix_D2_tactix/fenixChronos.gcd +006-B1381:fenix_D2_tactix/Instinct.gcd +006-B1381:forerunner/Forerunner230.gcd +006-B1381:forerunner/Forerunner235.gcd +006-B1381:forerunner/Forerunner245.gcd +006-B1381:forerunner/Forerunner245M.gcd +006-B1381:forerunner/Forerunner630.gcd +006-B1381:forerunner/Forerunner645.gcd +006-B1381:forerunner/Forerunner645Music.gcd +006-B1381:forerunner/Forerunner735XT.gcd +006-B1381:forerunner/Forerunner920XT.rgn +006-B1381:forerunner/Forerunner935.gcd +006-B1381:golf_baseball/ApproachS40.gcd +006-B1381:golf_baseball/ApproachS60.gcd +006-B1381:misc_marine/GarminNautix_regionfileonly_.rgn +006-B1381:vector/Vector-02.gcd +006-B1392:oem_sensor/GPS19xHVS.rgn +006-B1405:baseball_golf/ApproachG10.rgn +006-B1405:golf_baseball/ApproachG10.rgn +006-B1427:nuvi/Nuvi2580SouthAmerica_WebupdaterGCDfile_.gcd +006-B1445:nuvi/nuvi2495LTGLONASS_GCDFile_.gcd +006-B1452:baseball_golf/ApproachG6.gcd +006-B1452:golf_baseball/ApproachG6.gcd +006-B1469:baseball_golf/ApproachS3.gcd +006-B1469:baseball_golf/ApproachS4.gcd +006-B1469:golf_baseball/ApproachS3.gcd +006-B1469:golf_baseball/ApproachS4.gcd +006-B1470:baseball_golf/ApproachS3.gcd +006-B1470:baseball_golf/ApproachS4.gcd +006-B1470:golf_baseball/ApproachS3.gcd +006-B1470:golf_baseball/ApproachS4.gcd +006-B1473:zumo/zumo350_GCDFile_.gcd +006-B1473:zumo/zumo3x0_GCDFile_.gcd +006-B1475:fleet/fleet590NA.gcd +006-B1475:fleet/fleet590U.S..gcd +006-B1482:forerunner/Forerunner10.rgn +006-B1484:baseball_golf/ApproachS4APAC_GCDfile_.gcd +006-B1484:baseball_golf/ApproachS4.gcd +006-B1484:chipset_firmware/Type_M/GPSChipsetTypeM4.gcd +006-B1484:dashcam/DashCam10_DashCam20.rgn +006-B1484:dashcam/GDR33_GARMIN.bin_.bin +006-B1484:fenix_D2_tactix/fenix2.gcd +006-B1484:fenix_D2_tactix/fenix_D2_tactix.gcd +006-B1484:golf_baseball/ApproachS4APAC_GCDfile_.gcd +006-B1484:golf_baseball/ApproachS4.gcd +006-B1484:nuvi/Nuvi3590TWN_regionfileonly_.rgn +006-B1484:nuvi/Nuvi3595TWN_regionfileonly_.rgn +006-B1485:forerunner/ForeAthlete10J_regionfileonly_.rgn +006-B1485:forerunner/Forerunner10.rgn +006-B1490:oem_sensor/GLO.rgn +006-B1506:rino/NordicRino650_WebUpdater_.gcd +006-B1516:dezl/dezl760_GCDfile_.gcd +006-B1517:nuvi/nuvi27x7and27x8_GCDFile_.gcd +006-B1517:nuvi/nuvi27x7_GCDFile_.gcd +006-B1535:nuvi/Nuvi2580SouthAmerica_WebupdaterGCDfile_.gcd +006-B1541:zumo/BMWMotorradNavigatorV.gcd +006-B1541:zumo/BMWNavigatorV.gcd +006-B1545:astro_alpha/TT10.rgn +006-B1546:dezl/dezl570.gcd +006-B1546:drive/drive40_50.gcd +006-B1546:drive/drive60_70.gcd +006-B1546:drive/Drive61.gcd +006-B1546:drive/DriveandDriveSmart40_50.gcd +006-B1546:drive/DriveandDriveSmart51.gcd +006-B1546:drive/DriveandDriveSmart60_70.gcd +006-B1546:drive/DriveAssist50_520_USB.gcd +006-B1546:drive/DriveAssist50.gcd +006-B1546:drive/DriveAssist51.gcd +006-B1546:drive/Drive,DriveSmart60_70,andDriveTrack70.gcd +006-B1546:drive/Drive_DriveSmart60_70_andDriveTrack70.gcd +006-B1546:drive/DriveLuxe50.gcd +006-B1546:drive/DriveLuxe51.gcd +006-B1546:drive/DriveSmart61.gcd +006-B1546:nuvi/nuvi25x9C4.gcd +006-B1546:nuvi/nuvi25x9.gcd +006-B1546:nuvi/nuvi26x9C4.gcd +006-B1546:nuvi/nuvi26x9.gcd +006-B1546:nuvi/nuvi2xx7and2xx8C4.gcd +006-B1546:nuvi/nuvi2xx7and2xx8.gcd +006-B1546:nuvi/nuvi2xx7and2xx8_GCDFile_.gcd +006-B1546:rv/Camper_RV660.gcd +006-B1546:rv/RVandCamper770.gcd +006-B1546:rv/RV_Camper770.gcd +006-B1548:drive/SW,Captain.gcd +006-B1548:drive/SW,HondaPH.gcd +006-B1548:drive/SW,Storm.gcd +006-B1548:oem_sensor/Carmax310A_GCDFile_.gcd +006-B1548:oem_sensor/Carmax310V_GCDFile_.gcd +006-B1551:fenix_D2_tactix/fenix_D2.gcd +006-B1551:fenix_D2_tactix/fenix_D2_tactix.gcd +006-B1551:fenix_D2_tactix/fenix.gcd +006-B1552:fenix_D2_tactix/fenix_D2.gcd +006-B1552:fenix_D2_tactix/fenix_D2_tactix.gcd +006-B1552:fenix_D2_tactix/fenix.gcd +006-B1552:virb/VirbCHN.gcd +006-B1552:virb/VIRB.gcd +006-B1552:virb/VIRBXE.gcd +006-B1552:virb/VIRBX.gcd +006-B1555:edge/Edge200_210_Taiwan.gcd +006-B1561:edge/Edge510.gcd +006-B1562:astro_alpha/Alpha100.gcd +006-B1567:edge/Edge810.gcd +006-B1582:nuvi/nuvi2xx7and2xx8.gcd +006-B1582:nuvi/nuvi2xx7and2xx8_GCDFile_.gcd +006-B1582:nuvi/nuvi2xx7_GCDFile_.gcd +006-B1595:nuvi/nuvi140_150_GCD_File.gcd +006-B1595:nuvi/nuvi140_150_GCDFile_.gcd +006-B1597:baseball_golf/ApproachS3,APAC_GCDfile_.gcd +006-B1597:golf_baseball/ApproachS3,APAC_GCDfile_.gcd +006-B1598:baseball_golf/ApproachS3,APAC_GCDfile_.gcd +006-B1598:golf_baseball/ApproachS3,APAC_GCDfile_.gcd +006-B1603:nuvi/nuvi35x7and35x8_GCDFile_.gcd +006-B1603:nuvi/nuvi35x7_GCDFile_.gcd +006-B1613:nuvi/nuvi42and52_GCDfile_.gcd +006-B1613:nuvi/nuvi42and52_GCDFile_.gcd +006-B1613:nuvi/nuvix2andx4_GCDFile_.gcd +006-B1619:chipset_firmware/Type_M/GPSChipsetTypeM5.gcd +006-B1619:edge/Edge520.gcd +006-B1619:fenix_D2_tactix/EpixSystem_WebUpdater_.gcd +006-B1619:fenix_D2_tactix/fenixChronos.gcd +006-B1619:forerunner/Forerunner230.gcd +006-B1619:forerunner/Forerunner235.gcd +006-B1619:forerunner/Forerunner630.gcd +006-B1619:forerunner/Forerunner735XT.gcd +006-B1619:monterra/Montarra.update +006-B1619:monterra/Monterra.update +006-B1619:vivo/vivoactiveHR.gcd +006-B1620:astro_alpha/T5_TT15Mini.rgn +006-B1620:chipset_firmware/Type_M/GPSChipsetTypeM5.gcd +006-B1620:edge/Edge20.rgn +006-B1620:edge/Edge25.rgn +006-B1620:fenix_D2_tactix/D2Bravo.rgn +006-B1620:fenix_D2_tactix/D2BravoTitanium.rgn +006-B1620:fenix_D2_tactix/fenix3HR.rgn +006-B1620:fenix_D2_tactix/Fenix3.rgn +006-B1620:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B1620:forerunner/Forerunner920XT.rgn +006-B1620:vivo/vivoactive.rgn +006-B1620:vivo/Vivoactive.rgn +006-B1621:baseball_golf/ApproachS60.gcd +006-B1621:chipset_firmware/Type_M/GPSChipsetTypeM5_1621__420_USB.gcd +006-B1621:chipset_firmware/Type_M/GPSChipsetTypeM5_1621_.gcd +006-B1621:edge/Edge1030Bontrager.gcd +006-B1621:edge/Edge1030.gcd +006-B1621:edge/Edge520Plus.gcd +006-B1621:edge/Edge530.gcd +006-B1621:edge/Edge820.gcd +006-B1621:edge/Edge830.gcd +006-B1621:edge/EdgeExplore820.gcd +006-B1621:fenix_D2_tactix/D2Charlie.gcd +006-B1621:fenix_D2_tactix/D2Delta.gcd +006-B1621:fenix_D2_tactix/D2DeltaPX.gcd +006-B1621:fenix_D2_tactix/D2DeltaS.gcd +006-B1621:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B1621:fenix_D2_tactix/DescentMk1.gcd +006-B1621:fenix_D2_tactix/fenix5.gcd +006-B1621:fenix_D2_tactix/fenix5Plus.gcd +006-B1621:fenix_D2_tactix/fenix5S.gcd +006-B1621:fenix_D2_tactix/fenix5SPlus.gcd +006-B1621:fenix_D2_tactix/fenix5X.gcd +006-B1621:fenix_D2_tactix/fenix5XPlus.gcd +006-B1621:fenix_D2_tactix/Instinct.gcd +006-B1621:forerunner/Forerunner245.gcd +006-B1621:forerunner/Forerunner245M.gcd +006-B1621:forerunner/Forerunner645.gcd +006-B1621:forerunner/Forerunner645Music.gcd +006-B1621:forerunner/Forerunner935.gcd +006-B1621:golf_baseball/ApproachS60.gcd +006-B1621:gpsmap62_64_78/GPSMAP64sc.gcd +006-B1621:gpsmap62_64_78/GPSMAP64scSiteSurvey.gcd +006-B1621:rino/Rino7xxGMRS_WebUpdater_.gcd +006-B1621:rino/Rino7xx_WebUpdater_.gcd +006-B1621:virb/VirbUltra30.gcd +006-B1621:vivo/vivoactive3.gcd +006-B1623:baseball_golf/ApproachG10.rgn +006-B1623:baseball_golf/ApproachS10.rgn +006-B1623:baseball_golf/ApproachS20.rgn +006-B1623:edge/Edge20.rgn +006-B1623:edge/Edge25.rgn +006-B1623:forerunner/Forerunner25.rgn +006-B1623:forerunner/Forerunner620.rgn +006-B1623:golf_baseball/ApproachG10.rgn +006-B1623:golf_baseball/ApproachS10.rgn +006-B1623:golf_baseball/ApproachS20.rgn +006-B1624:baseball_golf/ApproachS5.gcd +006-B1624:baseball_golf/ApproachS6.gcd +006-B1624:chipset_firmware/Type_M/GPSChipsetTypeM426_Rec_.gcd +006-B1624:golf_baseball/ApproachS5.gcd +006-B1624:golf_baseball/ApproachS6.gcd +006-B1630:forerunner/Forerunner620.rgn +006-B1630:forerunner/Forerunner920XT.rgn +006-B1631:oem_sensor/Carmax310A_GCDFile_.gcd +006-B1631:oem_sensor/Carmax310V_GCDFile_.gcd +006-B1632:forerunner/Forerunner220.rgn +006-B1649:baseball_golf/ApproachS2.gcd +006-B1649:golf_baseball/ApproachS2.gcd +006-B1650:baseball_golf/ApproachS2.gcd +006-B1650:golf_baseball/ApproachS2.gcd +006-B1651:oregon/Oregon6x0_WebUpdater_.gcd +006-B1676:fenix_D2_tactix/FenixChina_GCDfile_.gcd +006-B1682:fenix_D2_tactix/FenixChina_GCDfile_.gcd +006-B1688:forerunner/ForeAthlete10J_regionfileonly_.rgn +006-B1689:baseball_golf/ApproachG10.rgn +006-B1689:baseball_golf/ApproachS20.rgn +006-B1689:baseball_golf/ApproachS6.gcd +006-B1689:baseball_golf/ApproachX40.rgn +006-B1689:forerunner/Forerunner15.rgn +006-B1689:forerunner/Forerunner220.rgn +006-B1689:forerunner/Forerunner225.rgn +006-B1689:forerunner/Forerunner25.rgn +006-B1689:forerunner/Forerunner35.rgn +006-B1689:forerunner/Forerunner620.rgn +006-B1689:golf_baseball/ApproachG10.rgn +006-B1689:golf_baseball/ApproachS20.rgn +006-B1689:golf_baseball/ApproachS6.gcd +006-B1689:golf_baseball/ApproachX40.rgn +006-B1689:vivo/vivosmartHRplus.rgn +006-B1692:quatix/quatix.gcd +006-B1693:quatix/quatix.gcd +006-B1696:astro_alpha/DC50.rgn +006-B1697:nuvi/nuvi55_56.gcd +006-B1697:nuvi/Nuvi55&56.gcd +006-B1697:nuvi/Nuvi55_56.gcd +006-B1708:fleet/fleet590EU.gcd +006-B1730:rv/rv760.gcd +006-B1730:rv/RV760.gcd +006-B1730:rv/RVandCamper760.gcd +006-B1735:virb/VirbCHN.gcd +006-B1735:virb/VIRB.gcd +006-B1736:edge/EdgeTouring.gcd +006-B1736:edge/EdgeTouring_GCDfile_.gcd +006-B1743:baseball_golf/ApproachS40.gcd +006-B1743:baseball_golf/ApproachS60.gcd +006-B1743:edge/HMD_regionfileonly_.rgn +006-B1743:edge/VariaVision.rgn +006-B1743:fenix_D2_tactix/D2Bravo.rgn +006-B1743:fenix_D2_tactix/D2BravoTitanium.rgn +006-B1743:fenix_D2_tactix/D2Charlie.gcd +006-B1743:fenix_D2_tactix/D2Delta.gcd +006-B1743:fenix_D2_tactix/D2DeltaPX.gcd +006-B1743:fenix_D2_tactix/D2DeltaS.gcd +006-B1743:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B1743:fenix_D2_tactix/DescentMk1.gcd +006-B1743:fenix_D2_tactix/fenix3HR.rgn +006-B1743:fenix_D2_tactix/Fenix3.rgn +006-B1743:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B1743:fenix_D2_tactix/Fenix3.zip +006-B1743:fenix_D2_tactix/fenix5.gcd +006-B1743:fenix_D2_tactix/fenix5Plus.gcd +006-B1743:fenix_D2_tactix/fenix5S.gcd +006-B1743:fenix_D2_tactix/fenix5SPlus.gcd +006-B1743:fenix_D2_tactix/fenix5X.gcd +006-B1743:fenix_D2_tactix/fenix5XPlus.gcd +006-B1743:fenix_D2_tactix/fenixChronos.gcd +006-B1743:fenix_D2_tactix/Instinct.gcd +006-B1743:forerunner/Forerunner230.gcd +006-B1743:forerunner/Forerunner235.gcd +006-B1743:forerunner/Forerunner245.gcd +006-B1743:forerunner/Forerunner245M.gcd +006-B1743:forerunner/Forerunner630.gcd +006-B1743:forerunner/Forerunner645.gcd +006-B1743:forerunner/Forerunner645Music.gcd +006-B1743:forerunner/Forerunner735XT.gcd +006-B1743:forerunner/Forerunner920XT.rgn +006-B1743:forerunner/Forerunner920XT.zip +006-B1743:forerunner/Forerunner935.gcd +006-B1743:forerunner/HRM-Tri.gcd +006-B1743:forerunner/HRM-Tri.rgn +006-B1743:golf_baseball/ApproachS40.gcd +006-B1743:golf_baseball/ApproachS60.gcd +006-B1743:misc_marine/GarminNautix_regionfileonly_.rgn +006-B1749:nuvi/nuvi65_66.gcd +006-B1749:nuvi/Nuvi65&66.gcd +006-B1749:nuvi/Nuvi65_66.gcd +006-B1749:nuvi/nuvi67_68.gcd +006-B1752:baseball_golf/ApproachS40.gcd +006-B1752:baseball_golf/ApproachS60.gcd +006-B1752:edge/HMD_regionfileonly_.rgn +006-B1752:edge/VariaVision.rgn +006-B1752:fenix_D2_tactix/D2Bravo.rgn +006-B1752:fenix_D2_tactix/D2BravoTitanium.rgn +006-B1752:fenix_D2_tactix/D2Charlie.gcd +006-B1752:fenix_D2_tactix/D2Delta.gcd +006-B1752:fenix_D2_tactix/D2DeltaPX.gcd +006-B1752:fenix_D2_tactix/D2DeltaS.gcd +006-B1752:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B1752:fenix_D2_tactix/DescentMk1.gcd +006-B1752:fenix_D2_tactix/fenix3HR.rgn +006-B1752:fenix_D2_tactix/Fenix3.rgn +006-B1752:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B1752:fenix_D2_tactix/Fenix3.zip +006-B1752:fenix_D2_tactix/fenix5.gcd +006-B1752:fenix_D2_tactix/fenix5Plus.gcd +006-B1752:fenix_D2_tactix/fenix5S.gcd +006-B1752:fenix_D2_tactix/fenix5SPlus.gcd +006-B1752:fenix_D2_tactix/fenix5X.gcd +006-B1752:fenix_D2_tactix/fenix5XPlus.gcd +006-B1752:fenix_D2_tactix/fenixChronos.gcd +006-B1752:fenix_D2_tactix/Instinct.gcd +006-B1752:forerunner/Forerunner220.rgn +006-B1752:forerunner/Forerunner230.gcd +006-B1752:forerunner/Forerunner235.gcd +006-B1752:forerunner/Forerunner245.gcd +006-B1752:forerunner/Forerunner245M.gcd +006-B1752:forerunner/Forerunner620.rgn +006-B1752:forerunner/Forerunner630.gcd +006-B1752:forerunner/Forerunner645.gcd +006-B1752:forerunner/Forerunner645Music.gcd +006-B1752:forerunner/Forerunner735XT.gcd +006-B1752:forerunner/Forerunner920XT.rgn +006-B1752:forerunner/Forerunner920XT.zip +006-B1752:forerunner/Forerunner935.gcd +006-B1752:forerunner/HRM-Run.gcd +006-B1752:forerunner/HRM-Run.rgn +006-B1752:golf_baseball/ApproachS40.gcd +006-B1752:golf_baseball/ApproachS60.gcd +006-B1752:misc_marine/GarminNautix_regionfileonly_.rgn +006-B1758:nuvi/nuvi25x9.gcd +006-B1765:forerunner/Forerunner920XT.rgn +006-B1772:nuvi/nuvi26x9.gcd +006-B1796:zumo/zumo590.gcd +006-B1811:baseball_golf/ApproachS4.gcd +006-B1811:golf_baseball/ApproachS4.gcd +006-B1815:drive/SW,Captain.gcd +006-B1815:drive/SW,HondaPH.gcd +006-B1815:drive/SW,Storm.gcd +006-B1815:oem_sensor/Carmax310A_GCDFile_.gcd +006-B1815:oem_sensor/Carmax310V_GCDFile_.gcd +006-B1826:oem_sensor/Carmax310A_GCDFile_.gcd +006-B1826:oem_sensor/Carmax310V_GCDFile_.gcd +006-B1836:edge/Edge1000.gcd +006-B1837:vivo/vivofit.rgn +006-B1842:baseball_golf/ApproachG7.gcd +006-B1842:golf_baseball/ApproachG7.gcd +006-B1843:oregon/Oregon6xxSystem,SEA_GCDfile_.gcd +006-B1850:forerunner/Forerunner220.rgn +006-B1850:forerunner/Forerunner620.rgn +006-B1851:forerunner/Forerunner220.rgn +006-B1851:forerunner/Forerunner620.rgn +006-B1859:gpsmap62_64_78/GPSMAP64_WebUpdater_.gcd +006-B1884:nuvi/nuvi2798.gcd +006-B1891:baseball_golf/ApproachS2J_GCDfile_.gcd +006-B1891:golf_baseball/ApproachS2J_GCDfile_.gcd +006-B1892:baseball_golf/ApproachS2J_GCDfile_.gcd +006-B1892:golf_baseball/ApproachS2J_GCDfile_.gcd +006-B1903:forerunner/Forerunner15.rgn +006-B1907:vivo/vivoactive.rgn +006-B1907:vivo/Vivoactive.rgn +006-B1908:vivo/vivoactive.rgn +006-B1908:vivo/Vivoactive.rgn +006-B1909:fenix_D2_tactix/D2Bravo.rgn +006-B1909:fenix_D2_tactix/D2BravoTitanium.rgn +006-B1909:fenix_D2_tactix/fenix3HR.rgn +006-B1909:fenix_D2_tactix/Fenix3.rgn +006-B1909:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B1909:vivo/vivoactive.rgn +006-B1909:vivo/Vivoactive.rgn +006-B1909:vivo/vivosmartHRplus.rgn +006-B1909:vivo/vivosmart_HR.rgn +006-B1909:vivo/vivosmartHR.rgn +006-B1917:baseball_golf/ApproachG30.gcd +006-B1917:baseball_golf/ApproachG8.gcd +006-B1917:golf_baseball/ApproachG30.gcd +006-B1917:golf_baseball/ApproachG8.gcd +006-B1925:baseball_golf/ApproachS5.gcd +006-B1925:baseball_golf/ApproachS6.gcd +006-B1925:golf_baseball/ApproachS5.gcd +006-B1925:golf_baseball/ApproachS6.gcd +006-B1927:edge/Edge1000.gcd +006-B1927:edge/EdgeExplore1000.gcd +006-B1932:nuvi/nuvi27x9_7g0.gcd +006-B1932:nuvi/nuvi27x9.gcd +006-B1936:baseball_golf/ApproachS6.gcd +006-B1936:golf_baseball/ApproachS6.gcd +006-B1939:virb/VirbCHN.gcd +006-B1942:forerunner/Forerunner920XT.rgn +006-B1947:nuvi/nuvi25x9C4.gcd +006-B1947:nuvi/nuvi25x9.gcd +006-B1948:nuvi/nuvi26x9C4.gcd +006-B1955:vivo/vivosmartAPAC.rgn +006-B1955:vivo/vivosmart.rgn +006-B1956:vivo/vivosmart.rgn +006-B1967:fenix_D2_tactix/fenix2.gcd +006-B1968:fenix_D2_tactix/fenix2.gcd +006-B1969:forerunner/Forerunner15.rgn +006-B1987:fenix_D2_tactix/EpixSystem_WebUpdater_.gcd +006-B1988:fenix_D2_tactix/EpixSystem_WebUpdater_.gcd +006-B1999:baseball_golf/ApproachS2APAC_GCDfile_.gcd +006-B1999:golf_baseball/ApproachS2APAC_GCDfile_.gcd +006-B2000:baseball_golf/ApproachS2APAC_GCDfile_.gcd +006-B2000:golf_baseball/ApproachS2APAC_GCDfile_.gcd +006-B2002:dezl/dezl770.gcd +006-B2003:dezl/dezl570.gcd +006-B2005:vivo/vivosmartAPAC.rgn +006-B2005:vivo/vivosmart.rgn +006-B2030:drive/SW,Captain.gcd +006-B2030:drive/SW,HondaPH.gcd +006-B2030:drive/SW,Storm.gcd +006-B2030:oem_sensor/Carmax310A_GCDFile_.gcd +006-B2030:oem_sensor/Carmax310V_GCDFile_.gcd +006-B2032:astro_alpha/T5_TT15.exe +006-B2032:astro_alpha/T5,TT15.rgn +006-B2032:astro_alpha/T5_TT15.rgn +006-B2035:baseball_golf/ApproachS4APAC_GCDfile_.gcd +006-B2035:golf_baseball/ApproachS4APAC_GCDfile_.gcd +006-B2036:baseball_golf/ApproachS4APAC_GCDfile_.gcd +006-B2036:golf_baseball/ApproachS4APAC_GCDfile_.gcd +006-B2043:nuvi/nuviCam.gcd +006-B2044:dashcam/nuviCamCameraFirmware.gcd +006-B2044:nuvi/nuviCamCameraFirmware.gcd +006-B2047:astro_alpha/T5_TT15Mini.rgn +006-B2047:edge/Edge25.rgn +006-B2047:edge/HMD_regionfileonly_.rgn +006-B2047:edge/VariaVision.rgn +006-B2047:forerunner/Forerunner225.rgn +006-B2047:forerunner/Forerunner25.rgn +006-B2047:forerunner/Forerunner30.rgn +006-B2047:forerunner/Forerunner35.rgn +006-B2047:forerunner/Forerunner920XT.rgn +006-B2047:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2050:fenix_D2_tactix/Fenix3.rgn +006-B2050:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2051:fenix_D2_tactix/D2Bravo.rgn +006-B2051:fenix_D2_tactix/Fenix3.rgn +006-B2051:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2059:vivo/vivoactive.rgn +006-B2059:vivo/Vivoactive.rgn +006-B2067:edge/Edge520.gcd +006-B2077:nuvi/nuvi2xx7and2xx8C4.gcd +006-B2079:baseball_golf/ApproachS40.gcd +006-B2079:baseball_golf/ApproachS60.gcd +006-B2079:edge/HMD_regionfileonly_.rgn +006-B2079:edge/VariaVision.rgn +006-B2079:fenix_D2_tactix/D2Bravo.rgn +006-B2079:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2079:fenix_D2_tactix/D2Charlie.gcd +006-B2079:fenix_D2_tactix/D2Delta.gcd +006-B2079:fenix_D2_tactix/D2DeltaPX.gcd +006-B2079:fenix_D2_tactix/D2DeltaS.gcd +006-B2079:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2079:fenix_D2_tactix/DescentMk1.gcd +006-B2079:fenix_D2_tactix/fenix3HR.rgn +006-B2079:fenix_D2_tactix/Fenix3.rgn +006-B2079:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2079:fenix_D2_tactix/fenix5.gcd +006-B2079:fenix_D2_tactix/fenix5Plus.gcd +006-B2079:fenix_D2_tactix/fenix5S.gcd +006-B2079:fenix_D2_tactix/fenix5SPlus.gcd +006-B2079:fenix_D2_tactix/fenix5X.gcd +006-B2079:fenix_D2_tactix/fenix5XPlus.gcd +006-B2079:fenix_D2_tactix/fenixChronos.gcd +006-B2079:fenix_D2_tactix/Instinct.gcd +006-B2079:forerunner/Forerunner230.gcd +006-B2079:forerunner/Forerunner235.gcd +006-B2079:forerunner/Forerunner245.gcd +006-B2079:forerunner/Forerunner245M.gcd +006-B2079:forerunner/Forerunner630.gcd +006-B2079:forerunner/Forerunner645.gcd +006-B2079:forerunner/Forerunner645Music.gcd +006-B2079:forerunner/Forerunner735XT.gcd +006-B2079:forerunner/Forerunner920XT.rgn +006-B2079:forerunner/Forerunner935.gcd +006-B2079:golf_baseball/ApproachS40.gcd +006-B2079:golf_baseball/ApproachS60.gcd +006-B2079:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2079:vector/VectorS-02.gcd +006-B2087:nuvi/nuvi57_58.gcd +006-B2088:nuvi/nuvi67_68.gcd +006-B2108:fenix_D2_tactix/D2Bravo.rgn +006-B2108:fenix_D2_tactix/Fenix3.rgn +006-B2108:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2127:oregon/Oregon6x0_WebUpdater_.gcd +006-B2127:oregon/Oregon7xx_WebUpdater_.gcd +006-B2127:rino/Rino7xxGMRS_WebUpdater_.gcd +006-B2127:rino/Rino7xx_WebUpdater_.gcd +006-B2128:etrex/eTrex_Touch/eTrexTouch25_35_Webupdater_.gcd +006-B2128:misc_marine/gpsmap276/GPSMAP276cx.gcd +006-B2129:drive/SW,HondaPH.gcd +006-B2134:virb/VIRBXE.gcd +006-B2134:virb/VIRBX.gcd +006-B2135:vivo/vivosmartAPAC.rgn +006-B2140:etrex/eTrex_Touch/eTrexTouch25_35_Webupdater_.gcd +006-B2141:dezl/dezlCam.gcd +006-B2147:edge/Edge25.rgn +006-B2148:forerunner/Forerunner25.rgn +006-B2150:vivo/vivofit2.rgn +006-B2151:forerunner/Forerunner225.rgn +006-B2153:forerunner/Forerunner225.rgn +006-B2156:forerunner/Forerunner630.gcd +006-B2157:forerunner/Forerunner230.gcd +006-B2158:forerunner/Forerunner735XT.gcd +006-B2159:forerunner/Forerunner230.gcd +006-B2159:forerunner/Forerunner235.gcd +006-B2159:forerunner/Forerunner630.gcd +006-B2159:forerunner/ForerunnerDisplayA1Firmware.gcd +006-B2161:baseball_golf/ApproachS40.gcd +006-B2161:baseball_golf/ApproachS60.gcd +006-B2161:edge/HMD_regionfileonly_.rgn +006-B2161:edge/VariaVision.rgn +006-B2161:fenix_D2_tactix/D2Bravo.rgn +006-B2161:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2161:fenix_D2_tactix/D2Charlie.gcd +006-B2161:fenix_D2_tactix/D2Delta.gcd +006-B2161:fenix_D2_tactix/D2DeltaPX.gcd +006-B2161:fenix_D2_tactix/D2DeltaS.gcd +006-B2161:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2161:fenix_D2_tactix/DescentMk1.gcd +006-B2161:fenix_D2_tactix/fenix3HR.rgn +006-B2161:fenix_D2_tactix/Fenix3.rgn +006-B2161:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2161:fenix_D2_tactix/fenix5.gcd +006-B2161:fenix_D2_tactix/fenix5Plus.gcd +006-B2161:fenix_D2_tactix/fenix5S.gcd +006-B2161:fenix_D2_tactix/fenix5SPlus.gcd +006-B2161:fenix_D2_tactix/fenix5X.gcd +006-B2161:fenix_D2_tactix/fenix5XPlus.gcd +006-B2161:fenix_D2_tactix/fenixChronos.gcd +006-B2161:fenix_D2_tactix/Instinct.gcd +006-B2161:forerunner/Forerunner230.gcd +006-B2161:forerunner/Forerunner235.gcd +006-B2161:forerunner/Forerunner245.gcd +006-B2161:forerunner/Forerunner245M.gcd +006-B2161:forerunner/Forerunner630.gcd +006-B2161:forerunner/Forerunner645.gcd +006-B2161:forerunner/Forerunner645Music.gcd +006-B2161:forerunner/Forerunner735XT.gcd +006-B2161:forerunner/Forerunner920XT.rgn +006-B2161:forerunner/Forerunner935.gcd +006-B2161:golf_baseball/ApproachS40.gcd +006-B2161:golf_baseball/ApproachS60.gcd +006-B2161:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2161:vector/Vector2-02.gcd +006-B2162:baseball_golf/ApproachS40.gcd +006-B2162:baseball_golf/ApproachS60.gcd +006-B2162:edge/HMD_regionfileonly_.rgn +006-B2162:edge/VariaVision.rgn +006-B2162:fenix_D2_tactix/D2Bravo.rgn +006-B2162:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2162:fenix_D2_tactix/D2Charlie.gcd +006-B2162:fenix_D2_tactix/D2Delta.gcd +006-B2162:fenix_D2_tactix/D2DeltaPX.gcd +006-B2162:fenix_D2_tactix/D2DeltaS.gcd +006-B2162:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2162:fenix_D2_tactix/DescentMk1.gcd +006-B2162:fenix_D2_tactix/fenix3HR.rgn +006-B2162:fenix_D2_tactix/Fenix3.rgn +006-B2162:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2162:fenix_D2_tactix/fenix5.gcd +006-B2162:fenix_D2_tactix/fenix5Plus.gcd +006-B2162:fenix_D2_tactix/fenix5S.gcd +006-B2162:fenix_D2_tactix/fenix5SPlus.gcd +006-B2162:fenix_D2_tactix/fenix5X.gcd +006-B2162:fenix_D2_tactix/fenix5XPlus.gcd +006-B2162:fenix_D2_tactix/fenixChronos.gcd +006-B2162:fenix_D2_tactix/Instinct.gcd +006-B2162:forerunner/Forerunner230.gcd +006-B2162:forerunner/Forerunner235.gcd +006-B2162:forerunner/Forerunner245.gcd +006-B2162:forerunner/Forerunner245M.gcd +006-B2162:forerunner/Forerunner630.gcd +006-B2162:forerunner/Forerunner645.gcd +006-B2162:forerunner/Forerunner645Music.gcd +006-B2162:forerunner/Forerunner735XT.gcd +006-B2162:forerunner/Forerunner920XT.rgn +006-B2162:forerunner/Forerunner935.gcd +006-B2162:golf_baseball/ApproachS40.gcd +006-B2162:golf_baseball/ApproachS60.gcd +006-B2162:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2162:vector/Vector2S-02.gcd +006-B2172:virb/VIRBXE.gcd +006-B2175:baseball_golf/TruSwing.rgn +006-B2175:golf_baseball/TruSwing.rgn +006-B2182:baseball_golf/ApproachS5.gcd +006-B2182:golf_baseball/ApproachS5.gcd +006-B2190:astro_alpha/T5_TT15Mini.rgn +006-B2196:edge/Edge820.gcd +006-B2196:edge/EdgeExplore820.gcd +006-B2196:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2196:fenix_D2_tactix/D2Charlie.gcd +006-B2196:fenix_D2_tactix/D2Delta.gcd +006-B2196:fenix_D2_tactix/D2DeltaPX.gcd +006-B2196:fenix_D2_tactix/D2DeltaS.gcd +006-B2196:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2196:fenix_D2_tactix/DescentMk1.gcd +006-B2196:fenix_D2_tactix/fenix3HR.rgn +006-B2196:fenix_D2_tactix/fenix5.gcd +006-B2196:fenix_D2_tactix/fenix5Plus.gcd +006-B2196:fenix_D2_tactix/fenix5S.gcd +006-B2196:fenix_D2_tactix/fenix5SPlus.gcd +006-B2196:fenix_D2_tactix/fenix5X.gcd +006-B2196:fenix_D2_tactix/fenix5XPlus.gcd +006-B2196:forerunner/Forerunner245M.gcd +006-B2196:forerunner/Forerunner630.gcd +006-B2196:forerunner/Forerunner645.gcd +006-B2196:forerunner/Forerunner645Music.gcd +006-B2196:forerunner/Forerunner935.gcd +006-B2196:forerunner/Wi-FiA1Firmware.gcd +006-B2197:forerunner/Forerunner630.gcd +006-B2197:forerunner/Forerunner630Touchscreen.gcd +006-B2198:dashcam/index.html +006-B2198:dashcam/index.html?C=D;O=A +006-B2198:dashcam/index.html?C=D;O=D +006-B2198:dashcam/index.html?C=M;O=A +006-B2198:dashcam/index.html?C=M;O=D +006-B2198:dashcam/index.html?C=N;O=A +006-B2198:dashcam/index.html?C=N;O=D +006-B2198:dashcam/index.html?C=S;O=A +006-B2198:dashcam/index.html?C=S;O=D +006-B2199:dashcam/index.html +006-B2199:dashcam/index.html?C=D;O=A +006-B2199:dashcam/index.html?C=D;O=D +006-B2199:dashcam/index.html?C=M;O=A +006-B2199:dashcam/index.html?C=M;O=D +006-B2199:dashcam/index.html?C=N;O=A +006-B2199:dashcam/index.html?C=N;O=D +006-B2199:dashcam/index.html?C=S;O=A +006-B2199:dashcam/index.html?C=S;O=D +006-B2200:gps7x/gps72/GPS73_GCDfile_.gcd +006-B2200:misc_marine/GPS73_GCDfile_.gcd +006-B2201:garmin/GPS12H_GCDfile_.gcd +006-B2201:misc_marine/GPS12H_GCDfile_.gcd +006-B2202:baseball_golf/TruSwing.rgn +006-B2202:golf_baseball/TruSwing.rgn +006-B2204:edge/EdgeExplore1000.gcd +006-B2225:edge/VariaRadarTailLight.gcd +006-B2228:forerunner/Forerunner225.rgn +006-B2232:drive/SW,Captain.gcd +006-B2233:drive/SW,Captain.gcd +006-B2235:drive/SW,Storm.gcd +006-B2236:drive/SW,Storm.gcd +006-B2237:rv/Camper_RV660.gcd +006-B2238:edge/Edge20.rgn +006-B2250:etrex/eTrex_10_20_30/eTrex20x_30x_Webupdater_.gcd +006-B2262:fenix_D2_tactix/D2Bravo.rgn +006-B2266:baseball_golf/ApproachS20.rgn +006-B2266:golf_baseball/ApproachS20.rgn +006-B2273:astro_alpha/Astro430_Alpha50.gcd +006-B2273:astro_alpha/Astro430.gcd +006-B2273:astro_alpha/Astro900.gcd +006-B2273:astro_alpha/Atemos50.gcd +006-B2273:etrex/eTrex_Touch/eTrexTouch25_35_Webupdater_.gcd +006-B2273:fenix_D2_tactix/EpixSystem_WebUpdater_.gcd +006-B2273:forerunner/ANT_BLEN2Firmware.gcd +006-B2273:vivo/ANT_BLEN2Firmware.gcd +006-B2292:baseball_golf/ApproachX40.rgn +006-B2292:golf_baseball/ApproachX40.rgn +006-B2299:montana/Montana610_680.gcd +006-B2327:baseball_golf/ApproachS40.gcd +006-B2327:baseball_golf/ApproachS60.gcd +006-B2327:fenix_D2_tactix/D2Bravo.rgn +006-B2327:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2327:fenix_D2_tactix/D2Charlie.gcd +006-B2327:fenix_D2_tactix/D2Delta.gcd +006-B2327:fenix_D2_tactix/D2DeltaPX.gcd +006-B2327:fenix_D2_tactix/D2DeltaS.gcd +006-B2327:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2327:fenix_D2_tactix/DescentMk1.gcd +006-B2327:fenix_D2_tactix/fenix3HR.rgn +006-B2327:fenix_D2_tactix/Fenix3.rgn +006-B2327:fenix_D2_tactix/fenix3_tactixBravo_quatix3.rgn +006-B2327:fenix_D2_tactix/fenix5.gcd +006-B2327:fenix_D2_tactix/fenix5Plus.gcd +006-B2327:fenix_D2_tactix/fenix5S.gcd +006-B2327:fenix_D2_tactix/fenix5SPlus.gcd +006-B2327:fenix_D2_tactix/fenix5X.gcd +006-B2327:fenix_D2_tactix/fenix5XPlus.gcd +006-B2327:fenix_D2_tactix/fenixChronos.gcd +006-B2327:fenix_D2_tactix/Instinct.gcd +006-B2327:forerunner/Forerunner230.gcd +006-B2327:forerunner/Forerunner235.gcd +006-B2327:forerunner/Forerunner245.gcd +006-B2327:forerunner/Forerunner245M.gcd +006-B2327:forerunner/Forerunner630.gcd +006-B2327:forerunner/Forerunner645.gcd +006-B2327:forerunner/Forerunner645Music.gcd +006-B2327:forerunner/Forerunner735XT.gcd +006-B2327:forerunner/Forerunner920XT.rgn +006-B2327:forerunner/Forerunner935.gcd +006-B2327:forerunner/HRM4-Run.gcd +006-B2327:forerunner/HRM4-Run.rgn +006-B2327:golf_baseball/ApproachS40.gcd +006-B2327:golf_baseball/ApproachS60.gcd +006-B2337:vivo/vivoactiveHR.gcd +006-B2338:vivo/vivoactiveHR.gcd +006-B2338:vivo/vivoactiveHRSensorHub.gcd +006-B2339:vivo/vivoactiveHR.gcd +006-B2340:vivo/ShiftDisplay.gcd +006-B2340:vivo/vivoactiveHRDisplay.gcd +006-B2340:vivo/vivoactiveHR.gcd +006-B2347:vivo/vivosmartHRplus.rgn +006-B2348:vivo/vivosmart_HR.rgn +006-B2348:vivo/vivosmartHR.rgn +006-B2358:vivo/vivosmart_HR.rgn +006-B2358:vivo/vivosmartHR.rgn +006-B2368:vivo/Vivomove_regionfileonly_.rgn +006-B2368:vivo/Vivomove.rgn +006-B2369:forerunner/Forerunner235.gcd +006-B2369:forerunner/Forerunner235SensorHub.gcd +006-B2392:fenix_D2_tactix/fenixChronos,Display.gcd +006-B2392:fenix_D2_tactix/fenixChronos.gcd +006-B2393:fenix_D2_tactix/fenixChronos.gcd +006-B2393:fenix_D2_tactix/fenixChronos,SensorHub.gcd +006-B2398:edge/HMD_regionfileonly_.rgn +006-B2398:edge/VariaVision.rgn +006-B2398:fenix_D2_tactix/Instinct.gcd +006-B2398:forerunner/Forerunner245.gcd +006-B2398:forerunner/Forerunner245M.gcd +006-B2403:baseball_golf/ApproachS20.rgn +006-B2403:golf_baseball/ApproachS20.rgn +006-B2405:baseball_golf/ApproachX40.rgn +006-B2405:golf_baseball/ApproachX40.rgn +006-B2406:vivo/vivofit3.rgn +006-B2413:fenix_D2_tactix/fenix3HR.rgn +006-B2414:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2414:fenix_D2_tactix/fenix3HR.rgn +006-B2415:fenix_D2_tactix/fenix3HR.rgn +006-B2415:fenix_D2_tactix/fenix3HR,SensorHub.gcd +006-B2417:virb/VIRB360.gcd +006-B2417:virb/VirbUltra30.gcd +006-B2423:fenix_D2_tactix/fenixChronos.gcd +006-B2423:forerunner/ANT_BLEN3Firmware.gcd +006-B2423:forerunner/Forerunner230.gcd +006-B2423:forerunner/Forerunner235.gcd +006-B2423:forerunner/Forerunner630.gcd +006-B2423:forerunner/Forerunner735XT.gcd +006-B2423:vivo/ANT_BLEN3Firmware.gcd +006-B2423:vivo/vivoactiveHR.gcd +006-B2431:forerunner/Forerunner235.gcd +006-B2432:fenix_D2_tactix/fenixChronos.gcd +006-B2442:astro_alpha/Astro430_Alpha50.gcd +006-B2442:astro_alpha/Astro430.gcd +006-B2444:rino/Rino7xx_WebUpdater_.gcd +006-B2447:edge/HMD_regionfileonly_.rgn +006-B2447:edge/VariaVision.rgn +006-B2447:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2450:astro_alpha/DeltaSmart.rgn +006-B2450:delta/DeltaSmart.rgn +006-B2479:misc_marine/gpsmap276/GPSMAP276cx.gcd +006-B2495:drive/DriveAssist50CameraFW.gcd +006-B2496:misc_marine/GarminNautix_regionfileonly_.rgn +006-B2503:forerunner/Forerunner35.rgn +006-B2510:forerunner/Forerunner735XT.gcd +006-B2511:forerunner/Forerunner735XT.gcd +006-B2512:oregon/Oregon7xx_WebUpdater_.gcd +006-B2527:baseball_golf/ApproachX40.rgn +006-B2527:golf_baseball/ApproachX40.rgn +006-B2527:vivo/vivosmartHRplus.rgn +006-B2530:edge/Edge520Plus.gcd +006-B2530:edge/Edge820.gcd +006-B2530:edge/EdgeExplore820.gcd +006-B2531:edge/EdgeExplore820.gcd +006-B2544:fenix_D2_tactix/fenix5S.gcd +006-B2545:dashcam/index.html +006-B2545:dashcam/index.html?C=D;O=A +006-B2545:dashcam/index.html?C=D;O=D +006-B2545:dashcam/index.html?C=M;O=A +006-B2545:dashcam/index.html?C=M;O=D +006-B2545:dashcam/index.html?C=N;O=A +006-B2545:dashcam/index.html?C=N;O=D +006-B2545:dashcam/index.html?C=S;O=A +006-B2545:dashcam/index.html?C=S;O=D +006-B2546:dashcam/index.html +006-B2546:dashcam/index.html?C=D;O=A +006-B2546:dashcam/index.html?C=D;O=D +006-B2546:dashcam/index.html?C=M;O=A +006-B2546:dashcam/index.html?C=M;O=D +006-B2546:dashcam/index.html?C=N;O=A +006-B2546:dashcam/index.html?C=N;O=D +006-B2546:dashcam/index.html?C=S;O=A +006-B2546:dashcam/index.html?C=S;O=D +006-B2547:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2550:edge/Edge820.gcd +006-B2550:edge/EdgeExplore820.gcd +006-B2560:fenix_D2_tactix/D2BravoTitanium.rgn +006-B2560:fenix_D2_tactix/D2BravoTitanium,SensorHub.gcd +006-B2567:fenix_D2_tactix/Instinct.gcd +006-B2567:forerunner/Forerunner245.gcd +006-B2567:forerunner/Forerunner245M.gcd +006-B2582:baseball_golf/ApproachX10.rgn +006-B2582:golf_baseball/ApproachX10.rgn +006-B2583:astro_alpha/DeltaSmart.rgn +006-B2583:delta/DeltaSmart.rgn +006-B2584:zumo/BMWMotorradNavigatorVI.gcd +006-B2593:baseball_golf/ApproachS40.gcd +006-B2593:baseball_golf/ApproachS60.gcd +006-B2593:fenix_D2_tactix/D2Charlie.gcd +006-B2593:fenix_D2_tactix/D2Delta.gcd +006-B2593:fenix_D2_tactix/D2DeltaPX.gcd +006-B2593:fenix_D2_tactix/D2DeltaS.gcd +006-B2593:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2593:fenix_D2_tactix/DescentMk1.gcd +006-B2593:fenix_D2_tactix/fenix5.gcd +006-B2593:fenix_D2_tactix/fenix5Plus.gcd +006-B2593:fenix_D2_tactix/fenix5S.gcd +006-B2593:fenix_D2_tactix/fenix5SPlus.gcd +006-B2593:fenix_D2_tactix/fenix5X.gcd +006-B2593:fenix_D2_tactix/fenix5XPlus.gcd +006-B2593:fenix_D2_tactix/fenixChronos.gcd +006-B2593:fenix_D2_tactix/Instinct.gcd +006-B2593:forerunner/Forerunner245.gcd +006-B2593:forerunner/Forerunner245M.gcd +006-B2593:forerunner/Forerunner645.gcd +006-B2593:forerunner/Forerunner645Music.gcd +006-B2593:forerunner/Forerunner735XT.gcd +006-B2593:forerunner/Forerunner935.gcd +006-B2593:golf_baseball/ApproachS40.gcd +006-B2593:golf_baseball/ApproachS60.gcd +006-B2604:fenix_D2_tactix/fenix5X.gcd +006-B2605:fenix_D2_tactix/fenix5X,Display.gcd +006-B2605:fenix_D2_tactix/fenix5X_Display.gcd +006-B2605:fenix_D2_tactix/fenix5X.gcd +006-B2606:vivo/vivofitjr.rgn +006-B2607:drive/DriveSmart61andCamper_RV770TouchscreenConfiguration_80.gcd +006-B2614:gpsmap62_64_78/GPSMAP64sc.gcd +006-B2622:vivo/vivosmart3.gcd +006-B2623:vivo/vivosport.gcd +006-B2632:astro_alpha/DeltaSmart.rgn +006-B2632:delta/DeltaSmart.rgn +006-B2641:xero/XeroA1_i_.gcd +006-B2655:forerunner/FR235SensorHub_GCDfileonly_.gcd +006-B2656:baseball_golf/ApproachS60.gcd +006-B2656:golf_baseball/ApproachS60.gcd +006-B2657:baseball_golf/ApproachS60,Display.gcd +006-B2657:baseball_golf/ApproachS60_Display.gcd +006-B2657:baseball_golf/ApproachS60.gcd +006-B2657:golf_baseball/ApproachS60,Display.gcd +006-B2657:golf_baseball/ApproachS60_Display.gcd +006-B2657:golf_baseball/ApproachS60.gcd +006-B2659:vivo/vivosmart3.gcd +006-B2659:vivo/vivosmart3SensorHub.gcd +006-B2660:vivo/vivosport.gcd +006-B2660:vivo/vivosportSensorHub.gcd +006-B2661:fenix_D2_tactix/fenix5.gcd +006-B2661:fenix_D2_tactix/fenix5,SensorHub.gcd +006-B2661:fenix_D2_tactix/fenix5_SensorHub.gcd +006-B2662:fenix_D2_tactix/fenix5S.gcd +006-B2662:fenix_D2_tactix/fenix5S,SensorHub.gcd +006-B2662:fenix_D2_tactix/fenix5S_SensorHub.gcd +006-B2663:fenix_D2_tactix/D2Charlie.gcd +006-B2663:fenix_D2_tactix/fenix5X.gcd +006-B2663:fenix_D2_tactix/fenix5X,SensorHub.gcd +006-B2663:fenix_D2_tactix/fenix5X_SensorHub.gcd +006-B2664:fenix_D2_tactix/DescentMk1.gcd +006-B2664:fenix_D2_tactix/DescentMk1,SensorHub.gcd +006-B2664:fenix_D2_tactix/DescentMk1_SensorHub.gcd +006-B2665:forerunner/Forerunner935.gcd +006-B2665:forerunner/Forerunner935,SensorHub.gcd +006-B2666:vivo/vivoactive3.gcd +006-B2697:fenix_D2_tactix/fenix5.gcd +006-B2699:vivo/vivoactive3.gcd +006-B2699:vivo/Vivoactive3t.gcd +006-B2700:vivo/vivoactive3.gcd +006-B2708:baseball_golf/ApproachS60.gcd +006-B2708:golf_baseball/ApproachS60.gcd +006-B2713:edge/Edge1030.gcd +006-B2713:edge/EdgeExplore.gcd +006-B2721:edge/Edge1030Bontrager.gcd +006-B2721:edge/Edge1030.gcd +006-B2752:baseball_golf/ApproachS60.gcd +006-B2752:baseball_golf/ApproachS60,SensorHub.gcd +006-B2752:golf_baseball/ApproachS60.gcd +006-B2752:golf_baseball/ApproachS60,SensorHub.gcd +006-B2771:baseball_golf/Impact.rgn +006-B2771:golf_baseball/Impact.rgn +006-B2772:vivo/vivomoveHR.gcd +006-B2773:vivo/vivomoveHR.gcd +006-B2773:vivo/vivomoveHRSensorHub.gcd +006-B2776:baseball_golf/ApproachG30.gcd +006-B2776:baseball_golf/ApproachG30TouchscreenFirmware.gcd +006-B2776:golf_baseball/ApproachG30.gcd +006-B2776:golf_baseball/ApproachG30TouchscreenFirmware.gcd +006-B2777:rino/Rino700_WebUpdater_.gcd +006-B2778:chipset_firmware/Type_M/GPSChipsetTypeM4_2778_.gcd +006-B2779:baseball_golf/ApproachG30.gcd +006-B2779:baseball_golf/ApproachS60.gcd +006-B2779:baseball_golf/ApproachZ80.gcd +006-B2779:chipset_firmware/Type_M/GPSChipsetTypeM426_2779_.gcd +006-B2779:golf_baseball/ApproachG30.gcd +006-B2779:golf_baseball/ApproachS60.gcd +006-B2779:golf_baseball/ApproachZ80.gcd +006-B2779:vivo/vivosport.gcd +006-B2781:vivo/vivosportCapTouchPanel.gcd +006-B2787:baseball_golf/ApproachS40.gcd +006-B2787:edge/Vector3.zip +006-B2787:fenix_D2_tactix/D2Charlie.gcd +006-B2787:fenix_D2_tactix/D2Delta.gcd +006-B2787:fenix_D2_tactix/D2DeltaPX.gcd +006-B2787:fenix_D2_tactix/D2DeltaS.gcd +006-B2787:fenix_D2_tactix/DescentMk1.gcd +006-B2787:fenix_D2_tactix/fenix5.gcd +006-B2787:fenix_D2_tactix/fenix5Plus.gcd +006-B2787:fenix_D2_tactix/fenix5S.gcd +006-B2787:fenix_D2_tactix/fenix5SPlus.gcd +006-B2787:fenix_D2_tactix/fenix5X.gcd +006-B2787:fenix_D2_tactix/fenix5XPlus.gcd +006-B2787:fenix_D2_tactix/fenixChronos.gcd +006-B2787:fenix_D2_tactix/Instinct.gcd +006-B2787:forerunner/Forerunner245.gcd +006-B2787:forerunner/Forerunner245M.gcd +006-B2787:forerunner/Forerunner645.gcd +006-B2787:forerunner/Forerunner645Music.gcd +006-B2787:forerunner/Forerunner935.gcd +006-B2787:golf_baseball/ApproachS40.gcd +006-B2787:vector/Vector3.zip +006-B2792:foretrex/Foretrex601_701_WebUpdater_.gcd +006-B2806:baseball_golf/ApproachZ80.gcd +006-B2806:golf_baseball/ApproachZ80.gcd +006-B2818:xero/XeroA1_i_.gcd +006-B2818:xero/XeroA1_i_,SensorHub.gcd +006-B2819:fenix_D2_tactix/D2Charlie.gcd +006-B2820:fenix_D2_tactix/D2Charlie,Display.gcd +006-B2820:fenix_D2_tactix/D2Charlie.gcd +006-B2822:fenix_D2_tactix/D2Delta.gcd +006-B2822:fenix_D2_tactix/D2DeltaPX.gcd +006-B2822:fenix_D2_tactix/D2DeltaS.gcd +006-B2822:fenix_D2_tactix/fenix5Plus.gcd +006-B2822:fenix_D2_tactix/fenix5SPlus.gcd +006-B2822:fenix_D2_tactix/fenix5XPlus.gcd +006-B2822:forerunner/Forerunner645.gcd +006-B2822:forerunner/Forerunner645Music.gcd +006-B2822:vivo/vivoactive3.gcd +006-B2827:baseball_golf/Impact.rgn +006-B2827:golf_baseball/Impact.rgn +006-B2859:fenix_D2_tactix/DescentMk1.gcd +006-B2864:baseball_golf/ApproachZ80,Aux.gcd +006-B2864:baseball_golf/ApproachZ80.gcd +006-B2864:golf_baseball/ApproachZ80,Aux.gcd +006-B2864:golf_baseball/ApproachZ80.gcd +006-B2869:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2869:fenix_D2_tactix/DescentMk1,Display.gcd +006-B2869:fenix_D2_tactix/DescentMk1.gcd +006-B2886:forerunner/Forerunner645.gcd +006-B2887:forerunner/Forerunner645Music.gcd +006-B2888:forerunner/Forerunner645Music.gcd +006-B2891:forerunner/Forerunner30.rgn +006-B2893:astro_alpha/Atemos50.gcd +006-B2894:astro_alpha/Atemos100.gcd +006-B2895:astro_alpha/AtemosK5_KT15.rgn +006-B2896:forerunner/Forerunner645.gcd +006-B2897:forerunner/Forerunner645Music.gcd +006-B2900:fenix_D2_tactix/fenix5Plus.gcd +006-B2900:fenix_D2_tactix/fenix5SPlus.gcd +006-B2900:fenix_D2_tactix/fenix5XPlus.gcd +006-B2927:vivo/vivosmart4.gcd +006-B2930:forerunner/vivosmart4SensorHub.gcd +006-B2930:vivo/vivosmart4.gcd +006-B2930:vivo/vivosmart4SensorHub.gcd +006-B2931:vivo/vivosmart4CapTouchPanel.gcd +006-B2954:fenix_D2_tactix/Instinct.gcd +006-B2954:forerunner/Forerunner245.gcd +006-B2954:forerunner/Forerunner245M.gcd +006-B2955:fenix_D2_tactix/Instinct.gcd +006-B2955:forerunner/Forerunner245.gcd +006-B2955:forerunner/Forerunner245M.gcd +006-B2957:chipset_firmware/Type_M/GPSChipsetTypeM5_2957_.gcd +006-B2957:chipset_firmware/Type_M/GPSChipsetTypeM5_2957_.zip +006-B2957:edge/Edge1030Bontrager.gcd +006-B2957:edge/Edge1030.gcd +006-B2957:edge/Edge520Plus.gcd +006-B2957:edge/Edge820.gcd +006-B2957:edge/EdgeExplore820.gcd +006-B2957:fenix_D2_tactix/D2Charlie.gcd +006-B2957:fenix_D2_tactix/D2Delta.gcd +006-B2957:fenix_D2_tactix/D2DeltaPX.gcd +006-B2957:fenix_D2_tactix/D2DeltaS.gcd +006-B2957:fenix_D2_tactix/DescentMk1.gcd +006-B2957:fenix_D2_tactix/fenix5.gcd +006-B2957:fenix_D2_tactix/fenix5Plus.gcd +006-B2957:fenix_D2_tactix/fenix5S.gcd +006-B2957:fenix_D2_tactix/fenix5SPlus.gcd +006-B2957:fenix_D2_tactix/fenix5X.gcd +006-B2957:fenix_D2_tactix/fenix5XPlus.gcd +006-B2957:fenix_D2_tactix/fenixChronos.gcd +006-B2957:fenix_D2_tactix/Instinct.gcd +006-B2957:forerunner/Forerunner645.gcd +006-B2957:forerunner/Forerunner645Music.gcd +006-B2957:forerunner/Forerunner935.gcd +006-B2957:foretrex/Foretrex601_701_WebUpdater_.gcd +006-B2957:gpsmap62_64_78/GPSMAP64csx.gcd +006-B2957:gpsmap62_64_78/GPSMAP64csx_WebUpdater_.gcd +006-B2957:vivo/vivoactive3.gcd +006-B2957:vivo/Vivoactive3t.gcd +006-B2960:baseball_golf/ApproachS10.rgn +006-B2960:baseball_golf/ApproachX10.rgn +006-B2960:baseball_golf/ApproachX40.rgn +006-B2960:forerunner/Forerunner30.rgn +006-B2960:golf_baseball/ApproachS10.rgn +006-B2960:golf_baseball/ApproachX10.rgn +006-B2960:golf_baseball/ApproachX40.rgn +006-B2960:vivo/vivosmartHRplus.rgn +006-B2962:baseball_golf/ApproachX10.rgn +006-B2962:golf_baseball/ApproachX10.rgn +006-B2983:vivo/Vivoactive3t.gcd +006-B2991:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B2993:fenix_D2_tactix/DescentAPAC_GCDfileonly_.gcd +006-B3011:edge/EdgeExplore.gcd +006-B3013:fenix_D2_tactix/fenix5SPlus,SensorHub.gcd +006-B3013:fenix_D2_tactix/fenix5SPlus_SensorHub.gcd +006-B3014:fenix_D2_tactix/fenix5Plus,SensorHub.gcd +006-B3014:fenix_D2_tactix/fenix5Plus_SensorHub.gcd +006-B3015:fenix_D2_tactix/fenix5XPlus,SensorHub.gcd +006-B3015:fenix_D2_tactix/fenix5XPlus_SensorHub.gcd +006-B3023:drive/Drive61.gcd +006-B3023:drive/DriveandDriveSmart51.gcd +006-B3023:drive/DriveAssist51.gcd +006-B3023:drive/DriveLuxe51.gcd +006-B3023:drive/DriveSmart61.gcd +006-B3023:rv/RV_Camper770.gcd +006-B3028:gpsmap62_64_78/GPSMAP66_WebUpdater_.gcd +006-B3034:baseball_golf/ApproachG80.gcd +006-B3034:edge/EdgeExplore.gcd +006-B3034:golf_baseball/ApproachG80.gcd +006-B3041:edge/EdgeExplore.gcd +006-B3044:baseball_golf/ApproachS20.rgn +006-B3044:baseball_golf/ApproachS40.gcd +006-B3044:baseball_golf/ApproachS60.gcd +006-B3044:fenix_D2_tactix/D2Charlie.gcd +006-B3044:fenix_D2_tactix/D2Delta.gcd +006-B3044:fenix_D2_tactix/D2DeltaPX.gcd +006-B3044:fenix_D2_tactix/D2DeltaS.gcd +006-B3044:fenix_D2_tactix/DescentMk1.gcd +006-B3044:fenix_D2_tactix/fenix5.gcd +006-B3044:fenix_D2_tactix/fenix5Plus.gcd +006-B3044:fenix_D2_tactix/fenix5S.gcd +006-B3044:fenix_D2_tactix/fenix5SPlus.gcd +006-B3044:fenix_D2_tactix/fenix5X.gcd +006-B3044:fenix_D2_tactix/fenix5XPlus.gcd +006-B3044:fenix_D2_tactix/fenixChronos.gcd +006-B3044:fenix_D2_tactix/Instinct.gcd +006-B3044:forerunner/Forerunner245.gcd +006-B3044:forerunner/Forerunner245M.gcd +006-B3044:forerunner/Forerunner645.gcd +006-B3044:forerunner/Forerunner645Music.gcd +006-B3044:forerunner/Forerunner935.gcd +006-B3044:golf_baseball/ApproachS20.rgn +006-B3044:golf_baseball/ApproachS40.gcd +006-B3044:golf_baseball/ApproachS60.gcd +006-B3049:baseball_golf/ApproachS10.rgn +006-B3049:golf_baseball/ApproachS10.rgn +006-B3076:forerunner/Forerunner245.gcd +006-B3077:forerunner/Forerunner245M.gcd +006-B3078:forerunner/Forerunner245.gcd +006-B3078:forerunner/Forerunner245_SensorHubSoftware.gcd +006-B3079:forerunner/Forerunner245M.gcd +006-B3079:forerunner/Forerunner245M_SensorHubSoftware.gcd +006-B3085:baseball_golf/ApproachG80.gcd +006-B3085:golf_baseball/ApproachG80.gcd +006-B3095:edge/Edge1030Bontrager.gcd +006-B3098:astro_alpha/Astro900.gcd +006-B3099:astro_alpha/T9GPSCollar.rgn +006-B3107:baseball_golf/ApproachS40.gcd +006-B3107:chipset_firmware/Type_S/GPSChipsetTypeS1_3107_.gcd +006-B3107:chipset_firmware/Type_S/GPSChipsetTypeS1_3107_.zip +006-B3107:edge/Edge530.gcd +006-B3107:edge/Edge530.zip +006-B3107:edge/Edge830.gcd +006-B3107:edge/Edge830.zip +006-B3107:fenix_D2_tactix/Fenix6Pro.zip +006-B3107:fenix_D2_tactix/Fenix6SPro.zip +006-B3107:fenix_D2_tactix/Fenix6S.zip +006-B3107:fenix_D2_tactix/Fenix6XPro.zip +006-B3107:fenix_D2_tactix/Fenix6.zip +006-B3107:forerunner/Forerunner245.gcd +006-B3107:forerunner/Forerunner245M.gcd +006-B3107:forerunner/Forerunner245M.zip +006-B3107:forerunner/Forerunner245.zip +006-B3107:forerunner/Forerunner945.zip +006-B3107:golf_baseball/ApproachS40.gcd +006-B3107:MARQ/MARQAdventurer.zip +006-B3107:MARQ/MARQAthlete.zip +006-B3107:MARQ/MARQAviator.zip +006-B3107:MARQ/MARQCaptain.zip +006-B3107:MARQ/MARQCommander.zip +006-B3107:MARQ/MARQDriver.zip +006-B3107:MARQ/MARQExpedition.zip +006-B3107:MARQ/MARQ.zip +006-B3114:forerunner/Forerunner945_SensorHubSoftware.gcd +006-B3115:gpsmap62_64_78/GPSMAP64scSiteSurvey.gcd +006-B3121:edge/Edge530.gcd +006-B3122:edge/Edge830.gcd +006-B3126:fenix_D2_tactix/Instinct.gcd +006-B3127:fenix_D2_tactix/Instinct.gcd +006-B3127:fenix_D2_tactix/Instinct,SensorHub.gcd +006-B3127:fenix_D2_tactix/Instinct_SensorHub.gcd +006-B3143:fenix_D2_tactix/Instinct.gcd +006-B3153:fenix_D2_tactix/fenix5Plus,ANT_BLE_BT.gcd +006-B3153:fenix_D2_tactix/fenix5Plus_ANT_BLE_BT.gcd +006-B3153:fenix_D2_tactix/fenix5Plus.gcd +006-B3153:fenix_D2_tactix/fenix5SPlus,ANT_BLE_BT.gcd +006-B3153:fenix_D2_tactix/fenix5SPlus.gcd +006-B3153:fenix_D2_tactix/fenix5XPlus,ANT_BLE_BT.gcd +006-B3153:fenix_D2_tactix/fenix5XPlus.gcd +006-B3157:edge/Edge830.gcd +006-B3183:vivo/vivosmart4.gcd +006-B3187:rino/Rino7xxGMRS_WebUpdater_.gcd +006-B3192:baseball_golf/ApproachS40.gcd +006-B3192:fenix_D2_tactix/fenix5.gcd +006-B3192:fenix_D2_tactix/fenix5Plus.gcd +006-B3192:fenix_D2_tactix/fenix5S.gcd +006-B3192:fenix_D2_tactix/fenix5SPlus.gcd +006-B3192:fenix_D2_tactix/fenix5X.gcd +006-B3192:fenix_D2_tactix/fenix5XPlus.gcd +006-B3192:fenix_D2_tactix/fenixChronos.gcd +006-B3192:fenix_D2_tactix/Instinct.gcd +006-B3192:forerunner/Forerunner245.gcd +006-B3192:forerunner/Forerunner245M.gcd +006-B3192:golf_baseball/ApproachS40.gcd +006-B3196:fenix_D2_tactix/D2Delta.gcd +006-B3196:fenix_D2_tactix/D2DeltaPX.gcd +006-B3196:fenix_D2_tactix/D2DeltaS.gcd +006-B3200:edge/Edge820.gcd +006-B3200:edge/EdgeExplore820.gcd +006-B3204:forerunner/Forerunner245_ANT_BLE.gcd +006-B3204:forerunner/Forerunner245.gcd +006-B3205:forerunner/Forerunner245M_ANT_BLE_BT.gcd +006-B3205:forerunner/Forerunner245M.gcd +006-B3220:vivo/NFCThirdPartyApplets.gcd +006-B3252:MARQ/MARQ_SensorHub.gcd +006-B3253:MARQ/MARQ_ANT_BLE_BT.gcd +006-B3260:fenix_D2_tactix/D2Delta.gcd +006-B3260:fenix_D2_tactix/D2DeltaPX.gcd +006-B3260:fenix_D2_tactix/D2Deltaseries,ANT_BLE_BT.gcd +006-B3260:fenix_D2_tactix/D2Deltaseries_ANT_BLE_BT.gcd +006-B3260:fenix_D2_tactix/D2DeltaS.gcd +006-B3264:virb/VirbUltra30.gcd +006-B3275:edge/Edge1030Bontrager.gcd +006-B3275:edge/Edge1030.gcd +006-B3284:gpsmap62_64_78/GPSMAP66i_WebUpdater_.gcd +006-B3284:gpsmap62_64_78/GPSMAP86i_WebUpdater_.gcd +006-B3284:gpsmap62_64_78/GPSMAP86sci_WebUpdater_.gcd +006-B3284:gpsmap62_64_78/GPSMAP86sc_WebUpdater_.gcd +006-B3284:gpsmap62_64_78/GPSMAP86s_WebUpdater_.gcd +006-B3292:fenix_D2_tactix/Fenix6S_6_ANT_BLE.gcd +006-B3293:fenix_D2_tactix/Fenix6S_6_6XPro_ANT_BLE_BT.gcd +006-B3294:fenix_D2_tactix/Fenix6S_SensorHub.gcd +006-B3295:fenix_D2_tactix/Fenix6_SensorHub.gcd +006-B3296:fenix_D2_tactix/Fenix6X_SensorHub.gcd +006-B3299:baseball_golf/ApproachS40.gcd +006-B3299:fenix_D2_tactix/fenix5.gcd +006-B3299:fenix_D2_tactix/fenix5Plus.gcd +006-B3299:fenix_D2_tactix/fenix5S.gcd +006-B3299:fenix_D2_tactix/fenix5SPlus.gcd +006-B3299:fenix_D2_tactix/fenix5X.gcd +006-B3299:fenix_D2_tactix/fenix5XPlus.gcd +006-B3299:fenix_D2_tactix/fenixChronos.gcd +006-B3299:fenix_D2_tactix/Instinct.gcd +006-B3299:forerunner/Forerunner245.gcd +006-B3299:forerunner/Forerunner245M.gcd +006-B3299:golf_baseball/ApproachS40.gcd +006-B3300:baseball_golf/ApproachS40.gcd +006-B3300:fenix_D2_tactix/fenix5.gcd +006-B3300:fenix_D2_tactix/fenix5Plus.gcd +006-B3300:fenix_D2_tactix/fenix5S.gcd +006-B3300:fenix_D2_tactix/fenix5SPlus.gcd +006-B3300:fenix_D2_tactix/fenix5X.gcd +006-B3300:fenix_D2_tactix/fenix5XPlus.gcd +006-B3300:fenix_D2_tactix/fenixChronos.gcd +006-B3300:fenix_D2_tactix/Instinct.gcd +006-B3300:forerunner/Forerunner245.gcd +006-B3300:forerunner/Forerunner245M.gcd +006-B3300:golf_baseball/ApproachS40.gcd +006-B3303:forerunner/Forerunner945_ANT_BLE_BT.gcd +006-B3307:baseball_golf/ApproachS40.gcd +006-B3307:fenix_D2_tactix/fenix5.gcd +006-B3307:fenix_D2_tactix/fenix5Plus.gcd +006-B3307:fenix_D2_tactix/fenix5S.gcd +006-B3307:fenix_D2_tactix/fenix5SPlus.gcd +006-B3307:fenix_D2_tactix/fenix5X.gcd +006-B3307:fenix_D2_tactix/fenix5XPlus.gcd +006-B3307:fenix_D2_tactix/fenixChronos.gcd +006-B3307:fenix_D2_tactix/Instinct.gcd +006-B3307:forerunner/Forerunner245.gcd +006-B3307:forerunner/Forerunner245M.gcd +006-B3307:golf_baseball/ApproachS40.gcd +006-B3313:chipset_firmware/Type_M/GPSChipsetTypeM5_3313_.gcd +006-B3313:gpsmap62_64_78/GPSMAP66i_WebUpdater_.gcd +006-B3313:gpsmap62_64_78/GPSMAP66_WebUpdater_.gcd +006-B3313:gpsmap62_64_78/GPSMAP86i_WebUpdater_.gcd +006-B3313:gpsmap62_64_78/GPSMAP86sci_WebUpdater_.gcd +006-B3313:gpsmap62_64_78/GPSMAP86sc_WebUpdater_.gcd +006-B3313:gpsmap62_64_78/GPSMAP86s_WebUpdater_.gcd +006-B3315:baseball_golf/ApproachS40.gcd +006-B3315:baseball_golf/ApproachS40_SensorHub.gcd +006-B3315:golf_baseball/ApproachS40.gcd +006-B3315:golf_baseball/ApproachS40_SensorHub.gcd +006-B3316:baseball_golf/ApproachS40_Touchscreen.gcd +006-B3316:golf_baseball/ApproachS40_Touchscreen.gcd +006-B3339:fenix_D2_tactix/Instinct.gcd +006-B3340:fenix_D2_tactix/Instinct.gcd +006-B3345:edge/EdgeExplore.gcd +006-B3394:baseball_golf/ApproachS62_Touchscreen.gcd +006-B3394:golf_baseball/ApproachS62_Touchscreen.gcd +006-B3396:baseball_golf/ApproachS62_ANT_BLE.gcd +006-B3396:golf_baseball/ApproachS62_ANT_BLE.gcd +006-B3399:baseball_golf/ApproachS62_SensorHub.gcd +006-B3399:golf_baseball/ApproachS62_SensorHub.gcd +006-B3400:oregon/Oregon7xx_WebUpdater_.gcd +006-B3400:rino/Rino7xxGMRS_WebUpdater_.gcd +006-B3400:rino/Rino7xx_WebUpdater_.gcd +006-B3401:etrex/eTrex_Touch/eTrexTouch25_35_Webupdater_.gcd +006-B3411:chipset_firmware/Type_M/GPSChipsetTypeM5.gcd +006-B3412:astro_alpha/T5_TT15Mini.rgn +006-B3413:chipset_firmware/Type_M/GPSChipsetTypeM5_3413_.gcd +006-B3413:gpsmap62_64_78/GPSMAP64scSiteSurvey.gcd +006-B3431:gpsmap62_64_78/GPSMAP64sx.gcd +006-B3431:gpsmap62_64_78/GPSMAP64sx_WebUpdater_.gcd +006-B3432:gpsmap62_64_78/GPSMAP64csx.gcd +006-B3432:gpsmap62_64_78/GPSMAP64csx_WebUpdater_.gcd +006-B3445:etrex/eTrex_10_20_30/eTrex22x_32x_Webupdater_.gcd +006-B3446:vivo/Vivoactive3t.gcd +006-B3506:chipset_firmware/Type_S/GPSChipsetTypeS1_3506_.gcd +006-B3506:chipset_firmware/Type_S/GPSChipsetTypeS1_3506_.zip +006-B3578:fenix_D2_tactix/fenix5.gcd +006-B3578:fenix_D2_tactix/fenix5Plus.gcd +006-B3578:fenix_D2_tactix/fenix5S.gcd +006-B3578:fenix_D2_tactix/fenix5SPlus.gcd +006-B3578:fenix_D2_tactix/fenix5X.gcd +006-B3578:fenix_D2_tactix/fenix5XPlus.gcd +006-B3578:fenix_D2_tactix/fenixChronos.gcd +006-B3750:fenix_D2_tactix/fenix5.gcd +006-B3750:fenix_D2_tactix/fenix5Plus.gcd +006-B3750:fenix_D2_tactix/fenix5S.gcd +006-B3750:fenix_D2_tactix/fenix5SPlus.gcd +006-B3750:fenix_D2_tactix/fenix5X.gcd +006-B3750:fenix_D2_tactix/fenix5XPlus.gcd +006-B3750:fenix_D2_tactix/fenixChronos.gcd +006-B3750:fenix_D2_tactix/Instinct.gcd diff --git a/grmn/devices.py b/grmn/devices.py index 8a17f1b..e6ca091 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -62,10 +62,11 @@ DEVICES = { 444: "GPS 76 Rev B", 450: "Edge 205/305", 463: "Quest 2", - 476: "nuvi 300/350", + 476: "nuvi 300/350 / Edge 605/705", 478: "GPS Chipset Type G", 480: "GPS 60", 481: "StreetPilot c340", + 482: "dezl/Drive/DriveSmart/DriveAssist/DriveLuxe/fleet/nuvi/zumo, ???", 484: "Forerunner 205/305", 497: "StreetPilot c310/c320/c330", 505: "StreetPilot i3/i5", @@ -75,6 +76,7 @@ DEVICES = { 532: "StreetPilot i2", 537: "Chartplotters Minimum Software for g2 charts (537)", 539: "StreetPilot c5xx", + 546: "MapSource, ???", 553: "Firmware Update for c550 Bluetooth Module", 557: "GPSMAP 378", 558: "GPSMAP 478", @@ -99,6 +101,7 @@ DEVICES = { 609: "Rino 520 Australia", 617: "GPS Chipset Type G2", 625: "Edge 605/705", + 630: "dezl/Drive/DriveSmart/DriveAssist/DriveLuxe/fleet/nuvi/zumo, ???", 654: "Garmin Marine Network Minimum Software for g2 v11.5 (654)", 660: "nuvi 2xx", 661: "Colorado", @@ -125,13 +128,15 @@ DEVICES = { 725: "Chartplotters Minimum Software for g2 charts (725)", 726: "nuvi 8xx", 732: "StreetPilot c5xx Mercedes Phase2", - 733: "GPS Chipset Type M", + 733: "GPS Chipset Type M (MediaTek MT3318)", 737: "nuvi 2xxW", 739: "GPS Chipset Type M2", + 740: "Honda Navi Gen3, ???", 743: "nuvi 5000", 745: "GPSMAP 695/696", 754: "nuvi 7xx", 757: "Garmin Marine Network Minimum Software for g2 v11.5 (757)", + 765: "Honda Navi Gen3, ???", 774: "Garmin Marine Network Minimum Software for g2 v11.5 (774)", 775: "GPS Chipset Type B", 781: "GPS 17x HVS", @@ -144,6 +149,7 @@ DEVICES = { 798: "eTrex H China", 811: "GPS 18x USB/GPS 20x USB", 814: "nuvi 900T", + 823: "DashCam 45/55/65W / Descent APAC / nuvi, ???", 827: "nuvi 2x5W", 832: "GPSMAP 6x0", 834: "nuvi 2xx", @@ -186,7 +192,7 @@ DEVICES = { 957: "eTrex Legend H/Vista H", 960: "Dakota", 969: "Firmware Update for FMI Cables with Traffic", - 970: "Mount Software", + 970: "zumo 660/665, Mount Software", 971: "nuvi 12xx", 972: "nuvi 13xx/14xx", 974: "Chartplotters Minimum Software for g2 charts (974)", @@ -217,6 +223,8 @@ DEVICES = { 1091: "nuvi 2x5W (MTK)", 1095: "GPS 72H", 1096: "Chartplotters Minimum Software for g2 charts (1096)", + 1099: "nuvi 16xxNA, ???", + 1100: "nuvi 16xxNA, ???", 1101: "nuvi 37xx", 1103: "nuvi 13xx TWN", 1104: "nuvi 13xx/14xx (MTK)", @@ -233,6 +241,7 @@ DEVICES = { 1138: "zumo 2x0", 1142: "Oregon 550 Thai", 1147: "zumo 665", + 1148: "Forerunner 110, ???", 1156: "nuvi 16xx AU", 1157: "nuvi 16xx CA", 1158: "GPS 72H Arabic", @@ -255,11 +264,16 @@ DEVICES = { 1258: "nuvi 35xx", 1259: "nuvi 37xx Taiwan", 1264: "Forerunner 210", + 1265: "Forerunner 210, ???", 1266: "nuvi 2585 TWN", 1269: "dezl 560", + 1270: "nuLink 23xx, ???", 1271: "Approach S1", + 1272: "Approach S1, ???", 1273: "nuvi 24xx", 1275: "Montana", + 1279: "nuLink 23xx, ???", + 1296: "nuLink 23xx, ???", 1301: "GPSMAP 62SJ Japan", 1304: "eTrex 10", 1305: "eTrex 20/30", @@ -293,6 +307,7 @@ DEVICES = { 1420: "Chrysler RHB15 v4/RHB17 v2/RHB17 v4/RHB18 v1", 1422: "Edge 500 Korea", 1425: "Chrysler CTP16 v3/CTP17 v4/CTP18 v1", + 1427: "nuvi 2580 SouthAmerica, ???", 1429: "Montana 650t Taiwan", 1431: "Montana Korea", 1441: "nuvi 3595,JPN", @@ -304,7 +319,8 @@ DEVICES = { 1461: "UAT 163", 1463: "nuvi 2585 Russia", 1468: "Suzuki Fuji MY13-MY17", - 1469: "Approach S3", + 1469: "Approach S3/S4", + 1470: "Approach S3/S4, ???", 1471: "eTrex 20/30 JPN", 1472: "eTrex 10 JPN", 1473: "zumo 3x0", @@ -335,6 +351,7 @@ DEVICES = { 1548: "Yushan", 1550: "zumo 660 Taiwan", 1551: "fenix/D2/tactix", + 1552: "fenix/D2/tactix, ???", 1555: "Edge 200 Taiwan", 1556: "eTrex 20/30 China", 1561: "Edge 510", @@ -349,6 +366,7 @@ DEVICES = { 1594: "eTrex 20/30 Taiwan", 1595: "nuvi 140/150", 1597: "Approach S3 APAC", + 1598: "Approach S3 APAC, ???", 1599: "GPSmap 62stc Taiwan", 1600: "ForeAthlete 910XTJ Japan", 1603: "nuvi 35x7/35x8", @@ -363,10 +381,12 @@ DEVICES = { 1624: "GPS Chipset Type M426", 1628: "Garmin HUD", 1630: "Forerunner 620/920, Wi-Fi", + 1631: "Carmax 310/310V, ???", 1632: "Forerunner 220", 1634: "Chartplotters Minimum Software for g2 charts (1634)", 1635: "Montana 650t China", 1649: "Approach S2", + 1650: "Approach S2, ???", 1651: "Oregon 6x0", 1664: "Forerunner 910XT, Korea", 1665: "Chartplotters Minimum Software for g2 charts (1665)", @@ -379,9 +399,11 @@ DEVICES = { 1678: "fenix Korea", 1679: "fenix Taiwan", 1681: "nuvi 2795 Japan", + 1682: "fenix China, ???", 1688: "ForeAthlete 10J", 1689: "GPS Chipset Type M426", 1692: "quatix", + 1693: "quatix, ???", 1696: "DC 50", 1697: "nuvi 53/55/56", 1708: "fleet 590 EU", @@ -407,7 +429,7 @@ DEVICES = { 1743: "HRM-Tri", 1744: "Chartplotters Minimum Software for g2 charts (1744)", 1749: "nuvi 65/66", - 1752: "HRM-Run", + 1752: "HRM-Run / Forerunner 620, Sensor Hub", 1758: "nuvi 25x9", 1765: "Forerunner 920XT", 1766: "nuvi 42/52 India", @@ -423,6 +445,7 @@ DEVICES = { 1821: "Edge 510 China & Taiwan", 1822: "Edge 810 China", 1823: "Edge 810 Taiwan", + 1826: "Carmax 310A/310V, ???", 1829: "Chartplotters Minimum Software for g2 charts (1829)", 1836: "Edge 1000", 1837: "vivofit", @@ -441,14 +464,16 @@ DEVICES = { 1885: "vivoki", 1888: "Chartplotters Minimum Software for g2 charts (1888)", 1891: "Approach S2 JPN", + 1892: "Approach S2 JPN, ???", 1895: "Monterra, GPS/BeiDou CHN", 1903: "Forerunner 15", 1907: "vivoactive", 1908: "vivoactive, Display", - 1909: "vivoactive/fenix 3, ANT/BLE N4", + 1909: "vivoactive/vivosmart HR/fenix 3 HR/fenix 3/tactix Bravo/quatix 3/D2 Bravo, ANT/BLE N4", 1917: "Approach G8", 1918: "Edge 510, Korea", 1925: "Approach S6, Display", + 1927: "Edge 1000/Edge Explore 1000, ???", 1928: "ForeAthlete 620J", 1929: "Forerunner 620 China", 1930: "ForeAthlete 220J", @@ -466,11 +491,13 @@ DEVICES = { 1959: "nuvi C265 China", 1966: "nuvi 55TV Brazil", 1967: "fenix 2", + 1968: "fenix 2, ???", 1969: "Forerunner 15, ANT", 1982: "BMW Navigator V Japan/China", 1987: "Epix, Display", 1988: "Epix", 1999: "Approach S2 APAC", + 2000: "Approach S2 APAC, ???", 2002: "dezl 770", 2003: "dezl 570", 2005: "vivosmart, PSOC", @@ -478,14 +505,16 @@ DEVICES = { 2030: "HAC 2CT", 2032: "T 5, TT 15", 2035: "Approach S4 APAC", + 2036: "Approach S4 APAC, ???", 2043: "nuviCam", 2044: "nuviCam, Camera", 2047: "ANT/BLE N1 Firmware", 2050: "fenix 3/tactix Bravo/quatix 3", - 2051: "fenix 3/tactix Bravo/quatix 3, Display", + 2051: "fenix 3/tactix Bravo/quatix 3/D2 Bravo, Display", 2052: "Edge 1000 Taiwan", 2053: "Edge 1000 Japan", 2054: "fenix 2 China", + 2059: "vivoactive, Display", 2061: "ForeAthlete 15J", 2062: "Fleet 660 GPS", 2063: "Fleet 670 GPS", @@ -499,11 +528,13 @@ DEVICES = { 2088: "nuvi 67/68", 2094: "fenix 2 Japan", 2100: "Edge 1000, Korea", - 2108: "fenix 3/tactix Bravo/quatix 3, Wi-Fi", + 2108: "fenix 3/tactix Bravo/quatix 3/D2 Bravo, Wi-Fi", 2112: "Firmware Update for the BC30 RX", 2123: "GPSMAP 64S, SEA", 2124: "GPSMAP 64SJ, Japan", 2127: "Touchscreen E1 Firmware", + 2128: "GPSmap 276cx/eTrex Touch 23/35, ???", + 2129: "SW,HondaPH, ???", 2130: "Forerunner 920XT Taiwan", 2131: "Forerunner 920XT China", 2132: "Forerunner 920XT Japan", @@ -538,6 +569,7 @@ DEVICES = { 2199: "Dash Cam 35 (2199)", 2200: "GPS 73", 2201: "GPS 12H", + 2202: "TruSwing, ???", 2204: "Edge Explore 1000", 2219: "Forerunner 225 Asia", 2220: "ForeAthlete 225J", @@ -546,7 +578,9 @@ DEVICES = { 2228: "Forerunner 225, Display", 2231: "Oregon 650TCJ2, JPN", 2232: "SW,Captain", + 2233: "SW,Captain, ???", 2235: "SW,Storm", + 2236: "SW,Storm, ???", 2237: "Camper/RV 660", 2238: "Edge 20", 2250: "eTrex 20x/30x", @@ -588,6 +622,7 @@ DEVICES = { 2340: "vivoactive HR, Display", 2347: "vivosmart HR+", 2348: "vivosmart HR", + 2358: "vivosmart HR, ???", 2361: "vivosmart HR APAC", 2362: "vivosmart HR+ APAC", 2368: "vivomove", @@ -599,7 +634,7 @@ DEVICES = { 2397: "ForeAthlete 235J", 2398: "Varia Vision", 2400: "aera 660", - 2403: "Approach S20, nrF51", + 2403: "Approach S20, ANT_BLE_BT nrF51", 2405: "Approach X40, BT_BLE", 2406: "vivofit 3", 2407: "fenix 3, K65, Korea", @@ -617,6 +652,7 @@ DEVICES = { 2440: "GDR E350/C300", 2442: "Astro 430/Alpha 50", 2444: "Rino 7xx", + 2447: "Varia Vision/Nautix, ???", 2449: "PRO Control 2 RR", 2450: "Delta Smart", 2467: "D2 Bravo, K65, China", @@ -628,13 +664,15 @@ DEVICES = { 2485: "GDR E350 Japan", 2488: "RV-IN801", 2495: "DriveAssist 50, Camera", - 2496: "Garmin Nautix", + 2496: "Nautix", 2497: "vivoactive HR APAC", 2503: "Forerunner 35", 2510: "Forerunner 735XT, Sensor Hub", + 2511: "Forerunner 735XT, ???", 2512: "Oregon 7xx", 2513: "GDL 5X", 2517: "zumo 590 JPN", + 2527: "Approach X40/vivosmart HR+, ???", 2530: "Edge 820", 2531: "Edge Explore 820", 2533: "Forerunner 735XT APAC", @@ -643,6 +681,7 @@ DEVICES = { 2545: "Dash Cam 30 (2545)", 2546: "Dash Cam 35 (2546)", 2547: "D2 Bravo Titanium", + 2550: "Edge 820/Edge Explore 820, ???", 2559: "Approach S20 APAC", 2560: "D2 Bravo Titanium, Sensor Hub", 2561: "DriveSmart 50 APAC", @@ -651,7 +690,8 @@ DEVICES = { 2569: "fleet 660 8G, GPS", 2570: "fleet 670 8G, GPS", 2576: "eTrex Venture Mariner", - 2583: "Delta Smart nRF51", + 2582: "Approach X10, ???", + 2583: "Delta Smart, ANT_BLE_BT nRF51", 2584: "BMW Motorrad Navigator VI", 2586: "Drive/DriveSmart 51", 2587: "Drive 61", @@ -673,6 +713,7 @@ DEVICES = { 2628: "Edge 820 Taiwan", 2629: "Edge 820 Korea", 2630: "Edge 820 SEA", + 2632: "Delta Smart, ???", 2635: "Dash Cam 45-S", 2636: "Dash Cam 55", 2639: "vivosmart HR+ Israel", @@ -705,7 +746,9 @@ DEVICES = { 2700: "vivoactive 3", 2702: "fenix Chronos APAC, Sensor Hub", 2705: "Avtex Tourer One Plus", + 2708: "Approach S60, ???", 2713: "Edge 1030", + 2721: "Edge 1030/Edge 1030 Bontrager, ???", 2725: "aera 79x China", 2726: "aera 660 China", 2727: "Forerunner 35 SEA", @@ -733,6 +776,7 @@ DEVICES = { 2781: "vivosport, Touchpanel", 2786: "RV-BBT600 RV HUB Remote", 2787: "Vector 3", + 2792: "Foretrex 601/701, Sensor Hub", 2796: "fenix 5 APAC", 2797: "fenix 5S APAC", 2798: "fenix 5X APAC", @@ -748,9 +792,10 @@ DEVICES = { 2818: "Xero A1(i), Sensor Hub", 2819: "D2 Charlie", 2820: "D2 Charlie, Display", - 2822: "PN80T, NFC applets", + 2822: "fenix 5 Plus/Forerunner 645/645M/D2 Delta/vivoactive 3, NFC applets (PN80T)", 2825: "APSA18 AOER, System Code", 2826: "UAT-2826", + 2827: "Impact, ???", 2830: "CAN µC, APSA18, AutoOEM", 2831: "vivosmart 3 APAC", 2832: "vivosport APAC", @@ -822,11 +867,13 @@ DEVICES = { 3014: "fenix 5 Plus/D2 Delta, Sensor Hub", 3015: "fenix 5X Plus, Sensor Hub", 3018: "Edge 130 Nordic Software", + 3023: "Drive/DriveSmart/DriveAssist/DriveLuxe 51/61, ???", 3028: "GPSMAP 66", 3029: "zumo 590 APAC, TPMS Firmware", 3031: "Fusion MS-SRX400", 3033: "zumo 396", - 3034: "???, Sensor Hub", + 3034: "Approach G80/Edge Explore, Sensor Hub", + 3044: "Approach S20, ???", 3049: "Approach S10", 3059: "Garmin Speak Plus", 3061: "Drive 52", @@ -862,9 +909,11 @@ DEVICES = { 3135: "fenix 5X Plus APAC", 3139: "zumo 396 APAC", 3142: "Edge 520 Plus APAC", + 3143: "Instinct, ???", 3144: "Forerunner 235 Lite APAC", 3145: "Forerunner 245 APAC", 3153: "fenix 5 Plus, ANT_BLE_BT", + 3157: "Edge 830, ???", 3163: "vivoactive 3 Music APAC, WiFi", 3164: "vivoactive 3 Music APAC, Sensor Hub", 3165: "SW, ACIN19, Indonesia, AOER", @@ -876,6 +925,7 @@ DEVICES = { 3197: "D2 Delta S", 3198: "D2 Delta PX", 3199: "CYW20719 Bluetooth APAC", + 3200: "Edge/Edge Explore 820, ???", 3204: "Forerunner 245, ANT_BLE_BT", 3205: "Forerunner 245 Music, ANT_BLE_BT", 3206: "GLO 2", @@ -906,8 +956,10 @@ DEVICES = { 3258: "Descent Mk2i", 3260: "D2 Delta, ANT_BLE_BT", 3262: "GPSMAP 276Cx APAC", + 3264: "Virb Ultra 30, ???", 3271: "Fusion MS-RA670 Initial Mass Production Software", 3273: "Instinct APAC", + 3275: "Edge/Edge Bontrager 1030, ???", 3282: "Forerunner 45", 3284: "GPSMAP 66i", 3286: "Garmin DriveSmart 65 with Amazon Alexa", @@ -921,6 +973,8 @@ DEVICES = { 3294: "fenix 6S, Sensor Hub", 3295: "fenix 6, Sensor Hub", 3296: "fenix 6X, Sensor Hub", + 3299: "Approach S40/fenix 5/5 Plus/Instinct, ???", + 3300: "Approach S40/fenix 5/5 Plus/Instinct, ???", 3303: "Forerunner 945, ANT_BLE_BT", 3307: "Cannondale Wheel Sensor", 3308: "vivomove 3 Classic/Premium", @@ -936,7 +990,10 @@ DEVICES = { 3321: "Forerunner 245M APAC", 3324: "D2 Delta PX APAC", 3330: "GPS Software 3330", + 3339: "Instinct, ???", + 3340: "Instinct, ???", 3341: "Drive 52 APAC", + 3345: "Edge Explore, ???", 3349: "Edge 530 ASIA", 3350: "Edge 830 ASIA", 3354: "DriveSmart x5 ASIA", @@ -959,6 +1016,8 @@ DEVICES = { 3394: "Approach S62, Touchscreen", 3396: "Approach S62, ANT_BLE", 3399: "Approach S62, Sensor Hub", + 3400: "Oregon 7xx/Rino 7xx, ???", + 3401: "eTrex/eTrex Touch 25/35, ???", 3405: "Swim 2", 3406: "Swim 2, Sensor Hub", 3407: "Swim 2, Network Processor", @@ -1031,6 +1090,7 @@ DEVICES = { 3572: "vivomove 3 Style/Luxe ASIA", 3573: "vivomove 3 Sport APAC", 3576: "Fusion MS-WB670", + 3578: "fenix 5/5 Plus/Chronos, ???", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", 3648: "MARQ Adventure APAC", @@ -1045,4 +1105,8 @@ DEVICES = { 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software (3750)", +# 5423: "vivosmart APAC, ???", +# 5424: "vivosmart APAC, ???", +# 6182: "Varia Vision/Nautix, ???", +# 7124: "vivoactive 3t, ???", } From eb1ea9ecf6eabc7b32542a749803c4dc61a20761 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 17 Apr 2020 10:21:46 +0200 Subject: [PATCH 09/61] New hwid for Swim 2. --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index e6ca091..da6f211 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1093,6 +1093,8 @@ DEVICES = { 3578: "fenix 5/5 Plus/Chronos, ???", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", + 3639: "Swim 2 ASIA", + 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", 3649: "GPS Chipset MTK (3649)", 3663: "GPSMAP 63csx CHN_OPM", From e83fa56fa37abdb8c88df457f15a06260ed68df9 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 15:22:20 +0200 Subject: [PATCH 10/61] Added base address finder based on kunix's IDA Pro plugin. --- binbase_kunix.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 binbase_kunix.py diff --git a/binbase_kunix.py b/binbase_kunix.py new file mode 100644 index 0000000..f7228a4 --- /dev/null +++ b/binbase_kunix.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Many thanks to kunix! + +""" +Calculates possible base address. +""" + +from struct import unpack +import os.path +import sys + +FILE = sys.argv[1] +BLOCKSIZE = 4096 + +END_MARKER = b"\xff\xff\x5a\xa5" + +first_block = True +past_end = False +trailer = bytes() +trailer_pos = -1 + +print("Reading {} ...".format(FILE)) +with open(FILE, "rb") as f: + while True: + block = f.read(BLOCKSIZE) + if first_block: + dw = unpack(" 0xffffffff: + print("Overflow") + sys.exit(1) + +if dw[2] % 2 != 0 or dw[2] - base_addr >= marker_end - 3: + print("Align & Bounds dw2 wrong.") + #sys.exit(1) + +if dw[3] % 2 != 0 or dw[3] - base_addr >= marker_end - 3: + print("Align & Bounds dw3 wrong.") + #sys.exit(1) + +print("Base address is probably 0x{:x}".format(base_addr)) + +# hwid = dw[2] - base_addr +# fwid = dw[3] - base_addr From 67a475851ef36c69cd1c55a08b1cb273370ab4fd Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 15:22:50 +0200 Subject: [PATCH 11/61] Added base address finder from https://github.com/mncoppola/ws30 . --- binbase_find.py | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 binbase_find.py diff --git a/binbase_find.py b/binbase_find.py new file mode 100644 index 0000000..d08854f --- /dev/null +++ b/binbase_find.py @@ -0,0 +1,116 @@ +#!/usr/bin/python + +# https://github.com/mncoppola/ws30/blob/master/basefind.py + +import gc +import os +import re +import signal +import struct +import sys +from operator import itemgetter + +chars = r"A-Za-z0-9/\-:.,_$%'\"()[\]<> " +min_length = 10 +scores = [] +top_score = 0 + +regexp = "[%s]{%d,}" % (chars, min_length) +pattern = re.compile(regexp) +regexpc = "[%s]{1,}" % chars +patternc = re.compile(regexpc) + +def high_scores(signal, frame): + print "\nTop 20 base address candidates:" + for score in sorted(scores, key=itemgetter(1), reverse=True)[:20]: + print "0x%x\t%d" % score + sys.exit(0) + +def get_pointers(f): + table = {} + f.seek(0) + while True: + try: + value = struct.unpack("= size: + break + f.seek(offset) + try: + data = f.read(10) + except: + break + match = pattern.match(data) + if match: + f.seek(offset - 1) + try: + char = f.read(1) + except: + continue + if not patternc.match(char): + tbladd(offset) + offset += len(match.group(0)) + offset += 1 + return table + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + def auto_int(x): + return int(x, 0) + parser.add_argument("--min_addr", type=auto_int, help="start searching at this address", default=0) + parser.add_argument("--max_addr", type=auto_int, help="stop searching at this address", default=0xf0000000) + parser.add_argument("--page_size", type=auto_int, help="search every this many byte", default=0x1000) + parser.add_argument("infile", help="file to scan") + args = parser.parse_args() + + size = os.path.getsize(args.infile) + f = open(args.infile, "rb") + scores = [] + + print "Scanning binary for strings..." + str_table = get_strings(f, size) + print "Total strings found: %d" % len(str_table) + + print "Scanning binary for pointers..." + ptr_table = get_pointers(f) + print "Total pointers found: %d" % len(ptr_table) + + f.close() + gc.disable() + signal.signal(signal.SIGINT, high_scores) + + for base in xrange(args.min_addr, args.max_addr, args.page_size): + if base % args.page_size == 0: + print u"Trying base address 0x%x\u001b[F\u001b[K" % base + score = 0 + for ptr in ptr_table.keys(): + if ptr < base: + #print "Removing pointer 0x%x from table" % ptr + del ptr_table[ptr] + continue + if ptr >= (base + size): + continue + offset = ptr - base + if offset in str_table: + score += ptr_table[ptr] + if score: + scores.append((base, score)) + if score > top_score: + top_score = score + print "New highest score, 0x%x: %d" % (base, score) + print "" + + high_scores(0, 0) From b278e079979ff022d67e23f2ee4b9997341c402a Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 16:21:57 +0200 Subject: [PATCH 12/61] Make binbase_find.py Python 3 code. --- binbase_find.py | 100 ++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/binbase_find.py b/binbase_find.py index d08854f..508dffe 100644 --- a/binbase_find.py +++ b/binbase_find.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 # https://github.com/mncoppola/ws30/blob/master/basefind.py @@ -10,59 +10,59 @@ import struct import sys from operator import itemgetter -chars = r"A-Za-z0-9/\-:.,_$%'\"()[\]<> " +chars = "A-Za-z0-9/\\-:.,_$%'\"()[\]<> " min_length = 10 scores = [] top_score = 0 -regexp = "[%s]{%d,}" % (chars, min_length) +regexp = bytes("[{}]{{{:d},}}".format(chars, min_length), "us-ascii") pattern = re.compile(regexp) -regexpc = "[%s]{1,}" % chars +regexpc = bytes("[{}]{{1,}}".format(chars), "us-ascii") patternc = re.compile(regexpc) def high_scores(signal, frame): - print "\nTop 20 base address candidates:" + print("\nTop 20 base address candidates:") for score in sorted(scores, key=itemgetter(1), reverse=True)[:20]: - print "0x%x\t%d" % score + print("0x{:x}\t{:d}".format(*score)) sys.exit(0) -def get_pointers(f): +def get_pointers(filename): table = {} - f.seek(0) - while True: - try: - value = struct.unpack("= size: - break - f.seek(offset) - try: - data = f.read(10) - except: - break - match = pattern.match(data) - if match: - f.seek(offset - 1) + with open(filename, "rb") as f: + while True: + if offset >= size: + break + f.seek(offset) try: - char = f.read(1) + data = f.read(10) except: - continue - if not patternc.match(char): - tbladd(offset) - offset += len(match.group(0)) - offset += 1 + break + match = pattern.match(data) + if match: + f.seek(offset - 1) + try: + char = f.read(1) + except: + continue + if not patternc.match(char): + table.add(offset) + offset += len(match.group(0)) + offset += 1 return table if __name__ == "__main__": @@ -77,28 +77,27 @@ if __name__ == "__main__": args = parser.parse_args() size = os.path.getsize(args.infile) - f = open(args.infile, "rb") scores = [] - print "Scanning binary for strings..." - str_table = get_strings(f, size) - print "Total strings found: %d" % len(str_table) + print("Scanning binary for strings...") + str_table = get_strings(args.infile, size) + print("Total strings found: {:d}".format(len(str_table))) - print "Scanning binary for pointers..." - ptr_table = get_pointers(f) - print "Total pointers found: %d" % len(ptr_table) + print("Scanning binary for pointers...") + ptr_table = get_pointers(args.infile) + print("Total pointers found: {:d}".format(len(ptr_table))) - f.close() gc.disable() signal.signal(signal.SIGINT, high_scores) - for base in xrange(args.min_addr, args.max_addr, args.page_size): - if base % args.page_size == 0: - print u"Trying base address 0x%x\u001b[F\u001b[K" % base + for base in range(args.min_addr, args.max_addr, args.page_size): + if base % ( args.page_size * 1000 ) == 0: + print("Trying base address 0x{:x}".format(base)) score = 0 - for ptr in ptr_table.keys(): + ptrs = list(ptr_table.keys()) + for ptr in ptrs: if ptr < base: - #print "Removing pointer 0x%x from table" % ptr + #print("Removing pointer 0x{:x} from table".format(ptr)) del ptr_table[ptr] continue if ptr >= (base + size): @@ -110,7 +109,6 @@ if __name__ == "__main__": scores.append((base, score)) if score > top_score: top_score = score - print "New highest score, 0x%x: %d" % (base, score) - print "" + print("New highest score, 0x{:x}: {:d}".format(base, score)) high_scores(0, 0) From d973ba9475c8344ee0398922936ef6a5281ffc3b Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 16:22:14 +0200 Subject: [PATCH 13/61] Small improvements to binbase_find.py. --- binbase_find.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/binbase_find.py b/binbase_find.py index 508dffe..e157e71 100644 --- a/binbase_find.py +++ b/binbase_find.py @@ -71,7 +71,7 @@ if __name__ == "__main__": def auto_int(x): return int(x, 0) parser.add_argument("--min_addr", type=auto_int, help="start searching at this address", default=0) - parser.add_argument("--max_addr", type=auto_int, help="stop searching at this address", default=0xf0000000) + parser.add_argument("--max_addr", type=auto_int, help="stop searching at this address", default=0xfe000000) parser.add_argument("--page_size", type=auto_int, help="search every this many byte", default=0x1000) parser.add_argument("infile", help="file to scan") args = parser.parse_args() @@ -93,6 +93,7 @@ if __name__ == "__main__": for base in range(args.min_addr, args.max_addr, args.page_size): if base % ( args.page_size * 1000 ) == 0: print("Trying base address 0x{:x}".format(base)) + print("\u001b[F\u001b[K", end="") score = 0 ptrs = list(ptr_table.keys()) for ptr in ptrs: From ce673398c9fcb3371ea67e55544727ab0ca7f334 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 17:21:28 +0200 Subject: [PATCH 14/61] Spiced up kunix's tool a bit. --- binbase_kunix.py | 49 +++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/binbase_kunix.py b/binbase_kunix.py index f7228a4..2f06452 100644 --- a/binbase_kunix.py +++ b/binbase_kunix.py @@ -12,17 +12,18 @@ import os.path import sys FILE = sys.argv[1] +OFFSET = 0 +if len(sys.argv) > 2: + OFFSET = int(sys.argv[2]) BLOCKSIZE = 4096 END_MARKER = b"\xff\xff\x5a\xa5" first_block = True -past_end = False -trailer = bytes() -trailer_pos = -1 - +end_marker_pos = 0xffffffff print("Reading {} ...".format(FILE)) with open(FILE, "rb") as f: + f.read(OFFSET) while True: block = f.read(BLOCKSIZE) if first_block: @@ -30,37 +31,43 @@ with open(FILE, "rb") as f: first_block = False if END_MARKER in block: end_pos = block.find(END_MARKER) - marker_end = f.tell() - len(block) + end_pos + 2 - break + found_pos = f.tell() - len(block) + end_pos + 2 + if found_pos > end_marker_pos: + print("Found a second endmarker! Using that one.") + end_marker_pos = found_pos + #break if len(block) < BLOCKSIZE: break f.close() size = os.path.getsize(FILE) -print("File is {} Bytes.".format(size)) +print("File is {} (0x{:x}) Bytes.".format(size, size)) print("First double-words: 0x{:x} / 0x{:x} / 0x{:x} / 0x{:x} / 0x{:x}".format(dw[0], dw[1], dw[2], dw[3], dw[4])) -print("Found end marker at: 0x{:x}".format(marker_end)) +print("Assuming this is end marker location in memory: 0x{:x}".format(dw[1])) +print("Found end marker in file at: 0x{:x}".format(end_marker_pos)) -base_addr = dw[1] - marker_end +base_addr = dw[1] - (end_marker_pos - OFFSET) +if base_addr < 0: + base_addr += 0xffffffff + +print("This would make Base address probably 0x{:x}".format(base_addr)) if base_addr % 4 != 0: - print("Bad alignment. Calculated base address not aligned to doublewords.") - #sys.exit(1) + print("However, bad alignment. Calculated base address not aligned to doublewords.") if base_addr + size > 0xffffffff: - print("Overflow") - sys.exit(1) + print("However, base address can't fit whole file.") -if dw[2] % 2 != 0 or dw[2] - base_addr >= marker_end - 3: - print("Align & Bounds dw2 wrong.") - #sys.exit(1) +# Assumes second dword points to hwid +#if dw[2] % 2 != 0 or dw[2] - base_addr >= end_marker_pos - 3: +# print("Align & Bounds dw2 wrong.") +# sys.exit(1) -if dw[3] % 2 != 0 or dw[3] - base_addr >= marker_end - 3: - print("Align & Bounds dw3 wrong.") - #sys.exit(1) - -print("Base address is probably 0x{:x}".format(base_addr)) +# Assumes third dword points to fwid +#if dw[3] % 2 != 0 or dw[3] - base_addr >= end_marker_pos - 3: +# print("Align & Bounds dw3 wrong.") +# sys.exit(1) # hwid = dw[2] - base_addr # fwid = dw[3] - base_addr From 1648b00426097f80b95cd21aa9d7302397875cb1 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 8 May 2020 17:22:38 +0200 Subject: [PATCH 15/61] Code cleanup in binbase_find.py. --- binbase_find.py | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/binbase_find.py b/binbase_find.py index e157e71..69a3b0e 100644 --- a/binbase_find.py +++ b/binbase_find.py @@ -2,7 +2,6 @@ # https://github.com/mncoppola/ws30/blob/master/basefind.py -import gc import os import re import signal @@ -20,26 +19,6 @@ pattern = re.compile(regexp) regexpc = bytes("[{}]{{1,}}".format(chars), "us-ascii") patternc = re.compile(regexpc) -def high_scores(signal, frame): - print("\nTop 20 base address candidates:") - for score in sorted(scores, key=itemgetter(1), reverse=True)[:20]: - print("0x{:x}\t{:d}".format(*score)) - sys.exit(0) - -def get_pointers(filename): - table = {} - with open(filename, "rb") as f: - while True: - try: - value = struct.unpack(" Date: Sun, 10 May 2020 22:01:42 +0200 Subject: [PATCH 16/61] Fixed sum crash when file size is a mult of 16384 Crash happened when file is mult of 16384, which means last block size is zero and it crashed because of data[-1] --- grmn/chksum.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/grmn/chksum.py b/grmn/chksum.py index c0de702..56f09f9 100644 --- a/grmn/chksum.py +++ b/grmn/chksum.py @@ -15,7 +15,8 @@ class ChkSum: with open(filename, "rb") as f: while True: block = f.read(blocksize) - self.add(block) + if len(block) != 0: + self.add(block) if print_progress: print(".", end="", flush=True) if len(block) < blocksize: From 2668bbcb050bac60a4502cd72b7ba5cdafb7a6ff Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 11 May 2020 16:34:46 +0200 Subject: [PATCH 17/61] Fix indentation in chksum.py. Added one hwid. --- grmn/chksum.py | 2 +- grmn/devices.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/grmn/chksum.py b/grmn/chksum.py index 56f09f9..c2a164c 100644 --- a/grmn/chksum.py +++ b/grmn/chksum.py @@ -15,7 +15,7 @@ class ChkSum: with open(filename, "rb") as f: while True: block = f.read(blocksize) - if len(block) != 0: + if len(block) != 0: self.add(block) if print_progress: print(".", end="", flush=True) diff --git a/grmn/devices.py b/grmn/devices.py index da6f211..7d67975 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1076,6 +1076,7 @@ DEVICES = { 3517: "Approach Z82, Sensor Hub", 3519: "Approach G80 ASIA", 3526: "Approach Z82", + 3527: "Approach Z82, Aux", 3535: "Captain Marvel APAC", 3536: "First Avenger APAC", 3537: "Rey APAC", From e5474eac1e90b9f8e6bfcade6038753de933f914 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 13 May 2020 23:27:53 +0200 Subject: [PATCH 18/61] New hw_ids. --- grmn/devices.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 7d67975..ec29239 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -261,6 +261,7 @@ DEVICES = { 1250: "Forerunner 410", 1252: "Oregon 450tc Japan", 1254: "nuLink 23xx", + 1257: "Kenwood GVN60, ???", 1258: "nuvi 35xx", 1259: "nuvi 37xx Taiwan", 1264: "Forerunner 210", @@ -274,6 +275,7 @@ DEVICES = { 1275: "Montana", 1279: "nuLink 23xx, ???", 1296: "nuLink 23xx, ???", + 1299: "Kenwood GVN60, ???", 1301: "GPSMAP 62SJ Japan", 1304: "eTrex 10", 1305: "eTrex 20/30", @@ -302,12 +304,14 @@ DEVICES = { 1384: "GPS 72H SEA", 1389: "nuvi 2585LT EU", 1392: "GPS 19x HVS", + 1396: "Kenwood GVN60, ???", 1400: "DC20/DC30/DC40", 1405: "Approach G10", 1420: "Chrysler RHB15 v4/RHB17 v2/RHB17 v4/RHB18 v1", 1422: "Edge 500 Korea", 1425: "Chrysler CTP16 v3/CTP17 v4/CTP18 v1", 1427: "nuvi 2580 SouthAmerica, ???", + 1428: "Kenwood GVN60, ???", 1429: "Montana 650t Taiwan", 1431: "Montana Korea", 1441: "nuvi 3595,JPN", @@ -501,6 +505,7 @@ DEVICES = { 2002: "dezl 770", 2003: "dezl 570", 2005: "vivosmart, PSOC", + 2010: "Kenwood GVN60", 2024: "Quatix China", 2030: "HAC 2CT", 2032: "T 5, TT 15", @@ -620,6 +625,7 @@ DEVICES = { 2338: "vivoactive HR, Sensor Hub", 2339: "vivoactive HR, Touchpanel", 2340: "vivoactive HR, Display", + 2341: "Kenwood 2016", 2347: "vivosmart HR+", 2348: "vivosmart HR", 2358: "vivosmart HR, ???", @@ -716,6 +722,7 @@ DEVICES = { 2632: "Delta Smart, ???", 2635: "Dash Cam 45-S", 2636: "Dash Cam 55", + 2637: "GPSMAP 722", 2639: "vivosmart HR+ Israel", 2641: "Xero A1(i)", 2650: "Forerunner 35 Israel", From 8f8a6d79c39ff76a5169d1dac57d8210ac7c50f1 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 13 May 2020 23:28:45 +0200 Subject: [PATCH 19/61] Tool to fetch list of firmware updates for Kenwood/JVC head units. --- list_kenwood_updates.py | 70 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 list_kenwood_updates.py diff --git a/list_kenwood_updates.py b/list_kenwood_updates.py new file mode 100644 index 0000000..20f9cfd --- /dev/null +++ b/list_kenwood_updates.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 + +import requests +import re + +BASE_URL = "https://kenwood.garmin.com" +MAIN_URL = "/kenwood/site/filterHeadUnitList" + +reqs = requests.Session() + +def get_url(url, params = {}, outfile = None): + global reqs + print("Now fetching {} ...".format(url)) + #print(repr(params)) + req = reqs.get(url, params=params) + page = req.content + #if outfile: + # with open(outfile, "wb") as f: + # f.write(page) + page = str(page).replace("\\n", "").replace("\\r", "").replace("\\t", "") + page = re.sub(r"\s+", " ", page) + return page + +devlist = get_url(BASE_URL + MAIN_URL, {"regionKey": 0, "seriesKey": 0}, "kenmain.html") +devices = re.findall(r"", devlist) + +print("Found {} devices.".format(len(devices))) +#print(repr(devices)) + +f = open("kenfiles.txt", "wt") +f.write("# Download with: wget -x -nc -i kenfiles.txt\n\n") + +for dev in devices: + (url, devname) = dev + print("Checking updates for {} ...".format(devname.strip())) + url = url.strip() + (url, paramstr) = url.split("?", 1) + parampairs = paramstr.split("&") + params = {} + for p in parampairs: + (key, val) = p.split("=", 1) + params[key] = val + params["origin"] = "productUpdate" # gets added via JavaScript? + + devpage = get_url(BASE_URL + url, params, "kendev.html") + + updateLink = re.search(r"(/kenwood/site/softwareUpdates.*?)\\", devpage) + + if not updateLink: + print("### No updates for {} found.".format(devname)) + continue + + updateLink = updateLink.group(1) + #print(repr(updateLink)) + + updpage = get_url(BASE_URL + updateLink, {}, "kenupd.html") + #print(repr(updpage)) + + links = re.findall(r"(https?://.*?)[\\\"']", updpage) + + f.write("# {}\n".format(devname)) + for l in links: + if l.endswith(("favicon.ico", "garmin.png", "termsOfUse.htm", "privacy-statement", "/us/")): + continue + #print(repr(l)) + f.write(l) + f.write("\n") + f.write("\n") + +f.close() From 77c2521d68e75a08cc74a4cdad293e5c4796cb20 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 13 May 2020 23:29:06 +0200 Subject: [PATCH 20/61] TODOs --- TODO.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..8c5490f --- /dev/null +++ b/TODO.md @@ -0,0 +1,14 @@ +TODO +==== + +* RGN file support +* convert between RGN and GCD +* Express-like updater + * should be text interface or ncurses + * detect Garmin MTP devices or /GARMIN directory in mounted roots + * MTP support: https://github.com/wangjiezhe/pymtp + * fetch GarminDevice.xml + * upload to Express, list returned files + * ask user, then download files and push to device + * maybe: support for additional downloads (languages, icons, etc.) + * maybe: support for running under Windows (although there you have the real Express) From 7d63fc8076ab93fcba61429f9abbab8e39f49451 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 25 May 2020 14:29:48 +0200 Subject: [PATCH 21/61] New hw_ids. --- grmn/devices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index ec29239..ae76015 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1112,6 +1112,9 @@ DEVICES = { 3689: "eTrex 22x/32x JPN", 3690: "eTrex 22x/32x SEA", 3691: "eTrex 22x/32x MN", + 3695: "fleet 790 EU LTE, GPS", + 3700: "Approach S62 ASIA", + 3737: "venu Daimler ASIA", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software (3750)", From a69a59ca61d2c09386629df6311dfbf651c0f4c7 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sat, 30 May 2020 02:05:37 +0200 Subject: [PATCH 22/61] Added new hw_ids. --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index ae76015..b551a4f 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1099,8 +1099,10 @@ DEVICES = { 3573: "vivomove 3 Sport APAC", 3576: "Fusion MS-WB670", 3578: "fenix 5/5 Plus/Chronos, ???", + 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", + 3629: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER", 3639: "Swim 2 ASIA", 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", From 6fbdc48eff7d38c1a08e649a4f010bf28f58de49 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 9 Jun 2020 14:02:37 +0200 Subject: [PATCH 23/61] New hw_ids. --- grmn/devices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index b551a4f..c276e79 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1117,9 +1117,12 @@ DEVICES = { 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", 3737: "venu Daimler ASIA", + 3740: "venu Daimler", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software (3750)", + 3782: "quatix 6 Sapphire", + 3783: "quatix 6X Dual Power", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From ee8a3bd49315059b10aca4459b811319415fa674 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 23 Jun 2020 01:45:35 +0200 Subject: [PATCH 24/61] New hw_ids. --- grmn/devices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index c276e79..acf7a1c 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1068,6 +1068,8 @@ DEVICES = { 3484: "zumo XT", 3488: "Pro 550 Plus, EL & FR", 3489: "Pro 550 Plus, EH", + 3491: "dezl 700", + 3492: "dezl 800/1000", 3494: "MARQ ASIA Series, Sensor Hub", 3498: "Rey", 3499: "Darth Vader", @@ -1095,6 +1097,7 @@ DEVICES = { 3561: "vivoactive 4 Large ASIA, Sensor Hub", 3562: "venu ASIA, Sensor Hub", 3566: "Marine Telematics Modem Firmware", + 3570: "Edge 1030 Plus", 3572: "vivomove 3 Style/Luxe ASIA", 3573: "vivomove 3 Sport APAC", 3576: "Fusion MS-WB670", From 1ee1d7a3931fd2d16197670f3479b2073a83bca4 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 3 Jul 2020 01:42:55 +0200 Subject: [PATCH 25/61] Updated hw_ids and HARDWARE-SKUs.md. --- HARDWARE-SKUs.md | 13 +++++++------ README.md | 2 +- grmn/devices.py | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/HARDWARE-SKUs.md b/HARDWARE-SKUs.md index 33b2220..49fa943 100644 --- a/HARDWARE-SKUs.md +++ b/HARDWARE-SKUs.md @@ -23,14 +23,14 @@ Garmin wearables SKU numbers | D2 Charlie | 006-B2819-00 | 16,000 MB | X | 006-B2663-00 | | 006-B2957-00 | 006-B2196-01 | | 006-B2820-00 | | Descent Mk1 | 006-B2859-00 | 16,000 MB | X | 006-B2664-00 | | 006-B1621-00 | 006-B2196-01 | | 006-B2869-00 | | Forerunner 645 Music | 006-B2886-00 | 4,000 MB | X | 006-B2897-00 | 006-B2887-00 | 006-B1621-00 | 006-B2196-02 | 006-B2822-01 | | -| fenix 5S Plus | 006-B2900-00 | 16,000 MB | X | 006-B3013-00 | 006-B3153-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | +| fenix 5S Plus | 006-B2900-00 | 16,000 MB | X | 006-B3013-00 | 006-B3153-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | | Forerunner 245 Music | 006-B3077-00 | 4,000 MB | G3 | 006-B3079-00 | 006-B3205-00 | 006-B1621-00 | 006-B2196-03 | | | -| fenix 5 Plus | 006-B3110-00 | 16,000 MB | X | 006-B3014-00 | 006-B3153-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | -| fenix 5X Plus | 006-B3111-00 | 16,000 MB | POx | 006-B3015-00 | 006-B3153-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | +| fenix 5 Plus | 006-B3110-00 | 16,000 MB | X | 006-B3014-00 | 006-B3153-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | +| fenix 5X Plus | 006-B3111-00 | 16,000 MB | POx | 006-B3015-00 | 006-B3153-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | | Forerunner 945 | 006-B3113-00 | 16,000 MB | G3 | 006-B3114-00 | 006-B3303-00 | 006-B3107-00 | | | | -| D2 Delta S | 006-B3196-00 | 16,000 MB | X | 006-B3014-00 | 006-B3260-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | -| D2 Delta | 006-B3197-00 | 16,000 MB | X | 006-B3014-00 | 006-B3260-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | -| D2 Delta PX | 006-B3198-00 | 16,000 MB | POx | 006-B3014-00 | 006-B3260-00 | 006-B2957-00 | 006-B2196-02 | 006-B2822-01 | | +| D2 Delta S | 006-B3196-00 | 16,000 MB | X | 006-B3014-00 | 006-B3260-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | +| D2 Delta | 006-B3197-00 | 16,000 MB | X | 006-B3014-00 | 006-B3260-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | +| D2 Delta PX | 006-B3198-00 | 16,000 MB | POx | 006-B3014-00 | 006-B3260-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | | MARQ Driver | 006-B3246-00 | 32,000 MB | G3 | 006-B3252-00 | 006-B3253-00 | 006-B3107-00 | | | | | MARQ Aviator | 006-B3247-00 | 32,000 MB | G3 | 006-B3252-00 | 006-B3253-00 | 006-B3107-00 | | | | | MARQ Captain | 006-B3248-00 | 32,000 MB | G3 | 006-B3252-00 | 006-B3253-00 | 006-B3107-00 | | | | @@ -54,3 +54,4 @@ Notes * ANT/BLE/BT firmwares of the D2 Delta and fenix 5 Plus series are identical par the SKU number * GPS firmwares 1621 and 2957 are for the same chip, but 2957 has Galileo support, 1621 does not * GPS firmwares 3107 and 3506 are the new Sony chipset (introduced with the MARQ series) +* fenix 5 Plus and D2 Delta series switched GPS from 006-B2957-00 to 006-B3750-00 in recent firmwares diff --git a/README.md b/README.md index 20eb515..57aaee8 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This is a parser and some tools for working with Garmin firmware updates (GCD/RG It's in Python, so feel free to add cool new features and submit pull requests. -Thanks to TurboCCC, kunix and Alex W. for your work. +Thanks to TurboCCC, kunix and AlexWhiter for your work. Most info from: diff --git a/grmn/devices.py b/grmn/devices.py index acf7a1c..7eb2732 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -928,8 +928,8 @@ DEVICES = { 3183: "vivosmart 4, Network SW", 3187: "Rino 7xx, GMRS", 3192: "Speed Sensor 2", - 3196: "D2 Delta", - 3197: "D2 Delta S", + 3196: "D2 Delta S", + 3197: "D2 Delta", 3198: "D2 Delta PX", 3199: "CYW20719 Bluetooth APAC", 3200: "Edge/Edge Explore 820, ???", @@ -1093,6 +1093,7 @@ DEVICES = { 3550: "fenix 6S ASIA, Sensor Hub", 3551: "fenix 6 ASIA, Sensor Hub", 3552: "fenix 6X ASIA, Sensor Hub", + 3558: "Edge 130 Plus", 3560: "vivoactive 4 Small ASIA, Sensor Hub", 3561: "vivoactive 4 Large ASIA, Sensor Hub", 3562: "venu ASIA, Sensor Hub", @@ -1123,7 +1124,7 @@ DEVICES = { 3740: "venu Daimler", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", - 3750: "GPS Software (3750)", + 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", # 5423: "vivosmart APAC, ???", From 8f2238b29038aa044279bc52035868c62e826e47 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Thu, 9 Jul 2020 01:55:21 +0200 Subject: [PATCH 26/61] New hw_ids. --- HARDWARE-SKUs.md | 2 +- grmn/devices.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/HARDWARE-SKUs.md b/HARDWARE-SKUs.md index 49fa943..ee5b33f 100644 --- a/HARDWARE-SKUs.md +++ b/HARDWARE-SKUs.md @@ -20,7 +20,7 @@ Garmin wearables SKU numbers | fenix 5X/tactix Charlie | 006-B2604-00 | 16,000 MB | X | 006-B2663-00 | | 006-B2957-00 | 006-B2196-01 | | 006-B2605-00 | | Forerunner 935 | 006-B2691-00 | 64 MB | X | 006-B2665-00 | | 006-B2957-00 | 006-B2196-01 | | | | fenix 5/quatix 5 | 006-B2697-00 | 64 MB | X | 006-B2661-00 | | 006-B2957-00 | 006-B2196-01 | | | -| D2 Charlie | 006-B2819-00 | 16,000 MB | X | 006-B2663-00 | | 006-B2957-00 | 006-B2196-01 | | 006-B2820-00 | +| D2 Charlie | 006-B2819-00 | 16,000 MB | X | 006-B2663-00 | | 006-B3750-00 | 006-B2196-01 | | 006-B2820-00 | | Descent Mk1 | 006-B2859-00 | 16,000 MB | X | 006-B2664-00 | | 006-B1621-00 | 006-B2196-01 | | 006-B2869-00 | | Forerunner 645 Music | 006-B2886-00 | 4,000 MB | X | 006-B2897-00 | 006-B2887-00 | 006-B1621-00 | 006-B2196-02 | 006-B2822-01 | | | fenix 5S Plus | 006-B2900-00 | 16,000 MB | X | 006-B3013-00 | 006-B3153-00 | 006-B3750-00 | 006-B2196-02 | 006-B2822-01 | | diff --git a/grmn/devices.py b/grmn/devices.py index 7eb2732..15e2473 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1059,6 +1059,8 @@ DEVICES = { 3463: "RV-700", 3465: "Dash Cam Tandem", 3466: "Instinct Solar", + 3467: "Instinct Solar, Sensor Hub", + 3468: "Instinct Solar, ANT_BLE", 3469: "Forerunner 45 ASIA", 3472: "Forerunner 45 ASIA, Sensor Hub", 3473: "vivoactive 3 Daimler", @@ -1121,12 +1123,14 @@ DEVICES = { 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", 3737: "venu Daimler ASIA", + 3739: "MARQ Golfer", 3740: "venu Daimler", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", + 3850: "MARQ Golfer ASIA", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From 31e07f851ee4b673c5766de8a6b8f927d003b053 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 20 Jul 2020 01:23:18 +0200 Subject: [PATCH 27/61] New hw_ids. --- grmn/devices.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 15e2473..f99892b 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1128,8 +1128,11 @@ DEVICES = { 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", + 3778: "Instinct Solar APAC", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", + 3812: "Edge 1030 Plus ASIA", + 3813: "Edge 130 Plus ASIA", 3850: "MARQ Golfer ASIA", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", From 026ff4010aacabbe63e0fb62ce4a61153ad7d4d0 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 17 Aug 2020 12:46:13 +0200 Subject: [PATCH 28/61] New hw_ids. --- grmn/devices.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index f99892b..2bcdfa4 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1092,6 +1092,7 @@ DEVICES = { 3536: "First Avenger APAC", 3537: "Rey APAC", 3538: "Darth Vader APAC", + 3549: "Montana 7xx, Display", 3550: "fenix 6S ASIA, Sensor Hub", 3551: "fenix 6 ASIA, Sensor Hub", 3552: "fenix 6X ASIA, Sensor Hub", @@ -1116,6 +1117,7 @@ DEVICES = { 3663: "GPSMAP 63csx CHN_OPM", 3669: "vivomove 3 Classic ASIA, Sensor Hub", 3670: "vivomove 3/3S ASIA, Sensor Hub", + 3671: "RV/Camper 890", 3687: "eTrex 32x CHN", 3689: "eTrex 22x/32x JPN", 3690: "eTrex 22x/32x SEA", @@ -1128,12 +1130,22 @@ DEVICES = { 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", + 3764: "fenix 6S Sport Solar ASIA", + 3765: "fenix 6S Solar ASIA", + 3766: "fenix 6 Sport Solar ASIA", + 3767: "fenix 6 Solar ASIA", + 3769: "fenix 6S Solar JPN", + 3771: "fenix 6 Solar JPN", 3778: "Instinct Solar APAC", + 3779: "Instinct Solar JPN", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", + 3847: "Forerunner 45 Plus", 3850: "MARQ Golfer ASIA", + 3863: "Forerunner 45 Plus, Sensor Hub", + 3864: "Forerunner 45 Plus, Network", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From 6ec74e7b8b7c4effd591a0aa897a2926db9386ec Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 20 Oct 2020 23:37:03 +0200 Subject: [PATCH 29/61] Lots of new hw_ids. --- grmn/devices.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 2bcdfa4..093c96e 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1043,6 +1043,7 @@ DEVICES = { 3429: "vivomove 3 Classic, Touchpanel", 3431: "GPSMAP 64sx", 3432: "GPSMAP 64csx", + 3433: "Alpha 200i", 3441: "Forerunner 945 ASIA", 3445: "eTrex 22X/32x", 3446: "vivoactive 3t(trainer)", @@ -1056,6 +1057,7 @@ DEVICES = { 3454: "GPSMAP 86i", 3455: "GPSMAP 86sci", 3459: "Montana 700/700i/750i", + 3461: "Index S2 Smart Scale", 3463: "RV-700", 3465: "Dash Cam Tandem", 3466: "Instinct Solar", @@ -1078,6 +1080,10 @@ DEVICES = { 3500: "Captain Marvel", 3501: "First Avenger", 3506: "GPS Chipset Type S1 (3506)", + 3507: "Alpha 200i WW", + 3508: "Alpha 200i EU Harmonized", + 3509: "Alpha 200i France", + 3510: "Alpha 200i Nordics", 3511: "Forerunner 945 ASIA, Sensor Hub", 3512: "fenix 6S Sport ASIA", 3513: "fenix 6S ASIA", @@ -1096,6 +1102,7 @@ DEVICES = { 3550: "fenix 6S ASIA, Sensor Hub", 3551: "fenix 6 ASIA, Sensor Hub", 3552: "fenix 6X ASIA, Sensor Hub", + 3553: "Catalyst", 3558: "Edge 130 Plus", 3560: "vivoactive 4 Small ASIA, Sensor Hub", 3561: "vivoactive 4 Large ASIA, Sensor Hub", @@ -1106,6 +1113,13 @@ DEVICES = { 3573: "vivomove 3 Sport APAC", 3576: "Fusion MS-WB670", 3578: "fenix 5/5 Plus/Chronos, ???", + 3589: "Forerunner 745", + 3590: "Forerunner 745, Sensor Hub", + 3591: "Forerunner 745, BLE_BT_ANT", + 3594: "Alpha 200i, Display", + 3596: "venu SQ MUSIC", + 3600: "venu SQ", + 3602: "Elf, Sensor Hub", 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", @@ -1122,14 +1136,17 @@ DEVICES = { 3689: "eTrex 22x/32x JPN", 3690: "eTrex 22x/32x SEA", 3691: "eTrex 22x/32x MN", + 3694: "GPSMAP 66sr", 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", + 3702: "Descent Mk2i ASIA", 3737: "venu Daimler ASIA", 3739: "MARQ Golfer", 3740: "venu Daimler", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", + 3757: "Catalyst Remote Cam", 3764: "fenix 6S Sport Solar ASIA", 3765: "fenix 6S Solar ASIA", 3766: "fenix 6 Sport Solar ASIA", @@ -1140,12 +1157,18 @@ DEVICES = { 3779: "Instinct Solar JPN", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", + 3794: "Forerunner 745 ASIA", + 3802: "SW, LYIN20, System Code, AOER", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", + 3837: "venu SQ ASIA", + 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", 3850: "MARQ Golfer ASIA", + 3856: "SW, LCMY20, System Code, AOER", 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", + 3946: "SW, LTDM20, System Code, AOER", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From fcffd1ef7827e36fa6fac92c78d353468665f957 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 9 Nov 2020 22:04:46 +0100 Subject: [PATCH 30/61] New hw_ids. --- grmn/devices.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 093c96e..af4c13c 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -967,6 +967,7 @@ DEVICES = { 3271: "Fusion MS-RA670 Initial Mass Production Software", 3273: "Instinct APAC", 3275: "Edge/Edge Bontrager 1030, ???", + 3281: "STRIKER Cast", 3282: "Forerunner 45", 3284: "GPSMAP 66i", 3286: "Garmin DriveSmart 65 with Amazon Alexa", @@ -1007,6 +1008,7 @@ DEVICES = { 3356: "vivoactive 4 Small, Sensor Hub", 3357: "vivoactive 4 Large, Sensor Hub", 3358: "venu, Sensor Hub", + 3366: "Descent Mk2/Mk2i, Sensor Hub", 3368: "vivomove 3 Classic, Sensor Hub", 3370: "vivomove 3 Sport, Sensor Hub", 3378: "vivomove 3 Sport NA", @@ -1128,7 +1130,10 @@ DEVICES = { 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", 3649: "GPS Chipset MTK (3649)", + 3660: "GPSMAP 64sx SEA", + 3661: "GPSMAP 64sx India", 3663: "GPSMAP 63csx CHN_OPM", + 3666: "GPSMAP 64csx SEA", 3669: "vivomove 3 Classic ASIA, Sensor Hub", 3670: "vivomove 3/3S ASIA, Sensor Hub", 3671: "RV/Camper 890", @@ -1140,11 +1145,15 @@ DEVICES = { 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", 3702: "Descent Mk2i ASIA", + 3715: "fleet 790 SA, GPS", + 3717: "STRIKER Cast, GPS", + 3725: "GPSMAP 65/65s", 3737: "venu Daimler ASIA", 3739: "MARQ Golfer", 3740: "venu Daimler", 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", + 3747: "vivofit jr. 3", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", 3757: "Catalyst Remote Cam", 3764: "fenix 6S Sport Solar ASIA", @@ -1157,6 +1166,7 @@ DEVICES = { 3779: "Instinct Solar JPN", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", + 3791: "Descent Mk2(i), Sensor Hub", 3794: "Forerunner 745 ASIA", 3802: "SW, LYIN20, System Code, AOER", 3812: "Edge 1030 Plus ASIA", @@ -1168,6 +1178,7 @@ DEVICES = { 3856: "SW, LCMY20, System Code, AOER", 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", + 3877: "Forerunner 745 ASIA, Sensor Hub", 3946: "SW, LTDM20, System Code, AOER", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", From 65e0fc8ec2ba8fb49bad7aa66148f95983e29487 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 10 Nov 2020 23:18:34 +0100 Subject: [PATCH 31/61] Output hwid while scanning. --- get_updates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/get_updates.py b/get_updates.py index 25f751e..6e83429 100644 --- a/get_updates.py +++ b/get_updates.py @@ -86,7 +86,7 @@ for i, sku in enumerate(device_skus): if device_skus[0][0:5] == "006-B": primary_hwid = int(device_skus[0][5:9]) device_name = devices.DEVICES.get(primary_hwid, "Unknown device") - print("Device (guessed): {}".format(device_name)) + print("Device {:04d} (guessed): {}".format(primary_hwid, device_name)) if opts.unit_id: print("Custom Unit ID: {}".format(opts.unit_id)) From 10a18b16933cd23d2eaeaa08a25ffc4f1e6d0f20 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 10 Nov 2020 23:18:48 +0100 Subject: [PATCH 32/61] Added two new hwids. --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index af4c13c..41f5572 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -563,6 +563,7 @@ DEVICES = { 2173: "Forerunner 620 Taiwan", 2175: "TruSwing", 2182: "Approach S5", + 2187: "D2 Air", 2188: "fenix 3, K65, China", 2189: "fenix 3 Taiwan", 2190: "T5/TT15 Mini", @@ -1145,6 +1146,7 @@ DEVICES = { 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", 3702: "Descent Mk2i ASIA", + 3710: "Approach Z82", 3715: "fleet 790 SA, GPS", 3717: "STRIKER Cast, GPS", 3725: "GPSMAP 65/65s", From 45fcfc596fbfaa07cfb54929d1480003e0df423c Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sat, 21 Nov 2020 22:10:58 +0100 Subject: [PATCH 33/61] Fix hw_id description. --- grmn/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 41f5572..905f6c0 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -983,7 +983,7 @@ DEVICES = { 3295: "fenix 6, Sensor Hub", 3296: "fenix 6X, Sensor Hub", 3299: "Approach S40/fenix 5/5 Plus/Instinct, ???", - 3300: "Approach S40/fenix 5/5 Plus/Instinct, ???", + 3300: "HRM-Pro", 3303: "Forerunner 945, ANT_BLE_BT", 3307: "Cannondale Wheel Sensor", 3308: "vivomove 3 Classic/Premium", From d924c6b94e8336be270021cb4c88ae772c485ad4 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sat, 21 Nov 2020 22:11:17 +0100 Subject: [PATCH 34/61] Added script to search hw_ids in firmware files. --- find_hwids.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 find_hwids.py diff --git a/find_hwids.py b/find_hwids.py new file mode 100755 index 0000000..8e4070d --- /dev/null +++ b/find_hwids.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Parses a binary file for 006-Bxxxx-xx or 006Bxxxxxx occurrances. +""" + +import os.path +import re +import sys +from grmn import devices + +FILE = sys.argv[1] + +pattern = re.compile(rb"006-?B\d\d\d\d-?\d\d") + +print("Reading {} ...".format(FILE)) +with open(FILE, "rb") as f: + data = f.read() + f.close() + +matches = pattern.findall(data) +results = [] + +for i in matches: + i = i.decode("utf-8") + if len(i) == 10: + i = "{}-{}-{}".format(i[0:3], i[3:8], i[8:]) + results.append(i) + +results = sorted(set(results)) + +for r in results: + print(r, end="") + hw_id = int(r[5:9]) + if hw_id in devices.DEVICES: + print(" - {}".format(devices.DEVICES[hw_id]), end="") + print() From 69fdf8dce2fed48a64462debeff0b14c237e2bdb Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 11 Jan 2021 10:57:25 +0100 Subject: [PATCH 35/61] New hw_ids. --- grmn/devices.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 905f6c0..f931487 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1059,6 +1059,7 @@ DEVICES = { 3453: "GPSMAP 86sc", 3454: "GPSMAP 86i", 3455: "GPSMAP 86sci", + 3458: "XERO X1i", 3459: "Montana 700/700i/750i", 3461: "Index S2 Smart Scale", 3463: "RV-700", @@ -1121,6 +1122,8 @@ DEVICES = { 3591: "Forerunner 745, BLE_BT_ANT", 3594: "Alpha 200i, Display", 3596: "venu SQ MUSIC", + 3597: "Elf Music, BLE_BT_ANT", + 3598: "Elf Music, CTP Controller", 3600: "venu SQ", 3602: "Elf, Sensor Hub", 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", @@ -1180,10 +1183,16 @@ DEVICES = { 3856: "SW, LCMY20, System Code, AOER", 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", + 3866: "GPS Software (3866)", 3877: "Forerunner 745 ASIA, Sensor Hub", + 3913: "Forerunner 245M redesign", + 3914: "Forerunner 245 redesign", 3946: "SW, LTDM20, System Code, AOER", + 3964: "venu SQ ASIA, Sensor Hub", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", # 7124: "vivoactive 3t, ???", } + +# vim: ft=txt From 9eaad4a8fd382c70736b87efce2ec03bbc22e5eb Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 2 Feb 2021 22:07:35 +0100 Subject: [PATCH 36/61] Added new hwids. --- grmn/devices.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index f931487..851adc5 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1108,6 +1108,7 @@ DEVICES = { 3552: "fenix 6X ASIA, Sensor Hub", 3553: "Catalyst", 3558: "Edge 130 Plus", + 3559: "Edge 130 Plus NORDIC", 3560: "vivoactive 4 Small ASIA, Sensor Hub", 3561: "vivoactive 4 Large ASIA, Sensor Hub", 3562: "venu ASIA, Sensor Hub", @@ -1127,6 +1128,7 @@ DEVICES = { 3600: "venu SQ", 3602: "Elf, Sensor Hub", 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", + 3615: "Lily", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", 3629: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER", @@ -1134,6 +1136,7 @@ DEVICES = { 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", 3649: "GPS Chipset MTK (3649)", + 3658: "GPSMAP 66i ASIA", 3660: "GPSMAP 64sx SEA", 3661: "GPSMAP 64sx India", 3663: "GPSMAP 63csx CHN_OPM", @@ -1152,6 +1155,7 @@ DEVICES = { 3710: "Approach Z82", 3715: "fleet 790 SA, GPS", 3717: "STRIKER Cast, GPS", + 3720: "Lily, CTP Controller", 3725: "GPSMAP 65/65s", 3737: "venu Daimler ASIA", 3739: "MARQ Golfer", @@ -1174,6 +1178,7 @@ DEVICES = { 3791: "Descent Mk2(i), Sensor Hub", 3794: "Forerunner 745 ASIA", 3802: "SW, LYIN20, System Code, AOER", + 3809: "Lily ASIA", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", 3837: "venu SQ ASIA", From e51a2911b04917c3ef830fe0068211a24e87a57d Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 19 Mar 2021 01:42:42 +0100 Subject: [PATCH 37/61] Fix unknown binary header message. Fixes #11. --- grmn/tlv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/tlv.py b/grmn/tlv.py index 8afee1a..efd4fe6 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -404,7 +404,7 @@ class TLVbinary0401(TLVbinary): txt += "\n - hw_id: 0x{:04x} / {:d} ({})".format(hwid, hwid, devices.DEVICES.get(hwid, RED + "Unknown device" + RESET)) txt += "\n - Version: 0x{:04x} / {:d}".format(version, version) else: - txt += "\n - Unknown header format (0x{:04x} / 0x{:04x})".format(hdr1, hdr2) + txt += "\n - Unknown header format (0x{})".format(hexlify(skuprobe).decode("utf-8")) #if not self.is_parsed: # self.parse() return txt From 594f16c0b22ab5712b7eff0b9a01a534e51360d4 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 19 Mar 2021 01:43:21 +0100 Subject: [PATCH 38/61] Added various hw_ids. --- grmn/devices.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/grmn/devices.py b/grmn/devices.py index 851adc5..73ac567 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -151,6 +151,7 @@ DEVICES = { 814: "nuvi 900T", 823: "DashCam 45/55/65W / Descent APAC / nuvi, ???", 827: "nuvi 2x5W", + 830: "GSU73 ADAHRS", 832: "GPSMAP 6x0", 834: "nuvi 2xx", 835: "nuvi 2xxW", @@ -288,7 +289,7 @@ DEVICES = { 1334: "Edge 800 JPN", 1339: "Astro 320", 1340: "GPSMAP 62sc/62stc", - 1343: "GDL 39", + 1343: "GDL39 ADS-B Receiver", 1344: "GTU 10 CA", 1345: "Forerunner 610", 1349: "nuvi 30", @@ -363,6 +364,7 @@ DEVICES = { 1563: "nuvi 3595 Taiwan", 1566: "Garmin Swim Strings", 1567: "Edge 810", + 1575: "GEA24", 1580: "zumo ??? Component Firmware", 1582: "nuvi 2xx7/2xx8", 1587: "Rino 6xx China", @@ -383,12 +385,14 @@ DEVICES = { 1621: "GPS Chipset Type M5 (MT3333) w/o Galileo", 1623: "Forerunner 620", 1624: "GPS Chipset Type M426", + 1626: "GSA28 Servo", 1628: "Garmin HUD", 1630: "Forerunner 620/920, Wi-Fi", 1631: "Carmax 310/310V, ???", 1632: "Forerunner 220", 1634: "Chartplotters Minimum Software for g2 charts (1634)", 1635: "Montana 650t China", + 1642: "GSU25 ADAHRS", 1649: "Approach S2", 1650: "Approach S2, ???", 1651: "Oregon 6x0", @@ -404,6 +408,7 @@ DEVICES = { 1679: "fenix Taiwan", 1681: "nuvi 2795 Japan", 1682: "fenix China, ???", + 1686: "SiriusXM Navcast ATMEL Firmware", 1688: "ForeAthlete 10J", 1689: "GPS Chipset Type M426", 1692: "quatix", @@ -422,6 +427,7 @@ DEVICES = { 1724: "nuvi 3592 SGMY", 1725: "nuvi 3592 THAI", 1726: "Monterra Outdoor Software", + 1728: "TSC Firmware for 7/10 inch display", 1730: "RV/Camper 760", 1731: "nuvi 3590 TWN", 1735: "VIRB CHN", @@ -435,16 +441,19 @@ DEVICES = { 1749: "nuvi 65/66", 1752: "HRM-Run / Forerunner 620, Sensor Hub", 1758: "nuvi 25x9", + 1760: "GAD29", 1765: "Forerunner 920XT", 1766: "nuvi 42/52 India", 1769: "SiriusXM Weather Support File", 1772: "nuvi 26x9", 1786: "GPS 15x|15xH/xL|16x|18x OEM/5Hz 1786", + 1788: "GTR20/200", 1796: "zumo 590", 1798: "Chartplotters Minimum Software for g2 charts (1798)", 1811: "Approach S4", 1815: "Carmax 310A/310V", 1817: "UAT-1817", + 1819: "CAN Coprocessor", 1820: "eTrex 209/309 China", 1821: "Edge 510 China & Taiwan", 1822: "Edge 810 China", @@ -464,6 +473,7 @@ DEVICES = { 1876: "Rino 6xx Korea", 1878: "GPSMAP 7x08", 1879: "GPSMAP 7x10/7x12", + 1882: "GI260 AOA", 1884: "nuvi 2798", 1885: "vivoki", 1888: "Chartplotters Minimum Software for g2 charts (1888)", @@ -579,6 +589,7 @@ DEVICES = { 2204: "Edge Explore 1000", 2219: "Forerunner 225 Asia", 2220: "ForeAthlete 225J", + 2221: "GMA245", 2225: "Varia Radar Tail Light", 2226: "Varia Radar Display Unit", 2228: "Forerunner 225, Display", @@ -590,6 +601,7 @@ DEVICES = { 2237: "Camper/RV 660", 2238: "Edge 20", 2250: "eTrex 20x/30x", + 2256: "GAD27 ECS", 2260: "Edge 520 Asia", 2261: "Edge 520 Japan", 2262: "D2 Bravo", @@ -612,12 +624,14 @@ DEVICES = { 2298: "nuvi 67 APAC", 2299: "Montana 610/680", 2302: "eTrex 20x/30x China OPM & TWN", + 2304: "G5", 2310: "Forerunner 630 APAC", 2311: "ForeAthlete 630J", 2313: "ForeAthlete 230J", 2315: "eTrex 209x/309x CHN", 2316: "eTrex 20x/30x JPN", 2317: "eTrex 20x/30x SEA", + 2319: "GPS20A", 2325: "UAT-B2325-00", 2327: "HRM4-Run", 2329: "VIRB XE APAC, System", @@ -677,7 +691,7 @@ DEVICES = { 2510: "Forerunner 735XT, Sensor Hub", 2511: "Forerunner 735XT, ???", 2512: "Oregon 7xx", - 2513: "GDL 5X", + 2513: "GDL5x Receiver", 2517: "zumo 590 JPN", 2527: "Approach X40/vivosmart HR+, ???", 2530: "Edge 820", @@ -773,6 +787,7 @@ DEVICES = { 2763: "GPSMAP 64sc JPN", 2764: "GPSMAP 64sc SEA", 2769: "Foretrex 601/701", + 2770: "GMU11", 2771: "Impact", 2772: "vivomove HR", 2773: "vivomove HR, Sensor Hub", @@ -854,6 +869,7 @@ DEVICES = { 2956: "Alpha 50 CHN", 2957: "GPS Chipset Type M5 (MT3333) with Galileo", 2960: "GPS Chipset Type M426", + 2961: "GMC507", 2962: "Approach X10", 2976: "vivoactive 3 APAC", 2977: "Forerunner 30 APAC", @@ -951,6 +967,7 @@ DEVICES = { 3232: "fenix 5S Plus APAC, Sensor Hub", 3233: "fenix 5 Plus APAC, Sensor Hub", 3234: "fenix 5X Plus APAC, Sensor Hub", + 3235: "GSU25C ADAHRS", 3238: "Forerunner 45", 3241: "vivosmart 4 APAC, Sensor Hub", 3246: "MARQ Driver", @@ -999,6 +1016,7 @@ DEVICES = { 3321: "Forerunner 245M APAC", 3324: "D2 Delta PX APAC", 3330: "GPS Software 3330", + 3331: "GAD13", 3339: "Instinct, ???", 3340: "Instinct, ???", 3341: "Drive 52 APAC", @@ -1047,6 +1065,7 @@ DEVICES = { 3431: "GPSMAP 64sx", 3432: "GPSMAP 64csx", 3433: "Alpha 200i", + 3436: "MTK MT3329 5Hz GPS Module, STC", 3441: "Forerunner 945 ASIA", 3445: "eTrex 22X/32x", 3446: "vivoactive 3t(trainer)", @@ -1132,6 +1151,7 @@ DEVICES = { 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", 3629: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER", + 3638: "Enduro", 3639: "Swim 2 ASIA", 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", @@ -1163,6 +1183,7 @@ DEVICES = { 3741: "GPS Software (3741)", 3742: "GPS Software (3742)", 3747: "vivofit jr. 3", + 3749: "GPS Software (3749)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", 3757: "Catalyst Remote Cam", 3764: "fenix 6S Sport Solar ASIA", @@ -1178,6 +1199,7 @@ DEVICES = { 3791: "Descent Mk2(i), Sensor Hub", 3794: "Forerunner 745 ASIA", 3802: "SW, LYIN20, System Code, AOER", + 3804: "GPS20A GPS", 3809: "Lily ASIA", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", From 765b8c12df93fe1519206da55c9a076328b5d962 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 19 Mar 2021 01:49:45 +0100 Subject: [PATCH 39/61] Even more hw_ids. --- grmn/devices.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 73ac567..4513906 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -910,6 +910,7 @@ DEVICES = { 3079: "Forerunner 245 Music, Sensor Hub", 3085: "Approach G80", 3089: "fenix 5 Plus APAC", + 3091: "PRO 550 Plus, Sensor Hub", 3092: "Edge 130 APAC", 3095: "Edge 1030 Bontrager", 3098: "Astro 900", @@ -927,7 +928,7 @@ DEVICES = { 3121: "Edge 530", 3122: "Edge 830", 3126: "Instinct", - 3127: "Instinct, Sensor Hub" , + 3127: "Instinct, Sensor Hub", 3130: "Approach Z80 APAC", 3134: "fenix 5S Plus APAC", 3135: "fenix 5X Plus APAC", @@ -1173,11 +1174,13 @@ DEVICES = { 3700: "Approach S62 ASIA", 3702: "Descent Mk2i ASIA", 3710: "Approach Z82", + 3711: "Group Ride Radio", 3715: "fleet 790 SA, GPS", 3717: "STRIKER Cast, GPS", 3720: "Lily, CTP Controller", 3725: "GPSMAP 65/65s", 3737: "venu Daimler ASIA", + 3738: "Tread", 3739: "MARQ Golfer", 3740: "venu Daimler", 3741: "GPS Software (3741)", @@ -1203,6 +1206,7 @@ DEVICES = { 3809: "Lily ASIA", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", + 3823: "Approach G12/S12", 3837: "venu SQ ASIA", 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", @@ -1214,6 +1218,8 @@ DEVICES = { 3877: "Forerunner 745 ASIA, Sensor Hub", 3913: "Forerunner 245M redesign", 3914: "Forerunner 245 redesign", + 3927: "Approach G12", + 3934: "Approach S42", 3946: "SW, LTDM20, System Code, AOER", 3964: "venu SQ ASIA, Sensor Hub", # 5423: "vivosmart APAC, ???", From 82b2a4c2f8af9d42ab15bf0b27190cf8c77d8b44 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 19 Mar 2021 16:27:01 +0100 Subject: [PATCH 40/61] Allow hex letters in suffix. (Seen in aviation firmwares.) --- find_hwids.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/find_hwids.py b/find_hwids.py index 8e4070d..a2ee15b 100755 --- a/find_hwids.py +++ b/find_hwids.py @@ -12,7 +12,7 @@ from grmn import devices FILE = sys.argv[1] -pattern = re.compile(rb"006-?B\d\d\d\d-?\d\d") +pattern = re.compile(rb"006-?B\d\d\d\d-?[0-9A-F]{2}") print("Reading {} ...".format(FILE)) with open(FILE, "rb") as f: From fc6ce4ed93ba3d21760fb3b0af2a6f6a77d00d67 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 19 Mar 2021 16:27:30 +0100 Subject: [PATCH 41/61] Try to detect SW_INVNTRY and CSV/ZIP payloads. --- grmn/tlv.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/grmn/tlv.py b/grmn/tlv.py index efd4fe6..dbf2a10 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -403,6 +403,14 @@ class TLVbinary0401(TLVbinary): txt += "\n - SKU: {}-{}-{}".format(sku[0:3], sku[3:8], sku[8:10]) txt += "\n - hw_id: 0x{:04x} / {:d} ({})".format(hwid, hwid, devices.DEVICES.get(hwid, RED + "Unknown device" + RESET)) txt += "\n - Version: 0x{:04x} / {:d}".format(version, version) + elif skuprobe == b"SW_I": + swistring = self.value[10:20].decode("utf-8") + payloadprobe = self.value[0x40:0x42] + txt += "\n - Type: Software Inventory ({}) - actual payload starts at 0x40".format(swistring) + if payloadprobe == b"PK": + txt += "\n Probably ZIP archive" + elif payloadprobe == b"Fi": + txt += "\n Probably CSV file" else: txt += "\n - Unknown header format (0x{})".format(hexlify(skuprobe).decode("utf-8")) #if not self.is_parsed: From bef90b208277052605b181a8155d4ee6dc849585 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Thu, 25 Mar 2021 00:23:04 +0100 Subject: [PATCH 42/61] Write format codes into list instead of string. Fixes #12. --- grmn/tlv.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/grmn/tlv.py b/grmn/tlv.py index dbf2a10..e704c4d 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -232,13 +232,13 @@ class TLV6(TLV): def __init__(self, type_id: int, expected_length: int, value=None, offset: int=None): super().__init__(type_id, expected_length, value, offset) self.fids = [] - self.format = "" + self.format = [] self.fields = [] def add_fid(self, fid: int): fdef = self.FIELD_TYPES[fid] self.fids.append(fid) - self.format += fdef[0] + self.format.append(fdef[0]) self.fields.append(fdef[1]) def parse(self): @@ -249,7 +249,7 @@ class TLV6(TLV): raise Exception(RED + "Invalid TLV6 payload length!" + RESET) self.fids = [] - self.format = "" + self.format = [] self.fields = [] for i in range(0, len(self.value), 2): fid = unpack(" Date: Fri, 30 Apr 2021 12:37:28 +0200 Subject: [PATCH 43/61] Updated new hw_ids. --- grmn/devices.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 4513906..2f5fefe 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1149,6 +1149,7 @@ DEVICES = { 3602: "Elf, Sensor Hub", 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", 3615: "Lily", + 3616: "Lily, Sensor Hub", 3620: "Fusion Boat Builder Configuration Tool", 3624: "MARQ Adventurer", 3629: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER", @@ -1173,6 +1174,12 @@ DEVICES = { 3695: "fleet 790 EU LTE, GPS", 3700: "Approach S62 ASIA", 3702: "Descent Mk2i ASIA", + 3703: "venu 2", + 3704: "venu 2S", + 3705: "venu 2, CTP", + 3706: "venu 2S, CTP", + 3707: "venu 2, Sensor Hub", + 3708: "venu 2, ANT_BLE_BT", 3710: "Approach Z82", 3711: "Group Ride Radio", 3715: "fleet 790 SA, GPS", @@ -1207,6 +1214,7 @@ DEVICES = { 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", 3823: "Approach G12/S12", + 3824: "Approach G12/S12, BLE", 3837: "venu SQ ASIA", 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", @@ -1215,13 +1223,21 @@ DEVICES = { 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", 3866: "GPS Software (3866)", + 3872: "Enduro ASIA", 3877: "Forerunner 745 ASIA, Sensor Hub", 3913: "Forerunner 245M redesign", 3914: "Forerunner 245 redesign", 3927: "Approach G12", 3934: "Approach S42", 3946: "SW, LTDM20, System Code, AOER", + 3949: "venu 2S ASIA", + 3950: "venu 2 ASIA", 3964: "venu SQ ASIA, Sensor Hub", + 3986: "Approach S12 ASIA", + 3999: "venu 2/2S, Sensor Hub", + 4004: "Fusion RV-RA770", + 4080: "GPS Software (4080)", + 4109: "Lily, Network Processor", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From 0582ddce4b6ccbf05c11e630bd4cc250a6c4899a Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 2 May 2021 01:34:47 +0200 Subject: [PATCH 44/61] Use (un)hexlify for Field 4007. Fixes #13. Recipes need to be dumped again. --- grmn/tlv.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/grmn/tlv.py b/grmn/tlv.py index e704c4d..28c03ef 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -354,7 +354,10 @@ class TLV7(TLV): continue elif k[0:2] != "0x": continue - numval = int(v, 0) + if v[0:2] == "0x": + numval = int(v, 0) + else: + numval = unhexlify(v) new_values.append(numval) if not self.tlv6.is_parsed: # Make sure we have the structure analysed (need format attr) @@ -386,7 +389,7 @@ class TLVbinary(TLV): elif valtype == "Q": valstr = "0x{:08x}".format(v) elif valtype == "31s": - valstr = repr(v) + valstr = hexlify(v).decode("utf-8") else: valstr = "0x{:08x}".format(v) data.append(("0x{:04x}".format(fid), valstr, fdesc)) From 64e51a0dbc8de37151a35e820a60be7b4b7dcda1 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 2 May 2021 01:50:19 +0200 Subject: [PATCH 45/61] Fixes #14. --- grmn/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 2f5fefe..a27cc74 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1137,7 +1137,7 @@ DEVICES = { 3572: "vivomove 3 Style/Luxe ASIA", 3573: "vivomove 3 Sport APAC", 3576: "Fusion MS-WB670", - 3578: "fenix 5/5 Plus/Chronos, ???", + 3578: "Rally 100/200", 3589: "Forerunner 745", 3590: "Forerunner 745, Sensor Hub", 3591: "Forerunner 745, BLE_BT_ANT", From 74ac07c8a04a6fa325136fcb2f12f7f71eca7d5d Mon Sep 17 00:00:00 2001 From: Markus Birth <130302+mbirth@users.noreply.github.com> Date: Tue, 1 Jun 2021 16:28:32 +0200 Subject: [PATCH 46/61] New hw_ids. --- grmn/devices.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index a27cc74..c1b51fe 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1122,6 +1122,7 @@ DEVICES = { 3536: "First Avenger APAC", 3537: "Rey APAC", 3538: "Darth Vader APAC", + 3542: "Descent Mk2s", 3549: "Montana 7xx, Display", 3550: "fenix 6S ASIA, Sensor Hub", 3551: "fenix 6 ASIA, Sensor Hub", @@ -1163,6 +1164,7 @@ DEVICES = { 3661: "GPSMAP 64sx India", 3663: "GPSMAP 63csx CHN_OPM", 3666: "GPSMAP 64csx SEA", + 3667: "GPSMAP 64csx JPN", 3669: "vivomove 3 Classic ASIA, Sensor Hub", 3670: "vivomove 3/3S ASIA, Sensor Hub", 3671: "RV/Camper 890", @@ -1211,6 +1213,7 @@ DEVICES = { 3802: "SW, LYIN20, System Code, AOER", 3804: "GPS20A GPS", 3809: "Lily ASIA", + 3810: "Lily ASIA, Sensor Hub", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", 3823: "Approach G12/S12", @@ -1235,7 +1238,10 @@ DEVICES = { 3964: "venu SQ ASIA, Sensor Hub", 3986: "Approach S12 ASIA", 3999: "venu 2/2S, Sensor Hub", + 4003: "GPSMAP 65s SEA", 4004: "Fusion RV-RA770", + 4012: "dezl 500", + 4033: "Forerunner 55 ASIA", 4080: "GPS Software (4080)", 4109: "Lily, Network Processor", # 5423: "vivosmart APAC, ???", From 5275316956a85281448669fcf8f2926170d4c9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20W=C3=B6rner?= Date: Wed, 5 Jan 2022 15:18:35 +0100 Subject: [PATCH 47/61] add Venu Sq Music --- HARDWARE-SKUs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/HARDWARE-SKUs.md b/HARDWARE-SKUs.md index ee5b33f..79b94b7 100644 --- a/HARDWARE-SKUs.md +++ b/HARDWARE-SKUs.md @@ -44,6 +44,7 @@ Garmin wearables SKU numbers | Fenix 6 Pro | 006-B3290-00 | 32,000 MB | G3 | 006-B3295-00 | 006-B3293-00 | | | | | | Fenix 6X Pro | 006-B3291-00 | 32,000 MB | G3 | 006-B3296-00 | 006-B3293-00 | | | | | | MARQ Adventurer | 006-B3624-00 | 32,000 MB | G3 | | | | | | | +| Venu Sq - Music | 006-B3596-00 | 4,000 MB | | 006-B3602-00 | 006-B3597-00 | 006-B3799-12 | 006-B2196-03 | | 006-B3598-00 | From 5dfdefbac7678497c1cd8734dceacbbd6f906fe3 Mon Sep 17 00:00:00 2001 From: Markus Birth <130302+mbirth@users.noreply.github.com> Date: Wed, 7 Jul 2021 13:33:21 +0200 Subject: [PATCH 48/61] New hw_ids. --- grmn/devices.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index c1b51fe..9b11690 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1159,6 +1159,8 @@ DEVICES = { 3642: "Swim 2 ASIA, Sensor Hub", 3648: "MARQ Adventure APAC", 3649: "GPS Chipset MTK (3649)", + 3652: "Forerunner 945 LTE", + 3653: "Forerunner 945 LTE, ANT_BLE_BT", 3658: "GPSMAP 66i ASIA", 3660: "GPSMAP 64sx SEA", 3661: "GPSMAP 64sx India", @@ -1182,6 +1184,7 @@ DEVICES = { 3706: "venu 2S, CTP", 3707: "venu 2, Sensor Hub", 3708: "venu 2, ANT_BLE_BT", + 3709: "Forerunner 945 LTE, Sensor Hub", 3710: "Approach Z82", 3711: "Group Ride Radio", 3715: "fleet 790 SA, GPS", @@ -1208,6 +1211,7 @@ DEVICES = { 3779: "Instinct Solar JPN", 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", + 3784: "ALT1250 LTE Modem Firmware", 3791: "Descent Mk2(i), Sensor Hub", 3794: "Forerunner 745 ASIA", 3802: "SW, LYIN20, System Code, AOER", @@ -1218,6 +1222,10 @@ DEVICES = { 3813: "Edge 130 Plus ASIA", 3823: "Approach G12/S12", 3824: "Approach G12/S12, BLE", + 3828: "Dash Cam 47", + 3829: "Dash Cam 57", + 3830: "Dash Cam 67W", + 3831: "Dash Cam Mini 2", 3837: "venu SQ ASIA", 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", @@ -1226,10 +1234,13 @@ DEVICES = { 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", 3866: "GPS Software (3866)", + 3869: "Forerunner 55", 3872: "Enduro ASIA", 3877: "Forerunner 745 ASIA, Sensor Hub", 3913: "Forerunner 245M redesign", 3914: "Forerunner 245 redesign", + 3925: "Forerunner 55, Sensor Hub", + 3926: "Forerunner 55, Network Processor", 3927: "Approach G12", 3934: "Approach S42", 3946: "SW, LTDM20, System Code, AOER", @@ -1242,6 +1253,7 @@ DEVICES = { 4004: "Fusion RV-RA770", 4012: "dezl 500", 4033: "Forerunner 55 ASIA", + 4060: "CamperVan", 4080: "GPS Software (4080)", 4109: "Lily, Network Processor", # 5423: "vivosmart APAC, ???", From 1bf8b83247a8b6ee95b07462758aab4819e47f6e Mon Sep 17 00:00:00 2001 From: Markus Birth <130302+mbirth@users.noreply.github.com> Date: Thu, 3 Feb 2022 18:46:12 +0100 Subject: [PATCH 49/61] New HWIDs. --- grmn/devices.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 9b11690..68f372f 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -661,7 +661,7 @@ DEVICES = { 2407: "fenix 3, K65, Korea", 2408: "fenix 3, K65, SEA", 2413: "fenix 3 HR", - 2414: "fenix 3 HR, Display", + 2414: "fenix 3 HR/D2 Bravo Titanium, Display", 2415: "fenix 3 HR, Sensor Hub", 2417: "VIRB Ultra 30", 2423: "ANT/BLE N3 Firmware", @@ -862,6 +862,7 @@ DEVICES = { 2944: "vivofit jr. 2", 2945: "vivomove HR APAC", 2946: "vivomove HR APAC, Sensor Hub", + 2947: "eTrex 20x/30x MN", 2952: "fleet 790 AUNZ, GPS", 2953: "inReach Mini", 2954: "Varia Radar Tail Light 510, Light", @@ -1118,6 +1119,7 @@ DEVICES = { 3519: "Approach G80 ASIA", 3526: "Approach Z82", 3527: "Approach Z82, Aux", + 3528: "Alpha 10", 3535: "Captain Marvel APAC", 3536: "First Avenger APAC", 3537: "Rey APAC", @@ -1146,12 +1148,16 @@ DEVICES = { 3596: "venu SQ MUSIC", 3597: "Elf Music, BLE_BT_ANT", 3598: "Elf Music, CTP Controller", + 3599: "venu SQ Music", 3600: "venu SQ", 3602: "Elf, Sensor Hub", + 3603: "venu SQ", 3612: "SW, AAIN20 (Toyota Android), Indonesia, AOER", 3615: "Lily", 3616: "Lily, Sensor Hub", 3620: "Fusion Boat Builder Configuration Tool", + 3621: "Alpha 10, Sensor Hub", + 3622: "Approach R10", 3624: "MARQ Adventurer", 3629: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER", 3638: "Enduro", @@ -1201,6 +1207,7 @@ DEVICES = { 3749: "GPS Software (3749)", 3750: "GPS Software Type M5 (MT3333) with Galileo, newer", 3757: "Catalyst Remote Cam", + 3758: "Alpha Dog Collar, Sensor Hub", 3764: "fenix 6S Sport Solar ASIA", 3765: "fenix 6S Solar ASIA", 3766: "fenix 6 Sport Solar ASIA", @@ -1220,6 +1227,8 @@ DEVICES = { 3810: "Lily ASIA, Sensor Hub", 3812: "Edge 1030 Plus ASIA", 3813: "Edge 130 Plus ASIA", + 3817: "DriveSmart x6", + 3819: "Approach R10, BLE", 3823: "Approach G12/S12", 3824: "Approach G12/S12, BLE", 3828: "Dash Cam 47", @@ -1230,32 +1239,55 @@ DEVICES = { 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", 3850: "MARQ Golfer ASIA", + 3851: "venu 2 Plus", 3856: "SW, LCMY20, System Code, AOER", + 3857: "Xero Ali Pro", 3863: "Forerunner 45 Plus, Sensor Hub", 3864: "Forerunner 45 Plus, Network", 3866: "GPS Software (3866)", 3869: "Forerunner 55", 3872: "Enduro ASIA", 3877: "Forerunner 745 ASIA, Sensor Hub", + 3912: "venu 2 Plus, CTP", 3913: "Forerunner 245M redesign", 3914: "Forerunner 245 redesign", + 3915: "venu 2 Plus, Sensor Hub", + 3917: "Tread", 3925: "Forerunner 55, Sensor Hub", 3926: "Forerunner 55, Network Processor", 3927: "Approach G12", + 3930: "Descent Mk2s ASIA", 3934: "Approach S42", 3946: "SW, LTDM20, System Code, AOER", 3949: "venu 2S ASIA", 3950: "venu 2 ASIA", 3964: "venu SQ ASIA, Sensor Hub", + 3968: "inReach Mini 2", + 3969: "vivomove Sport, Sensor Hub", + 3975: "venu 2 Plus, ANT_BT_BLE", + 3982: "vivomove Sport", 3986: "Approach S12 ASIA", 3999: "venu 2/2S, Sensor Hub", + 4001: "Approach G12 ASIA", 4003: "GPSMAP 65s SEA", 4004: "Fusion RV-RA770", 4012: "dezl 500", + 4017: "venu 2 Plus ASIA", 4033: "Forerunner 55 ASIA", + 4047: "Alpha 200 US", + 4048: "Alpha 200 AUS/NZ", + 4049: "Alpha 200 EU", + 4050: "Alpha 200 FR", + 4051: "Alpha 200 Nordics", + 4052: "Alpha 200 RU", + 4056: "GPSMAP 79", 4060: "CamperVan", 4080: "GPS Software (4080)", + 4098: "venu 2 Plus, DSP", + 4103: "Alpha Dog Collar, GPS", 4109: "Lily, Network Processor", + 4180: "venu 2 Daimler ASIA", + 4181: "venu 2S Daimler ASIA", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From 6a2e54ff60153f9b30520abfc8d73c8eacee439a Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 25 Apr 2022 03:25:07 +0200 Subject: [PATCH 50/61] New HWIDs. --- grmn/devices.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 68f372f..55c5ee3 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1235,6 +1235,7 @@ DEVICES = { 3829: "Dash Cam 57", 3830: "Dash Cam 67W", 3831: "Dash Cam Mini 2", + 3836: "SW, GDL 60 LTE Firmware", 3837: "venu SQ ASIA", 3838: "venu SQ ASIA MUSIC", 3847: "Forerunner 45 Plus", @@ -1248,6 +1249,10 @@ DEVICES = { 3869: "Forerunner 55", 3872: "Enduro ASIA", 3877: "Forerunner 745 ASIA, Sensor Hub", + 3888: "Instinct 2", + 3889: "Instinct 2S", + 3890: "Instinct 2, Sensor Hub", + 3891: "Instinct 2/2S, ANT_BLE", 3912: "venu 2 Plus, CTP", 3913: "Forerunner 245M redesign", 3914: "Forerunner 245 redesign", @@ -1271,8 +1276,11 @@ DEVICES = { 4001: "Approach G12 ASIA", 4003: "GPSMAP 65s SEA", 4004: "Fusion RV-RA770", + 4005: "Descent G1", + 4006: "Descent G1, Sensor Hub", 4012: "dezl 500", 4017: "venu 2 Plus ASIA", + 4018: "venu 2 Plus ASIA, Sensor Hub", 4033: "Forerunner 55 ASIA", 4047: "Alpha 200 US", 4048: "Alpha 200 AUS/NZ", @@ -1282,12 +1290,25 @@ DEVICES = { 4052: "Alpha 200 RU", 4056: "GPSMAP 79", 4060: "CamperVan", + 4063: "vivosmart 5", + 4064: "vivosmart 5, Sensor Hub", + 4071: "Instinct 2 ASIA", + 4073: "Instinct 2 ASIA, Sensor Hub", 4080: "GPS Software (4080)", + 4091: "Instinct 2s ASIA", 4098: "venu 2 Plus, DSP", 4103: "Alpha Dog Collar, GPS", 4109: "Lily, Network Processor", + 4118: "Venu SQ ASIA", + 4119: "Venu SQ MUSIC ASIA", + 4125: "D2 Air X10", + 4132: "Descent G1 ASIA", + 4171: "Daimler Venu 2", + 4175: "Daimler Venu 2S", 4180: "venu 2 Daimler ASIA", 4181: "venu 2S Daimler ASIA", + 4197: "Forerunner 45/45+, GPS (Alternate)", + 4200: "T5X/TT15X Dog Collar", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From a2e2e411e27d63abcaf28c777bbe35f4329fff76 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Tue, 27 Sep 2022 02:10:28 +0200 Subject: [PATCH 51/61] New hwids. --- grmn/devices.py | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/grmn/devices.py b/grmn/devices.py index 55c5ee3..aa7db52 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1219,10 +1219,12 @@ DEVICES = { 3782: "quatix 6 Sapphire", 3783: "quatix 6X Dual Power", 3784: "ALT1250 LTE Modem Firmware", + 3786: "Fusion MS-RA60", 3791: "Descent Mk2(i), Sensor Hub", 3794: "Forerunner 745 ASIA", 3802: "SW, LYIN20, System Code, AOER", 3804: "GPS20A GPS", + 3808: "Varia RCT715", 3809: "Lily ASIA", 3810: "Lily ASIA, Sensor Hub", 3812: "Edge 1030 Plus ASIA", @@ -1238,6 +1240,7 @@ DEVICES = { 3836: "SW, GDL 60 LTE Firmware", 3837: "venu SQ ASIA", 3838: "venu SQ ASIA MUSIC", + 3843: "Edge 1040", 3847: "Forerunner 45 Plus", 3850: "MARQ Golfer ASIA", 3851: "venu 2 Plus", @@ -1247,6 +1250,7 @@ DEVICES = { 3864: "Forerunner 45 Plus, Network", 3866: "GPS Software (3866)", 3869: "Forerunner 55", + 3870: "Edge 1040, Parade Touchpanel", 3872: "Enduro ASIA", 3877: "Forerunner 745 ASIA, Sensor Hub", 3888: "Instinct 2", @@ -1269,11 +1273,13 @@ DEVICES = { 3964: "venu SQ ASIA, Sensor Hub", 3968: "inReach Mini 2", 3969: "vivomove Sport, Sensor Hub", + 3971: "Quartz CTP Controller", 3975: "venu 2 Plus, ANT_BT_BLE", 3982: "vivomove Sport", 3986: "Approach S12 ASIA", 3999: "venu 2/2S, Sensor Hub", 4001: "Approach G12 ASIA", + 4002: "Approach S42 ASIA", 4003: "GPSMAP 65s SEA", 4004: "Fusion RV-RA770", 4005: "Descent G1", @@ -1292,23 +1298,54 @@ DEVICES = { 4060: "CamperVan", 4063: "vivosmart 5", 4064: "vivosmart 5, Sensor Hub", + 4069: "SW, LAIN21, TAM, System Code, AOER", 4071: "Instinct 2 ASIA", 4073: "Instinct 2 ASIA, Sensor Hub", 4080: "GPS Software (4080)", 4091: "Instinct 2s ASIA", + 4094: "SW, LWIN21, TAM, System Code, AOER", 4098: "venu 2 Plus, DSP", 4103: "Alpha Dog Collar, GPS", 4109: "Lily, Network Processor", - 4118: "Venu SQ ASIA", - 4119: "Venu SQ MUSIC ASIA", + 4115: "venu SQ 2", + 4116: "venu SQ 2 MUSIC", + 4117: "venu SQ 2, Sensor Hub", + 4118: "venu SQ ASIA", + 4119: "venu SQ MUSIC ASIA", + 4120: "Forerunner 55/158 / ForeAthlete 55, Sensor Hub", 4125: "D2 Air X10", + 4130: "HRM-Pro Plus", 4132: "Descent G1 ASIA", - 4171: "Daimler Venu 2", - 4175: "Daimler Venu 2S", - 4180: "venu 2 Daimler ASIA", - 4181: "venu 2S Daimler ASIA", + 4133: "Descent G1 ASIA, Sensor Hub", + 4134: "inReach Messenger", + 4140: "DriveSmart x6 ASIA", + 4145: "inReach Mini 2 ASIA", + 4161: "dezl OTR 610/710", + 4162: "dezl OTR 810/1010", + 4165: "dezlCam 710", + 4166: "RV/CamperCam 795", + 4167: "DriveCam 76", + 4169: "Edge Explore 2", + 4171: "Daimler venu 2", + 4173: "T5/TT15 OnSemi", + 4175: "Daimler venu 2S", + 4176: "SW, LYIN20, TAM 965B, System Code, AOER", + 4177: "SW, LTDM21, TAM D26B, System Code, AOER", + 4178: "SW, LFIN20, TAM 655B, System Code, AOER", + 4179: "Edge Explore 2, nRF52 ANT_BLE", + 4180: "Daimler venu 2 ASIA", + 4181: "Daimler venu 2S ASIA", + 4183: "T5/TT15 Mini OnSemi", 4197: "Forerunner 45/45+, GPS (Alternate)", 4200: "T5X/TT15X Dog Collar", + 4209: "RV/Camper 795", + 4213: "Rocket Camera", + 4256: "venu SQ 2, Touch Controller", + 4298: "SW, LWIN21, TMV, System Code, AOER", + 4305: "Edge 1040 ASIA", + 4333: "eTrex 22X/32X 2022 Redesign", + 4337: "WD eMMC", + 4353: "Edge Explore 2, ELAN Touchpanel", # 5423: "vivosmart APAC, ???", # 5424: "vivosmart APAC, ???", # 6182: "Varia Vision/Nautix, ???", From b73e95f45448b1f785dfdec4a5887d6298e71f5a Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 11 Dec 2022 02:53:51 +0100 Subject: [PATCH 52/61] NEW device.get_name() METHOD! Added -q parameter to get_updates. Reworked device database for sub-ids. --- binsum.py | 2 +- find_hwids.py | 8 +- get_updates.py | 20 +- grmn/devices.py | 3083 +++++++++++++++++++++++------------------ grmn/rgnbin.py | 2 +- grmn/tlv.py | 4 +- list_missing_hwids.py | 10 +- 7 files changed, 1759 insertions(+), 1370 deletions(-) diff --git a/binsum.py b/binsum.py index 7e874b3..cd26013 100644 --- a/binsum.py +++ b/binsum.py @@ -35,7 +35,7 @@ with open(FILE, "rb") as f: start += 4 hwid = unpack(" 15: - print("./get_updates.py {}".format(" ".join(cur_line))) + print("./get_updates.py -q {}".format(" ".join(cur_line))) cur_line = queue else: cur_line += queue queue = [] - if not i in missing: + if i not in missing: continue queue.append("{:04}".format(i)) missing_count += 1 cur_line += queue if len(cur_line) > 0: - print("./get_updates.py {}".format(" ".join(cur_line))) + print("./get_updates.py -q {}".format(" ".join(cur_line))) known_count = len(devices.DEVICES) print() @@ -50,13 +50,13 @@ if len(sys.argv) > 1: print("-" * 100) print("Here are some possible future ids:") - print("./get_updates.py", end="") + print("./get_updates.py -q", end="") cur_line = 0 for i in range(last_id + 1, last_id + 300): if i % 10 == 0 and cur_line > 5: print() - print("./get_updates.py", end="") + print("./get_updates.py -q", end="") cur_line = 0 print(" {:04}".format(i), end="") cur_line += 1 From 8711fad3c2444a5a12bb53ed03a481985e6f9948 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 11 Dec 2022 02:58:43 +0100 Subject: [PATCH 53/61] Fix typos. --- grmn/devices.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grmn/devices.py b/grmn/devices.py index 4893e1d..73e65b6 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1,4 +1,4 @@ -# -*- coding: {0: utf-8 -*- +# -*- coding: utf-8 -*- # Some acronyms/abbreviations: # * FFP - Final Factory Production @@ -1733,4 +1733,4 @@ DEVICES = { # 7124: {0: "vivoactive 3t, ???"}, } -# vim: {0: ft=txt +# vim: ft=txt From a7ad1934ddeb9bee70b3f479071ef4548c78f1ef Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 11 Dec 2022 18:22:24 +0100 Subject: [PATCH 54/61] More sub-ids. --- grmn/devices.py | 19 +++++++++++++++++++ grmn/updateserver.py | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 73e65b6..1d82866 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- # Some acronyms/abbreviations: +# * CTP - Capacitive Touch Panel # * FFP - Final Factory Production # * FR - Forerunner +# * iR - inReach # * RTL - Radar Tail Light (Garmin Varia) # * RVR - Rear View Radar (Garmin Varia) # * SW - Software @@ -511,6 +513,11 @@ DEVICES = { 10: "Flight Stream 110/210 v2.30", 11: "Flight Stream 110/210 v2.40", 20: "Flight Stream 110/210 v2.50", + 40: "Flight Stream 110/210 v2.70", + 50: "Flight Stream 110/210 v2.80", + 51: "Flight Stream 110/210 v2.81", + 60: "Flight Stream 110/210 v2.90", + 61: "Flight Stream 110/210 v2.91", }, 1786: {0: "GPS 15x|15xH/xL|16x|18x OEM/5Hz 1786"}, 1788: {0: "GTR20/200"}, @@ -588,6 +595,14 @@ DEVICES = { 30: "Flight Stream 510 v2.30", 32: "Flight Stream 510 v2.32", 33: "Flight Stream 510 v2.33", + 40: "Flight Stream 510 v2.40", + 41: "Flight Stream 510 v2.41", + 42: "Flight Stream 510 v2.42", + 51: "Flight Stream 510 v2.51", + 61: "Flight Stream 510 v2.61", + 62: "Flight Stream 510 v2.62", + 70: "Flight Stream 510 v2.70", + 71: "Flight Stream 510 v2.71", }, 2024: {0: "Quatix China"}, 2030: {0: "HAC 2CT"}, @@ -1096,6 +1111,9 @@ DEVICES = { 3144: {0: "Forerunner 235 Lite APAC"}, 3145: {0: "Forerunner 245 APAC"}, 3153: {0: "fenix 5 Plus, ANT_BLE_BT"}, + 3155: { + 50: "RB-IN1501 Stereo Update", + }, 3157: {0: "Edge 830, ???"}, 3163: {0: "vivoactive 3 Music APAC, WiFi"}, 3164: {0: "vivoactive 3 Music APAC, Sensor Hub"}, @@ -1359,6 +1377,7 @@ DEVICES = { }, 3579: { 10: "RV-85x/RV-105x", + 50: "RV-5x Stereo Update", }, 3589: {0: "Forerunner 745"}, 3590: {0: "Forerunner 745, Sensor Hub"}, diff --git a/grmn/updateserver.py b/grmn/updateserver.py index 0827263..3fb9df8 100644 --- a/grmn/updateserver.py +++ b/grmn/updateserver.py @@ -15,6 +15,7 @@ PROTO_API_GETALLUNITSOFTWAREUPDATES_URL = "http://omt.garmin.com/Rce/ProtobufApi WEBUPDATER_SOFTWAREUPDATE_URL = "https://www.garmin.com/support/WUSoftwareUpdate.jsp" GRMN_CLIENT_VERSION = "6.19.4.0" + class UpdateInfo: def __init__(self): self.source = None @@ -106,6 +107,7 @@ class UpdateInfo: def __repr__(self): return "[{}] {} {} {}".format(self.source, self.sku, self.device_name, self.fw_version) + class UpdateServer: def __init__(self): @@ -235,7 +237,7 @@ class UpdateServer: def get_unit_updates(self, device_xml): query = GetAllUnitSoftwareUpdates_pb2.GetAllUnitSoftwareUpdates() query.client_data.client = "express" - query.client_data.language ="en_GB" + query.client_data.language = "en_GB" query.client_data.client_platform = "Windows" query.client_data.client_platform_version = "1000 " query.device_xml = device_xml From 78bf9332901dd5200081113437516d580c590297 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:42:07 +0100 Subject: [PATCH 55/61] Fix AttributeError when subid is already numeric. Fixes #37 --- grmn/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 1d82866..6265a79 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -14,7 +14,7 @@ def get_name(hwid, subid, default=None): global DEVICES hwid = int(hwid) - if subid.isnumeric(): + if type(subid) is str and subid.isnumeric(): subid = int(subid) return DEVICES.get(hwid, {subid: default}).get(subid, default) From 868c4bed4fcf900164b8d8637def72505ad1701e Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:43:37 +0100 Subject: [PATCH 56/61] New HWIDs. Fixes #33, #39 --- grmn/devices.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 6265a79..9f9126c 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1179,7 +1179,7 @@ DEVICES = { 3288: {0: "fenix 6S Pro"}, 3289: {0: "fenix 6"}, 3290: {0: "fenix 6 Pro"}, - 3291: {0: "fenix 6X Pro"}, + 3291: {0: "fenix 6X Pro/tactix Delta"}, 3292: {0: "fenix 6S/6, ANT_BLE_BT"}, 3293: {0: "fenix 6S/6/6X Pro, ANT_BLE_BT"}, 3294: {0: "fenix 6S, Sensor Hub"}, @@ -1309,6 +1309,7 @@ DEVICES = { 3469: {0: "Forerunner 45 ASIA"}, 3472: {0: "Forerunner 45 ASIA, Sensor Hub"}, 3473: {0: "vivoactive 3 Daimler"}, + 3476: {0: "Bounce"}, 3477: {0: "vivoactive 3 Daimler APAC"}, 3480: {0: "Dash Cam 56"}, 3481: {0: "Dash Cam 66W"}, @@ -1318,6 +1319,7 @@ DEVICES = { 3491: {0: "dezl 700"}, 3492: {0: "dezl 800/1000"}, 3494: {0: "MARQ ASIA Series, Sensor Hub"}, + 3497: {0: "Bounce Network Processor"}, 3498: {0: "Rey"}, 3499: {0: "Darth Vader"}, 3500: {0: "Captain Marvel"}, @@ -1348,6 +1350,7 @@ DEVICES = { 3526: {0: "Approach Z82"}, 3527: {0: "Approach Z82, Aux"}, 3528: {0: "Alpha 10"}, + 3534: {0: "Alpha Dog Collar"}, 3535: {0: "Captain Marvel APAC"}, 3536: {0: "First Avenger APAC"}, 3537: {0: "Rey APAC"}, @@ -1406,6 +1409,7 @@ DEVICES = { 3608: { 1: "aera 760", }, + 3609: {0: "Bounce LTE"}, 3612: {0: "SW, AAIN20 (Toyota Android), Indonesia, AOER"}, 3615: {0: "Lily"}, 3616: {0: "Lily, Sensor Hub"}, @@ -1421,6 +1425,7 @@ DEVICES = { 3649: {0: "GPS Chipset MTK (3649)"}, 3652: {0: "Forerunner 945 LTE"}, 3653: {0: "Forerunner 945 LTE, ANT_BLE_BT"}, + 3657: {0: "GPSMAP 66s ASIA"}, 3658: {0: "GPSMAP 66i ASIA"}, 3660: {0: "GPSMAP 64sx SEA"}, 3661: {0: "GPSMAP 64sx India"}, @@ -1436,6 +1441,7 @@ DEVICES = { 3691: {0: "eTrex 22x/32x MN"}, 3694: {0: "GPSMAP 66sr"}, 3695: {0: "fleet 790 EU LTE, GPS"}, + 3698: {0: "Bounce CTP"}, 3700: {0: "Approach S62 ASIA"}, 3702: {0: "Descent Mk2i ASIA"}, 3703: {0: "venu 2"}, @@ -1473,6 +1479,7 @@ DEVICES = { 3782: {0: "quatix 6 Sapphire"}, 3783: {0: "quatix 6X Dual Power"}, 3784: {0: "ALT1250 LTE Modem Firmware"}, + 3785: {0: "Garmin PowerSwitch (Express)"}, 3786: {0: "Fusion MS-RA60"}, 3791: {0: "Descent Mk2(i), Sensor Hub"}, 3794: {0: "Forerunner 745 ASIA"}, @@ -1500,6 +1507,7 @@ DEVICES = { 3819: {0: "Approach R10, BLE"}, 3823: {0: "Approach G12/S12"}, 3824: {0: "Approach G12/S12, BLE"}, + 3827: {0: "Mercury BPM"}, 3828: {0: "Dash Cam 47"}, 3829: {0: "Dash Cam 57"}, 3830: {0: "Dash Cam 67W"}, @@ -1541,6 +1549,7 @@ DEVICES = { }, 3891: {0: "Instinct 2/2S, ANT_BLE"}, 3905: { + 0: "fenix 7S Sapphire Solar", 10: "System Software Bundle", }, 3906: { @@ -1584,6 +1593,7 @@ DEVICES = { }, 3949: {0: "venu 2S ASIA"}, 3950: {0: "venu 2 ASIA"}, + 3962: {0: "dezl headset"}, 3964: {0: "venu SQ ASIA, Sensor Hub"}, 3966: { 1: "aera 760, CHINA", @@ -1594,8 +1604,10 @@ DEVICES = { 1: "vivomove Sport, Network Processor", }, 3971: {0: "Quartz CTP Controller"}, + 3972: {0: "vivomove Trend, Sensor Hub"}, 3975: {0: "venu 2 Plus, ANT_BT_BLE"}, 3982: {0: "vivomove Sport"}, + 3983: {0: "vivomove Trend"}, 3986: {0: "Approach S12 ASIA"}, 3990: { 10: "Forerunner 255 Music Large Software Bundle", @@ -1619,6 +1631,7 @@ DEVICES = { 4012: {0: "dezl 500"}, 4017: {0: "venu 2 Plus ASIA"}, 4018: {0: "venu 2 Plus ASIA, Sensor Hub"}, + 4021: {0: "GarminFit jr. 3"}, 4024: { 10: "Forerunner 955 Software Bundle", }, @@ -1628,17 +1641,21 @@ DEVICES = { 4: "GPS Software, Approach S62 JAPAN", 15: "GPS Software", }, + 4037: {0: "inReach Mini 2"}, 4047: {0: "Alpha 200 US"}, 4048: {0: "Alpha 200 AUS/NZ"}, 4049: {0: "Alpha 200 EU"}, 4050: {0: "Alpha 200 FR"}, 4051: {0: "Alpha 200 Nordics"}, 4052: {0: "Alpha 200 RU"}, + 4053: {0: "Xero C1 Chronograph"}, 4056: {0: "GPSMAP 79"}, 4058: { 9: "Forerunner Entry Level, GPS SW", }, 4060: {0: "CamperVan"}, + 4061: {0: "Edge 540"}, + 4062: {0: "Edge 840"}, 4063: {0: "vivosmart 5"}, 4064: {0: "vivosmart 5, Sensor Hub"}, 4068: { @@ -1654,6 +1671,8 @@ DEVICES = { 10: "System Software Bundle", }, 4080: {0: "GPS Software (4080)"}, + 4087: {0: "SERV RV Fixed Display Software Update"}, + 4090: {0: "Fusion MS-WB675"}, 4091: {0: "Instinct 2s ASIA"}, 4094: {0: "SW, LWIN21, TAM, System Code, AOER"}, 4095: {0: "Delta SE"}, @@ -1691,6 +1710,7 @@ DEVICES = { 10: "System Software Bundle", }, 4140: {0: "DriveSmart x6 ASIA"}, + 4143: {0: "Dash Cam Live"}, 4145: {0: "inReach Mini 2 ASIA"}, 4155: {0: "Instinct Crossover"}, 4156: {0: "Instinct Crossover, Sensor Hub"}, @@ -1729,6 +1749,7 @@ DEVICES = { }, 4200: {0: "T5X/TT15X Dog Collar"}, 4209: {0: "RV/Camper 795"}, + 4210: {0: "RV/Camper 895/1095"}, 4213: {0: "Rocket Camera"}, 4221: { 1: "venu SQ 2, Network Processor", @@ -1741,11 +1762,19 @@ DEVICES = { 1: "venu SQ 2, Touch Controller", }, 4285: {0: "SW, LIIN22, TAM, System Code, AOER"}, + 4292: {0: "Varia eRTL615"}, 4298: {0: "SW, LWIN21, TMV, System Code, AOER"}, + 4299: {0: "zumo XT2"}, 4305: {0: "Edge 1040 ASIA"}, 4333: {0: "eTrex 22X/32X 2022 Redesign"}, 4337: {0: "WD eMMC"}, 4353: {0: "Edge Explore 2, ELAN Touchpanel"}, + 4354: {0: "NEO 3M Radio"}, + 4355: {0: "NEO 3M Brake"}, + 4394: {0: "System Software"}, + 4412: {0: "SW, LWIN21, UMWT, System Code, AOER"}, + 4449: {0: "Drive 53"}, + 4503: {0: "SN100T NFCC Firmware"}, # 5423: {0: "vivosmart APAC, ???"}, # 5424: {0: "vivosmart APAC, ???"}, # 6182: {0: "Varia Vision/Nautix, ???"}, From 6341ac9ca5c9a536e78f5e5aa1821ebb7b55f4be Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:46:50 +0100 Subject: [PATCH 57/61] More HWIDs. Fixes #29 --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 9f9126c..7025d14 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1553,6 +1553,7 @@ DEVICES = { 10: "System Software Bundle", }, 3906: { + 0: "fenix 7 Solar", 10: "System Software Bundle", }, 3907: { @@ -1581,6 +1582,7 @@ DEVICES = { }, 3934: {0: "Approach S42"}, 3943: { + 0: "epix Gen2", 10: "System Software Bundle", }, 3944: { From d44f636b4b2af80f595f0813d3f723132dfc2031 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:48:20 +0100 Subject: [PATCH 58/61] Forerunner 45S. Fixes #26 --- grmn/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 7025d14..787d6ea 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1172,7 +1172,7 @@ DEVICES = { 3273: {0: "Instinct APAC"}, 3275: {0: "Edge/Edge Bontrager 1030, ???"}, 3281: {0: "STRIKER Cast"}, - 3282: {0: "Forerunner 45"}, + 3282: {0: "Forerunner 45S/45"}, 3284: {0: "GPSMAP 66i"}, 3286: {0: "Garmin DriveSmart 65 with Amazon Alexa"}, 3287: {0: "fenix 6S"}, From 71fe99d0beedaa8f661de534c58fb669a266b9f0 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:49:48 +0100 Subject: [PATCH 59/61] Fix name. Fixes #23 --- grmn/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grmn/devices.py b/grmn/devices.py index 787d6ea..18aa698 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1582,7 +1582,7 @@ DEVICES = { }, 3934: {0: "Approach S42"}, 3943: { - 0: "epix Gen2", + 0: "Epix (Gen 2)", 10: "System Software Bundle", }, 3944: { From b5c1e956ebac771907fba3d7835bdbe5907aa7bf Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 01:53:50 +0100 Subject: [PATCH 60/61] GNSS-related acronyms explained in comment. Fixes #35 --- grmn/devices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grmn/devices.py b/grmn/devices.py index 18aa698..2c7023a 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- # Some acronyms/abbreviations: +# * CPE - Connected Predictive Ephemeris # * CTP - Capacitive Touch Panel +# * EPO - Extended Prediction Orbit # * FFP - Final Factory Production # * FR - Forerunner # * iR - inReach From 5be4c66ac0431dba84bd32084688bb07e05a69f9 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 27 May 2024 02:24:10 +0100 Subject: [PATCH 61/61] New HWIDs for Marine Software OTAs and new TLV binary fields. Fixes #40 --- grmn/devices.py | 27 +++++++++++++++++++++++++++ grmn/tlv.py | 16 +++++++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/grmn/devices.py b/grmn/devices.py index 2c7023a..d0503f8 100644 --- a/grmn/devices.py +++ b/grmn/devices.py @@ -282,6 +282,7 @@ DEVICES = { 1120: {0: "Oregon x50 TWN"}, 1124: {0: "Forerunner 110"}, 1128: {0: "Aera DSP Software"}, + 1129: {0: "Marine Software - OTA - 006-B1129-00"}, 1132: {0: "nuvi 16xx EU"}, 1136: {0: "Approach G3"}, 1137: {0: "nuvi 1480 TWN"}, @@ -360,6 +361,8 @@ DEVICES = { 1396: {0: "Kenwood GVN60, ???"}, 1400: {0: "DC20/DC30/DC40"}, 1405: {0: "Approach G10"}, + 1412: {0: "Marine Software - OTA - 006-B1412-00"}, + 1413: {0: "Marine Software - OTA - 006-B1413-00"}, 1420: {0: "Chrysler RHB15 v4/RHB17 v2/RHB17 v4/RHB18 v1"}, 1422: {0: "Edge 500 Korea"}, 1425: {0: "Chrysler CTP16 v3/CTP17 v4/CTP18 v1"}, @@ -578,6 +581,7 @@ DEVICES = { 1956: {0: "vivosmart"}, 1958: {0: "nuvi C255 China / nuvi 55 India/Indonesia/SGMY"}, 1959: {0: "nuvi C265 China"}, + 1960: {0: "Marine Software - OTA - 006-B1960-00"}, 1966: {0: "nuvi 55TV Brazil"}, 1967: {0: "fenix 2"}, 1968: {0: "fenix 2, ???"}, @@ -585,6 +589,7 @@ DEVICES = { 1982: {0: "BMW Navigator V Japan/China"}, 1987: {0: "Epix, Display"}, 1988: {0: "Epix"}, + 1998: {0: "Marine Software - OTA - 006-B1998-00"}, 1999: {0: "Approach S2 APAC"}, 2000: {0: "Approach S2 APAC, ???"}, 2002: {0: "dezl 770"}, @@ -606,6 +611,7 @@ DEVICES = { 70: "Flight Stream 510 v2.70", 71: "Flight Stream 510 v2.71", }, + 2022: {0: "Marine Software - OTA - 006-B2022-00"}, 2024: {0: "Quatix China"}, 2030: {0: "HAC 2CT"}, 2032: {0: "T 5, TT 15"}, @@ -635,9 +641,13 @@ DEVICES = { 2087: {0: "nuvi 57/58"}, 2088: {0: "nuvi 67/68"}, 2094: {0: "fenix 2 Japan"}, + 2096: {0: "Marine Software - OTA - 006-B2096-00"}, 2100: {0: "Edge 1000, Korea"}, + 2101: {0: "Marine Software - OTA - 006-B2101-00"}, 2108: {0: "fenix 3/tactix Bravo/quatix 3/D2 Bravo, Wi-Fi"}, 2112: {0: "Firmware Update for the BC30 RX"}, + 2120: {0: "Marine Software - OTA - 006-B2120-00"}, + 2121: {0: "Marine Software - OTA - 006-B2121-00"}, 2123: {0: "GPSMAP 64S, SEA"}, 2124: {0: "GPSMAP 64SJ, Japan"}, 2127: {0: "Touchscreen E1 Firmware"}, @@ -778,8 +788,12 @@ DEVICES = { 2413: {0: "fenix 3 HR"}, 2414: {0: "fenix 3 HR/D2 Bravo Titanium, Display"}, 2415: {0: "fenix 3 HR, Sensor Hub"}, + 2416: {0: "Marine Software - OTA - 006-B2416-00"}, 2417: {0: "VIRB Ultra 30"}, 2423: {0: "ANT/BLE N3 Firmware"}, + 2426: {0: "Marine Software - OTA - 006-B2426-00"}, + 2427: {0: "Marine Software - OTA - 006-B2427-00"}, + 2428: {0: "Marine Software - OTA - 006-B2428-00"}, 2429: {0: "Index Smart Scale"}, 2431: {0: "Forerunner 235"}, 2432: {0: "fenix Chronos"}, @@ -791,6 +805,7 @@ DEVICES = { 2447: {0: "Varia Vision/Nautix, ???"}, 2449: {0: "PRO Control 2 RR"}, 2450: {0: "Delta Smart"}, + 2463: {0: "Marine Software - OTA - 006-B2463-00"}, 2467: {0: "D2 Bravo, K65, China"}, 2470: {0: "GDR C530"}, 2471: {0: "Varia Vision APAC"}, @@ -813,6 +828,8 @@ DEVICES = { 2531: {0: "Edge Explore 820"}, 2533: {0: "Forerunner 735XT APAC"}, 2534: {0: "ForeAthlete 735XTJ"}, + 2535: {0: "Marine Software - OTA - 006-B2535-00"}, + 2536: {0: "Marine Software - OTA - 006-B2536-00"}, 2544: {0: "fenix 5S"}, 2545: {0: "Dash Cam 30 (2545)"}, 2546: {0: "Dash Cam 35 (2546)"}, @@ -852,6 +869,7 @@ DEVICES = { 2628: {0: "Edge 820 Taiwan"}, 2629: {0: "Edge 820 Korea"}, 2630: {0: "Edge 820 SEA"}, + 2631: {0: "Marine Software - OTA - 006-B2631-00"}, 2632: {0: "Delta Smart, ???"}, 2635: {0: "Dash Cam 45-S"}, 2636: {0: "Dash Cam 55"}, @@ -877,6 +895,7 @@ DEVICES = { 2675: {0: "fenix Chronos APAC"}, 2680: {0: "Spectre, Touchpanel"}, 2681: {0: "Oregon 7xx APAC"}, + 2682: {0: "Marine Software - OTA - 006-B2682-00"}, 2684: {0: "RV/Camper 770"}, 2687: {0: "VIRB 360"}, 2689: {0: "CAN µC AOER, APGC18"}, @@ -888,6 +907,7 @@ DEVICES = { 2705: {0: "Avtex Tourer One Plus"}, 2708: {0: "Approach S60, ???"}, 2713: {0: "Edge 1030"}, + 2718: {0: "Marine Software - OTA - 006-B2718-00"}, 2721: {0: "Edge 1030/Edge 1030 Bontrager, ???"}, 2725: { 0: "aera 79x China", @@ -926,6 +946,7 @@ DEVICES = { 0: "vivomove HR, Touchpanel", 1: "vivomove HR Premium, Cap Touch Panel (CTP)", }, + 2775: {0: "Marine Software - OTA - 006-B2775-00"}, 2776: {0: "Approach G30, Touchscreen"}, 2777: {0: "Rino 700"}, 2778: {0: "GPS Chipset Type M4"}, @@ -1001,6 +1022,7 @@ DEVICES = { 2909: {0: "Edge 130"}, 2910: {0: "dezl 780"}, 2911: {0: "dezlCam 785"}, + 2912: {0: "Marine Software - OTA - 006-B2912-00"}, 2924: {0: "Edge 1030 APAC"}, 2925: {0: "GPS 12H India"}, 2927: {0: "vivosmart 4"}, @@ -1064,6 +1086,7 @@ DEVICES = { 3077: {0: "Forerunner 245 Music"}, 3078: {0: "Forerunner 245, Sensor Hub"}, 3079: {0: "Forerunner 245 Music, Sensor Hub"}, + 3082: {0: "Marine Software - OTA - 006-B3082-00"}, 3085: {0: "Approach G80"}, 3089: {0: "fenix 5 Plus APAC"}, 3091: {0: "PRO 550 Plus, Sensor Hub"}, @@ -1137,6 +1160,7 @@ DEVICES = { 3206: {0: "GLO 2"}, 3211: {0: "ALT1160 LTE Modem Firmware"}, 3216: {0: "Xero S1 Trapshooting Trainer"}, + 3217: {0: "Marine Software - OTA - 006-B3217-00"}, 3218: {0: "vivosmart 4 APAC"}, 3220: {0: "NFC 3rd Party Applets"}, 3224: {0: "vivoactive 4 Small"}, @@ -1384,6 +1408,7 @@ DEVICES = { 10: "RV-85x/RV-105x", 50: "RV-5x Stereo Update", }, + 3580: {0: "Marine Software - OTA - 006-B3580-00"}, 3589: {0: "Forerunner 745"}, 3590: {0: "Forerunner 745, Sensor Hub"}, 3591: {0: "Forerunner 745, BLE_BT_ANT"}, @@ -1445,6 +1470,7 @@ DEVICES = { 3695: {0: "fleet 790 EU LTE, GPS"}, 3698: {0: "Bounce CTP"}, 3700: {0: "Approach S62 ASIA"}, + 3701: {0: "Marine Software - OTA - 006-B3701-00"}, 3702: {0: "Descent Mk2i ASIA"}, 3703: {0: "venu 2"}, 3704: {0: "venu 2S"}, @@ -1457,6 +1483,7 @@ DEVICES = { 3711: {0: "Group Ride Radio"}, 3715: {0: "fleet 790 SA, GPS"}, 3717: {0: "STRIKER Cast, GPS"}, + 3719: {0: "Marine Software - OTA - 006-B3719-00"}, 3720: {0: "Lily, CTP Controller"}, 3725: {0: "GPSMAP 65/65s"}, 3737: {0: "venu Daimler ASIA"}, diff --git a/grmn/tlv.py b/grmn/tlv.py index c7ed1e2..c543ecd 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -21,6 +21,13 @@ TLV_TYPES = { 0x051b: "Binary Region 1b", 0x052b: "Binary Region 2b", 0x0533: "Binary Region 33 (dskimg)", + 0x0534: "Binary Region 34", + 0x0535: "Binary Region 35", + 0x0536: "Binary Region 36", + 0x0537: "Binary Region 37", + 0x0538: "Binary Region 38", + 0x0539: "Binary Region 39", + 0x053a: "Binary Region 3a", 0x0549: "Binary Region 49", 0x0555: "Binary Region 55 (fw)", 0x0556: "Binary Region 56", @@ -33,6 +40,8 @@ TLV_TYPES = { 0x0599: "Binary Region 99", 0x059e: "Binary Region 9e (resources)", 0x05a2: "Binary Region a2", + 0x05a4: "Binary Region a4", + 0x05a5: "Binary Region a5", 0x05ab: "Binary Region ab", 0x05f5: "Binary Region f5", 0x05f9: "Binary Region f9", @@ -47,9 +56,10 @@ TLV_TYPES = { 0xffff: "EOF marker", } -BINARY_TLVS = [ 0x0008, 0x02bd, 0x0505, 0x0510, 0x051b, 0x052b, 0x0533, 0x0549, 0x0555, 0x0556, - 0x0557, 0x0566, 0x057f, 0x0588, 0x0590, 0x0595, 0x0599, 0x059e, 0x05a2, 0x05ab, - 0x05f5, 0x05f9, 0x05fa, 0x05fb, 0x05fc, 0x05fd, 0x05fe, 0x07d1, 0x07d2, 0x07d3 ] +BINARY_TLVS = [ 0x0008, 0x02bd, 0x0505, 0x0510, 0x051b, 0x052b, 0x0533, 0x0534, 0x0535, 0x0536, + 0x0537, 0x0538, 0x0539, 0x053a, 0x0549, 0x0555, 0x0556, 0x0557, 0x0566, 0x057f, + 0x0588, 0x0590, 0x0595, 0x0599, 0x059e, 0x05a2, 0x05a4, 0x05a5, 0x05ab, 0x05f5, + 0x05f9, 0x05fa, 0x05fb, 0x05fc, 0x05fd, 0x05fe, 0x07d1, 0x07d2, 0x07d3 ] class TLV: def __init__(self, type_id: int, expected_length: int, value=None, offset: int=None):