From 701966277fa4cd9323abe8d94513b9c00adbc97b Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 17 Oct 2018 03:41:46 +0200 Subject: [PATCH] First shot at a Gcd class. --- grmn/__init__.py | 2 +- grmn/devices.py | 676 +++++++++++++++++++++++++++++++++++++++++++++++ grmn/gcd.py | 163 ++++++++++++ hwids.txt | 671 ---------------------------------------------- 4 files changed, 840 insertions(+), 672 deletions(-) create mode 100644 grmn/devices.py create mode 100644 grmn/gcd.py delete mode 100644 hwids.txt diff --git a/grmn/__init__.py b/grmn/__init__.py index bd62d33..faab907 100644 --- a/grmn/__init__.py +++ b/grmn/__init__.py @@ -1,4 +1,4 @@ """Library for firmware reading/writing.""" -#from .gcd import * +from .gcd import * from .chksum import * diff --git a/grmn/devices.py b/grmn/devices.py new file mode 100644 index 0000000..3fa4974 --- /dev/null +++ b/grmn/devices.py @@ -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", +} diff --git a/grmn/gcd.py b/grmn/gcd.py new file mode 100644 index 0000000..60bf275 --- /dev/null +++ b/grmn/gcd.py @@ -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("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() diff --git a/hwids.txt b/hwids.txt deleted file mode 100644 index b8bee77..0000000 --- a/hwids.txt +++ /dev/null @@ -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 \ No newline at end of file