Initial commit
This commit is contained in:
commit
90957931f2
31
.vscode/launch.json
vendored
Normal file
31
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python: Current File (Integrated Terminal)",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"args": ["D2Delta_300.gcd", "fenix5Plus_510.gcd", "GUPDATE.GCD", "fenix5Plus_510.gcd"],
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
{
|
||||
"name": "Python: Attach",
|
||||
"type": "python",
|
||||
"request": "attach",
|
||||
"port": 5678,
|
||||
"host": "localhost"
|
||||
},
|
||||
{
|
||||
"name": "Python: Current File (External Terminal)",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"args": ["fenix5Plus_510.gcd"],
|
||||
"console": "externalTerminal"
|
||||
}
|
||||
]
|
||||
}
|
16
.vscode/tasks.json
vendored
Normal file
16
.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Run fenix5Plus_510.gcd",
|
||||
"type": "shell",
|
||||
"command": "python3 gcd.py fenix5Plus_510.gcd",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
2
README.md
Normal file
2
README.md
Normal file
@ -0,0 +1,2 @@
|
||||
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=115804&whichpage=1
|
||||
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=137838&whichpage=50
|
215
gcd.py
Normal file
215
gcd.py
Normal file
@ -0,0 +1,215 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
GCD_SIG = b"GARMINd\00"
|
||||
|
||||
from binascii import hexlify
|
||||
from struct import unpack
|
||||
import sys
|
||||
|
||||
FILE = sys.argv[1]
|
||||
|
||||
TLV_TYPES = {
|
||||
0x0001: "Checksum remainder",
|
||||
0x0002: "Skip?",
|
||||
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",
|
||||
}
|
||||
|
||||
DEV_TYPES = {
|
||||
1551: "fenix/D2/tactix",
|
||||
2900: "fenix 5 Plus",
|
||||
3196: "D2 Delta",
|
||||
}
|
||||
|
||||
running_cksum = 0
|
||||
all_cksum_ok = True
|
||||
last_type6_format = ""
|
||||
last_type6_fields = []
|
||||
|
||||
def add_to_cksum(payload):
|
||||
global running_cksum
|
||||
for c in payload:
|
||||
running_cksum += c
|
||||
running_cksum &= 0xff
|
||||
|
||||
def get_tlv_comment(ttype):
|
||||
if ttype in TLV_TYPES:
|
||||
return TLV_TYPES[ttype]
|
||||
else:
|
||||
return "Type {:04x} / {:d}".format(ttype, ttype)
|
||||
|
||||
def get_device(hwid):
|
||||
if hwid in DEV_TYPES:
|
||||
return DEV_TYPES[hwid]
|
||||
else:
|
||||
return "Unknown"
|
||||
|
||||
print("Opening {}".format(FILE))
|
||||
|
||||
def parseTLVheader(hdr):
|
||||
(ttype, tlen) = unpack("<HH", hdr)
|
||||
return (ttype, tlen)
|
||||
|
||||
def parseTLV1(payload):
|
||||
global running_cksum, all_cksum_ok
|
||||
if len(payload) != 1:
|
||||
print(" ! Checksum has invalid length!")
|
||||
all_cksum_ok = False
|
||||
expected = ( 0x100 - running_cksum ) & 0xFF
|
||||
payload = unpack("B", payload)[0]
|
||||
state = "INVALID!"
|
||||
if expected == payload:
|
||||
state = "valid."
|
||||
else:
|
||||
all_cksum_ok = False
|
||||
print(" - Checksum expected: {:02x} / found: {:02x} - {}".format(expected, payload, state))
|
||||
|
||||
def parseTLV3(payload):
|
||||
# Part number?
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix5Plus_SensorHub_220
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix_D2_tactix_500
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix5_1100
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix5Plus_420_rollback
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix5Plus_420
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - fenix5Plus_510
|
||||
# 10 d4 5c 13 04 45 0d 14 41 - D2Delta_300
|
||||
print(" > " + " ".join("{:02x}".format(c) for c in payload))
|
||||
#print(hexlify(payload).decode("utf-8"))
|
||||
print(" > " + repr(payload))
|
||||
|
||||
def parseTLV6(payload):
|
||||
global last_type6_format, last_type6_fields
|
||||
# Describes following TLV7:
|
||||
# http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=137838&whichpage=12
|
||||
# First nibble might be data type: 0 = B, 1 = H, 2 = L
|
||||
FIELD_TYPES = {
|
||||
0x000a: ["B", "XOR flag/value"],
|
||||
0x000b: ["B", "Reboot/Downgrade flag"],
|
||||
0x1009: ["H", "Device hw_id"],
|
||||
0x100a: ["H", "Block type"],
|
||||
0x1014: ["H", "Field 1014"],
|
||||
0x1015: ["H", "Field 1015"],
|
||||
0x1016: ["H", "Field 1016 (WiFi fw)"],
|
||||
0x2015: ["L", "Block size"],
|
||||
0x5003: ["", "End of definition marker"],
|
||||
}
|
||||
# 0a 10 15 20 09 10 0d 10 03 50 - 10 - fenix_D2_tactix_500 (before 0008)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 0d 10 03 50 - 14 - fenix_D2_tactix_500 (before 0555)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 0d 10 03 50 - 14 - fenix_D2_tactix_500 (before 0557)
|
||||
# 0b 00 0a 00 0a 10 15 20 03 50 - 10 - fenix5Plus_SensorHub_220
|
||||
# 0b 00 0a 00 0a 10 15 20 03 50 - 10 - fenix5Plus_ANT_BLE_300
|
||||
# 0b 00 0a 00 0a 10 15 20 16 10 03 50 - 12 - fenix5Plus_WiFi_250
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5_1100 (before 0505)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5_1100 (before 02BD)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5Plus_420_rollback.gcd (has only 1 Type 02BD)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5Plus_420.gcd (before Type 0505)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5Plus_420.gcd (before Type 02BD)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5Plus_510.gcd (before Type 0505)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - fenix5Plus_510.gcd (before Type 02BD)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - D2Delta_300 (before 0505)
|
||||
# 0b 00 0a 00 0a 10 15 20 09 10 14 10 15 10 0d 10 03 50 - 18 - D2Delta_300 (before 02BD)
|
||||
print(" > " + " ".join("{:02x}".format(c) for c in payload))
|
||||
#print(hexlify(payload).decode("utf-8"))
|
||||
print(" > " + repr(payload))
|
||||
|
||||
def parseTLV7(payload):
|
||||
# fenix/D2/tactix: hwid 060f
|
||||
# fenix 5 Plus: hwid 0b54
|
||||
# D2 Delta: hwid 0c7c
|
||||
# 08 00 00 a2 04 00 0f 06 f4 01 - 10 - fenix_D2_tactix_500 (before 0008)
|
||||
# 00 00 55 05 00 c0 01 00 0f 06 f4 01 - 12 - fenix_D2_tactix_500 (before 0555)
|
||||
# 00 00 57 05 00 90 01 00 0f 06 f4 01 - 12 - fenix_D2_tactix_500 (before 0557)
|
||||
# 00 00 05 05 00 94 00 00 89 0a c8 00 4e 00 4c 04 - 16 - fenix5_1100 (before 0505)
|
||||
# 00 00 bd 02 00 46 3b 00 89 0a c8 00 4e 00 4c 04 - 16 - fenix5_1100 (before 02BD)
|
||||
# 01 00 01 04 0c 0e 06 00 - 8 - fenix5Plus_SensorHub_220 (before 0401)
|
||||
# 01 00 01 04 f7 0f 02 00 - 8 - fenix5Plus_ANT_BLE_300 (before 0401)
|
||||
# 00 00 01 04 e4 4f 06 00 40 33 - 10 - fenix5Plus_WiFi_250
|
||||
# 01 00 bd 02 00 2a 8d 00 54 0b c8 00 3b 00 a4 01 - 16 - fenix5Plus_420_rollback.gcd (has only 02BD)
|
||||
# 00 00 05 05 00 ce 00 00 54 0b c8 00 3b 00 a4 01 - 16 - fenix5Plus_420.gcd (before Type 0505)
|
||||
# 00 00 bd 02 00 2a 8d 00 54 0b c8 00 3b 00 a4 01 - 16 - fenix5Plus_420.gcd (before Type 02BD)
|
||||
# 00 00 05 05 00 ce 00 00 54 0b c8 00 3b 00 fe 01 - 16 - fenix5Plus_510.gcd (before Type 0505)
|
||||
# 00 00 bd 02 00 fa 93 00 54 0b c8 00 3b 00 fe 01 - 16 - fenix5Plus_510.gcd (before Type 02BD)
|
||||
# 00 00 05 05 00 ce 00 00 7c 0c c8 00 01 00 2c 01 - 16 - D2Delta_300.gcd (before Type 0505)
|
||||
# 00 00 bd 02 00 99 94 00 7c 0c c8 00 01 00 2c 01 - 16 - D2Delta_300.gcd (before Type 02BD)
|
||||
# ^^ ^^ ^___^ ^_________^ ^___^ ^___^
|
||||
# E X btype blength HWID FwVer
|
||||
erase = None
|
||||
xor = None
|
||||
hwid = None
|
||||
nn6 = None
|
||||
nn7 = None
|
||||
fwver = None
|
||||
if len(payload) == 16:
|
||||
(erase, xor, btype, blen, hwid, nn6, nn7, fwver) = unpack("<BBHLHHHH", payload)
|
||||
elif len(payload) == 12:
|
||||
(erase, xor, btype, blen, hwid, fwver) = unpack("<BBHLHH", payload)
|
||||
elif len(payload) == 10:
|
||||
(btype, blen, hwid, fwver) = unpack("<HLHH", payload)
|
||||
if btype == 0x0:
|
||||
# other format
|
||||
print(" ! First try to parse didn't make sense. Trying other format.")
|
||||
hwid = None # reset
|
||||
fwver = None # reset
|
||||
(erase, xor, btype, blen, nn6) = unpack("<BBHLH", payload)
|
||||
elif len(payload) == 8:
|
||||
(erase, xor, btype, blen) = unpack("<BBHL", payload)
|
||||
else:
|
||||
print("Type 7 not an expected length. ({} Bytes)".format(len(payload)))
|
||||
return
|
||||
if erase is not None: print(" - Reset/Downgrade flag?: {}".format(erase))
|
||||
if xor is not None: print(" - XOR flag?: {}".format(xor))
|
||||
print(" - Block type: {:04x}".format(btype))
|
||||
print(" - Block length: {:d} Bytes".format(blen))
|
||||
if hwid is not None: print(" - Device hw_id: 0x{:04x} / {:d} ({})".format(hwid, hwid, get_device(hwid)))
|
||||
if nn6 is not None: print(" - Unknown: {:04x} / {:d}".format(nn6, nn6))
|
||||
if nn7 is not None: print(" - Unknown: {:04x} / {:d}".format(nn7, nn7))
|
||||
if fwver is not None: print(" - Firmware version: {:d}".format(fwver))
|
||||
|
||||
with open(FILE, "rb") as f:
|
||||
sig = f.read(8)
|
||||
add_to_cksum(sig)
|
||||
if sig == GCD_SIG:
|
||||
print("Signature ok.")
|
||||
else:
|
||||
raise Exception("Signature mismatch ({}, should be {})!".format(repr(sig), repr(GCD_SIG)))
|
||||
|
||||
i = 0
|
||||
|
||||
while True:
|
||||
hdr = f.read(4)
|
||||
add_to_cksum(hdr)
|
||||
(ttype, tlen) = parseTLVheader(hdr)
|
||||
print("#{:04} TLV type {:04x} (offset 0x{:x}, length {} Bytes) - {}".format(i, ttype, f.tell(), tlen, get_tlv_comment(ttype)))
|
||||
if ttype == 0xFFFF:
|
||||
print("End of file reached.")
|
||||
break
|
||||
payload = f.read(tlen)
|
||||
if ttype == 0x01:
|
||||
parseTLV1(payload)
|
||||
elif ttype == 0x06:
|
||||
parseTLV6(payload)
|
||||
elif ttype == 0x07:
|
||||
parseTLV7(payload)
|
||||
else:
|
||||
payloadshort = payload[:64]
|
||||
#print(" > " + " ".join("{:02x}".format(c) for c in payloadshort))
|
||||
#print(hexlify(payload).decode("utf-8"))
|
||||
#print(" > " + repr(payloadshort))
|
||||
add_to_cksum(payload)
|
||||
if ttype in [0x0505]:
|
||||
with open("fw_{:04x}.bin".format(ttype), "ab") as of:
|
||||
of.write(payload)
|
||||
i = i + 1
|
||||
|
||||
if not all_cksum_ok:
|
||||
print("There were problems with at least one checksum!")
|
24
gcksum.py
Normal file
24
gcksum.py
Normal file
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from binascii import hexlify
|
||||
from struct import unpack
|
||||
import sys
|
||||
|
||||
FILE = sys.argv[1]
|
||||
|
||||
print("Opening {}".format(FILE))
|
||||
|
||||
csum = 0
|
||||
|
||||
with open(FILE, "rb") as f:
|
||||
while True:
|
||||
block = f.read(1024)
|
||||
for c in block:
|
||||
csum += c
|
||||
csum &= 0xff
|
||||
if len(block) < 1024:
|
||||
print("End reached.")
|
||||
break
|
||||
|
||||
print("Sum of all bytes: {}".format(csum))
|
671
hwids.txt
Normal file
671
hwids.txt
Normal file
@ -0,0 +1,671 @@
|
||||
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
|
Loading…
x
Reference in New Issue
Block a user