First shot at a Gcd class.

This commit is contained in:
Markus Birth 2018-10-17 03:41:46 +02:00
parent c0ec316023
commit 701966277f
Signed by: mbirth
GPG Key ID: A9928D7A098C3A9A
4 changed files with 840 additions and 672 deletions

View File

@ -1,4 +1,4 @@
"""Library for firmware reading/writing."""
#from .gcd import *
from .gcd import *
from .chksum import *

676
grmn/devices.py Normal file
View File

@ -0,0 +1,676 @@
# -*- coding: utf-8 -*-
DEVICES = {
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",
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",
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",
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",
478: "GPS Chipset Type G",
480: "GPS 60",
481: "StreetPilot c340",
484: "Forerunner 205/305",
497: "StreetPilot c310/c320/c330",
505: "StreetPilot i3/i5",
520: "StreetPilot 2820",
530: "Marine Network Minimum",
532: "StreetPilot i2",
537: "Chartplotters",
539: "StreetPilot c5xx",
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",
609: "Rino 520 Australia",
617: "GPS Chipset Type G2",
625: "Edge 605/705",
660: "nuvi 2xx",
661: "Colorado",
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",
723: "nuvi 5xx",
726: "nuvi 8xx",
732: "StreetPilot c5xx Mercedes Phase2",
733: "GPS Chipset Type M",
737: "nuvi 2xxW",
739: "GPS Chipset Type M2",
743: "Nuvi 5000",
745: "GPSMAP 695/696",
754: "nuvi 7xx",
775: "GPS Chipset Type B",
781: "GPS 17x HVS",
786: "eTrex Venture HC/Summit HC",
788: "nuvi 7x0 Mercedes/Smart",
795: "Oregon",
796: "GPS 15x|15xH/xL|16x|18x OEM",
811: "GPS 18x USB/GPS 20x USB",
814: "nuvi 900T",
827: "nuvi 2x5W",
832: "GPSMAP 6x0",
834: "nuvi 2xx",
835: "nuvi 2xxW",
836: "nuvi 760 TWN",
851: "nuvi 2x5",
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",
870: "nuvi 7x5",
887: "GPSMAP 495",
896: "Oregon x50",
897: "Colorado TWN",
901: "Firmware Update for GTMxx Traffic Receiver Type 3",
913: "Aera GPS Software",
924: "BMW Motorrad Navigator IV/zumo 660",
930: "nuvi 255W SG",
932: "nuvi 2x5W TWN",
943: "nuvi 465T",
956: "Honda Navi Gen3",
960: "Dakota",
969: "Firmware Update for FMI Cables with Traffic",
970: "Mount Software",
971: "nuvi 12xx",
972: "nuvi 13xx and 14xx",
977: "Firmware Update for Bluetooth",
978: "nuvi 7x5 DSP Software",
979: "GPS Chipset Type M3",
983: "Oregon TWN",
988: "FR60",
1005: "Approach G5",
1007: "nuvi 765 TWN",
1018: "Forerunner 310XT",
1020: "Foretrex 301/401",
1033: "zumo 66x Echo Cancellation Software",
1036: "Edge 500",
1039: "Forerunner 405CX",
1046: "nuvi 16xx NA",
1058: "Nuvi 5xx TWN",
1059: "GPS Chipset Type M3",
1063: "aera 5xx",
1073: "Firmware Update for ecoRoute HD",
1074: "nuvi 2x5 MTK",
1091: "nuvi 2x5W MTK",
1095: "GPS 72H",
1101: "nuvi 37xx",
1103: "Nuvi 13xx TWN",
1104: "nuvi 13xx and 14xx MTK",
1106: "nuvi 12xx MTK",
1113: "GPSMAP 62/78",
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",
1156: "nuvi 16xx AU",
1157: "nuvi 16xx CA",
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: "Firmware Update for Touchscreen Module - Nuvi 37xx",
1213: "Edge 500 JPN",
1247: "Rino 6xx",
1250: "Forerunner 410",
1252: "Oregon 450tc Japan",
1254: "nuLink 23xx",
1258: "nuvi 35xx",
1259: "Nuvi 37xx, Taiwan",
1264: "Forerunner 210",
1266: "Nuvi 2585 TWN",
1269: "dezl 560",
1271: "Approach S1",
1273: "nuvi 24xx",
1275: "Montana",
1301: "GPSMAP 62SJ Japan",
1304: "eTrex 10",
1305: "eTrex 20/30",
1318: "GPSMAP Series with SDCard",
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: "GDL 39",
1344: "GTU 10 CA",
1345: "Forerunner 610",
1349: "nuvi 30",
1350: "nuvi 40 and 50",
1352: "Nuvi 25x5 Taiwan",
1353: "GPSMAP 62S Korea",
1354: "GPSMAP 62S/78S Thai & Indonesia",
1364: "aera 7xx",
1371: "nuvi 24x5 and 25x5",
1376: "nuvi 34xx",
1379: "GPS Chipset Type M3",
1381: "Vector",
1389: "Nuvi 2585LT EU",
1392: "GPS 19x HVS",
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",
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",
1461: "UAT 163",
1463: "Nuvi 2585 Russia",
1468: "FujiMY16 v1/Fuji MY17 ",
1469: "Approach S3",
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 and 27x8",
1521: "Nuvi 35xx Taiwan",
1522: "Nuvi 2460 India",
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",
1556: "eTrex 20/30 China",
1561: "Edge 510",
1562: "Alpha 100",
1563: "Nuvi 3595 Taiwan",
1566: "Garmin Swim Strings",
1567: "Edge 810",
1582: "nuvi 2xx7 and 2xx8",
1587: "Rino 6xx China",
1593: "Nuvi 2568 India",
1594: "eTrex 20/30 Taiwan",
1595: "nuvi 140/150",
1597: "Approach S3 APAC",
1599: "GPSmap 62stc Taiwan",
1600: "ForeAthlete 910XTJ Japan",
1603: "nuvi 35x7 and 35x8",
1613: "nuvi x2 and x4",
1617: "Nuvi c155/c165/c175 China",
1619: "GPS Chipset Type M5",
1620: "GPS Chipset Type M5",
1621: "GPS Chipset Type M5",
1623: "Forerunner 620",
1624: "GPS Chipset Type M426",
1628: "Garmin HUD",
1630: "Forerunner 620/920, Wi-Fi",
1632: "Forerunner 220",
1635: "Montana 650t China",
1649: "Approach S2",
1651: "Oregon 6x0",
1664: "Forerunner 910XT, Korea",
1676: "Fenix China",
1677: "Fenix Japan",
1678: "Fenix Korea",
1679: "Fenix Taiwan",
1681: "Nuvi 2795 Japan",
1688: "ForeAthlete 10J",
1689: "GPS Chipset Type M426",
1692: "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",
1730: "RV and Camper 760",
1731: "Nuvi 3590 TWN",
1735: "VIRB China",
1736: "Edge Touring",
1739: "GPSMAP 629sc CHN",
1740: "Nuvi 1690 lite Taiwan",
1741: "eTrex 20S SG",
1742: "Edge 510, Japan",
1749: "nuvi 65/66",
1758: "nuvi 25x9",
1765: "Forerunner 920XT",
1766: "Nuvi 42/52 India",
1769: "SIRIUS/XM Weather Support File",
1772: "nuvi 26x9",
1786: "GPS 15x|15xH/xL|16x|18x OEM/5Hz 1786",
1796: "zumo 590",
1811: "Approach S4",
1815: "Carmax 310A/310V",
1817: "UAT-1817",
1820: "eTrex 209/309 China",
1821: "Edge 510 China & Taiwan",
1822: "Edge 810 China",
1823: "Edge 810, Taiwan",
1836: "Edge 1000",
1837: "vivofit",
1842: "Approach G7",
1843: "Oregon 6xx System, SEA",
1850: "Forerunner 620/220 Display",
1851: "Forerunner 620/220 ANT",
1857: "Oregon 6xx System, JPN",
1859: "GPSMAP 64",
1876: "Rino 6xx Korea",
1878: "GPSMAP 7x08",
1879: "GPSMAP 7x10/7x12",
1884: "Nuvi 2798",
1885: "vivoki",
1891: "Approach S2 JPN",
1895: "Monterra, GPS/BeiDou CHN",
1903: "Forerunner 15",
1907: "vivoactive",
1908: "vivoactive Display",
1909: "VivoActive, Fenix3 ANT | ANT / BLE N4",
1917: "Approach G8",
1918: "Edge 510, Korea",
1925: "Approach S6 Display",
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 System ASIA",
1942: "Forerunner 920XT Display",
1947: "nuvi 25x9 C4",
1948: "nuvi 26x9 C4",
1955: "vivosmart ANT",
1956: "VivoSmart",
1958: "nuvi C255 China",
1959: "nuvi C265 China",
1966: "Nuvi 55TV Brazil",
1967: "Fenix 2",
1969: "Forerunner 15, ANT",
1982: "MWNavV Japan",
1987: "Epix Display",
1988: "Epix",
1999: "Approach S2 APAC",
2002: "dezl 770",
2003: "dezl 570",
2005: "vivosmart, PSOC",
2024: "Quatix China",
2030: "HAC 2CT",
2032: "T 5, TT 15",
2035: "Approach S4 APAC",
2043: "nuviCam",
2044: "nuviCam Camera Firmware",
2047: "ANT/BLE N1 Firmware",
2050: "fenix 3/tactix Bravo/quatix 3",
2051: "fenix 3/tactix Bravo/quatix 3, Display",
2052: "Edge 1000, Taiwan",
2053: "Edge 1000, Japan",
2054: "Fenix 2 China",
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, Wi-Fi",
2112: "Firmware Update for the BC30 RX",
2123: "GPSMAP 64S, SEA",
2124: "GPSMAP 64SJ, Japan",
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: "vivofit2",
2151: "Forerunner 225, OHR",
2153: "Forerunner 225",
2156: "Forerunner 630",
2157: "Forerunner 230",
2158: "Forerunner 735XT",
2159: "Forerunner Display A1 Firmware",
2160: "vivoactive APAC",
2161: "Vector 2",
2162: "Vector 2S",
2172: "VIRB XE",
2173: "Forerunner 620 Taiwan",
2175: "TruSwing",
2182: "Approach S5",
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",
2199: "Dash Cam 35",
2201: "GPS 12H",
2204: "Edge Explore 1000",
2219: "Forerunner 225 Asia",
2220: "ForeAthlete 225J",
2225: "Varia Radar Tail Light",
2226: "Varia Radar Display Unit",
2228: "Forerunner 225 Display",
2231: "Oregon 650TCJ2, JPN",
2232: "SW,Captain",
2235: "SW,Storm",
2237: "Camper/RV 660",
2238: "Edge 20",
2250: "eTrex 20x/30x",
2260: "Edge 520 Asia",
2261: "Edge 520 Japan",
2262: "D2 Bravo",
2266: "Approach S20",
2267: "Drive and DriveSmart 40/50",
2268: "Drive, DriveSmart 60/70 and 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",
2310: "Forerunner 630 APAC",
2311: "ForeAthlete 630J",
2313: "ForeAthlete 230J",
2316: "eTrex 20x/30x JPN",
2317: "eTrex 20x/30x SEA",
2325: "UAT-B2325-00",
2329: "VIRBXE APAC System",
2332: "Epix JPN",
2337: "vivoactive HR",
2338: "vivoactive HR Sensor Hub",
2340: "vivoactive HR Display",
2347: "vivosmart HR plus",
2348: "vivosmart HR",
2361: "vivosmart HR APAC",
2362: "vivosmart HR plus APAC",
2368: "Vivomove",
2369: "Forerunner 235 Sensor Hub",
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",
2405: "Approach X40 BLE Firmware",
2406: "vivofit3",
2407: "fenix 3, K65, Korea",
2408: "fenix 3, K65, SEA",
2413: "fenix 3 HR",
2414: "fenix 3 HR, 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",
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",
2495: "DriveAssist 50 Camera FW",
2496: "Garmin Nautix",
2497: "vivoactive HR APAC",
2503: "Forerunner 35",
2510: "Forerunner 735XT, Sensor Hub",
2512: "Oregon 7xx",
2517: "zumo 590 JPN",
2530: "Edge 820",
2531: "Edge Explore 820",
2533: "Forerunner 735XT APAC",
2534: "ForeAthlete 735XTJ",
2544: "fenix 5S",
2545: "Dash Cam 30",
2546: "Dash Cam 35",
2547: "D2 Bravo Titanium",
2559: "Approach S20 APAC",
2560: "D2 Bravo Titanium, Sensor Hub",
2561: "DriveSmart 50 APAC",
2563: "eTrex Touch 35 APAC",
2569: "fleet 660 8G, GPS",
2570: "fleet 670 8G, GPS",
2576: "eTrex Venture Mariner",
2583: "Delta Smart nRF51",
2584: "BMW Motorrad Navigator VI",
2586: "Drive and DriveSmart 51",
2587: "Drive 61",
2588: "DriveSmart 61",
2589: "DriveLuxe 51",
2590: "DriveAssist 51",
2596: "DriveAssist 50, APAC",
2599: "Edge 820 China",
2600: "Edge 820 Japan",
2604: "fenix 5X",
2606: "vivofit jr",
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",
2639: "vivosmart HR plus Israel",
2641: "Xero A1(i)",
2650: "Forerunner 35 Israel",
2652: "Approach G30",
2653: "FR235, NFC CIB",
2655: "FR235 Sensor Hub",
2656: "Approach S60",
2667: "Forerunner 35 APAC",
2668: "Forerunner 35 JPN",
2675: "fenix CHRONOS APAC",
2681: "Oregon 7xx APAC",
2684: "RV/Camper 770",
2691: "Forerunner 935",
2697: "fenix 5",
2700: "vivoactive 3",
2705: "Avtex Tourer One Plus",
2713: "Edge 1030",
2725: "aera 79x China",
2726: "aera 660 China",
2727: "Forerunner 35 SEA",
2733: "FR235, NFC, ExpressPay",
2763: "GPSMAP 64sc JPN",
2764: "GPSMAP 64sc SEA",
2769: "Foretrex 601/701",
2771: "Impact",
2772: "vivomove HR",
2777: "Rino 700",
2796: "Fenix 5 APAC",
2797: "Fenix 5S APAC",
2798: "Fenix 5X APAC",
2803: "Drive and DriveSmart 51, APAC",
2807: "echoMAP Plus 4x",
2808: "echoMAP Plus 6x",
2809: "echoMAP Plus 7x/9x",
2810: "echoMAP Plus 63",
2814: "Forerunner 35 KOR",
2819: "D2 Charlie",
2826: "UAT-2826",
2831: "Vivosmart 3, APAC",
2832: "Vivosport, APAC",
2833: "Forerunner 935 APAC",
2859: "Descent Mk1",
2886: "Forerunner 645",
2888: "Forerunner 645 Music",
2891: "Forerunner 30",
2893: "Atemos 50",
2894: "Atemos 100",
2900: "Fenix 5 Plus",
2907: "Approach S60, Host, APAC",
2924: "Edge 1030 APAC",
2927: "vivosmart 4",
2945: "vivomove HR, APAC",
2956: "Alpha 50 CHN",
2962: "Approach X10",
2976: "vivoactive 3, APAC",
2977: "Forerunner 30 APAC",
2991: "Descent APAC",
2994: "D2 Charlie, APAC",
2996: "DriveSmart 61, APAC",
2997: "eTrex 302 CHN",
3003: "Forerunner 645 APAC",
3004: "Forerunner 645M APAC",
3028: "GPSMAP 66",
3049: "Approach S10",
3089: "Fenix 5 Plus APAC",
3092: "Edge 130 APAC",
3095: "Edge 1030 Bontrager",
3109: "DriveAssist 51, APAC",
3112: "Edge 520 Plus",
3115: "GPSMAP 64sc SiteSurvey",
3134: "Fenix 5S Plus APAC",
3135: "Fenix 5X Plus APAC",
3139: "zumo 396, APAC",
3142: "Edge 520 Plus, APAC",
3144: "Forerunner 235 Lite APAC",
3163: "vivoactive 3M, WiFi, APAC",
3196: "D2 Delta",
3197: "D2 Delta S",
3198: "D2 Delta PX",
3218: "Vivosmart 4, APAC",
}

163
grmn/gcd.py Normal file
View File

@ -0,0 +1,163 @@
# -*- coding: utf-8 -*-
# Thanks to TurboCCC and kunix for all your work!
from . import chksum
from . import devices
from binascii import hexlify
from struct import pack, unpack
import sys
GCD_SIG = b"G\x41RM\x49Nd\00"
DEFAULT_COPYRIGHT = b"Copyright 1996-2017 by G\x61rm\x69n Ltd. or its subsidiaries."
DEFAULT_FIRST_PADDING = 21
DEFAULT_ALIGN = 0x1000
TLV_TYPES = {
0x0001: "Checksum rectifier",
0x0002: "Padding",
0x0003: "Part number?",
0x0005: "Copyright notice",
0x0006: "Block Type 7 format definition",
0x0007: "Binary descriptor",
0x0008: "Binary Region 0C (boot.bin)",
0x0401: "Binary Component Firmware (SensorHub, ANT_BLE_BT, GPS, WiFi)",
0x0505: "Binary Region 05",
0x0555: "Binary Region 55",
0x0557: "Binary Region 57",
0x02bd: "Binary Region 0E (fw_all.bin)",
0xffff: "EOF marker",
}
class TLV:
def __init__(self, type_id: int, expected_length: int, value=None):
self.type_id = type_id
self.comment = TLV_TYPES.get(type_id, "Type {:04x} / {:d}".format(type_id, type_id))
self.length = expected_length
self.value = None
if value is not None:
self.value = bytes(value)
@staticmethod
def factory(header: bytes):
(type_id, length) = unpack("<HH", payload)
if type_id == 0x0006:
return TLV6(type_id, length)
elif type_id == 0x0007:
return TLV7(type_id, length)
return TLV(type_id, length)
def set_value(self, new_value: bytes):
self.value = new_value
def get_length(self):
return self.length
def get_actual_length(self):
if self.value is None:
return 0
return len(self.value)
def get_record_length(self):
# Length including record definition
return self.get_actual_length() + 4
def get_value(self):
return self.value
def get(self):
header = pack("HH", self.type_id, self.get_actual_length())
if self.value is None:
return header
return header + self.value
class TLV6(TLV):
"""
Describes following TLV7:
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=137838&whichpage=12
"""
# Field ids in Type 6 payloads (describe Type 7 data format)
# First nibble might be data type: 0 = B, 1 = H, 2 = L
FIELD_TYPES = {
0x000a: ["B", "XOR flag/value"],
0x000b: ["B", "Reset/Downgrade flag"],
0x1009: ["H", "Device hw_id"],
0x100a: ["H", "Block type"],
0x100d: ["H", "Firmware version"],
0x1014: ["H", "Field 1014"],
0x1015: ["H", "Field 1015"],
0x1016: ["H", "Field 1016 (WiFi fw)"],
0x2015: ["L", "Block size"],
0x5003: ["", "End of definition marker"],
}
def __init__(self, type_id: int, expected_length: int, value=None):
super.__init__(type_id, expected_length, value)
self.is_parsed = False
def parse(self):
if len(self.value) % 2 != 0:
raise Exception("Invalid TLV6 payload length!")
self.fids = []
self.format = ""
self.fields = []
for i in range(0, len(self.value), 2):
fid = unpack("H", self.value[i:i+2])[0]
fdef = self.FIELD_TYPES[fid]
self.fids.append(fid)
self.format += fdef[0]
self.fields.append(fdef[1])
self.is_parsed = True
class TLV7(TLV):
def set_tlv6(self, tlv6: TLV6):
self.tlv6 = tlv6
def parse(self):
if not self.tlv6.is_parsed:
# Make sure we have the structure analysed
self.tlv6.parse()
values = unpack("<" + self.tlv6.format, self.value)
for i, v in enumerate(values):
fid = self.tlv6.fids[i]
fdesc = self.tlv6.fields[i]
if fid == 0x1009:
print(" - {:>20}: 0x{:04x} / {:d} ({})".format(fdesc, v, v, devices.DEVICES.get(v, "Unknown device")))
elif fid == 0x2015:
print(" - {:>20}: {} Bytes".format(fdesc, v))
else:
print(" - {:>20}: 0x{:04x} / {:d}".format(fdesc, v, v))
class Gcd:
def __init__(self, filename: str=None):
self.filename = filename
self.struct = []
if filename is not None:
self.load()
def load(self):
if self.filename is None:
return False
last_tlv6 = None
with open(self.filename, "rb") as f:
sig = f.read(8)
if sig != GCD_SIG:
raise Exception("Signature mismatch ({}, should be {})!".format(repr(sig), repr(GCD_SIG)))
while True:
header = f.read(4)
tlv = TLV.factory(header)
self.struct.append(tlv)
if tlv.type_id == 0xFFFF:
# End of file reached
break
tlength = tlv.get_length()
payload = f.read(tlength)
tlv.set_value(payload)
if tlv.type_id == 0x0006:
last_tlv6 = tlv
elif tlv.type_id == 0x0007:
tlv.set_tlv6(last_tlv6)
f.close()

671
hwids.txt
View File

@ -1,671 +0,0 @@
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
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
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
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
478=GPS Chipset Type G
480=GPS 60
481=StreetPilot c340
484=Forerunner 205/305
497=StreetPilot c310/c320/c330
505=StreetPilot i3/i5
520=StreetPilot 2820
530=Marine Network Minimum
532=StreetPilot i2
537=Chartplotters
539=StreetPilot c5xx
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
609=Rino 520 Australia
617=GPS Chipset Type G2
625=Edge 605/705
660=nuvi 2xx
661=Colorado
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
723=nuvi 5xx
726=nuvi 8xx
732=StreetPilot c5xx Mercedes Phase2
733=GPS Chipset Type M
737=nuvi 2xxW
739=GPS Chipset Type M2
743=Nuvi 5000
745=GPSMAP 695/696
754=nuvi 7xx
775=GPS Chipset Type B
781=GPS 17x HVS
786=eTrex Venture HC/Summit HC
788=nuvi 7x0 Mercedes/Smart
795=Oregon
796=GPS 15x|15xH/xL|16x|18x OEM
811=GPS 18x USB/GPS 20x USB
814=nuvi 900T
827=nuvi 2x5W
832=GPSMAP 6x0
834=nuvi 2xx
835=nuvi 2xxW
836=nuvi 760 TWN
851=nuvi 2x5
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
870=nuvi 7x5
887=GPSMAP 495
896=Oregon x50
897=Colorado TWN
901=Firmware Update for GTMxx Traffic Receiver Type 3
913=Aera GPS Software
924=BMW Motorrad Navigator IV/zumo 660
930=nuvi 255W SG
932=nuvi 2x5W TWN
943=nuvi 465T
956=Honda Navi Gen3
960=Dakota
969=Firmware Update for FMI Cables with Traffic
970=Mount Software
971=nuvi 12xx
972=nuvi 13xx and 14xx
977=Firmware Update for Bluetooth
978=nuvi 7x5 DSP Software
979=GPS Chipset Type M3
983=Oregon TWN
988=FR60
1005=Approach G5
1007=nuvi 765 TWN
1018=Forerunner 310XT
1020=Foretrex 301/401
1033=zumo 66x Echo Cancellation Software
1036=Edge 500
1039=Forerunner 405CX
1046=nuvi 16xx NA
1058=Nuvi 5xx TWN
1059=GPS Chipset Type M3
1063=aera 5xx
1073=Firmware Update for ecoRoute HD
1074=nuvi 2x5 MTK
1091=nuvi 2x5W MTK
1095=GPS 72H
1101=nuvi 37xx
1103=Nuvi 13xx TWN
1104=nuvi 13xx and 14xx MTK
1106=nuvi 12xx MTK
1113=GPSMAP 62/78
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
1156=nuvi 16xx AU
1157=nuvi 16xx CA
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=Firmware Update for Touchscreen Module - Nuvi 37xx
1213=Edge 500 JPN
1247=Rino 6xx
1250=Forerunner 410
1252=Oregon 450tc Japan
1254=nuLink 23xx
1258=nuvi 35xx
1259=Nuvi 37xx, Taiwan
1264=Forerunner 210
1266=Nuvi 2585 TWN
1269=dezl 560
1271=Approach S1
1273=nuvi 24xx
1275=Montana
1301=GPSMAP 62SJ Japan
1304=eTrex 10
1305=eTrex 20/30
1318=GPSMAP Series with SDCard
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=GDL 39
1344=GTU 10 CA
1345=Forerunner 610
1349=nuvi 30
1350=nuvi 40 and 50
1352=Nuvi 25x5 Taiwan
1353=GPSMAP 62S Korea
1354=GPSMAP 62S/78S Thai & Indonesia
1364=aera 7xx
1371=nuvi 24x5 and 25x5
1376=nuvi 34xx
1379=GPS Chipset Type M3
1381=Vector
1389=Nuvi 2585LT EU
1392=GPS 19x HVS
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
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
1461=UAT 163
1463=Nuvi 2585 Russia
1468=FujiMY16 v1/Fuji MY17
1469=Approach S3
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 and 27x8
1521=Nuvi 35xx Taiwan
1522=Nuvi 2460 India
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
1556=eTrex 20/30 China
1561=Edge 510
1562=Alpha 100
1563=Nuvi 3595 Taiwan
1566=Garmin Swim Strings
1567=Edge 810
1582=nuvi 2xx7 and 2xx8
1587=Rino 6xx China
1593=Nuvi 2568 India
1594=eTrex 20/30 Taiwan
1595=nuvi 140/150
1597=Approach S3 APAC
1599=GPSmap 62stc Taiwan
1600=ForeAthlete 910XTJ Japan
1603=nuvi 35x7 and 35x8
1613=nuvi x2 and x4
1617=Nuvi c155/c165/c175 China
1619=GPS Chipset Type M5
1620=GPS Chipset Type M5
1621=GPS Chipset Type M5
1623=Forerunner 620
1624=GPS Chipset Type M426
1628=Garmin HUD
1630=Forerunner 620/920, Wi-Fi
1632=Forerunner 220
1635=Montana 650t China
1649=Approach S2
1651=Oregon 6x0
1664=Forerunner 910XT, Korea
1676=Fenix China
1677=Fenix Japan
1678=Fenix Korea
1679=Fenix Taiwan
1681=Nuvi 2795 Japan
1688=ForeAthlete 10J
1689=GPS Chipset Type M426
1692=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
1730=RV and Camper 760
1731=Nuvi 3590 TWN
1735=VIRB China
1736=Edge Touring
1739=GPSMAP 629sc CHN
1740=Nuvi 1690 lite Taiwan
1741=eTrex 20S SG
1742=Edge 510, Japan
1749=nuvi 65/66
1758=nuvi 25x9
1765=Forerunner 920XT
1766=Nuvi 42/52 India
1769=SIRIUS/XM Weather Support File
1772=nuvi 26x9
1786=GPS 15x|15xH/xL|16x|18x OEM/5Hz 1786
1796=zumo 590
1811=Approach S4
1815=Carmax 310A/310V
1817=UAT-1817
1820=eTrex 209/309 China
1821=Edge 510 China & Taiwan
1822=Edge 810 China
1823=Edge 810, Taiwan
1836=Edge 1000
1837=vivofit
1842=Approach G7
1843=Oregon 6xx System, SEA
1850=Forerunner 620/220 Display
1851=Forerunner 620/220 ANT
1857=Oregon 6xx System, JPN
1859=GPSMAP 64
1876=Rino 6xx Korea
1878=GPSMAP 7x08
1879=GPSMAP 7x10/7x12
1884=Nuvi 2798
1885=vivoki
1891=Approach S2 JPN
1895=Monterra, GPS/BeiDou CHN
1903=Forerunner 15
1907=vivoactive
1908=vivoactive Display
1909=VivoActive, Fenix3 ANT | ANT / BLE N4
1917=Approach G8
1918=Edge 510, Korea
1925=Approach S6 Display
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 System ASIA
1942=Forerunner 920XT Display
1947=nuvi 25x9 C4
1948=nuvi 26x9 C4
1955=vivosmart ANT
1956=VivoSmart
1958=nuvi C255 China
1959=nuvi C265 China
1966=Nuvi 55TV Brazil
1967=Fenix 2
1969=Forerunner 15, ANT
1982=MWNavV Japan
1987=Epix Display
1988=Epix
1999=Approach S2 APAC
2002=dezl 770
2003=dezl 570
2005=vivosmart, PSOC
2024=Quatix China
2030=HAC 2CT
2032=T 5, TT 15
2035=Approach S4 APAC
2043=nuviCam
2044=nuviCam Camera Firmware
2047=ANT/BLE N1 Firmware
2050=fenix 3/tactix Bravo/quatix 3
2051=fenix 3/tactix Bravo/quatix 3, Display
2052=Edge 1000, Taiwan
2053=Edge 1000, Japan
2054=Fenix 2 China
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, Wi-Fi
2112=Firmware Update for the BC30 RX
2123=GPSMAP 64S, SEA
2124=GPSMAP 64SJ, Japan
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=vivofit2
2151=Forerunner 225, OHR
2153=Forerunner 225
2156=Forerunner 630
2157=Forerunner 230
2158=Forerunner 735XT
2159=Forerunner Display A1 Firmware
2160=vivoactive APAC
2161=Vector 2
2162=Vector 2S
2172=VIRB XE
2173=Forerunner 620 Taiwan
2175=TruSwing
2182=Approach S5
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
2199=Dash Cam 35
2201=GPS 12H
2204=Edge Explore 1000
2219=Forerunner 225 Asia
2220=ForeAthlete 225J
2225=Varia Radar Tail Light
2226=Varia Radar Display Unit
2228=Forerunner 225 Display
2231=Oregon 650TCJ2, JPN
2232=SW,Captain
2235=SW,Storm
2237=Camper/RV 660
2238=Edge 20
2250=eTrex 20x/30x
2260=Edge 520 Asia
2261=Edge 520 Japan
2262=D2 Bravo
2266=Approach S20
2267=Drive and DriveSmart 40/50
2268=Drive, DriveSmart 60/70 and 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
2310=Forerunner 630 APAC
2311=ForeAthlete 630J
2313=ForeAthlete 230J
2316=eTrex 20x/30x JPN
2317=eTrex 20x/30x SEA
2325=UAT-B2325-00
2329=VIRBXE APAC System
2332=Epix JPN
2337=vivoactive HR
2338=vivoactive HR Sensor Hub
2340=vivoactive HR Display
2347=vivosmart HR plus
2348=vivosmart HR
2361=vivosmart HR APAC
2362=vivosmart HR plus APAC
2368=Vivomove
2369=Forerunner 235 Sensor Hub
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
2405=Approach X40 BLE Firmware
2406=vivofit3
2407=fenix 3, K65, Korea
2408=fenix 3, K65, SEA
2413=fenix 3 HR
2414=fenix 3 HR, 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
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
2495=DriveAssist 50 Camera FW
2496=Garmin Nautix
2497=vivoactive HR APAC
2503=Forerunner 35
2510=Forerunner 735XT, Sensor Hub
2512=Oregon 7xx
2517=zumo 590 JPN
2530=Edge 820
2531=Edge Explore 820
2533=Forerunner 735XT APAC
2534=ForeAthlete 735XTJ
2544=fenix 5S
2545=Dash Cam 30
2546=Dash Cam 35
2547=D2 Bravo Titanium
2559=Approach S20 APAC
2560=D2 Bravo Titanium, Sensor Hub
2561=DriveSmart 50 APAC
2563=eTrex Touch 35 APAC
2569=fleet 660 8G, GPS
2570=fleet 670 8G, GPS
2576=eTrex Venture Mariner
2583=Delta Smart nRF51
2584=BMW Motorrad Navigator VI
2586=Drive and DriveSmart 51
2587=Drive 61
2588=DriveSmart 61
2589=DriveLuxe 51
2590=DriveAssist 51
2596=DriveAssist 50, APAC
2599=Edge 820 China
2600=Edge 820 Japan
2604=fenix 5X
2606=vivofit jr
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
2639=vivosmart HR plus Israel
2641=Xero A1(i)
2650=Forerunner 35 Israel
2652=Approach G30
2653=FR235, NFC CIB
2655=FR235 Sensor Hub
2656=Approach S60
2667=Forerunner 35 APAC
2668=Forerunner 35 JPN
2675=fenix CHRONOS APAC
2681=Oregon 7xx APAC
2684=RV/Camper 770
2691=Forerunner 935
2697=fenix 5
2700=vivoactive 3
2705=Avtex Tourer One Plus
2713=Edge 1030
2725=aera 79x China
2726=aera 660 China
2727=Forerunner 35 SEA
2733=FR235, NFC, ExpressPay
2763=GPSMAP 64sc JPN
2764=GPSMAP 64sc SEA
2769=Foretrex 601/701
2771=Impact
2772=vivomove HR
2777=Rino 700
2796=Fenix 5 APAC
2797=Fenix 5S APAC
2798=Fenix 5X APAC
2803=Drive and DriveSmart 51, APAC
2807=echoMAP Plus 4x
2808=echoMAP Plus 6x
2809=echoMAP Plus 7x/9x
2810=echoMAP Plus 63
2814=Forerunner 35 KOR
2819=D2 Charlie
2826=UAT-2826
2831=Vivosmart 3, APAC
2832=Vivosport, APAC
2833=Forerunner 935 APAC
2859=Descent Mk1
2886=Forerunner 645
2888=Forerunner 645 Music
2891=Forerunner 30
2893=Atemos 50
2894=Atemos 100
2907=Approach S60, Host, APAC
2924=Edge 1030 APAC
2927=vivosmart 4
2945=vivomove HR, APAC
2956=Alpha 50 CHN
2962=Approach X10
2976=vivoactive 3, APAC
2977=Forerunner 30 APAC
2991=Descent APAC
2994=D2 Charlie, APAC
2996=DriveSmart 61, APAC
2997=eTrex 302 CHN
3003=Forerunner 645 APAC
3004=Forerunner 645M APAC
3028=GPSMAP 66
3049=Approach S10
3089=Fenix 5 Plus APAC
3092=Edge 130 APAC
3095=Edge 1030 Bontrager
3109=DriveAssist 51, APAC
3112=Edge 520 Plus
3115=GPSMAP 64sc SiteSurvey
3134=Fenix 5S Plus APAC
3135=Fenix 5X Plus APAC
3139=zumo 396, APAC
3142=Edge 520 Plus, APAC
3144=Forerunner 235 Lite APAC
3163=vivoactive 3M, WiFi, APAC
3196=D2 Delta
3197=D2 Delta S
3198=D2 Delta PX
3218=Vivosmart 4, APAC