From b73e95f45448b1f785dfdec4a5887d6298e71f5a Mon Sep 17 00:00:00 2001
From: Markus Birth <markus@birth-online.de>
Date: Sun, 11 Dec 2022 02:53:51 +0100
Subject: [PATCH] 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("<H", block[start+24:start+24+2])[0]
                 fver = unpack("<H", block[start+28:start+28+2])[0]
-                print("- Hardware ID: 0x{:04x} / {:d} ({})".format(hwid, hwid, devices.DEVICES.get(hwid, "Unknown device")))
+                print("- Hardware ID: 0x{:04x} / {:d} ({})".format(hwid, hwid, devices.get_name(hwid, 0, "Unknown device")))
                 print("- Firmware Version: 0x{:04x} / {:04d}".format(fver, fver))
             first_block = False
         if END_MARKER in block:
diff --git a/find_hwids.py b/find_hwids.py
index a2ee15b..58d144f 100755
--- a/find_hwids.py
+++ b/find_hwids.py
@@ -32,7 +32,9 @@ 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="")
+    hw_id = r[5:9]
+    sub_id = r[10:]
+    device_name = devices.get_name(hw_id, sub_id)
+    if device_name:
+        print(" - {}".format(device_name), end="")
     print()
diff --git a/get_updates.py b/get_updates.py
index 6e83429..8a85f4c 100644
--- a/get_updates.py
+++ b/get_updates.py
@@ -18,6 +18,7 @@ optp.add_option("-c", "--changelog", action="store_true", dest="changelog", help
 optp.add_option("-l", "--license", action="store_true", dest="license", help="also show license")
 optp.add_option("-E", "--express", action="store_false", dest="webupdater", default=True, help="Only query Garmin Express")
 optp.add_option("-W", "--webupdater", action="store_false", dest="express", default=True, help="Only query WebUpdater")
+optp.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False, help="Only output results (if any)")
 optp.add_option("--id", dest="unit_id", help="Specify custom Unit ID")
 optp.add_option("--code", action="append", dest="unlock_codes", metavar="UNLOCK_CODE", default=[], help="Specify map unlock codes")
 optp.add_option("--devicexml", dest="devicexml", metavar="FILE", help="Use specified GarminDevice.xml (also implies -E)")
@@ -83,10 +84,11 @@ for i, sku in enumerate(device_skus):
     if len(sku) <= 4:
         device_skus[i] = "006-B{:>04}-00".format(sku)
 
-if device_skus[0][0:5] == "006-B":
+if device_skus[0][0:5] == "006-B" and not opts.quiet:
     primary_hwid = int(device_skus[0][5:9])
-    device_name = devices.DEVICES.get(primary_hwid, "Unknown device")
-    print("Device {:04d} (guessed): {}".format(primary_hwid, device_name))
+    primary_subid = device_skus[0][10:]
+    device_name = devices.get_name(primary_hwid, primary_subid, "Unknown device")
+    print("Device {:04d}-{:02} (guessed): {}".format(primary_hwid, primary_subid, device_name))
 
 if opts.unit_id:
     print("Custom Unit ID: {}".format(opts.unit_id))
@@ -99,14 +101,18 @@ for uc in opts.unlock_codes:
 results = []
 
 if opts.express:
-    print("Querying Garmin Express ...", end="", flush=True)
+    if not opts.quiet:
+        print("Querying Garmin Express ...", end="", flush=True)
     results += us.query_express(device_skus)
-    print(" done.")
+    if not opts.quiet:
+        print(" done.")
 
 if opts.webupdater:
-    print("Querying Garmin WebUpdater ...", end="", flush=True)
+    if not opts.quiet:
+        print("Querying Garmin WebUpdater ...", end="", flush=True)
     results += us.query_webupdater(device_skus)
-    print(" done.")
+    if not opts.quiet:
+        print(" done.")
 
 for r in results:
     print(r)
diff --git a/grmn/devices.py b/grmn/devices.py
index aa7db52..4893e1d 100644
--- a/grmn/devices.py
+++ b/grmn/devices.py
@@ -1,1355 +1,1736 @@
-# -*- coding: utf-8 -*-
+# -*- coding: {0: utf-8 -*-
+
+# Some acronyms/abbreviations:
+# * FFP - Final Factory Production
+# * FR - Forerunner
+# * RTL - Radar Tail Light (Garmin Varia)
+# * RVR - Rear View Radar (Garmin Varia)
+# * SW - Software
+# * SXM - SiriusXM
+# * WW - World-wide
+
+def get_name(hwid, subid, default=None):
+    global DEVICES
+    hwid = int(hwid)
+    if subid.isnumeric():
+        subid = int(subid)
+    return DEVICES.get(hwid, {subid: default}).get(subid, default)
 
 DEVICES = {
-      82: "Firmware Update for c5xxPLD",
-     111: "eMap",
-     126: "GPSMAP 168 Sounder",
-     128: "GPSMAP 295",
-     130: "eTrex",
-     136: "GPSMAP 176",
-     141: "eTrex Summit",
-     144: "GPSMAP 176C",
-     145: "GPSMAP 196",
-     151: "StreetPilot III",
-     154: "eTrex Venture/Mariner",
-     155: "GPS V",
-     156: "eTrex Camo/Euro",
-     168: "NavTalk GSM",
-     169: "eTrex Vista rev A",
-     173: "GPS 76 Rev A / dezl 770 Camera",
-     177: "GPSMAP 76 Rev. A",
-     179: "eTrex Legend Rev A",
-     194: "GPSMAP 76S Rev. A",
-     197: "Rino 110",
-     209: "Rino 120",
-     210: "StreetPilot 26xx",
-     231: "Quest",
-     247: "GPS 72 Rev A",
-     248: "Geko 201",
-     256: "Geko 301",
-     260: "GPSMAP 296",
-     264: "Rino 130/120/110",
-     273: "GPS 18",
-     282: "Forerunner 201",
-     283: "Forerunner 301",
-     285: "GPSMAP 276C",
-     289: "GPS 60",
-     291: "GPSMAP 60C/60CS/76C/76CS",
-     292: "GPSMAP 60Cx/60CSx/76Cx/76CSx",
-     294: "Garmin Marine Network Minimum Software for g2 v11.5 (294)",
-     295: "eTrex Camo",
-     308: "GPSMAP 60",
-     314: "Foretrex 101/201",
-     315: "eTrex Legend C/Vista C",
-     364: "GPSMAP 96",
-     365: "GPSMAP 96C",
-     381: "Rino 520/530",
-     382: "StreetPilot c320/c330",
-     384: "Garmin Marine Network Minimum Software for g2 v11.5 (384)",
-     402: "GPSMAP 396",
-     404: "StreetPilot 27xx",
-     406: "GPSMAP 376C",
-     410: "GPSMAP 276C Plus",
-     411: "eTrex Legend Rev B",
-     412: "StreetPilot 7200/7500",
-     418: "GPSMAP 76CS Plus",
-     420: "eTrex Vista rev B",
-     421: "eTrex Legend Cx/Vista Cx/Venture Cx",
-     426: "Firmware Update for GXM30 Receiver",
-     429: "StreetPilot i3",
-     430: "GPS 72 Rev B",
-     439: "GPSMAP 76 Rev. B",
-     444: "GPS 76 Rev B",
-     450: "Edge 205/305",
-     463: "Quest 2",
-     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",
-     520: "StreetPilot 2820",
-     529: "Garmin Marine Network Minimum Software for g2 v11.5 (529)",
-     530: "Garmin Marine Network Minimum Software for g2 v11.5 (530)",
-     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",
-     566: "nuvi 310/360/370",
-     570: "Astro 220",
-     574: "Geko 201/301",
-     577: "Rino 520HCx/530HCx",
-     580: "zumo 4xx/5xx",
-     583: "Firmware Update for STP2820 / BMW Navigator III Bluetooth Module",
-     584: "GPSMAP 76S Rev. B",
-     585: "GPSMAP 278",
-     595: "GPSMAP 496",
-     596: "nuvi 6xx",
-     600: "Where2 c550",
-     601: "StreetPilot c5xx Smart",
-     602: "StreetPilot c5xx Mopar",
-     603: "StreetPilot c5xx Mercedes",
-     604: "Garmin Marine Network Minimum Software for g2 v11.5 (604)",
-     605: "Garmin Marine Network Minimum Software for g2 v11.5 (605)",
-     606: "Garmin Marine Network Minimum Software for g2 v11.5 (606)",
-     607: "Garmin Marine Network Minimum Software for g2 v11.5 (607)",
-     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",
-     665: "Chartplotters Minimum Software for g2 charts (665)",
-     666: "Chartplotters Minimum Software for g2 charts (666)",
-     670: "Chartplotters Minimum Software for g2 charts (670)",
-     672: "nuvi 350 Toyota DIO",
-     673: "nuvi 360 MINI",
-     675: "nuvi 360 BMW3",
-     680: "GPS Chipset Type B",
-     681: "nuvi 350 Honda Access",
-     682: "nuvi 360 Honda Access",
-     683: "nuvi 350 Toyota PIO",
-     689: "DC20/DC30/DC40",
-     694: "eTrex Legend HCx/Vista HCx",
-     695: "eTrex Summit HC/Venture HC",
-     696: "eTrex H",
-     697: "BMW Motorrad Navigator III plus",
-     698: "zumo BMW",
-     711: "zumo Honda",
-     717: "Forerunner 405",
-     721: "Chartplotters Minimum Software for g2 charts (721)",
-     723: "nuvi 5xx",
-     725: "Chartplotters Minimum Software for g2 charts (725)",
-     726: "nuvi 8xx",
-     732: "StreetPilot c5xx Mercedes Phase2",
-     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",
-     786: "eTrex Venture HC/Summit HC",
-     788: "nuvi 7x0 Mercedes/Smart",
-     793: "Garmin Marine Network Minimum Software for g2 v11.5 (793)",
-     794: "Garmin Marine Network Minimum Software for g2 v11.5 (794)",
-     795: "Oregon",
-     796: "GPS 15x|15xH/xL|16x|18x OEM",
-     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",
-     830: "GSU73 ADAHRS",
-     832: "GPSMAP 6x0",
-     834: "nuvi 2xx",
-     835: "nuvi 2xxW",
-     836: "nuvi 760 TWN",
-     849: "Garmin Marine Network Minimum Software for g2 v11.5 (849)",
-     851: "nuvi 2x5",
-     852: "eTrex H Taiwan",
-     853: "StreetPilot C5XX Cendant-Avis Australia",
-     855: "nuvi 300/350 (MLC)",
-     856: "nuvi 310/360/370 (MLC)",
-     861: "GolfLogix Black",
-     862: "GXM40 Software",
-     865: "GPS 18x 5Hz",
-     869: "Garmin Marine Network Minimum Software for g2 v11.5 (869)",
-     870: "nuvi 7x5",
-     887: "GPSMAP 495",
-     896: "Oregon x50",
-     897: "Colorado TWN",
-     901: "Firmware Update for GTMxx Traffic Receiver Type 3",
-     903: "Garmin Marine Network Minimum Software for g2 v11.5 (903)",
-     913: "Aera GPS Software",
-     917: "Garmin Marine Network Minimum Software for g2 v11.5 (917)",
-     918: "Garmin Marine Network Minimum Software for g2 v11.5 (918)",
-     919: "Garmin Marine Network Minimum Software for g2 v11.5 (919)",
-     920: "Garmin Marine Network Minimum Software for g2 v11.5 (920)",
-     921: "Garmin Marine Network Minimum Software for g2 v11.5 (921)",
-     923: "Garmin Marine Network Minimum Software for g2 v11.5 (923)",
-     924: "BMW Motorrad Navigator IV/zumo 660",
-     930: "nuvi 255W SG",
-     932: "nuvi 2x5W TWN",
-     936: "Garmin Marine Network Minimum Software for g2 v11.5 (936)",
-     937: "Garmin Marine Network Minimum Software for g2 v11.5 (937)",
-     941: "eTrex HC Japan",
-     943: "nuvi 465T",
-     951: "Garmin Marine Network Minimum Software for g2 v11.5 (951)",
-     954: "Chartplotters Minimum Software for g2 charts (954)",
-     955: "Chartplotters Minimum Software for g2 charts (955)",
-     956: "Honda Navi Gen3",
-     957: "eTrex Legend H/Vista H",
-     960: "Dakota",
-     969: "Firmware Update for FMI Cables with Traffic",
-     970: "zumo 660/665, Mount Software",
-     971: "nuvi 12xx",
-     972: "nuvi 13xx/14xx",
-     974: "Chartplotters Minimum Software for g2 charts (974)",
-     977: "Firmware Update for CSR Bluetooth",
-     978: "nuvi 7x5, DSP Software",
-     979: "GPS Chipset Type M3",
-     983: "Oregon TWN",
-     988: "FR60",
-    1005: "Approach G5",
-    1007: "nuvi 765 TWN",
-    1014: "Garmin Marine Network Minimum Software for g2 v11.5 (1014)",
-    1015: "Garmin Marine Network Minimum Software for g2 v11.5 (1015)",
-    1018: "Forerunner 310XT",
-    1020: "Foretrex 301/401",
-    1033: "zumo 66x, Echo Cancellation Software",
-    1036: "Edge 500",
-    1037: "eTrex Legend/Vista H China",
-    1038: "eTrex HC China",
-    1039: "Forerunner 405CX",
-    1046: "nuvi 16xx NA",
-    1049: "eTrex Legend H China military",
-    1050: "eTrex H China military",
-    1058: "nuvi 5xx TWN",
-    1059: "GPS Chipset Type M3",
-    1063: "aera 5xx",
-    1073: "ecoRoute HD",
-    1074: "nuvi 2x5 (MTK)",
-    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)",
-    1106: "nuvi 12xx (MTK)",
-    1113: "GPSMAP 62/78",
-    1114: "Garmin Marine Network Minimum Software for g2 v11.5 (1114)",
-    1118: "KNA-G600",
-    1120: "Oregon x50 TWN",
-    1124: "Forerunner 110",
-    1128: "Aera DSP Software",
-    1132: "nuvi 16xx EU",
-    1136: "Approach G3",
-    1137: "nuvi 1480 TWN",
-    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",
-    1161: "nuvi 16xx TWN",
-    1169: "Edge 800",
-    1186: "nuvi 22xx",
-    1187: "nuvi 23xx",
-    1188: "nuLink 1695",
-    1196: "nuvi 1490TV",
-    1201: "GTU 10 US",
-    1204: "Dakota TWN",
-    1209: "Oregon 550 Korea",
-    1211: "nuvi 37xx, Touchscreen",
-    1213: "Edge 500 JPN",
-    1218: "Garmin Marine Network Minimum Software for g2 v11.5 (1218)",
-    1247: "Rino 6xx",
-    1250: "Forerunner 410",
-    1252: "Oregon 450tc Japan",
-    1254: "nuLink 23xx",
-    1257: "Kenwood GVN60, ???",
-    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, ???",
-    1299: "Kenwood GVN60, ???",
-    1301: "GPSMAP 62SJ Japan",
-    1304: "eTrex 10",
-    1305: "eTrex 20/30",
-    1318: "GPSMAP Series with SDCard",
-    1320: "Garmin Marine Network Minimum Software for g2 v11.5 (1320)",
-    1325: "Edge 200",
-    1327: "nuvi 24x5 Taiwan",
-    1328: "Forerunner 910XT",
-    1331: "GTU 10 EU",
-    1334: "Edge 800 JPN",
-    1339: "Astro 320",
-    1340: "GPSMAP 62sc/62stc",
-    1343: "GDL39 ADS-B Receiver",
-    1344: "GTU 10 CA",
-    1345: "Forerunner 610",
-    1349: "nuvi 30",
-    1350: "nuvi 40/50",
-    1352: "nuvi 25x5 Taiwan",
-    1353: "GPSMAP 62S Korea",
-    1354: "GPSMAP 62S/78S Thai & Indonesia",
-    1364: "aera 7xx",
-    1371: "nuvi 24x5/25x5",
-    1376: "nuvi 34xx",
-    1379: "GPS Chipset Type M3",
-    1381: "Vector",
-    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",
-    1443: "nuvi 40/50 China",
-    1445: "nuvi 2495 LT GLONASS",
-    1446: "Forerunner 310XT",
-    1452: "Approach G6",
-    1454: "Chartplotters Minimum Software for g2 charts (1454)",
-    1461: "UAT 163",
-    1463: "nuvi 2585 Russia",
-    1468: "Suzuki Fuji MY13-MY17",
-    1469: "Approach S3/S4",
-    1470: "Approach S3/S4, ???",
-    1471: "eTrex 20/30 JPN",
-    1472: "eTrex 10 JPN",
-    1473: "zumo 3x0",
-    1475: "fleet 590 U.S.",
-    1482: "Forerunner 10",
-    1484: "GPS Chipset Type M4",
-    1485: "GPS Chipset Type M4",
-    1490: "GLO",
-    1497: "Edge 800 Korea",
-    1498: "eTrex 20/30 SEA",
-    1499: "Garmin Swim",
-    1504: "eTrex 10 SEA",
-    1506: "Nordic Rino650",
-    1510: "nuvi 40/50 Taiwan",
-    1516: "dezl 760",
-    1517: "nuvi 27x7/27x8",
-    1521: "nuvi 35xx Taiwan",
-    1522: "nuvi 2460 India / nuvi 2xx5 China",
-    1525: "Oregon 550 China",
-    1532: "GPSMAP 62sc China",
-    1533: "GPSMAP 62sc Japan",
-    1535: "nuvi 2580 South America",
-    1536: "Oregon 550tc Japan",
-    1537: "Forerunner 910XT China",
-    1541: "BMW Motorrad Navigator V",
-    1545: "TT10",
-    1546: "Firmware Update for GTMxx Digital Radio Type S",
-    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",
-    1562: "Alpha 100",
-    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",
-    1593: "nuvi 2568 India",
-    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",
-    1610: "Chartplotters Minimum Software for g2 charts (1610)",
-    1611: "Chartplotters Minimum Software for g2 charts (1611)",
-    1613: "nuvi x2/x4",
-    1617: "nuvi c155/c165/c175 China",
-    1619: "GPS Chipset Type M5",
-    1620: "GPS Chipset Type M5",
-    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",
-    1664: "Forerunner 910XT, Korea",
-    1665: "Chartplotters Minimum Software for g2 charts (1665)",
-    1666: "Chartplotters Minimum Software for g2 charts (1666)",
-    1667: "Chartplotters Minimum Software for g2 charts (1667)",
-    1668: "Chartplotters Minimum Software for g2 charts (1668)",
-    1675: "ANT Firmware (TPMS sensors)",
-    1676: "fenix China",
-    1677: "fenix Japan",
-    1678: "fenix Korea",
-    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",
-    1693: "quatix, ???",
-    1696: "DC 50",
-    1697: "nuvi 53/55/56",
-    1708: "fleet 590 EU",
-    1711: "nuvi 2795 South America",
-    1712: "nuvi 42/52 SGMY",
-    1714: "nuvi 42/52 Taiwan",
-    1716: "Monterra",
-    1719: "GPSMAP 62sc SEA",
-    1721: "Edge 810, Japan",
-    1722: "nuvi 24x7/25x7 Taiwan",
-    1723: "nuvi 3590 CHN",
-    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",
-    1736: "Edge Touring",
-    1739: "GPSMAP 629sc CHN",
-    1740: "nuvi 1690 lite Taiwan",
-    1741: "eTrex 20S SG",
-    1742: "Edge 510, Japan",
-    1743: "HRM-Tri",
-    1744: "Chartplotters Minimum Software for g2 charts (1744)",
-    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",
-    1823: "Edge 810 Taiwan",
-    1826: "Carmax 310A/310V, ???",
-    1829: "Chartplotters Minimum Software for g2 charts (1829)",
-    1836: "Edge 1000",
-    1837: "vivofit",
-    1842: "Approach G7",
-    1843: "Oregon 6xx System, SEA",
-    1850: "Forerunner 220/620, Display",
-    1851: "Forerunner 220/620, ANT",
-    1854: "Chartplotters Minimum Software for g2 charts (1854)",
-    1857: "Oregon 6xx System, JPN",
-    1859: "GPSMAP 64",
-    1875: "Chartplotters Minimum Software for g2 charts (1875)",
-    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)",
-    1891: "Approach S2 JPN",
-    1892: "Approach S2 JPN, ???",
-    1895: "Monterra, GPS/BeiDou CHN",
-    1903: "Forerunner 15",
-    1907: "vivoactive",
-    1908: "vivoactive, Display",
-    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",
-    1931: "Forerunner 220 China",
-    1932: "nuvi 27x9",
-    1936: "Approach S6",
-    1939: "VIRB CHN",
-    1940: "VIRB ASIA",
-    1942: "Forerunner 920XT, Display",
-    1947: "nuvi 25x9 C4",
-    1948: "nuvi 26x9 C4",
-    1955: "vivosmart, ANT",
-    1956: "vivosmart",
-    1958: "nuvi C255 China / nuvi 55 India/Indonesia/SGMY",
-    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",
-    2010: "Kenwood GVN60",
-    2024: "Quatix China",
-    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/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",
-    2067: "Edge 520",
-    2068: "SW,HondaPH",
-    2070: "Edge 1000, China",
-    2077: "nuvi 2xx7/2xx8 C4",
-    2079: "Vector S",
-    2081: "GPSMAP 7x07",
-    2087: "nuvi 57/58",
-    2088: "nuvi 67/68",
-    2094: "fenix 2 Japan",
-    2100: "Edge 1000, Korea",
-    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",
-    2134: "VIRB X",
-    2135: "vivosmart APAC",
-    2140: "eTrex Touch 25/35",
-    2141: "dezlCam",
-    2147: "Edge 25",
-    2148: "Forerunner 25",
-    2150: "vivofit 2",
-    2151: "Forerunner 225, OHR",
-    2153: "Forerunner 225",
-    2156: "Forerunner 630",
-    2157: "Forerunner 230",
-    2158: "Forerunner 735XT",
-    2159: "Forerunner, Display A1",
-    2160: "vivoactive APAC",
-    2161: "Vector 2",
-    2162: "Vector 2S",
-    2172: "VIRB XE",
-    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",
-    2192: "Varia Headlight",
-    2194: "Approach S6 APAC",
-    2196: "Wi-Fi A1 Firmware",
-    2197: "Forerunner 630, Touchscreen",
-    2198: "Dash Cam 30 (2198)",
-    2199: "Dash Cam 35 (2199)",
-    2200: "GPS 73",
-    2201: "GPS 12H",
-    2202: "TruSwing, ???",
-    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",
-    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",
-    2256: "GAD27 ECS",
-    2260: "Edge 520 Asia",
-    2261: "Edge 520 Japan",
-    2262: "D2 Bravo",
-    2266: "Approach S20",
-    2267: "Drive / DriveSmart 40/50",
-    2268: "Drive / DriveSmart 60/70 / DriveTrack 70",
-    2269: "DriveLuxe 50",
-    2270: "DriveAssist 50",
-    2273: "ANT/BLE N2 Firmware",
-    2274: "Edge 1000, Thai",
-    2281: "GPSMAP 64s, KOR",
-    2285: "GPSMAP 64st, TWN",
-    2288: "Edge 25 Asia",
-    2289: "Edge 25 Japan",
-    2290: "Edge 20 Asia",
-    2292: "Approach X40",
-    2293: "fenix 3, K65, Japan",
-    2296: "nuviCam APAC",
-    2297: "nuvi 57 APAC",
-    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",
-    2332: "Epix JPN",
-    2337: "vivoactive HR",
-    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, ???",
-    2361: "vivosmart HR APAC",
-    2362: "vivosmart HR+ APAC",
-    2368: "vivomove",
-    2369: "Forerunner 235, Sensor Hub (2369)",
-    2379: "Varia Tail Light",
-    2392: "fenix Chronos, Display",
-    2393: "fenix Chronos, Sensor Hub",
-    2396: "Forerunner 235 APAC",
-    2397: "ForeAthlete 235J",
-    2398: "Varia Vision",
-    2400: "aera 660",
-    2403: "Approach S20, ANT_BLE_BT nrF51",
-    2405: "Approach X40, BT_BLE",
-    2406: "vivofit 3",
-    2407: "fenix 3, K65, Korea",
-    2408: "fenix 3, K65, SEA",
-    2413: "fenix 3 HR",
-    2414: "fenix 3 HR/D2 Bravo Titanium, Display",
-    2415: "fenix 3 HR, Sensor Hub",
-    2417: "VIRB Ultra 30",
-    2423: "ANT/BLE N3 Firmware",
-    2429: "Index Smart Scale",
-    2431: "Forerunner 235",
-    2432: "fenix Chronos",
-    2435: "zumo 3x5",
-    2436: "zumo 595",
-    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",
-    2470: "GDR C530",
-    2471: "Varia Vision APAC",
-    2473: "fenix 3 HR, K26, CHN",
-    2478: "zumo 590 APAC",
-    2479: "GPSMAP 276Cx",
-    2485: "GDR E350 Japan",
-    2488: "RV-IN801",
-    2495: "DriveAssist 50, Camera",
-    2496: "Nautix",
-    2497: "vivoactive HR APAC",
-    2503: "Forerunner 35",
-    2510: "Forerunner 735XT, Sensor Hub",
-    2511: "Forerunner 735XT, ???",
-    2512: "Oregon 7xx",
-    2513: "GDL5x Receiver",
-    2517: "zumo 590 JPN",
-    2527: "Approach X40/vivosmart HR+, ???",
-    2530: "Edge 820",
-    2531: "Edge Explore 820",
-    2533: "Forerunner 735XT APAC",
-    2534: "ForeAthlete 735XTJ",
-    2544: "fenix 5S",
-    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",
-    2563: "eTrex Touch 35 APAC",
-    2567: "Varia UT800 - Part 1",
-    2569: "fleet 660 8G, GPS",
-    2570: "fleet 670 8G, GPS",
-    2576: "eTrex Venture Mariner",
-    2582: "Approach X10, ???",
-    2583: "Delta Smart, ANT_BLE_BT nRF51",
-    2584: "BMW Motorrad Navigator VI",
-    2586: "Drive/DriveSmart 51",
-    2587: "Drive 61",
-    2588: "DriveSmart 61",
-    2589: "DriveLuxe 51",
-    2590: "DriveAssist 51",
-    2593: "Running Dynamics Pod",
-    2596: "DriveAssist 50 APAC",
-    2599: "Edge 820 China",
-    2600: "Edge 820 Japan",
-    2604: "fenix 5X/tactix Charlie",
-    2605: "fenix 5X/tactix Charlie, Display",
-    2606: "vivofit jr",
-    2607: "DriveSmart 61/Camper/RV 770, Touchscreen",
-    2614: "GPSMAP 64sc",
-    2622: "vivosmart 3",
-    2623: "vivosport",
-    2624: "fenix 3 HR APAC, Sensor Hub",
-    2628: "Edge 820 Taiwan",
-    2629: "Edge 820 Korea",
-    2630: "Edge 820 SEA",
-    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",
-    2652: "Approach G30",
-    2653: "Forerunner 235, NFC CIB",
-    2655: "Forerunner 235, Sensor Hub (2655)",
-    2656: "Approach S60",
-    2657: "Approach S60, Display",
-    2659: "vivosmart 3, Sensor Hub",
-    2660: "vivosport, Sensor Hub",
-    2661: "fenix 5/quatix 5, Sensor Hub",
-    2662: "fenix 5S, Sensor Hub",
-    2663: "fenix 5X/tactix Charlie/D2 Charlie, Sensor Hub",
-    2664: "Descent Mk1, Sensor Hub",
-    2665: "Forerunner 935, Sensor Hub",
-    2666: "vivoactive 3, Sensor Hub",
-    2667: "Forerunner 35 APAC",
-    2668: "Forerunner 35 JPN",
-    2675: "fenix Chronos APAC",
-    2680: "Spectre, Touchpanel",
-    2681: "Oregon 7xx APAC",
-    2684: "RV/Camper 770",
-    2687: "VIRB 360",
-    2689: "CAN µC AOER, APGC18",
-    2691: "Forerunner 935",
-    2697: "fenix 5/quatix 5",
-    2699: "vivoactive 3, Touchpanel",
-    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",
-    2729: "Delta Inbounds Dog Device, Comm.",
-    2730: "Delta Inbounds Dog Device, Host",
-    2731: "Delta Inbounds Base Unit, Comm.",
-    2732: "Delta Inbounds Base Unit, Host",
-    2733: "Forerunner 235, NFC, ExpressPay",
-    2735: "fleet 770, GPS",
-    2736: "fleet 780, GPS",
-    2738: "fleet 790 ATT, GPS",
-    2739: "fleet 790 EU, GPS",
-    2752: "Approach S60, Sensor Hub",
-    2763: "GPSMAP 64sc JPN",
-    2764: "GPSMAP 64sc SEA",
-    2769: "Foretrex 601/701",
-    2770: "GMU11",
-    2771: "Impact",
-    2772: "vivomove HR",
-    2773: "vivomove HR, Sensor Hub",
-    2774: "vivomove HR, Touchpanel",
-    2776: "Approach G30, Touchscreen",
-    2777: "Rino 700",
-    2778: "GPS Chipset Type M4",
-    2779: "GPS Chipset Type M426",
-    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",
-    2803: "Drive/DriveSmart 51 APAC",
-    2806: "Approach Z80",
-    2807: "echoMAP Plus 4x",
-    2808: "echoMAP Plus 6x",
-    2809: "echoMAP Plus 7x/9x",
-    2810: "echoMAP Plus 63",
-    2814: "Forerunner 35 KOR",
-    2816: "CAN µC AOER, ALSA18",
-    2817: "ALSA18 AOER, System Code",
-    2818: "Xero A1(i), Sensor Hub",
-    2819: "D2 Charlie",
-    2820: "D2 Charlie, Display",
-    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",
-    2833: "Forerunner 935 APAC",
-    2835: "vivosmart 3 APAC, Sensor Hub",
-    2836: "vivosport APAC, Sensor Hub",
-    2838: "Dash Cam 65W",
-    2841: "nuviCam APAC, Camera",
-    2842: "BMW Navigator VI AOER/Japan",
-    2858: "Dash Cam 45-O",
-    2859: "Descent Mk1",
-    2862: "Garmin Speak",
-    2864: "Approach Z80, Aux",
-    2866: "fenix 5 APAC, Sensor Hub",
-    2867: "fenix 5S APAC, Sensor Hub",
-    2868: "fenix 5X APAC, Sensor Hub",
-    2869: "Descent Mk1, Display",
-    2872: "Forerunner 935 APAC, Sensor Hub",
-    2878: "vivofit 4",
-    2886: "Forerunner 645",
-    2887: "Forerunner 645, ANT_BLE_BT",
-    2888: "Forerunner 645 Music",
-    2890: "BarkLimiter 2",
-    2891: "Forerunner 30",
-    2893: "Atemos 50",
-    2894: "Atemos 100",
-    2895: "Atemos K5/KT15",
-    2896: "Forerunner 645, Sensor Hub",
-    2897: "Forerunner 645 Music, Sensor Hub",
-    2900: "fenix 5S Plus",
-    2907: "Approach S60 APAC",
-    2909: "Edge 130",
-    2910: "dezl 780",
-    2911: "dezlCam 785",
-    2924: "Edge 1030 APAC",
-    2925: "GPS 12H India",
-    2927: "vivosmart 4",
-    2930: "vivosmart 4, Sensor Hub",
-    2931: "vivosmart 4, Touchpanel",
-    2934: "Fusion MS-RA770",
-    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",
-    2955: "Varia Radar Tail Light 510, Radar",
-    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",
-    2983: "vivoactive 3 APAC, Sensor Hub",
-    2988: "vivoactive 3 Music",
-    2989: "vivoactive 3 Music, Sensor Hub",
-    2990: "vivoactive 3 Music, Touchscreen",
-    2991: "Descent Mk1 APAC",
-    2993: "Descent Mk1 APAC, Sensor Hub",
-    2994: "D2 Charlie APAC",
-    2996: "DriveSmart 61 APAC",
-    2997: "eTrex 302 CHN",
-    3003: "Forerunner 645 APAC",
-    3004: "Forerunner 645 Music APAC",
-    3008: "Forerunner 645 APAC, Sensor Hub",
-    3009: "Forerunner 645 Music APAC, Sensor Hub",
-    3011: "Edge Explore",
-    3013: "fenix 5S Plus, Sensor Hub",
-    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: "Approach G80/Edge Explore, Sensor Hub",
-    3044: "Approach S20, ???",
-    3049: "Approach S10",
-    3059: "Garmin Speak Plus",
-    3061: "Drive 52",
-    3065: "DriveSmart x5",
-    3066: "vivoactive 3 Music, LTE",
-    3067: "vivoactive 3 Music, ANT_BLE_BT",
-    3076: "Forerunner 245",
-    3077: "Forerunner 245 Music",
-    3078: "Forerunner 245, Sensor Hub",
-    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",
-    3099: "T9 GPS Collar",
-    3104: "Dash Cam Mini",
-    3107: "GPS Chipset Type S1 (3107)",
-    3109: "DriveAssist 51 APAC",
-    3110: "fenix 5 Plus",
-    3111: "fenix 5X Plus",
-    3112: "Edge 520 Plus",
-    3113: "Forerunner 945",
-    3114: "Forerunner 945, Sensor Hub",
-    3115: "GPSMAP 64sc SiteSurvey",
-    3116: "PRO 550 Plus",
-    3121: "Edge 530",
-    3122: "Edge 830",
-    3126: "Instinct",
-    3127: "Instinct, Sensor Hub",
-    3130: "Approach Z80 APAC",
-    3134: "fenix 5S Plus APAC",
-    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",
-    3166: "SW, CAN µC, ACIN19, Indonesia, AOER",
-    3183: "vivosmart 4, Network SW",
-    3187: "Rino 7xx, GMRS",
-    3192: "Speed Sensor 2",
-    3196: "D2 Delta S",
-    3197: "D2 Delta",
-    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",
-    3211: "ALT1160 LTE Modem Firmware",
-    3216: "Xero S1 Trapshooting Trainer",
-    3218: "vivosmart 4 APAC",
-    3220: "NFC 3rd Party Applets",
-    3224: "vivoactive 4 Small",
-    3225: "vivoactive 4 Large",
-    3226: "venu",
-    3227: "vivoactive 4, ANT_BLE_BT",
-    3229: "vivoactive 4 Small, Touchpanel",
-    3230: "vivoactive 4 Large, Touchpanel",
-    3231: "venu, Touchpanel",
-    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",
-    3247: "MARQ Aviator",
-    3248: "MARQ Captain",
-    3249: "MARQ Commander",
-    3250: "MARQ Expedition",
-    3251: "MARQ Athlete",
-    3252: "MARQ series, Sensor Hub",
-    3253: "MARQ series, ANT_BLE_BT",
-    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, ???",
-    3281: "STRIKER Cast",
-    3282: "Forerunner 45",
-    3284: "GPSMAP 66i",
-    3286: "Garmin DriveSmart 65 with Amazon Alexa",
-    3287: "fenix 6S",
-    3288: "fenix 6S Pro",
-    3289: "fenix 6",
-    3290: "fenix 6 Pro",
-    3291: "fenix 6X Pro",
-    3292: "fenix 6S/6, ANT_BLE_BT",
-    3293: "fenix 6S/6/6X Pro, ANT_BLE_BT",
-    3294: "fenix 6S, Sensor Hub",
-    3295: "fenix 6, Sensor Hub",
-    3296: "fenix 6X, Sensor Hub",
-    3299: "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",
-    3309: "Forerunner 45, Sensor Hub",
-    3310: "Forerunner 45, Network Processor",
-    3312: "Edge 130 APAC, Sensor Hub",
-    3313: "GPS Chipset Type M5",
-    3314: "Approach S40",
-    3315: "Approach S40, Sensor Hub",
-    3316: "Approach S40, Touchscreen",
-    3317: "ForeTrex 601 Japan",
-    3318: "Overlander",
-    3321: "Forerunner 245M APAC",
-    3324: "D2 Delta PX APAC",
-    3330: "GPS Software 3330",
-    3331: "GAD13",
-    3339: "Instinct, ???",
-    3340: "Instinct, ???",
-    3341: "Drive 52 APAC",
-    3345: "Edge Explore, ???",
-    3349: "Edge 530 ASIA",
-    3350: "Edge 830 ASIA",
-    3354: "DriveSmart x5 ASIA",
-    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",
-    3379: "Camper/RV 780",
-    3380: "Camper/RV 785",
-    3381: "SW, ACSG19, SGMY, AOER",
-    3382: "SW, CAN µC, ACSG19, SGMY, AOER",
-    3387: "vivoactive 4 Small APAC",
-    3388: "vivoactive 4 Large APAC",
-    3389: "venu ASIA",
-    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",
-    3400: "Oregon 7xx/Rino 7xx, ???",
-    3401: "eTrex/eTrex Touch 25/35, ???",
-    3405: "Swim 2",
-    3406: "Swim 2, Sensor Hub",
-    3407: "Swim 2, Network Processor",
-    3408: "Dash Cam 46",
-    3409: "Dash Cam 56",
-    3410: "Dash Cam 66W",
-    3411: "GPS Chipset Type M5 (3411)",
-    3412: "GPS Chipset Type M5 (Fitness Region File)",
-    3413: "GPS Chipset Type M5 (3413)",
-    3416: "Forerunner 245 APAC, Sensor Hub",
-    3417: "Forerunner 245M APAC, Sensor Hub",
-    3420: "MARQ Driver APAC",
-    3421: "MARQ Aviator APAC",
-    3422: "vivomove 3 Sport, NFC",
-    3428: "vivolife",
-    3429: "vivomove 3 Classic, Touchpanel",
-    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)",
-    3447: "Approach S40 ASIA",
-    3448: "MARQ Captain APAC",
-    3449: "MARQ Commander APAC",
-    3450: "MARQ Expedition APAC",
-    3451: "MARQ Athlete APAC",
-    3452: "GPSMAP 86s",
-    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",
-    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",
-    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",
-    3491: "dezl 700",
-    3492: "dezl 800/1000",
-    3494: "MARQ ASIA Series, Sensor Hub",
-    3498: "Rey",
-    3499: "Darth Vader",
-    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",
-    3514: "fenix 6 Sport ASIA",
-    3515: "fenix 6 ASIA",
-    3516: "fenix 6X ASIA",
-    3517: "Approach Z82, Sensor Hub",
-    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",
-    3538: "Darth Vader APAC",
-    3542: "Descent Mk2s",
-    3549: "Montana 7xx, Display",
-    3550: "fenix 6S ASIA, Sensor Hub",
-    3551: "fenix 6 ASIA, Sensor Hub",
-    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",
-    3566: "Marine Telematics Modem Firmware",
-    3570: "Edge 1030 Plus",
-    3572: "vivomove 3 Style/Luxe ASIA",
-    3573: "vivomove 3 Sport APAC",
-    3576: "Fusion MS-WB670",
-    3578: "Rally 100/200",
-    3589: "Forerunner 745",
-    3590: "Forerunner 745, Sensor Hub",
-    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",
-    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",
-    3639: "Swim 2 ASIA",
-    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",
-    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",
-    3687: "eTrex 32x CHN",
-    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",
-    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",
-    3709: "Forerunner 945 LTE, Sensor Hub",
-    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)",
-    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",
-    3758: "Alpha Dog Collar, Sensor Hub",
-    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",
-    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",
-    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",
-    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",
-    3843: "Edge 1040",
-    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",
-    3870: "Edge 1040, Parade Touchpanel",
-    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",
-    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",
-    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",
-    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",
-    4049: "Alpha 200 EU",
-    4050: "Alpha 200 FR",
-    4051: "Alpha 200 Nordics",
-    4052: "Alpha 200 RU",
-    4056: "GPSMAP 79",
-    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",
-    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",
-    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, ???",
-#    7124: "vivoactive 3t, ???",
+      82: {0: "Firmware Update for c5xxPLD"},
+     111: {0: "eMap"},
+     126: {0: "GPSMAP 168 Sounder"},
+     128: {0: "GPSMAP 295"},
+     130: {0: "eTrex"},
+     136: {0: "GPSMAP 176"},
+     141: {0: "eTrex Summit"},
+     144: {0: "GPSMAP 176C"},
+     145: {0: "GPSMAP 196"},
+     151: {0: "StreetPilot III"},
+     154: {0: "eTrex Venture/Mariner"},
+     155: {0: "GPS V"},
+     156: {0: "eTrex Camo/Euro"},
+     168: {0: "NavTalk GSM"},
+     169: {0: "eTrex Vista rev A"},
+     173: {0: "GPS 76 Rev A / dezl 770 Camera"},
+     177: {0: "GPSMAP 76 Rev. A"},
+     179: {0: "eTrex Legend Rev A"},
+     194: {0: "GPSMAP 76S Rev. A"},
+     197: {0: "Rino 110"},
+     209: {0: "Rino 120"},
+     210: {0: "StreetPilot 26xx"},
+     231: {0: "Quest"},
+     247: {0: "GPS 72 Rev A"},
+     248: {0: "Geko 201"},
+     256: {0: "Geko 301"},
+     260: {0: "GPSMAP 296"},
+     264: {0: "Rino 130/120/110"},
+     273: {0: "GPS 18"},
+     282: {0: "Forerunner 201"},
+     283: {0: "Forerunner 301"},
+     285: {0: "GPSMAP 276C"},
+     289: {0: "GPS 60"},
+     291: {0: "GPSMAP 60C/60CS/76C/76CS"},
+     292: {0: "GPSMAP 60Cx/60CSx/76Cx/76CSx"},
+     294: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (294)"},
+     295: {0: "eTrex Camo"},
+     308: {0: "GPSMAP 60"},
+     314: {0: "Foretrex 101/201"},
+     315: {0: "eTrex Legend C/Vista C"},
+     364: {0: "GPSMAP 96"},
+     365: {0: "GPSMAP 96C"},
+     381: {0: "Rino 520/530"},
+     382: {0: "StreetPilot c320/c330"},
+     384: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (384)"},
+     402: {0: "GPSMAP 396"},
+     404: {0: "StreetPilot 27xx"},
+     406: {0: "GPSMAP 376C"},
+     410: {0: "GPSMAP 276C Plus"},
+     411: {0: "eTrex Legend Rev B"},
+     412: {0: "StreetPilot 7200/7500"},
+     418: {0: "GPSMAP 76CS Plus"},
+     420: {0: "eTrex Vista rev B"},
+     421: {0: "eTrex Legend Cx/Vista Cx/Venture Cx"},
+     426: {0: "Firmware Update for GXM30 Receiver"},
+     429: {0: "StreetPilot i3"},
+     430: {0: "GPS 72 Rev B"},
+     439: {0: "GPSMAP 76 Rev. B"},
+     444: {0: "GPS 76 Rev B"},
+     450: {0: "Edge 205/305"},
+     463: {0: "Quest 2"},
+     476: {0: "nuvi 300/350 / Edge 605/705"},
+     478: {0: "GPS Chipset Type G"},
+     480: {0: "GPS 60"},
+     481: {0: "StreetPilot c340"},
+     482: {
+         0: "dezl/Drive/DriveSmart/DriveAssist/DriveLuxe/fleet/nuvi/zumo, ???",
+         1: "Firmware Update for GTMxx Traffic Receiver",
+     },
+     484: {0: "Forerunner 205/305"},
+     497: {0: "StreetPilot c310/c320/c330"},
+     505: {0: "StreetPilot i3/i5"},
+     520: {0: "StreetPilot 2820"},
+     529: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (529)"},
+     530: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (530)"},
+     532: {0: "StreetPilot i2"},
+     537: {0: "Chartplotters Minimum Software for g2 charts (537)"},
+     539: {0: "StreetPilot c5xx"},
+     546: {0: "MapSource, ???"},
+     553: {
+         0: "Firmware Update for c550 Bluetooth Module",
+         1: "nuvi Bluetooth Firmware",
+         2: "Firmware Update for c5xx/Mercedes Bluetooth Module",
+         3: "Firmware Update for zumo Bluetooth Module",
+     },
+     557: {0: "GPSMAP 378"},
+     558: {0: "GPSMAP 478"},
+     566: {0: "nuvi 310/360/370"},
+     570: {0: "Astro 220"},
+     574: {0: "Geko 201/301"},
+     577: {0: "Rino 520HCx/530HCx"},
+     580: {0: "zumo 4xx/5xx"},
+     583: {0: "Firmware Update for STP2820 / BMW Navigator III Bluetooth Module"},
+     584: {0: "GPSMAP 76S Rev. B"},
+     585: {0: "GPSMAP 278"},
+     595: {0: "GPSMAP 496"},
+     596: {0: "nuvi 6xx"},
+     600: {0: "Where2 c550"},
+     601: {0: "StreetPilot c5xx Smart"},
+     602: {0: "StreetPilot c5xx Mopar"},
+     603: {0: "StreetPilot c5xx Mercedes"},
+     604: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (604)"},
+     605: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (605)"},
+     606: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (606)"},
+     607: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (607)"},
+     609: {0: "Rino 520 Australia"},
+     617: {0: "GPS Chipset Type G2"},
+     625: {0: "Edge 605/705"},
+     630: {0: "dezl/Drive/DriveSmart/DriveAssist/DriveLuxe/fleet/nuvi/zumo, ???"},
+     654: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (654)"},
+     660: {0: "nuvi 2xx"},
+     661: {0: "Colorado"},
+     665: {0: "Chartplotters Minimum Software for g2 charts (665)"},
+     666: {0: "Chartplotters Minimum Software for g2 charts (666)"},
+     670: {0: "Chartplotters Minimum Software for g2 charts (670)"},
+     672: {0: "nuvi 350 Toyota DIO"},
+     673: {0: "nuvi 360 MINI"},
+     675: {0: "nuvi 360 BMW3"},
+     680: {0: "GPS Chipset Type B"},
+     681: {0: "nuvi 350 Honda Access"},
+     682: {0: "nuvi 360 Honda Access"},
+     683: {0: "nuvi 350 Toyota PIO"},
+     689: {0: "DC20/DC30/DC40"},
+     694: {0: "eTrex Legend HCx/Vista HCx"},
+     695: {0: "eTrex Summit HC/Venture HC"},
+     696: {0: "eTrex H"},
+     697: {0: "BMW Motorrad Navigator III plus"},
+     698: {0: "zumo BMW"},
+     711: {0: "zumo Honda"},
+     717: {0: "Forerunner 405"},
+     721: {0: "Chartplotters Minimum Software for g2 charts (721)"},
+     723: {0: "nuvi 5xx"},
+     725: {0: "Chartplotters Minimum Software for g2 charts (725)"},
+     726: {0: "nuvi 8xx"},
+     732: {0: "StreetPilot c5xx Mercedes Phase2"},
+     733: {0: "GPS Chipset Type M (MediaTek MT3318)"},
+     737: {0: "nuvi 2xxW"},
+     739: {0: "GPS Chipset Type M2"},
+     740: {0: "Honda Navi Gen3, ???"},
+     743: {0: "nuvi 5000"},
+     745: {0: "GPSMAP 695/696"},
+     754: {0: "nuvi 7xx"},
+     757: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (757)"},
+     765: {0: "Honda Navi Gen3, ???"},
+     774: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (774)"},
+     775: {0: "GPS Chipset Type B"},
+     781: {0: "GPS 17x HVS"},
+     786: {0: "eTrex Venture HC/Summit HC"},
+     788: {0: "nuvi 7x0 Mercedes/Smart"},
+     793: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (793)"},
+     794: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (794)"},
+     795: {0: "Oregon"},
+     796: {0: "GPS 15x|15xH/xL|16x|18x OEM"},
+     798: {0: "eTrex H China"},
+     811: {0: "GPS 18x USB/GPS 20x USB"},
+     814: {0: "nuvi 900T"},
+     823: {
+         0: "DashCam 45/55/65W / Descent APAC / nuvi, ???",
+         2: "SCM",
+     },
+     827: {0: "nuvi 2x5W"},
+     830: {0: "GSU73 ADAHRS"},
+     832: {0: "GPSMAP 6x0"},
+     834: {0: "nuvi 2xx"},
+     835: {0: "nuvi 2xxW"},
+     836: {0: "nuvi 760 TWN"},
+     849: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (849)"},
+     851: {0: "nuvi 2x5"},
+     852: {0: "eTrex H Taiwan"},
+     853: {0: "StreetPilot C5XX Cendant-Avis Australia"},
+     855: {0: "nuvi 300/350 (MLC)"},
+     856: {0: "nuvi 310/360/370 (MLC)"},
+     861: {0: "GolfLogix Black"},
+     862: {0: "GXM40 Software"},
+     865: {0: "GPS 18x 5Hz"},
+     869: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (869)"},
+     870: {0: "nuvi 7x5"},
+     887: {0: "GPSMAP 495"},
+     896: {0: "Oregon x50"},
+     897: {0: "Colorado TWN"},
+     901: {0: "Firmware Update for GTMxx Traffic Receiver Type 3"},
+     903: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (903)"},
+     904: {
+         2: "nuvifone G60 - Sunrise",
+         4: "nuvifone G60 - Atlantic",
+     },
+     913: {0: "Aera GPS Software"},
+     917: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (917)"},
+     918: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (918)"},
+     919: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (919)"},
+     920: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (920)"},
+     921: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (921)"},
+     923: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (923)"},
+     924: {0: "BMW Motorrad Navigator IV/zumo 660"},
+     930: {0: "nuvi 255W SG"},
+     932: {0: "nuvi 2x5W TWN"},
+     936: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (936)"},
+     937: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (937)"},
+     941: {0: "eTrex HC Japan"},
+     943: {0: "nuvi 465T"},
+     951: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (951)"},
+     954: {0: "Chartplotters Minimum Software for g2 charts (954)"},
+     955: {0: "Chartplotters Minimum Software for g2 charts (955)"},
+     956: {
+         0: "Honda Navi Gen3",
+         1: "Honda Navi Gen3",
+         2: "Honda Navi Gen3",
+     },
+     957: {0: "eTrex Legend H/Vista H"},
+     960: {0: "Dakota"},
+     969: {0: "Firmware Update for FMI Cables with Traffic"},
+     970: {0: "zumo 660/665, Mount Software"},
+     971: {0: "nuvi 12xx"},
+     972: {0: "nuvi 13xx/14xx"},
+     974: {0: "Chartplotters Minimum Software for g2 charts (974)"},
+     977: {0: "Firmware Update for CSR Bluetooth"},
+     978: {0: "nuvi 7x5, DSP Software"},
+     979: {0: "GPS Chipset Type M3"},
+     983: {0: "Oregon TWN"},
+     988: {0: "FR60"},
+     992: {
+         2: "nuvifone G60 ATLANTIC, Modem Firmware",
+         5: "nuvifone G60 SUNRISE, Modem Firmware",
+     },
+    1005: {0: "Approach G5"},
+    1007: {0: "nuvi 765 TWN"},
+    1014: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (1014)"},
+    1015: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (1015)"},
+    1018: {0: "Forerunner 310XT"},
+    1020: {0: "Foretrex 301/401"},
+    1033: {0: "zumo 66x, Echo Cancellation Software"},
+    1036: {0: "Edge 500"},
+    1037: {0: "eTrex Legend/Vista H China"},
+    1038: {0: "eTrex HC China"},
+    1039: {0: "Forerunner 405CX"},
+    1046: {0: "nuvi 16xx NA"},
+    1049: {0: "eTrex Legend H China military"},
+    1050: {0: "eTrex H China military"},
+    1058: {0: "nuvi 5xx TWN"},
+    1059: {0: "GPS Chipset Type M3"},
+    1063: {
+        0: "aera 5xx",
+        1: "aera 5xx",
+    },
+    1073: {0: "ecoRoute HD"},
+    1074: {0: "nuvi 2x5 (MTK)"},
+    1091: {0: "nuvi 2x5W (MTK)"},
+    1095: {0: "GPS 72H"},
+    1096: {0: "Chartplotters Minimum Software for g2 charts (1096)"},
+    1099: {0: "nuvi 16xxNA, ???"},
+    1100: {0: "nuvi 16xxNA, ???"},
+    1101: {0: "nuvi 37xx"},
+    1103: {0: "nuvi 13xx TWN"},
+    1104: {0: "nuvi 13xx/14xx (MTK)"},
+    1106: {0: "nuvi 12xx (MTK)"},
+    1113: {0: "GPSMAP 62/78"},
+    1114: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (1114)"},
+    1118: {0: "KNA-G600"},
+    1120: {0: "Oregon x50 TWN"},
+    1124: {0: "Forerunner 110"},
+    1128: {0: "Aera DSP Software"},
+    1132: {0: "nuvi 16xx EU"},
+    1136: {0: "Approach G3"},
+    1137: {0: "nuvi 1480 TWN"},
+    1138: {0: "zumo 2x0"},
+    1142: {0: "Oregon 550 Thai"},
+    1147: {0: "zumo 665"},
+    1148: {0: "Forerunner 110, ???"},
+    1156: {0: "nuvi 16xx AU"},
+    1157: {0: "nuvi 16xx CA"},
+    1158: {0: "GPS 72H Arabic"},
+    1161: {0: "nuvi 16xx TWN"},
+    1169: {0: "Edge 800"},
+    1186: {0: "nuvi 22xx"},
+    1187: {0: "nuvi 23xx"},
+    1188: {0: "nuLink 1695"},
+    1196: {0: "nuvi 1490TV"},
+    1201: {0: "GTU 10 US"},
+    1204: {0: "Dakota TWN"},
+    1209: {0: "Oregon 550 Korea"},
+    1211: {0: "nuvi 37xx, Touchscreen"},
+    1213: {0: "Edge 500 JPN"},
+    1218: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (1218)"},
+    1247: {0: "Rino 6xx"},
+    1250: {0: "Forerunner 410"},
+    1252: {0: "Oregon 450tc Japan"},
+    1254: {0: "nuLink 23xx"},
+    1257: {0: "Kenwood GVN60, ???"},
+    1258: {0: "nuvi 35xx"},
+    1259: {0: "nuvi 37xx Taiwan"},
+    1264: {0: "Forerunner 210"},
+    1265: {0: "Forerunner 210, ???"},
+    1266: {0: "nuvi 2585 TWN"},
+    1269: {0: "dezl 560"},
+    1270: {0: "nuLink 23xx, ???"},
+    1271: {0: "Approach S1"},
+    1272: {0: "Approach S1, ???"},
+    1273: {0: "nuvi 24xx"},
+    1275: {0: "Montana"},
+    1279: {0: "nuLink 23xx, ???"},
+    1296: {0: "nuLink 23xx, ???"},
+    1299: {0: "Kenwood GVN60, ???"},
+    1301: {0: "GPSMAP 62SJ Japan"},
+    1304: {0: "eTrex 10"},
+    1305: {0: "eTrex 20/30"},
+    1318: {0: "GPSMAP Series with SDCard"},
+    1320: {0: "Garmin Marine Network Minimum Software for g2 v11.5 (1320)"},
+    1325: {0: "Edge 200"},
+    1327: {0: "nuvi 24x5 Taiwan"},
+    1328: {0: "Forerunner 910XT"},
+    1331: {0: "GTU 10 EU"},
+    1334: {0: "Edge 800 JPN"},
+    1339: {0: "Astro 320"},
+    1340: {0: "GPSMAP 62sc/62stc"},
+    1343: {0: "GDL39 ADS-B Receiver"},
+    1344: {0: "GTU 10 CA"},
+    1345: {0: "Forerunner 610"},
+    1349: {0: "nuvi 30"},
+    1350: {0: "nuvi 40/50"},
+    1352: {0: "nuvi 25x5 Taiwan"},
+    1353: {0: "GPSMAP 62S Korea"},
+    1354: {0: "GPSMAP 62S/78S Thai & Indonesia"},
+    1364: {
+        0: "aera 7xx",
+        1: "aera 7xx",
+    },
+    1371: {0: "nuvi 24x5/25x5"},
+    1376: {0: "nuvi 34xx"},
+    1379: {0: "GPS Chipset Type M3"},
+    1381: {
+        0: "Vector",
+        2: "Vector - 02",
+    },
+    1384: {0: "GPS 72H SEA"},
+    1389: {0: "nuvi 2585LT EU"},
+    1392: {0: "GPS 19x HVS"},
+    1396: {0: "Kenwood GVN60, ???"},
+    1400: {0: "DC20/DC30/DC40"},
+    1405: {0: "Approach G10"},
+    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"},
+    1427: {0: "nuvi 2580 SouthAmerica, ???"},
+    1428: {0: "Kenwood GVN60, ???"},
+    1429: {0: "Montana 650t Taiwan"},
+    1431: {0: "Montana Korea"},
+    1441: {0: "nuvi 3595,JPN"},
+    1443: {0: "nuvi 40/50 China"},
+    1445: {0: "nuvi 2495 LT GLONASS"},
+    1446: {0: "Forerunner 310XT"},
+    1452: {0: "Approach G6"},
+    1454: {0: "Chartplotters Minimum Software for g2 charts (1454)"},
+    1461: {0: "UAT 163"},
+    1463: {0: "nuvi 2585 Russia"},
+    1468: {
+        0: "Suzuki Fuji MY13-MY17",
+        1: "Fuji MY13 Maintenance",
+    },
+    1469: {0: "Approach S3/S4"},
+    1470: {0: "Approach S3/S4, ???"},
+    1471: {0: "eTrex 20/30 JPN"},
+    1472: {0: "eTrex 10 JPN"},
+    1473: {0: "zumo 3x0"},
+    1475: {0: "fleet 590 U.S."},
+    1482: {0: "Forerunner 10"},
+    1484: {0: "GPS Chipset Type M4"},
+    1485: {0: "GPS Chipset Type M4"},
+    1490: {0: "GLO"},
+    1497: {0: "Edge 800 Korea"},
+    1498: {0: "eTrex 20/30 SEA"},
+    1499: {0: "Garmin Swim"},
+    1504: {0: "eTrex 10 SEA"},
+    1506: {0: "Nordic Rino650"},
+    1510: {0: "nuvi 40/50 Taiwan"},
+    1516: {0: "dezl 760"},
+    1517: {0: "nuvi 27x7/27x8"},
+    1521: {0: "nuvi 35xx Taiwan"},
+    1522: {0: "nuvi 2460 India / nuvi 2xx5 China"},
+    1525: {0: "Oregon 550 China"},
+    1532: {0: "GPSMAP 62sc China"},
+    1533: {0: "GPSMAP 62sc Japan"},
+    1535: {0: "nuvi 2580 South America"},
+    1536: {0: "Oregon 550tc Japan"},
+    1537: {0: "Forerunner 910XT China"},
+    1541: {0: "BMW Motorrad Navigator V"},
+    1545: {0: "TT10"},
+    1546: {
+        0: "Firmware Update for GTMxx Digital Radio Type S",
+        1: "Firmware Update for embedded digital traffic",
+    },
+    1548: {0: "Yushan"},
+    1550: {0: "zumo 660 Taiwan"},
+    1551: {0: "fenix/D2/tactix"},
+    1552: {0: "fenix/D2/tactix, ???"},
+    1555: {0: "Edge 200 Taiwan"},
+    1556: {0: "eTrex 20/30 China"},
+    1561: {0: "Edge 510"},
+    1562: {0: "Alpha 100"},
+    1563: {0: "nuvi 3595 Taiwan"},
+    1566: {0: "Garmin Swim Strings"},
+    1567: {0: "Edge 810"},
+    1575: {0: "GEA24"},
+    1580: {0: "zumo ??? Component Firmware"},
+    1582: {0: "nuvi 2xx7/2xx8"},
+    1587: {0: "Rino 6xx China"},
+    1593: {0: "nuvi 2568 India"},
+    1594: {0: "eTrex 20/30 Taiwan"},
+    1595: {0: "nuvi 140/150"},
+    1597: {0: "Approach S3 APAC"},
+    1598: {0: "Approach S3 APAC, ???"},
+    1599: {0: "GPSmap 62stc Taiwan"},
+    1600: {0: "ForeAthlete 910XTJ Japan"},
+    1603: {0: "nuvi 35x7/35x8"},
+    1610: {0: "Chartplotters Minimum Software for g2 charts (1610)"},
+    1611: {0: "Chartplotters Minimum Software for g2 charts (1611)"},
+    1613: {0: "nuvi x2/x4"},
+    1617: {0: "nuvi c155/c165/c175 China"},
+    1619: {0: "GPS Chipset Type M5"},
+    1620: {0: "GPS Chipset Type M5"},
+    1621: {0: "GPS Chipset Type M5 (MT3333) w/o Galileo"},
+    1623: {0: "Forerunner 620"},
+    1624: {0: "GPS Chipset Type M426"},
+    1626: {0: "GSA28 Servo"},
+    1628: {0: "Garmin HUD"},
+    1630: {0: "Forerunner 620/920, Wi-Fi"},
+    1631: {0: "Carmax 310/310V, ???"},
+    1632: {0: "Forerunner 220"},
+    1634: {0: "Chartplotters Minimum Software for g2 charts (1634)"},
+    1635: {0: "Montana 650t China"},
+    1642: {0: "GSU25 ADAHRS"},
+    1649: {0: "Approach S2"},
+    1650: {0: "Approach S2, ???"},
+    1651: {0: "Oregon 6x0"},
+    1664: {0: "Forerunner 910XT, Korea"},
+    1665: {0: "Chartplotters Minimum Software for g2 charts (1665)"},
+    1666: {0: "Chartplotters Minimum Software for g2 charts (1666)"},
+    1667: {0: "Chartplotters Minimum Software for g2 charts (1667)"},
+    1668: {0: "Chartplotters Minimum Software for g2 charts (1668)"},
+    1675: {0: "ANT Firmware (TPMS sensors)"},
+    1676: {0: "fenix China"},
+    1677: {0: "fenix Japan"},
+    1678: {0: "fenix Korea"},
+    1679: {0: "fenix Taiwan"},
+    1681: {0: "nuvi 2795 Japan"},
+    1682: {0: "fenix China, ???"},
+    1686: {0: "SiriusXM Navcast ATMEL Firmware"},
+    1688: {0: "ForeAthlete 10J"},
+    1689: {0: "GPS Chipset Type M426"},
+    1692: {0: "quatix"},
+    1693: {0: "quatix, ???"},
+    1696: {0: "DC 50"},
+    1697: {0: "nuvi 53/55/56"},
+    1708: {0: "fleet 590 EU"},
+    1711: {0: "nuvi 2795 South America"},
+    1712: {0: "nuvi 42/52 SGMY"},
+    1714: {0: "nuvi 42/52 Taiwan"},
+    1716: {0: "Monterra"},
+    1719: {0: "GPSMAP 62sc SEA"},
+    1721: {0: "Edge 810, Japan"},
+    1722: {0: "nuvi 24x7/25x7 Taiwan"},
+    1723: {0: "nuvi 3590 CHN"},
+    1724: {0: "nuvi 3592 SGMY"},
+    1725: {0: "nuvi 3592 THAI"},
+    1726: {0: "Monterra Outdoor Software"},
+    1728: {0: "TSC Firmware for 7/10 inch display"},
+    1730: {0: "RV/Camper 760"},
+    1731: {0: "nuvi 3590 TWN"},
+    1735: {0: "VIRB CHN"},
+    1736: {0: "Edge Touring"},
+    1739: {0: "GPSMAP 629sc CHN"},
+    1740: {0: "nuvi 1690 lite Taiwan"},
+    1741: {0: "eTrex 20S SG"},
+    1742: {0: "Edge 510, Japan"},
+    1743: {
+        0: "HRM-Tri",
+        1: "HRM-Tri",
+        2: "HRM-Tri",
+    },
+    1744: {0: "Chartplotters Minimum Software for g2 charts (1744)"},
+    1749: {0: "nuvi 65/66"},
+    1752: {
+        0: "HRM-Run / Forerunner 620, Sensor Hub",
+        1: "HRM-Run",
+    },
+    1758: {0: "nuvi 25x9"},
+    1760: {0: "GAD29"},
+    1765: {0: "Forerunner 920XT"},
+    1766: {0: "nuvi 42/52 India"},
+    1769: {0: "SiriusXM Weather Support File"},
+    1772: {0: "nuvi 26x9"},
+    1779: {
+        10: "Flight Stream 110/210 v2.30",
+        11: "Flight Stream 110/210 v2.40",
+        20: "Flight Stream 110/210 v2.50",
+    },
+    1786: {0: "GPS 15x|15xH/xL|16x|18x OEM/5Hz 1786"},
+    1788: {0: "GTR20/200"},
+    1796: {0: "zumo 590"},
+    1798: {0: "Chartplotters Minimum Software for g2 charts (1798)"},
+    1811: {0: "Approach S4"},
+    1815: {0: "Carmax 310A/310V"},
+    1817: {0: "UAT-1817"},
+    1819: {0: "CAN Coprocessor"},
+    1820: {0: "eTrex 209/309 China"},
+    1821: {0: "Edge 510 China & Taiwan"},
+    1822: {0: "Edge 810 China"},
+    1823: {0: "Edge 810 Taiwan"},
+    1826: {0: "Carmax 310A/310V, ???"},
+    1829: {0: "Chartplotters Minimum Software for g2 charts (1829)"},
+    1836: {0: "Edge 1000"},
+    1837: {0: "vivofit"},
+    1842: {0: "Approach G7"},
+    1843: {0: "Oregon 6xx System, SEA"},
+    1850: {0: "Forerunner 220/620, Display"},
+    1851: {0: "Forerunner 220/620, ANT"},
+    1854: {0: "Chartplotters Minimum Software for g2 charts (1854)"},
+    1857: {0: "Oregon 6xx System, JPN"},
+    1859: {0: "GPSMAP 64"},
+    1875: {0: "Chartplotters Minimum Software for g2 charts (1875)"},
+    1876: {0: "Rino 6xx Korea"},
+    1878: {0: "GPSMAP 7x08"},
+    1879: {0: "GPSMAP 7x10/7x12"},
+    1882: {0: "GI260 AOA"},
+    1884: {0: "nuvi 2798"},
+    1885: {0: "vivoki"},
+    1888: {0: "Chartplotters Minimum Software for g2 charts (1888)"},
+    1891: {0: "Approach S2 JPN"},
+    1892: {0: "Approach S2 JPN, ???"},
+    1895: {0: "Monterra, GPS/BeiDou CHN"},
+    1903: {0: "Forerunner 15"},
+    1907: {0: "vivoactive"},
+    1908: {0: "vivoactive, Display"},
+    1909: {0: "vivoactive/vivosmart HR/fenix 3 HR/fenix 3/tactix Bravo/quatix 3/D2 Bravo, ANT/BLE N4"},
+    1917: {0: "Approach G8"},
+    1918: {0: "Edge 510, Korea"},
+    1925: {0: "Approach S6, Display"},
+    1927: {0: "Edge 1000/Edge Explore 1000, ???"},
+    1928: {0: "ForeAthlete 620J"},
+    1929: {0: "Forerunner 620 China"},
+    1930: {0: "ForeAthlete 220J"},
+    1931: {0: "Forerunner 220 China"},
+    1932: {0: "nuvi 27x9"},
+    1936: {0: "Approach S6"},
+    1939: {0: "VIRB CHN"},
+    1940: {0: "VIRB ASIA"},
+    1942: {0: "Forerunner 920XT, Display"},
+    1947: {0: "nuvi 25x9 C4"},
+    1948: {0: "nuvi 26x9 C4"},
+    1955: {0: "vivosmart, ANT"},
+    1956: {0: "vivosmart"},
+    1958: {0: "nuvi C255 China / nuvi 55 India/Indonesia/SGMY"},
+    1959: {0: "nuvi C265 China"},
+    1966: {0: "nuvi 55TV Brazil"},
+    1967: {0: "fenix 2"},
+    1968: {0: "fenix 2, ???"},
+    1969: {0: "Forerunner 15, ANT"},
+    1982: {0: "BMW Navigator V Japan/China"},
+    1987: {0: "Epix, Display"},
+    1988: {0: "Epix"},
+    1999: {0: "Approach S2 APAC"},
+    2000: {0: "Approach S2 APAC, ???"},
+    2002: {0: "dezl 770"},
+    2003: {0: "dezl 570"},
+    2005: {0: "vivosmart, PSOC"},
+    2010: {0: "Kenwood GVN60"},
+    2021: {
+         3: "Flight Stream 510 v2.03",
+        10: "Flight Stream 510 v2.10",
+        30: "Flight Stream 510 v2.30",
+        32: "Flight Stream 510 v2.32",
+        33: "Flight Stream 510 v2.33",
+    },
+    2024: {0: "Quatix China"},
+    2030: {0: "HAC 2CT"},
+    2032: {0: "T 5, TT 15"},
+    2035: {0: "Approach S4 APAC"},
+    2036: {0: "Approach S4 APAC, ???"},
+    2043: {0: "nuviCam"},
+    2044: {0: "nuviCam, Camera"},
+    2047: {0: "ANT/BLE N1 Firmware"},
+    2050: {0: "fenix 3/tactix Bravo/quatix 3"},
+    2051: {0: "fenix 3/tactix Bravo/quatix 3/D2 Bravo, Display"},
+    2052: {0: "Edge 1000 Taiwan"},
+    2053: {0: "Edge 1000 Japan"},
+    2054: {0: "fenix 2 China"},
+    2059: {0: "vivoactive, Display"},
+    2061: {0: "ForeAthlete 15J"},
+    2062: {0: "Fleet 660 GPS"},
+    2063: {0: "Fleet 670 GPS"},
+    2067: {0: "Edge 520"},
+    2068: {0: "SW,HondaPH"},
+    2070: {0: "Edge 1000, China"},
+    2077: {0: "nuvi 2xx7/2xx8 C4"},
+    2079: {
+        0: "Vector S",
+        2: "Vector S - 02",
+    },
+    2081: {0: "GPSMAP 7x07"},
+    2087: {0: "nuvi 57/58"},
+    2088: {0: "nuvi 67/68"},
+    2094: {0: "fenix 2 Japan"},
+    2100: {0: "Edge 1000, Korea"},
+    2108: {0: "fenix 3/tactix Bravo/quatix 3/D2 Bravo, Wi-Fi"},
+    2112: {0: "Firmware Update for the BC30 RX"},
+    2123: {0: "GPSMAP 64S, SEA"},
+    2124: {0: "GPSMAP 64SJ, Japan"},
+    2127: {0: "Touchscreen E1 Firmware"},
+    2128: {0: "GPSmap 276cx/eTrex Touch 23/35, ???"},
+    2129: {0: "SW,HondaPH, ???"},
+    2130: {0: "Forerunner 920XT Taiwan"},
+    2131: {0: "Forerunner 920XT China"},
+    2132: {0: "Forerunner 920XT Japan"},
+    2134: {0: "VIRB X"},
+    2135: {0: "vivosmart APAC"},
+    2140: {0: "eTrex Touch 25/35"},
+    2141: {0: "dezlCam"},
+    2147: {0: "Edge 25"},
+    2148: {0: "Forerunner 25"},
+    2150: {0: "vivofit 2"},
+    2151: {0: "Forerunner 225, OHR"},
+    2153: {0: "Forerunner 225"},
+    2156: {0: "Forerunner 630"},
+    2157: {0: "Forerunner 230"},
+    2158: {0: "Forerunner 735XT"},
+    2159: {0: "Forerunner, Display A1"},
+    2160: {0: "vivoactive APAC"},
+    2161: {
+        0: "Vector 2",
+        2: "Vector 2 - 02",
+    },
+    2162: {
+        0: "Vector 2S",
+        2: "Vector 2S - 02",
+    },
+    2172: {0: "VIRB XE"},
+    2173: {0: "Forerunner 620 Taiwan"},
+    2175: {0: "TruSwing"},
+    2182: {0: "Approach S5"},
+    2187: {0: "D2 Air"},
+    2188: {0: "fenix 3, K65, China"},
+    2189: {0: "fenix 3 Taiwan"},
+    2190: {0: "T5/TT15 Mini"},
+    2192: {0: "Varia Headlight"},
+    2194: {0: "Approach S6 APAC"},
+    2196: {
+        0: "Wi-Fi A1 Firmware",
+        1: "Wi-Fi A2 Firmware",
+        3: "Wi-Fi Firmware (245/945) - Old",
+        4: "Wi-Fi Software",
+        5: "Bounce Wi-Fi",
+        7: "Wi-Fi Software",
+        8: "Wi-Fi Software (245M/745/945) - New",
+        9: "MARQ/Fenix 6S/6/6X Pro/Descent Mk2/i/s, Wi-Fi Software",
+    },
+    2197: {0: "Forerunner 630, Touchscreen"},
+    2198: {0: "Dash Cam 30 (2198)"},
+    2199: {0: "Dash Cam 35 (2199)"},
+    2200: {0: "GPS 73"},
+    2201: {0: "GPS 12H"},
+    2202: {0: "TruSwing, ???"},
+    2204: {0: "Edge Explore 1000"},
+    2219: {0: "Forerunner 225 Asia"},
+    2220: {0: "ForeAthlete 225J"},
+    2221: {0: "GMA245"},
+    2225: {0: "Varia Radar Tail Light"},
+    2226: {0: "Varia Radar Display Unit"},
+    2228: {0: "Forerunner 225, Display"},
+    2231: {0: "Oregon 650TCJ2, JPN"},
+    2232: {0: "SW,Captain"},
+    2233: {0: "SW,Captain, ???"},
+    2235: {0: "SW,Storm"},
+    2236: {0: "SW,Storm, ???"},
+    2237: {0: "Camper/RV 660"},
+    2238: {0: "Edge 20"},
+    2250: {0: "eTrex 20x/30x"},
+    2256: {0: "GAD27 ECS"},
+    2260: {0: "Edge 520 Asia"},
+    2261: {0: "Edge 520 Japan"},
+    2262: {0: "D2 Bravo"},
+    2266: {0: "Approach S20"},
+    2267: {0: "Drive / DriveSmart 40/50"},
+    2268: {0: "Drive / DriveSmart 60/70 / DriveTrack 70"},
+    2269: {0: "DriveLuxe 50"},
+    2270: {0: "DriveAssist 50"},
+    2273: {0: "ANT/BLE N2 Firmware"},
+    2274: {0: "Edge 1000, Thai"},
+    2281: {0: "GPSMAP 64s, KOR"},
+    2285: {0: "GPSMAP 64st, TWN"},
+    2288: {0: "Edge 25 Asia"},
+    2289: {0: "Edge 25 Japan"},
+    2290: {0: "Edge 20 Asia"},
+    2292: {0: "Approach X40"},
+    2293: {0: "fenix 3, K65, Japan"},
+    2296: {0: "nuviCam APAC"},
+    2297: {0: "nuvi 57 APAC"},
+    2298: {0: "nuvi 67 APAC"},
+    2299: {0: "Montana 610/680"},
+    2302: {0: "eTrex 20x/30x China OPM & TWN"},
+    2304: {0: "G5"},
+    2310: {0: "Forerunner 630 APAC"},
+    2311: {0: "ForeAthlete 630J"},
+    2313: {0: "ForeAthlete 230J"},
+    2315: {0: "eTrex 209x/309x CHN"},
+    2316: {0: "eTrex 20x/30x JPN"},
+    2317: {0: "eTrex 20x/30x SEA"},
+    2319: {0: "GPS20A"},
+    2325: {0: "UAT-B2325-00"},
+    2327: {
+        0: "HRM4-Run",
+        1: "HRM4-Run",
+        2: "HRM4-Run",
+    },
+    2329: {0: "VIRB XE APAC, System"},
+    2332: {0: "Epix JPN"},
+    2337: {0: "vivoactive HR"},
+    2338: {0: "vivoactive HR, Sensor Hub"},
+    2339: {0: "vivoactive HR, Touchpanel"},
+    2340: {0: "vivoactive HR, Display"},
+    2341: {0: "Kenwood 2016"},
+    2347: {0: "vivosmart HR+"},
+    2348: {0: "vivosmart HR"},
+    2358: {0: "vivosmart HR, ???"},
+    2361: {0: "vivosmart HR APAC"},
+    2362: {0: "vivosmart HR+ APAC"},
+    2368: {0: "vivomove"},
+    2369: {0: "Forerunner 235, Sensor Hub (2369)"},
+    2379: {0: "Varia Tail Light"},
+    2392: {0: "fenix Chronos, Display"},
+    2393: {0: "fenix Chronos, Sensor Hub"},
+    2396: {0: "Forerunner 235 APAC"},
+    2397: {0: "ForeAthlete 235J"},
+    2398: {0: "Varia Vision"},
+    2400: {
+        0: "aera 660",
+        1: "aera 660",
+    },
+    2403: {0: "Approach S20, ANT_BLE_BT nrF51"},
+    2405: {0: "Approach X40, BT_BLE"},
+    2406: {0: "vivofit 3"},
+    2407: {0: "fenix 3, K65, Korea"},
+    2408: {0: "fenix 3, K65, SEA"},
+    2413: {0: "fenix 3 HR"},
+    2414: {0: "fenix 3 HR/D2 Bravo Titanium, Display"},
+    2415: {0: "fenix 3 HR, Sensor Hub"},
+    2417: {0: "VIRB Ultra 30"},
+    2423: {0: "ANT/BLE N3 Firmware"},
+    2429: {0: "Index Smart Scale"},
+    2431: {0: "Forerunner 235"},
+    2432: {0: "fenix Chronos"},
+    2435: {0: "zumo 3x5"},
+    2436: {0: "zumo 595"},
+    2440: {0: "GDR E350/C300"},
+    2442: {0: "Astro 430/Alpha 50"},
+    2444: {0: "Rino 7xx"},
+    2447: {0: "Varia Vision/Nautix, ???"},
+    2449: {0: "PRO Control 2 RR"},
+    2450: {0: "Delta Smart"},
+    2467: {0: "D2 Bravo, K65, China"},
+    2470: {0: "GDR C530"},
+    2471: {0: "Varia Vision APAC"},
+    2473: {0: "fenix 3 HR, K26, CHN"},
+    2478: {0: "zumo 590 APAC"},
+    2479: {0: "GPSMAP 276Cx"},
+    2485: {0: "GDR E350 Japan"},
+    2488: {0: "RV-IN801"},
+    2495: {0: "DriveAssist 50, Camera"},
+    2496: {0: "Nautix"},
+    2497: {0: "vivoactive HR APAC"},
+    2503: {0: "Forerunner 35"},
+    2510: {0: "Forerunner 735XT, Sensor Hub"},
+    2511: {0: "Forerunner 735XT, ???"},
+    2512: {0: "Oregon 7xx"},
+    2513: {0: "GDL5x Receiver"},
+    2517: {0: "zumo 590 JPN"},
+    2527: {0: "Approach X40/vivosmart HR+, ???"},
+    2530: {0: "Edge 820"},
+    2531: {0: "Edge Explore 820"},
+    2533: {0: "Forerunner 735XT APAC"},
+    2534: {0: "ForeAthlete 735XTJ"},
+    2544: {0: "fenix 5S"},
+    2545: {0: "Dash Cam 30 (2545)"},
+    2546: {0: "Dash Cam 35 (2546)"},
+    2547: {0: "D2 Bravo Titanium"},
+    2550: {0: "Edge 820/Edge Explore 820, ???"},
+    2559: {0: "Approach S20 APAC"},
+    2560: {0: "D2 Bravo Titanium, Sensor Hub"},
+    2561: {0: "DriveSmart 50 APAC"},
+    2563: {0: "eTrex Touch 35 APAC"},
+    2567: {0: "Varia UT800 - Part 1"},
+    2569: {0: "fleet 660 8G, GPS"},
+    2570: {0: "fleet 670 8G, GPS"},
+    2576: {0: "eTrex Venture Mariner"},
+    2582: {0: "Approach X10, ???"},
+    2583: {0: "Delta Smart, ANT_BLE_BT nRF51"},
+    2584: {0: "BMW Motorrad Navigator VI"},
+    2586: {0: "Drive/DriveSmart 51"},
+    2587: {0: "Drive 61"},
+    2588: {0: "DriveSmart 61"},
+    2589: {0: "DriveLuxe 51"},
+    2590: {0: "DriveAssist 51"},
+    2593: {
+        0: "Running Dynamics Pod",
+        3: "Running Dynamics Pod",
+    },
+    2596: {0: "DriveAssist 50 APAC"},
+    2599: {0: "Edge 820 China"},
+    2600: {0: "Edge 820 Japan"},
+    2604: {0: "fenix 5X/tactix Charlie"},
+    2605: {0: "fenix 5X/tactix Charlie, Display"},
+    2606: {0: "vivofit jr"},
+    2607: {0: "DriveSmart 61/Camper/RV 770, Touchscreen"},
+    2614: {0: "GPSMAP 64sc"},
+    2622: {0: "vivosmart 3"},
+    2623: {0: "vivosport"},
+    2624: {0: "fenix 3 HR APAC, Sensor Hub"},
+    2628: {0: "Edge 820 Taiwan"},
+    2629: {0: "Edge 820 Korea"},
+    2630: {0: "Edge 820 SEA"},
+    2632: {0: "Delta Smart, ???"},
+    2635: {0: "Dash Cam 45-S"},
+    2636: {0: "Dash Cam 55"},
+    2637: {0: "GPSMAP 722"},
+    2639: {0: "vivosmart HR+ Israel"},
+    2641: {0: "Xero A1(i)"},
+    2650: {0: "Forerunner 35 Israel"},
+    2652: {0: "Approach G30"},
+    2653: {0: "Forerunner 235, NFC CIB"},
+    2655: {0: "Forerunner 235, Sensor Hub (2655)"},
+    2656: {0: "Approach S60"},
+    2657: {0: "Approach S60, Display"},
+    2659: {0: "vivosmart 3, Sensor Hub"},
+    2660: {0: "vivosport, Sensor Hub"},
+    2661: {0: "fenix 5/quatix 5, Sensor Hub"},
+    2662: {0: "fenix 5S, Sensor Hub"},
+    2663: {0: "fenix 5X/tactix Charlie/D2 Charlie, Sensor Hub"},
+    2664: {0: "Descent Mk1, Sensor Hub"},
+    2665: {0: "Forerunner 935, Sensor Hub"},
+    2666: {0: "vivoactive 3, Sensor Hub"},
+    2667: {0: "Forerunner 35 APAC"},
+    2668: {0: "Forerunner 35 JPN"},
+    2675: {0: "fenix Chronos APAC"},
+    2680: {0: "Spectre, Touchpanel"},
+    2681: {0: "Oregon 7xx APAC"},
+    2684: {0: "RV/Camper 770"},
+    2687: {0: "VIRB 360"},
+    2689: {0: "CAN µC AOER, APGC18"},
+    2691: {0: "Forerunner 935"},
+    2697: {0: "fenix 5/quatix 5"},
+    2699: {0: "vivoactive 3, Touchpanel"},
+    2700: {0: "vivoactive 3"},
+    2702: {0: "fenix Chronos APAC, Sensor Hub"},
+    2705: {0: "Avtex Tourer One Plus"},
+    2708: {0: "Approach S60, ???"},
+    2713: {0: "Edge 1030"},
+    2721: {0: "Edge 1030/Edge 1030 Bontrager, ???"},
+    2725: {
+        0: "aera 79x China",
+        1: "aera 79x CHINA",
+    },
+    2726: {
+        0: "aera 660 China",
+        1: "aera 660 CHINA",
+    },
+    2727: {0: "Forerunner 35 SEA"},
+    2729: {0: "Delta Inbounds Dog Device, Comm."},
+    2730: {0: "Delta Inbounds Dog Device, Host"},
+    2731: {
+        0: "Delta Inbounds Base Unit, Comm.",
+        1: "Delta Inbounds Base Unit, Comm. WW",
+    },
+    2732: {0: "Delta Inbounds Base Unit, Host"},
+    2733: {0: "Forerunner 235, NFC, ExpressPay"},
+    2735: {0: "fleet 770, GPS"},
+    2736: {0: "fleet 780, GPS"},
+    2738: {0: "fleet 790 ATT, GPS"},
+    2739: {0: "fleet 790 EU, GPS"},
+    2752: {0: "Approach S60, Sensor Hub"},
+    2760: {
+        2: "RV-BBT600 RV HUB Dock",
+        3: "RV-BBT600 RV HUB Dock Update Index",
+    },
+    2763: {0: "GPSMAP 64sc JPN"},
+    2764: {0: "GPSMAP 64sc SEA"},
+    2769: {0: "Foretrex 601/701"},
+    2770: {0: "GMU11"},
+    2771: {0: "Impact"},
+    2772: {0: "vivomove HR"},
+    2773: {0: "vivomove HR, Sensor Hub"},
+    2774: {
+        0: "vivomove HR, Touchpanel",
+        1: "vivomove HR Premium, Cap Touch Panel (CTP)",
+    },
+    2776: {0: "Approach G30, Touchscreen"},
+    2777: {0: "Rino 700"},
+    2778: {0: "GPS Chipset Type M4"},
+    2779: {0: "GPS Chipset Type M426"},
+    2781: {0: "vivosport, Touchpanel"},
+    2786: {0: "RV-BBT600 RV HUB Remote"},
+    2787: {
+        0: "Vector 3",
+        3: "Vector 3",
+    },
+    2792: {0: "Foretrex 601/701, Sensor Hub"},
+    2796: {0: "fenix 5 APAC"},
+    2797: {0: "fenix 5S APAC"},
+    2798: {0: "fenix 5X APAC"},
+    2803: {0: "Drive/DriveSmart 51 APAC"},
+    2806: {0: "Approach Z80"},
+    2807: {0: "echoMAP Plus 4x"},
+    2808: {0: "echoMAP Plus 6x"},
+    2809: {0: "echoMAP Plus 7x/9x"},
+    2810: {0: "echoMAP Plus 63"},
+    2814: {0: "Forerunner 35 KOR"},
+    2816: {0: "CAN µC AOER, ALSA18"},
+    2817: {0: "ALSA18 AOER, System Code"},
+    2818: {0: "Xero A1(i), Sensor Hub"},
+    2819: {0: "D2 Charlie"},
+    2820: {0: "D2 Charlie, Display"},
+    2822: {
+        0: "fenix 5 Plus/Forerunner 645/645M/D2 Delta/vivoactive 3, NFC applets (PN80T)",
+        1: "Fenix 5 Plus, NFC applets",
+        3: "Approach S62, NFC applets",
+        6: "PN81T ASIA, NFC applets",
+    },
+    2825: {0: "APSA18 AOER, System Code"},
+    2826: {0: "UAT-2826"},
+    2827: {0: "Impact, ???"},
+    2830: {0: "CAN µC, APSA18, AutoOEM"},
+    2831: {0: "vivosmart 3 APAC"},
+    2832: {0: "vivosport APAC"},
+    2833: {0: "Forerunner 935 APAC"},
+    2835: {0: "vivosmart 3 APAC, Sensor Hub"},
+    2836: {0: "vivosport APAC, Sensor Hub"},
+    2838: {0: "Dash Cam 65W"},
+    2841: {0: "nuviCam APAC, Camera"},
+    2842: {0: "BMW Navigator VI AOER/Japan"},
+    2858: {0: "Dash Cam 45-O"},
+    2859: {0: "Descent Mk1"},
+    2862: {
+         0: "Garmin Speak",
+        11: "Garmin Speak Camera Firmware",
+    },
+    2864: {0: "Approach Z80, Aux"},
+    2866: {0: "fenix 5 APAC, Sensor Hub"},
+    2867: {0: "fenix 5S APAC, Sensor Hub"},
+    2868: {0: "fenix 5X APAC, Sensor Hub"},
+    2869: {0: "Descent Mk1, Display"},
+    2872: {0: "Forerunner 935 APAC, Sensor Hub"},
+    2878: {0: "vivofit 4"},
+    2886: {0: "Forerunner 645"},
+    2887: {0: "Forerunner 645, ANT_BLE_BT"},
+    2888: {0: "Forerunner 645 Music"},
+    2890: {
+         0: "BarkLimiter 2",
+        10: "BarkLimiter 2VT",
+    },
+    2891: {0: "Forerunner 30"},
+    2893: {0: "Atemos 50"},
+    2894: {0: "Atemos 100"},
+    2895: {0: "Atemos K5/KT15"},
+    2896: {0: "Forerunner 645, Sensor Hub"},
+    2897: {0: "Forerunner 645 Music, Sensor Hub"},
+    2900: {0: "fenix 5S Plus"},
+    2907: {0: "Approach S60 APAC"},
+    2909: {0: "Edge 130"},
+    2910: {0: "dezl 780"},
+    2911: {0: "dezlCam 785"},
+    2924: {0: "Edge 1030 APAC"},
+    2925: {0: "GPS 12H India"},
+    2927: {0: "vivosmart 4"},
+    2930: {0: "vivosmart 4, Sensor Hub"},
+    2931: {0: "vivosmart 4, Touchpanel"},
+    2934: {0: "Fusion MS-RA770"},
+    2944: {0: "vivofit jr. 2"},
+    2945: {0: "vivomove HR APAC"},
+    2946: {0: "vivomove HR APAC, Sensor Hub"},
+    2947: {0: "eTrex 20x/30x MN"},
+    2952: {0: "fleet 790 AUNZ, GPS"},
+    2953: {0: "inReach Mini"},
+    2954: {
+        0: "Varia Radar Tail Light 510, Light",
+        3: "Varia RTL510, Light",
+        7: "Varia RTL510, System",
+    },
+    2955: {
+        0: "Varia Radar Tail Light 510, Radar",
+        6: "Varia RTL510, Radar",
+    },
+    2956: {0: "Alpha 50 CHN"},
+    2957: {0: "GPS Chipset Type M5 (MT3333) with Galileo"},
+    2960: {0: "GPS Chipset Type M426"},
+    2961: {0: "GMC507"},
+    2962: {0: "Approach X10"},
+    2976: {0: "vivoactive 3 APAC"},
+    2977: {0: "Forerunner 30 APAC"},
+    2983: {0: "vivoactive 3 APAC, Sensor Hub"},
+    2988: {0: "vivoactive 3 Music"},
+    2989: {0: "vivoactive 3 Music, Sensor Hub"},
+    2990: {0: "vivoactive 3 Music, Touchscreen"},
+    2991: {0: "Descent Mk1 APAC"},
+    2993: {0: "Descent Mk1 APAC, Sensor Hub"},
+    2994: {0: "D2 Charlie APAC"},
+    2996: {0: "DriveSmart 61 APAC"},
+    2997: {0: "eTrex 302 CHN"},
+    3003: {0: "Forerunner 645 APAC"},
+    3004: {0: "Forerunner 645 Music APAC"},
+    3008: {0: "Forerunner 645 APAC, Sensor Hub"},
+    3009: {0: "Forerunner 645 Music APAC, Sensor Hub"},
+    3011: {0: "Edge Explore"},
+    3013: {0: "fenix 5S Plus, Sensor Hub"},
+    3014: {0: "fenix 5 Plus/D2 Delta, Sensor Hub"},
+    3015: {0: "fenix 5X Plus, Sensor Hub"},
+    3018: {0: "Edge 130 Nordic Software"},
+    3023: {0: "Drive/DriveSmart/DriveAssist/DriveLuxe 51/61, ???"},
+    3028: {0: "GPSMAP 66"},
+    3029: {0: "zumo 590 APAC, TPMS Firmware"},
+    3031: {0: "Fusion MS-SRX400"},
+    3033: {0: "zumo 396"},
+    3034: {0: "Approach G80/Edge Explore, Sensor Hub"},
+    3044: {0: "Approach S20, ???"},
+    3049: {0: "Approach S10"},
+    3059: {0: "Garmin Speak Plus"},
+    3061: {0: "Drive 52"},
+    3065: {0: "DriveSmart x5"},
+    3066: {0: "vivoactive 3 Music, LTE"},
+    3067: {0: "vivoactive 3 Music, ANT_BLE_BT"},
+    3076: {0: "Forerunner 245"},
+    3077: {0: "Forerunner 245 Music"},
+    3078: {0: "Forerunner 245, Sensor Hub"},
+    3079: {0: "Forerunner 245 Music, Sensor Hub"},
+    3085: {0: "Approach G80"},
+    3089: {0: "fenix 5 Plus APAC"},
+    3091: {0: "PRO 550 Plus, Sensor Hub"},
+    3092: {0: "Edge 130 APAC"},
+    3095: {0: "Edge 1030 Bontrager"},
+    3098: {0: "Astro 900"},
+    3099: {0: "T9 GPS Collar"},
+    3104: {0: "Dash Cam Mini"},
+    3107: {
+         0: "GPS Chipset Type S1 (3107)",
+         1: "GPS Software, Fenix 6 Series WW",
+         2: "GPS Software, MARQ Series WW",
+         3: "GPS Software, Approach S40",
+         4: "GPS Software, Approach S62",
+         5: "GPS Software (CPE), FR Series MS WW (945)",
+         6: "GPS Software, Edge WW",
+         7: "GPS Software, VVA4/Venu",
+         8: "GPS Software (CPE), FR Series Mid-Level WW (245/M etc)",
+         9: "GPS Software, Sony CXD5603GF GNSS Module, FR Entry WW",
+        10: "GPS Software, Descent Mk2 Series",
+        11: "GPS Software, Instinct Solar",
+        13: "GPS Software, Approach S12/G12",
+        14: "GPS Software, Enduro WW",
+        15: "GPS Software, Approach S42",
+    },
+    3109: {0: "DriveAssist 51 APAC"},
+    3110: {0: "fenix 5 Plus"},
+    3111: {0: "fenix 5X Plus"},
+    3112: {0: "Edge 520 Plus"},
+    3113: {0: "Forerunner 945"},
+    3114: {0: "Forerunner 945, Sensor Hub"},
+    3115: {0: "GPSMAP 64sc SiteSurvey"},
+    3116: {0: "PRO 550 Plus"},
+    3121: {0: "Edge 530"},
+    3122: {0: "Edge 830"},
+    3126: {0: "Instinct"},
+    3127: {0: "Instinct, Sensor Hub"},
+    3130: {0: "Approach Z80 APAC"},
+    3134: {0: "fenix 5S Plus APAC"},
+    3135: {0: "fenix 5X Plus APAC"},
+    3139: {0: "zumo 396 APAC"},
+    3142: {0: "Edge 520 Plus APAC"},
+    3143: {
+        0: "Instinct, ???",
+        3: "Descent T1 Tank Pod",
+    },
+    3144: {0: "Forerunner 235 Lite APAC"},
+    3145: {0: "Forerunner 245 APAC"},
+    3153: {0: "fenix 5 Plus, ANT_BLE_BT"},
+    3157: {0: "Edge 830, ???"},
+    3163: {0: "vivoactive 3 Music APAC, WiFi"},
+    3164: {0: "vivoactive 3 Music APAC, Sensor Hub"},
+    3165: {0: "SW, ACIN19, Indonesia, AOER"},
+    3166: {0: "SW, CAN µC, ACIN19, Indonesia, AOER"},
+    3183: {0: "vivosmart 4, Network SW"},
+    3187: {0: "Rino 7xx, GMRS"},
+    3192: {
+        0: "Speed Sensor 2",
+        8: "Speed Sensor 2",
+    },
+    3196: {0: "D2 Delta S"},
+    3197: {0: "D2 Delta"},
+    3198: {0: "D2 Delta PX"},
+    3199: {0: "CYW20719 Bluetooth APAC"},
+    3200: {0: "Edge/Edge Explore 820, ???"},
+    3204: {0: "Forerunner 245, ANT_BLE_BT"},
+    3205: {0: "Forerunner 245 Music, ANT_BLE_BT"},
+    3206: {0: "GLO 2"},
+    3211: {0: "ALT1160 LTE Modem Firmware"},
+    3216: {0: "Xero S1 Trapshooting Trainer"},
+    3218: {0: "vivosmart 4 APAC"},
+    3220: {0: "NFC 3rd Party Applets"},
+    3224: {0: "vivoactive 4 Small"},
+    3225: {0: "vivoactive 4 Large"},
+    3226: {0: "venu"},
+    3227: {
+        0: "vivoactive 4, ANT_BLE_BT",
+        1: "vivoactive 4 CYPRESS, ANT_BLE_BT",
+    },
+    3229: {0: "vivoactive 4 Small, Touchpanel"},
+    3230: {0: "vivoactive 4 Large, Touchpanel"},
+    3231: {0: "venu, Touchpanel"},
+    3232: {0: "fenix 5S Plus APAC, Sensor Hub"},
+    3233: {0: "fenix 5 Plus APAC, Sensor Hub"},
+    3234: {0: "fenix 5X Plus APAC, Sensor Hub"},
+    3235: {0: "GSU25C ADAHRS"},
+    3238: {0: "Forerunner 45"},
+    3241: {0: "vivosmart 4 APAC, Sensor Hub"},
+    3246: {0: "MARQ Driver"},
+    3247: {0: "MARQ Aviator"},
+    3248: {0: "MARQ Captain"},
+    3249: {0: "MARQ Commander"},
+    3250: {0: "MARQ Expedition"},
+    3251: {0: "MARQ Athlete"},
+    3252: {0: "MARQ series, Sensor Hub"},
+    3253: {0: "MARQ series, ANT_BLE_BT"},
+    3258: {0: "Descent Mk2i"},
+    3260: {0: "D2 Delta, ANT_BLE_BT"},
+    3262: {0: "GPSMAP 276Cx APAC"},
+    3264: {0: "Virb Ultra 30, ???"},
+    3271: {0: "Fusion MS-RA670 Initial Mass Production Software"},
+    3272: {
+        1: "RV-IN1501 Software Update",
+    },
+    3273: {0: "Instinct APAC"},
+    3275: {0: "Edge/Edge Bontrager 1030, ???"},
+    3281: {0: "STRIKER Cast"},
+    3282: {0: "Forerunner 45"},
+    3284: {0: "GPSMAP 66i"},
+    3286: {0: "Garmin DriveSmart 65 with Amazon Alexa"},
+    3287: {0: "fenix 6S"},
+    3288: {0: "fenix 6S Pro"},
+    3289: {0: "fenix 6"},
+    3290: {0: "fenix 6 Pro"},
+    3291: {0: "fenix 6X Pro"},
+    3292: {0: "fenix 6S/6, ANT_BLE_BT"},
+    3293: {0: "fenix 6S/6/6X Pro, ANT_BLE_BT"},
+    3294: {0: "fenix 6S, Sensor Hub"},
+    3295: {0: "fenix 6, Sensor Hub"},
+    3296: {0: "fenix 6X, Sensor Hub"},
+    3299: {
+        0: "Approach S40/fenix 5/5 Plus/Instinct, ???",
+        3: "HRM-Dual",
+    },
+    3300: {
+        0: "HRM-Pro",
+        3: "HRM-Pro",
+    },
+    3303: {0: "Forerunner 945, ANT_BLE_BT"},
+    3307: {
+        0: "Cannondale Wheel Sensor",
+        3: "Cannondale Wheel Sensor",
+        8: "Cannondale Wheel Sensor",
+    },
+    3308: {0: "vivomove 3 Classic/Premium"},
+    3309: {0: "Forerunner 45, Sensor Hub"},
+    3310: {
+        0: "Forerunner 45, Network Processor",
+        1: "Forerunner 45, Network Processor v2",
+    },
+    3312: {0: "Edge 130 APAC, Sensor Hub"},
+    3313: {0: "GPS Chipset Type M5"},
+    3314: {0: "Approach S40"},
+    3315: {
+        0: "Approach S40, Sensor Hub",
+        1: "Appraoch S42, Sensor Hub",
+    },
+    3316: {0: "Approach S40, Touchscreen"},
+    3317: {0: "ForeTrex 601 Japan"},
+    3318: {0: "Overlander"},
+    3321: {0: "Forerunner 245M APAC"},
+    3324: {0: "D2 Delta PX APAC"},
+    3330: {0: "GPS Software 3330"},
+    3331: {0: "GAD13"},
+    3339: {
+        0: "Instinct, ???",
+        6: "Varia RVR315, Radar",
+    },
+    3340: {
+        0: "Instinct, ???",
+        3: "Varia Rear View Radar RVR315 System",
+        7: "Varia RVR315",
+    },
+    3341: {0: "Drive 52 APAC"},
+    3345: {0: "Edge Explore, ???"},
+    3349: {0: "Edge 530 ASIA"},
+    3350: {0: "Edge 830 ASIA"},
+    3354: {0: "DriveSmart x5 ASIA"},
+    3356: {0: "vivoactive 4 Small, Sensor Hub"},
+    3357: {0: "vivoactive 4 Large, Sensor Hub"},
+    3358: {0: "venu, Sensor Hub"},
+    3366: {0: "Descent Mk2/Mk2i, Sensor Hub"},
+    3368: {0: "vivomove 3 Classic, Sensor Hub"},
+    3370: {0: "vivomove 3 Sport, Sensor Hub"},
+    3378: {0: "vivomove 3 Sport NA"},
+    3379: {0: "Camper/RV 780"},
+    3380: {0: "Camper/RV 785"},
+    3381: {0: "SW, ACSG19, SGMY, AOER"},
+    3382: {0: "SW, CAN µC, ACSG19, SGMY, AOER"},
+    3387: {0: "vivoactive 4 Small APAC"},
+    3388: {0: "vivoactive 4 Large APAC"},
+    3389: {0: "venu ASIA"},
+    3390: {0: "Fusion MS-RA210 FFP Build Version"},
+    3391: {0: "Fusion MS-ERX400 Final Factory Production Release Version"},
+    3393: {0: "Approach S62"},
+    3394: {0: "Approach S62, Touchscreen"},
+    3396: {0: "Approach S62, ANT_BLE"},
+    3399: {0: "Approach S62, Sensor Hub"},
+    3400: {0: "Oregon 7xx/Rino 7xx, ???"},
+    3401: {0: "eTrex/eTrex Touch 25/35, ???"},
+    3405: {0: "Swim 2"},
+    3406: {0: "Swim 2, Sensor Hub"},
+    3407: {
+        0: "Swim 2, Network Processor",
+        1: "Swim 2, Network Processor - New",
+    },
+    3408: {0: "Dash Cam 46"},
+    3409: {0: "Dash Cam 56"},
+    3410: {0: "Dash Cam 66W"},
+    3411: {0: "GPS Chipset Type M5 (3411)"},
+    3412: {0: "GPS Chipset Type M5 (Fitness Region File)"},
+    3413: {0: "GPS Chipset Type M5 (3413)"},
+    3416: {0: "Forerunner 245 APAC, Sensor Hub"},
+    3417: {0: "Forerunner 245M APAC, Sensor Hub"},
+    3420: {0: "MARQ Driver APAC"},
+    3421: {0: "MARQ Aviator APAC"},
+    3422: {0: "vivomove 3 Sport, NFC"},
+    3428: {0: "vivolife"},
+    3429: {
+        0: "vivomove 3 Classic, Touchpanel (CTP)",
+        1: "vivomove 3 Premium, Touchpanel (CTP)",
+        2: "vivomove 3 Sport 39mm, Touchpanel (CTP)",
+        3: "vivomove 3 Sport 44mm, Touchpanel (CTP)",
+    },
+    3431: {0: "GPSMAP 64sx"},
+    3432: {0: "GPSMAP 64csx"},
+    3433: {0: "Alpha 200i"},
+    3436: {0: "MTK MT3329 5Hz GPS Module, STC"},
+    3441: {0: "Forerunner 945 ASIA"},
+    3445: {0: "eTrex 22X/32x"},
+    3446: {0: "vivoactive 3t(trainer)"},
+    3447: {0: "Approach S40 ASIA"},
+    3448: {0: "MARQ Captain APAC"},
+    3449: {0: "MARQ Commander APAC"},
+    3450: {0: "MARQ Expedition APAC"},
+    3451: {0: "MARQ Athlete APAC"},
+    3452: {0: "GPSMAP 86s"},
+    3453: {0: "GPSMAP 86sc"},
+    3454: {0: "GPSMAP 86i"},
+    3455: {0: "GPSMAP 86sci"},
+    3458: {0: "XERO X1i"},
+    3459: {0: "Montana 700/700i/750i"},
+    3461: {
+        0: "Index S2 Smart Scale",
+        1: "Index S2 Smart Scale (RGN)",
+    },
+    3463: {0: "RV-700"},
+    3465: {0: "Dash Cam Tandem"},
+    3466: {0: "Instinct Solar"},
+    3467: {0: "Instinct Solar, Sensor Hub"},
+    3468: {0: "Instinct Solar, ANT_BLE"},
+    3469: {0: "Forerunner 45 ASIA"},
+    3472: {0: "Forerunner 45 ASIA, Sensor Hub"},
+    3473: {0: "vivoactive 3 Daimler"},
+    3477: {0: "vivoactive 3 Daimler APAC"},
+    3480: {0: "Dash Cam 56"},
+    3481: {0: "Dash Cam 66W"},
+    3484: {0: "zumo XT"},
+    3488: {0: "Pro 550 Plus, EL & FR"},
+    3489: {0: "Pro 550 Plus, EH"},
+    3491: {0: "dezl 700"},
+    3492: {0: "dezl 800/1000"},
+    3494: {0: "MARQ ASIA Series, Sensor Hub"},
+    3498: {0: "Rey"},
+    3499: {0: "Darth Vader"},
+    3500: {0: "Captain Marvel"},
+    3501: {0: "First Avenger"},
+    3506: {
+         0: "GPS Chipset Type S1 (3506)",
+         1: "GPS Software, Fenix 6 APAC",
+         2: "GPS Software, MARQ APAC",
+        10: "GPS Software",
+        11: "GPS Software",
+        14: "GPS Software ENDURO ASIA",
+    },
+    3507: {0: "Alpha 200i WW"},
+    3508: {0: "Alpha 200i EU Harmonized"},
+    3509: {0: "Alpha 200i France"},
+    3510: {0: "Alpha 200i Nordics"},
+    3511: {0: "Forerunner 945 ASIA, Sensor Hub"},
+    3512: {0: "fenix 6S Sport ASIA"},
+    3513: {0: "fenix 6S ASIA"},
+    3514: {0: "fenix 6 Sport ASIA"},
+    3515: {0: "fenix 6 ASIA"},
+    3516: {0: "fenix 6X ASIA"},
+    3517: {0: "Approach Z82, Sensor Hub"},
+    3519: {0: "Approach G80 ASIA"},
+    3525: {
+        1: "vivomove 3, Network Processor",
+    },
+    3526: {0: "Approach Z82"},
+    3527: {0: "Approach Z82, Aux"},
+    3528: {0: "Alpha 10"},
+    3535: {0: "Captain Marvel APAC"},
+    3536: {0: "First Avenger APAC"},
+    3537: {0: "Rey APAC"},
+    3538: {0: "Darth Vader APAC"},
+    3542: {0: "Descent Mk2s"},
+    3543: {
+        1: "Descent Mk2s, Sensor Hub",
+    },
+    3549: {0: "Montana 7xx, Display"},
+    3550: {0: "fenix 6S ASIA, Sensor Hub"},
+    3551: {0: "fenix 6 ASIA, Sensor Hub"},
+    3552: {0: "fenix 6X ASIA, Sensor Hub"},
+    3553: {0: "Catalyst"},
+    3558: {0: "Edge 130 Plus"},
+    3559: {0: "Edge 130 Plus NORDIC"},
+    3560: {0: "vivoactive 4 Small ASIA, Sensor Hub"},
+    3561: {0: "vivoactive 4 Large ASIA, Sensor Hub"},
+    3562: {0: "venu ASIA, Sensor Hub"},
+    3566: {0: "Marine Telematics Modem Firmware"},
+    3570: {0: "Edge 1030 Plus"},
+    3572: {0: "vivomove 3 Style/Luxe ASIA"},
+    3573: {0: "vivomove 3 Sport APAC"},
+    3576: {0: "Fusion MS-WB670"},
+    3578: {
+        0: "Rally 100/200",
+        3: "Rally 100/200",
+    },
+    3579: {
+        10: "RV-85x/RV-105x",
+    },
+    3589: {0: "Forerunner 745"},
+    3590: {0: "Forerunner 745, Sensor Hub"},
+    3591: {0: "Forerunner 745, BLE_BT_ANT"},
+    3592: {
+        3: "Varia Radar Tail Light 515, System",
+        7: "Varia RTL515",
+    },
+    3593: {
+        6: "Varia RTL515 Radar",
+    },
+    3594: {0: "Alpha 200i, Display"},
+    3596: {0: "venu SQ MUSIC"},
+    3597: {
+        0: "Elf Music, BLE_BT_ANT",
+        1: "Elf Music, BLE_BT_ANT",
+    },
+    3598: {0: "Elf Music, CTP Controller"},
+    3599: {0: "venu SQ Music"},
+    3600: {0: "venu SQ"},
+    3601: {
+        1: "Elf, ANT_BLE_BT",
+    },
+    3602: {0: "Elf, Sensor Hub"},
+    3603: {0: "venu SQ"},
+    3608: {
+        1: "aera 760",
+    },
+    3612: {0: "SW, AAIN20 (Toyota Android), Indonesia, AOER"},
+    3615: {0: "Lily"},
+    3616: {0: "Lily, Sensor Hub"},
+    3620: {0: "Fusion Boat Builder Configuration Tool"},
+    3621: {0: "Alpha 10, Sensor Hub"},
+    3622: {0: "Approach R10"},
+    3624: {0: "MARQ Adventurer"},
+    3629: {0: "SW, Lawrence LFIN20 Board (STA1295), System Code, AOER"},
+    3638: {0: "Enduro"},
+    3639: {0: "Swim 2 ASIA"},
+    3642: {0: "Swim 2 ASIA, Sensor Hub"},
+    3648: {0: "MARQ Adventure APAC"},
+    3649: {0: "GPS Chipset MTK (3649)"},
+    3652: {0: "Forerunner 945 LTE"},
+    3653: {0: "Forerunner 945 LTE, ANT_BLE_BT"},
+    3658: {0: "GPSMAP 66i ASIA"},
+    3660: {0: "GPSMAP 64sx SEA"},
+    3661: {0: "GPSMAP 64sx India"},
+    3663: {0: "GPSMAP 63csx CHN_OPM"},
+    3666: {0: "GPSMAP 64csx SEA"},
+    3667: {0: "GPSMAP 64csx JPN"},
+    3669: {0: "vivomove 3 Classic ASIA, Sensor Hub"},
+    3670: {0: "vivomove 3/3S ASIA, Sensor Hub"},
+    3671: {0: "RV/Camper 890"},
+    3687: {0: "eTrex 32x CHN"},
+    3689: {0: "eTrex 22x/32x JPN"},
+    3690: {0: "eTrex 22x/32x SEA"},
+    3691: {0: "eTrex 22x/32x MN"},
+    3694: {0: "GPSMAP 66sr"},
+    3695: {0: "fleet 790 EU LTE, GPS"},
+    3700: {0: "Approach S62 ASIA"},
+    3702: {0: "Descent Mk2i ASIA"},
+    3703: {0: "venu 2"},
+    3704: {0: "venu 2S"},
+    3705: {0: "venu 2, CTP"},
+    3706: {0: "venu 2S, CTP"},
+    3707: {0: "venu 2, Sensor Hub"},
+    3708: {0: "venu 2, ANT_BLE_BT"},
+    3709: {0: "Forerunner 945 LTE, Sensor Hub"},
+    3710: {0: "Approach Z82"},
+    3711: {0: "Group Ride Radio"},
+    3715: {0: "fleet 790 SA, GPS"},
+    3717: {0: "STRIKER Cast, GPS"},
+    3720: {0: "Lily, CTP Controller"},
+    3725: {0: "GPSMAP 65/65s"},
+    3737: {0: "venu Daimler ASIA"},
+    3738: {0: "Tread"},
+    3739: {0: "MARQ Golfer"},
+    3740: {0: "venu Daimler"},
+    3741: {0: "GPS Software (3741)"},
+    3742: {0: "GPS Software (3742)"},
+    3747: {0: "vivofit jr. 3"},
+    3749: {0: "GPS Software (3749)"},
+    3750: {0: "GPS Software Type M5 (MT3333) with Galileo, newer"},
+    3757: {0: "Catalyst Remote Cam"},
+    3758: {0: "Alpha Dog Collar, Sensor Hub"},
+    3764: {0: "fenix 6S Sport Solar ASIA"},
+    3765: {0: "fenix 6S Solar  ASIA"},
+    3766: {0: "fenix 6 Sport Solar ASIA"},
+    3767: {0: "fenix 6 Solar ASIA"},
+    3769: {0: "fenix 6S Solar JPN"},
+    3771: {0: "fenix 6 Solar JPN"},
+    3778: {0: "Instinct Solar APAC"},
+    3779: {0: "Instinct Solar JPN"},
+    3782: {0: "quatix 6 Sapphire"},
+    3783: {0: "quatix 6X Dual Power"},
+    3784: {0: "ALT1250 LTE Modem Firmware"},
+    3786: {0: "Fusion MS-RA60"},
+    3791: {0: "Descent Mk2(i), Sensor Hub"},
+    3794: {0: "Forerunner 745 ASIA"},
+    3799: {
+         5: "GPS SW, FR Series MS WW (745)",
+         6: "GNSS Software",
+         7: "GPS Software, Venu 2 WW",
+        11: "Instinct 2/2S, GPS Software",
+        12: "GNSS Software",
+        14: "Bounce GPS",
+        15: "Descent G1, GPS Software",
+    },
+    3800: {
+        11: "GNSS Software",
+        15: "GNSS Software",
+    },
+    3802: {0: "SW, LYIN20, System Code, AOER"},
+    3804: {0: "GPS20A GPS"},
+    3808: {0: "Varia RCT715"},
+    3809: {0: "Lily ASIA"},
+    3810: {0: "Lily ASIA, Sensor Hub"},
+    3812: {0: "Edge 1030 Plus ASIA"},
+    3813: {0: "Edge 130 Plus ASIA"},
+    3817: {0: "DriveSmart x6"},
+    3819: {0: "Approach R10, BLE"},
+    3823: {0: "Approach G12/S12"},
+    3824: {0: "Approach G12/S12, BLE"},
+    3828: {0: "Dash Cam 47"},
+    3829: {0: "Dash Cam 57"},
+    3830: {0: "Dash Cam 67W"},
+    3831: {0: "Dash Cam Mini 2"},
+    3836: {0: "SW, GDL 60 LTE Firmware"},
+    3837: {0: "venu SQ ASIA"},
+    3838: {0: "venu SQ ASIA MUSIC"},
+    3843: {0: "Edge 1040"},
+    3847: {0: "Forerunner 45 Plus"},
+    3850: {0: "MARQ Golfer ASIA"},
+    3851: {0: "venu 2 Plus"},
+    3856: {0: "SW, LCMY20, System Code, AOER"},
+    3857: {0: "Xero Ali Pro"},
+    3863: {0: "Forerunner 45 Plus, Sensor Hub"},
+    3864: {
+        0: "Forerunner 45 Plus, Network",
+        1: "Forerunner 45 Plus, Network Processor",
+    },
+    3865: {
+        5: "GNSS Receiver Firmware",
+        6: "SW, AG3335M, GNSS, L1/L5, Edge WW",
+    },
+    3866: {
+        0: "GPS Software (3866)",
+        5: "inReach Mini 2, GPS Software",
+        7: "GNSS Receiver Firmware",
+        8: "Instinct Crossover, GPS Software",
+        11: "iR Messenger, GPS Software",
+    },
+    3869: {0: "Forerunner 55"},
+    3870: {0: "Edge 1040, Parade Touchpanel"},
+    3872: {0: "Enduro ASIA"},
+    3877: {0: "Forerunner 745 ASIA, Sensor Hub"},
+    3888: {0: "Instinct 2"},
+    3889: {0: "Instinct 2S"},
+    3890: {
+        0: "Instinct 2, Sensor Hub",
+        1: "Instinct 2s, Sensor Hub",
+    },
+    3891: {0: "Instinct 2/2S, ANT_BLE"},
+    3905: {
+        10: "System Software Bundle",
+    },
+    3906: {
+        10: "System Software Bundle",
+    },
+    3907: {
+        10: "System Software Bundle",
+    },
+    3908: {
+        10: "APAC System Software Bundle",
+    },
+    3909: {
+        10: "APAC System Software Bundle",
+    },
+    3910: {
+        10: "APAC System Software Bundle",
+    },
+    3912: {0: "venu 2 Plus, CTP"},
+    3913: {0: "Forerunner 245M redesign"},
+    3914: {0: "Forerunner 245 redesign"},
+    3915: {0: "venu 2 Plus, Sensor Hub"},
+    3917: {0: "Tread"},
+    3925: {0: "Forerunner 55, Sensor Hub"},
+    3926: {0: "Forerunner 55, Network Processor"},
+    3927: {0: "Approach G12"},
+    3930: {0: "Descent Mk2s ASIA"},
+    3931: {
+        1: "Descent Mk2s ASIA, Sensor Hub",
+    },
+    3934: {0: "Approach S42"},
+    3943: {
+        10: "System Software Bundle",
+    },
+    3944: {
+        10: "APAC System Software Bundle",
+    },
+    3946: {
+        0: "SW, LTDM20, System Code, AOER",
+        1: "SW, LTDM20, UMWT, System Code, AOER",
+        3: "SW, LTDM20, TAM, System Code, AOER",
+    },
+    3949: {0: "venu 2S ASIA"},
+    3950: {0: "venu 2 ASIA"},
+    3964: {0: "venu SQ ASIA, Sensor Hub"},
+    3966: {
+        1: "aera 760, CHINA",
+    },
+    3968: {0: "inReach Mini 2"},
+    3969: {0: "vivomove Sport, Sensor Hub"},
+    3970: {
+        1: "vivomove Sport, Network Processor",
+    },
+    3971: {0: "Quartz CTP Controller"},
+    3975: {0: "venu 2 Plus, ANT_BT_BLE"},
+    3982: {0: "vivomove Sport"},
+    3986: {0: "Approach S12 ASIA"},
+    3990: {
+        10: "Forerunner 255 Music Large Software Bundle",
+    },
+    3991: {
+        10: "Forerunner 255 Music Small Software Bundle",
+    },
+    3992: {
+        10: "Forerunner 255 Basic Large Software Bundle",
+    },
+    3993: {
+        10: "Forerunner 255 Basic Small Software Bundle",
+    },
+    3999: {0: "venu 2/2S, Sensor Hub"},
+    4001: {0: "Approach G12 ASIA"},
+    4002: {0: "Approach S42 ASIA"},
+    4003: {0: "GPSMAP 65s SEA"},
+    4004: {0: "Fusion RV-RA770"},
+    4005: {0: "Descent G1"},
+    4006: {0: "Descent G1, Sensor Hub"},
+    4012: {0: "dezl 500"},
+    4017: {0: "venu 2 Plus ASIA"},
+    4018: {0: "venu 2 Plus ASIA, Sensor Hub"},
+    4024: {
+        10: "Forerunner 955 Software Bundle",
+    },
+    4033: {0: "Forerunner 55 ASIA"},
+    4036: {
+         2: "GPS Software, MARQ Golfer JPN",
+         4: "GPS Software, Approach S62 JAPAN",
+        15: "GPS Software",
+    },
+    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"},
+    4056: {0: "GPSMAP 79"},
+    4058: {
+        9: "Forerunner Entry Level, GPS SW",
+    },
+    4060: {0: "CamperVan"},
+    4063: {0: "vivosmart 5"},
+    4064: {0: "vivosmart 5, Sensor Hub"},
+    4068: {
+        1: "SW, LTDM21, TAM, System Code, AOER",
+    },
+    4069: {0: "SW, LAIN21, TAM, System Code, AOER"},
+    4071: {0: "Instinct 2 ASIA"},
+    4073: {
+        0: "Instinct 2 ASIA, Sensor Hub",
+        1: "Instinct 2S ASIA, Sensor Hub",
+    },
+    4079: {
+        10: "System Software Bundle",
+    },
+    4080: {0: "GPS Software (4080)"},
+    4091: {0: "Instinct 2s ASIA"},
+    4094: {0: "SW, LWIN21, TAM, System Code, AOER"},
+    4095: {0: "Delta SE"},
+    4098: {0: "venu 2 Plus, DSP"},
+    4103: {0: "Alpha Dog Collar, GPS"},
+    4105: {
+        10: "System Software Bundle",
+    },
+    4109: {0: "Lily, Network Processor"},
+    4113: {
+        4: "Tread Audio",
+        5: "Tread Audio",
+    },
+    4115: {0: "venu SQ 2"},
+    4116: {0: "venu SQ 2 MUSIC"},
+    4117: {0: "venu SQ 2, Sensor Hub"},
+    4118: {0: "venu SQ ASIA"},
+    4119: {0: "venu SQ MUSIC ASIA"},
+    4120: {0: "Forerunner 55/158 / ForeAthlete 55, Sensor Hub"},
+    4124: {
+        10: "System Software Bundle",
+    },
+    4125: {0: "D2 Air X10"},
+    4130: {
+        0: "HRM-Pro Plus",
+        3: "HRM-Pro Plus",
+    },
+    4132: {0: "Descent G1 ASIA"},
+    4133: {0: "Descent G1 ASIA, Sensor Hub"},
+    4134: {
+        0: "inReach Messenger",
+        1: "inReach Messenger, ANT_BLE",
+    },
+    4135: {
+        10: "System Software Bundle",
+    },
+    4140: {0: "DriveSmart x6 ASIA"},
+    4145: {0: "inReach Mini 2 ASIA"},
+    4155: {0: "Instinct Crossover"},
+    4156: {0: "Instinct Crossover, Sensor Hub"},
+    4161: {0: "dezl OTR 610/710"},
+    4162: {0: "dezl OTR 810/1010"},
+    4165: {0: "dezlCam 710"},
+    4166: {0: "RV/CamperCam 795"},
+    4167: {0: "DriveCam 76"},
+    4169: {0: "Edge Explore 2"},
+    4171: {0: "Daimler venu 2"},
+    4173: {0: "T5/TT15 OnSemi"},
+    4175: {0: "Daimler venu 2S"},
+    4176: {0: "SW, LYIN20, TAM 965B, System Code, AOER"},
+    4177: {0: "SW, LTDM21, TAM D26B, System Code, AOER"},
+    4178: {0: "SW, LFIN20, TAM 655B, System Code, AOER"},
+    4179: {0: "Edge Explore 2, nRF52 ANT_BLE"},
+    4180: {0: "Daimler venu 2 ASIA"},
+    4181: {0: "Daimler venu 2S ASIA"},
+    4183: {0: "T5/TT15 Mini OnSemi"},
+    4197: {
+         0: "Forerunner 45/45+, GPS (Alternate)",
+         1: "GPS Software (Alternate), Fenix 6 Series WW",
+         5: "Forerunner 945, GPS Software (LLE) (Alternate)",
+         6: "Edge WW, GPS Software (Alternate)",
+         7: "VVA4/S, GPS Software (Alternate)",
+         8: "Forerunner 245/M, GPS Software (LLE) (Alternate)",
+         9: "Forerunner 45, GPS Software (Alternate)",
+        11: "Instinct Solar, GPS Software (Alternate)",
+        13: "Approach S12/G12, GPS Software (Alternate)",
+        14: "Enduro WW, GPS Software (Alternate)",
+        15: "Approach S42, GPS Software (Alternate)",
+    },
+    4198: {
+         3: "Approach S40, GPS Software (Alternate)",
+        11: "GPS Software",
+    },
+    4200: {0: "T5X/TT15X Dog Collar"},
+    4209: {0: "RV/Camper 795"},
+    4213: {0: "Rocket Camera"},
+    4221: {
+        1: "venu SQ 2, Network Processor",
+    },
+    4239: {
+        15: "GPS Software",
+    },
+    4256: {
+        0: "venu SQ 2, Touch Controller",
+        1: "venu SQ 2, Touch Controller",
+    },
+    4285: {0: "SW, LIIN22, TAM, System Code, AOER"},
+    4298: {0: "SW, LWIN21, TMV, System Code, AOER"},
+    4305: {0: "Edge 1040 ASIA"},
+    4333: {0: "eTrex 22X/32X 2022 Redesign"},
+    4337: {0: "WD eMMC"},
+    4353: {0: "Edge Explore 2, ELAN Touchpanel"},
+#    5423: {0: "vivosmart APAC, ???"},
+#    5424: {0: "vivosmart APAC, ???"},
+#    6182: {0: "Varia Vision/Nautix, ???"},
+#    7124: {0: "vivoactive 3t, ???"},
 }
 
-# vim: ft=txt
+# vim: {0: ft=txt
diff --git a/grmn/rgnbin.py b/grmn/rgnbin.py
index 056106e..e835add 100644
--- a/grmn/rgnbin.py
+++ b/grmn/rgnbin.py
@@ -129,7 +129,7 @@ class RgnBin:
     def __str__(self):
         txt = "Binary payload, {} Bytes".format(len(self.payload))
         if self.hwid:
-            txt += "\n  -    hw_id: 0x{:04x} / {:d} ({})".format(self.hwid, self.hwid, devices.DEVICES.get(self.hwid, RED + "Unknown device" + RESET))
+            txt += "\n  -    hw_id: 0x{:04x} / {:d} ({})".format(self.hwid, self.hwid, devices.get_name(self.hwid, 0, RED + "Unknown device" + RESET))
         if self.version:
             txt += "\n  -  Version: 0x{:04x} / {:d}".format(self.version, self.version)
         cksum = ChkSum()
diff --git a/grmn/tlv.py b/grmn/tlv.py
index 28c03ef..c7ed1e2 100644
--- a/grmn/tlv.py
+++ b/grmn/tlv.py
@@ -320,7 +320,7 @@ class TLV7(TLV):
             fdesc = self.tlv6.fields[i]
             (fid, v) = pair
             if fid == 0x1009:
-                txt += "\n  - Field {:d} ({:04x}): {:>20}: 0x{:04x} / {:d} ({})".format(i+1, fid, fdesc, v, v, devices.DEVICES.get(v, RED + "Unknown device" + RESET))
+                txt += "\n  - Field {:d} ({:04x}): {:>20}: 0x{:04x} / {:d} ({})".format(i+1, fid, fdesc, v, v, devices.get_name(v, 0, RED + "Unknown device" + RESET))
             elif fid == 0x2015:
                 txt += "\n  - Field {:d} ({:04x}): {:>20}: {} Bytes".format(i+1, fid, fdesc, v)
             elif fid == 0x4007:
@@ -404,7 +404,7 @@ class TLVbinary0401(TLVbinary):
             sku = self.value[10:20].decode("utf-8")
             hwid = int(sku[4:8])
             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  -   hw_id: 0x{:04x} / {:d} ({})".format(hwid, hwid, devices.get_name(hwid, 0, 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")
diff --git a/list_missing_hwids.py b/list_missing_hwids.py
index f7d68bf..3aae76a 100644
--- a/list_missing_hwids.py
+++ b/list_missing_hwids.py
@@ -26,19 +26,19 @@ queue = []
 for i in range(0, last_id+1):
     if i % 10 == 0:
         if len(cur_line) + len(queue) > 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