Hallo,
Dies ist ein Thread in dem die von Micha und mir mitgeschnittenen 0x1B (Bootloader CAN gebunden,Service ) sowie die 0x20 und 0x21 Sequenzen dokumentiert werden sollen.
Im Rahmen eines kleinen Projektes in dem es darum geht, die MS2 und Gleisbox mit neuer ( und alter! ) software zu versehen ohne im Besitz einer CS2 oder eines Freundes/Modellbahnladens zu sein, habe ich die 0x1B commands funktionstüchtig implementriert. Dabei sind einige undokumentierte Datagramme aufgetaucht die ich hier gern veröffentlichen und diskutieren möchte.
Die ist eine komplett unoffizielle Quelle zum Märklin CAN protokoll und sicher unvollständig!
Bei einem Einsatz dieser speziellen Kommandos ist höchste Vorsicht geboten da es unter Umständen zu einem kompletten Ausfalle des Zielgerätes kommen kann!
Ich würde mich freuen hierzu eine kleine Diskussion zu eröffnen um noch andere beobachtete Datagramme mit zu dokumentieren.
O.K. Jetzt ersteinmal 0x1B-Futter ( das Gute mit Jod-X-0xFF Körnern)
Kommentierte Sequenz um Daten in das Flasch eines Zieles ( MS2 / 60113 ) zu laden und dann zu starten:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#
## Example of Operating software via "CAN Bootloader Service"
## H:0xC32E = CS2 / Updater
#
#
# System reset
# System booted immediatly after receive this message!
# Target 0xFF is not documented but seemed to mean "All".
# Wait aspprox 400ms after sending this command
# for startupt MS2 software bevore send next commands
C:0x00 R:0 H:0xC32E D:6 D:0x4d 0x54 0x5e 0x22 0x80 0xff
# Invoke bootloader update sequence. Must be send after wait for
# start up
C:0x1B R:0 H:0xC32E D:0
# Send highest block number first
# MS2 respond with empty hash
C:0x1B R:0 H:0xC32E D:6 D:0x4d 0x54 0x5e 0x22 0x44 0x55
C:0x1B R:1 H:0x0000 D:6 D:0x4d 0x54 0x5e 0x22 0x44 0x55
# Send data stream upt to 1024 byte in 8 byte per kommand. If
# less than 8 byte to be transfer padd empty bytes with 0xFF
# Hash contains the dataset number and begins with 0x300
# Build blocks of 1024 bytes and send Last bytes of file FIRST
# Attention: MS2 needs blocks = 1024 Bytes, 60113 need only 512 byte!
C:0x1B R:0 H:0x0300 D:8 D:0x29 0x1d 0x28 0x05 0x6c 0xe4 0x75 0x66
C:0x1B R:0 H:0x0301 D:8 D:0x61 0x1d 0xac 0x03 0x11 0xfd 0x2d 0xa9
C:0x1B R:0 H:0x0302 D:8 D:0x08 0x1d 0x1f 0x06 0x1d 0xc2 0x04 0x61
C:0x1B R:0 H:0x0303 D:8 D:0x71 0xd9 0x41 0x62 0x20 0x4a 0x5d 0x3e
C:0x1B R:0 H:0x0304 D:8 D:0x04 0x3e 0x2d 0x9d 0x05 0x1d 0x9c 0x04
C:0x1B R:0 H:0x0305 D:8 D:0x1d 0xb6 0x08 0x1d 0x47 0x04 0x20 0x08
C:0x1B R:0 H:0x0306 D:8 D:0x00 0x41 0x6c 0x6c 0x67 0x65 0x6d 0x2a
C:0x1B R:0 H:0x0307 D:8 D:0x5f 0x72 0x20 0x29 0x08 0x7d 0x3d 0x0a
C:0x1B R:0 H:0x0308 D:8 D:0xb9 0xfd 0x10 0x04 0x75 0x6d 0x66 0x94
C:0x1B R:0 H:0x0309 D:8 D:0x1c 0x04 0x74 0x00 0x6a 0x7f 0x07 0x16
C:0x1B R:0 H:0x030A D:8 D:0x74 0x03 0x2d 0x4b 0x08 0x4c 0x04 0x28
C:0x1B R:0 H:0x030B D:8 D:0x73 0x29 0xed 0x05 0x4d 0x6d 0x0a 0x2d
C:0x1B R:0 H:0x030C D:8 D:0xbe 0x0a 0x28 0x08 0x20 0x50 0x6c 0x61
C:0x1B R:0 H:0x030D D:8 D:0x74 0x7a 0x20 0x74 0x3f 0x00 0x69 0x2f
C:0x1B R:0 H:0x030E D:8 D:0x05 0x8d 0x1e 0x03 0x4d 0x2a 0x06 0x41
C:0x1B R:0 H:0x030F D:8 D:0x82 0x2d 0x01 0x06 0x52 0x2d 0x93 0x1e
C:0x1B R:0 H:0x0310 D:8 D:0x46 0x89 0x07 0xc0 0x04 0x00 0x47 0x42
C:0x1B R:0 H:0x0311 D:8 D:0x10 0x1c 0x05 0x41 0x6b 0x74 0x75 0xea
C:0x1B R:0 H:0x0312 D:8 D:0x06 0x3e 0x73 0x9e 0x05 0x3d 0xee 0x04
C:0x1B R:0 H:0x0313 D:8 D:0x3d 0xc1 0x08 0x41 0x3d 0x1a 0x5a 0xb5
C:0x1B R:0 H:0x0314 D:8 D:0x1e 0x5a 0xa7 0x08 0xc9 0x67 0x3e 0x21
C:0x1B R:0 H:0x0315 D:8 D:0x40 0x09 0x6e 0x41 0x77 0x04 0x45 0x2b
C:0x1B R:0 H:0x0316 D:8 D:0x41 0xa1 0x7d 0x2b 0x08 0x01 0xff 0x01
C:0x1B R:0 H:0x0317 D:8 D:0x01 0xff 0x01 0x01 0x3b 0x01 0x00 0x00
# Updater send CRC command to be confirmed by MS2
# MS2 need approx 37ms for positive CRC calculation and response
# DLC=5 command as ACK or NAC
# NAC example: C:0x1B R:1 H:0x0000 D:5 D:0x4d 0x54 0x0d 0x38 0xf2
#
C:0x1B R:0 H:0x3F17 D:7 D:0x4d 0x54 0x0d 0x38 0x88 0xb1 0x15
C:0x1B R:1 H:0x0000 D:5 D:0x4d 0x54 0x0d 0x38 0x88
loop until all block are send
... send block number--
... send data
... send CRC
# ?? undocumented, may mark loaded SW as complete and correct to load
# Software is loaded and starte without this command ( Seen at MS2 V 1.83 )
C:0x1B R:0 H:0xC32E D:5 D:0x4d 0x54 0x5e 0x22 0xf5
# Start loaded software ( reboot )
C:0x1B R:0 H:0xC32E D:5 D:0x4d 0x54 0x5e 0x22 0x11