RE: Märklin CAN Protokol 0x1B ACK message

#1 von Karsten42 , 06.03.2015 18:37

Hallo,

Dies ist eine sehr interne Frage mit sehr wenig Hoffnung, daß jemand ( Herr Kielkopf, Programmierer von Märklin... ) mir eine Antwort geben kann. Aber wer nicht fragt bleibt dumm ( Sesamstraße ).

Wird ein config data stream (Command 0x21, DLC= von der CS2 gesendet, so wird dieser immer mit einem "undokumentierten" 0x1B command quittiert oder beendet. Da der Hash in diesem Falle der des Empfängers ist, kann nicht erkannt werden ob es eine Quittung der MS2 ist oder ein "End of transmission" der CS2 ( was mich wundern würde, da Länge und CRC des Streams vorher bekannt gegeben wird ).

Frage:
Welchen Zweck hat dieses Kommando?
Ist dies zwingend notwendig oder eine "Altlast" ?

Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 

# Config Data transfer
# data = "langver"
C:0x20 R:0 H:0x9B76 D:8 D:0x6c 0x61 0x6e 0x67 0x76 0x65 0x72 0x00
C:0x20 R:1 H:0xC32E D:8 D:0x6c 0x61 0x6e 0x67 0x76 0x65 0x72 0x00
 
# 34Byte, CRC 0xBFBB, MS2 to CS2
C:0x21 R:0 H:0x9B76 D:6 D:0x00 0x00 0x00 0x22 0xbf 0xbb
 
# data in .cs2 format =
.vhigh=1
.vlow=48
.bytes=46270
C:0x21 R:0 H:0x9B76 D:8 D:0x20 0x2e 0x76 0x68 0x69 0x67 0x68 0x3d
C:0x21 R:0 H:0x9B76 D:8 D:0x31 0x0a 0x20 0x2e 0x76 0x6c 0x6f 0x77
C:0x21 R:0 H:0x9B76 D:8 D:0x3d 0x34 0x39 0x0a 0x20 0x2e 0x62 0x79
C:0x21 R:0 H:0x9B76 D:8 D:0x74 0x65 0x73 0x3d 0x34 0x36 0x32 0x37
C:0x21 R:0 H:0x9B76 D:8 D:0x30 0x0a 0x00 0x00 0x00 0x00 0x00 0x00
 
# unknown ACK ??
C:0x1B R:0 H:0x9B76 D:6 D:0x00 0x02 0x00 0x00 0x00 0x00
 
 



Die Hoffnung stirbt zulezt!

Daaaanke
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


tatzelbrumm hat sich bedankt!
Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#2 von DiegoGarcia , 06.03.2015 20:06

Hallo Karsten,

leider habe ich keine Dokumentation zu folgenden Befehlen auf dem CAN:

1
2
3
4
5
6
7
 

30/31: Softwarestand PING
32/33: Updateangebot
34/35: Read Config Data
36/37: CAN Bootloader
38/39: Schiene Bootloader
3A/3B: Statusdaten Konfiguration
 



1Bh ist demnach "CAN Bootloader" 36/37. Die Anwendung dieses Befehls habe ich in meine Software integriert, um den Bootloader der Gleisbox zu aktivieren, wenn keine MS2 angeschlossen ist. Ich darf mal dazu mein Unterprogramm zeigen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Function BootloaderCAN() As String
dim MeldungsKennung As String
dim DLC As String
dim LocalID As Integer
dim LocIDstring As String
dim command As Integer

MeldungsKennung = ChrB(0) + ChrB(&h36) + me.pCS2HashString // prio=0, CAN-Bootloader call, not-response, CS2-Hash
DLC = ChrB(5) // request to all devices on the CAN-bus
LocalID = &h00 // send to all
LocIDstring = ChrB(BitWise.ShiftRight(LocalID, 24) MOD 256) + ChrB(BitWise.ShiftRight(LocalID, 16) MOD 256) + ChrB(BitWise.ShiftRight(LocalID, 8) MOD 256) + ChrB(LocalID MOD 256) // BIG ENDIAN
command = &h11 // durch Zufall selbst herausgefunden; wird von der MS2 an die GleisBox2 gesendet, sobald eine MS2 einen Reset-Befehl erhält

Return MeldungsKennung + DLC + LocIDstring + ChrB(command) + ChrB(0) + ChrB(0) + ChrB(0) // extend always to 13 bytes

End Function
 
 



Vielleicht hilft es Dir ja. Denn der von Dir gefundene Befehl mit DLC=6 ist mir noch nicht bekannt gewesen.


Ciao
Diego


talks are cheap, and they don't mean much .…


 
DiegoGarcia
Metropolitan (MET)
Beiträge: 2.797
Registriert am: 15.04.2007
Steuerung mfx


RE: Märklin CAN Protokol 0x1B ACK message

#3 von Karsten42 , 06.03.2015 20:52

Diego!

Sag einer, daß Sesamstraße nicht bildet !!!

0x1B für den Start der 60113 habe ich ebenfalls schon implementiert danke für die Info. Du solltest noch ein 400ms Delay nach dem senden des Requests einbauen. Das ist die Zeit die die MS2 für den Startup der 60113 wartet. Danach geht dann ca. alle 30sec ein 0x18 als "keepalive" los oder eben alles andere.

Ich bin gerade dabei die MS2 mit Software zu versorgen ohne eine CS2 zu benötigen. Also eine minimal-emulation einer CS2. Alles kein sooo großes Hexenwerk, wenn da nicht der Eine oder Andere undokumentierte "Kniff" drin wäre. Bisher hat´s die MS2 nicht gestört wenn das 0x1B mit DCL6 fehlt. Aber es ist schon unschön nicht zu wissen wozu dieses command ist. Ein wenig habe ich das Gefühl, dass es eine "alte" quittung der MS2 an die CS2 ist. Bei einer "Binärübertragung" mit 0x1B command wird nämlich am Ende eines Blockes die CRC übertragen und von der MS2 quittiert.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 

# Initiate first Block to send ( sub cmd 0x44, following decrement block number 0x55 )
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
 
# Binary data
#ZIP format of 050-ms2.bin
#Hash is block number
# Last Block of file send first! Byte padding is 0xFF until 1024 byte block
C:0x1B R:0 H:0x0300 D:8 D:0x05 0x8d 0x1e 0x03 0x4d 0x2a 0x06 0x41
C:0x1B R:0 H:0x0301 D:8 D:0x82 0x2d 0x01 0x06 0x52 0x2d 0x93 0x1e
C:0x1B R:0 H:0x0302 D:8 D:0x46 0x89 0x07 0xc0 0x04 0x00 0x47 0x42
## following data until block 0x37F ( 1024 Byte send)
 
# Send CRC and ACK from MS2( sub cmd 0x88, 16Bit CRC )
C:0x1B R:0 H:0xC32E D:7 D:0x4d 0x54 0x5e 0x22 0x88 0x95 0x0c
C:0x1B R:1 H:0x0000 D:5 D:0x4d 0x54 0x5e 0x22 0x88
 
 



Beste Grüße und,
Happy hacking

Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#4 von Sandblech , 07.03.2015 17:30

Hallo Karsten,

das klingt interessant! Was für ein CAN-Interface benutzt du?

Gruß
Michael


Sandblech  
Sandblech
InterRegio (IR)
Beiträge: 107
Registriert am: 17.02.2012


RE: Märklin CAN Protokol 0x1B ACK message

#5 von Karsten42 , 08.03.2015 23:31

Hallo Michael,

Es ist eine selbst gebautes Interface. Ein ATMEGA1284P ( weil ich da ersteinmal mit Code und RAM um-marmeln kann ), ein MCP2515 als CAN-Controller und ein MCP2551 als Treiber. Zum Speichern der MS2 Files habe ich zunächst eine SD-Karte mit eingefügt. Für die Kommunikation ist ein FT232 als VCOM. Wenn ich groß bin und alles funst, mache ich was schickes kleines draus .

Die Lok-Datenbank und das Sprachenfile kann ich schon prüfen und übertragen. Die beiden MS2 files ( ab Version CS2 3.5.5 und MS2 2.1 gibt es zwei MS2 files.... ) sind gerade am Start. Hier ist die Herausvorderung die Versionsnummern zu finden. Und: durch das etwas chaotische Versionssystem von Mä durchzusteigen.

Hier mal die Versionsnummer für die Interessierten:
016-gb2.bin
Version an Byte 7 ( .vhigh) und 8 (.vlow)

flashdb2.ms2
Version an Byte 0 ( .version) und 2 (.monat). Das Jahr ist bisher immer gleich dem Monat (.monat=3 entspricht .jahr=2013). Zusätzlich Klartext im Datenblock mit der Loknummer 99999. Blockbeschreibung auf Anfrage

lang.ms2
Version an Byte 0 ( .vhigh) und 1 (.vlow)

051-ms2.bin
Version an Byte 0 ( .vhigh) und 1 (.vlow)

050-ms2.bin
Version an Byte 253 ( .vhigh) und 254 (.vlow)

Ich habe aber sehr wenig Hoffung das das hier jemanden interessiert. Aber hiermit ist´s dann schon mal "Aktenkundig" für diejenigen die danach suchen..

Beste Grüße
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#6 von King-Lui , 09.03.2015 00:11

Hallo Ihr,

vielleicht würden sich mehr dafür interessieren, wenn sie wüssten welches Ziel das Ganze hat.
Habt Ihr schon mal Rob (vom Rocrail-Forum) gefragt?


Beste Grüße

Uwe


 
King-Lui
EuroCity (EC)
Beiträge: 1.051
Registriert am: 26.12.2011
Homepage: Link
Ort: Herdecke, zwischen Dortmund und Hagen
Gleise K-Gleise (Anlage), C-Gleise (Stammtisch)
Spurweite H0
Steuerung CS3plus, MS2, Rocrail
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#7 von Karsten42 , 09.03.2015 17:41

Moin Uwe,

Mein Ziel ist es, ein Gerät zu entwickeln mit dem man die Software der MS2 updaten kann ohne im Besitz einer CS2 zu sein oder einen Händler/Freund fragen zu müssen. Die einzelnen Features werden sich in der Entwicklung herausbilden.

Gruß
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#8 von King-Lui , 09.03.2015 17:52

Hallo Karsten,

ja, wenn man sich dieses Ziel setzt,ist das ja ok. Und wenn es dann auch funktioniert ist auch die Befriedigung da.

Für ein Update ist es heute nicht mehr wirklich notwendig. Da ja jetzt auch von MS2 zu MS2 ein Update funktioniert, hat man eigentlich immer einen Moba-Freund in der Nähe.

Ich sage immer, das Schöne an der Moba ist, dass für jeden etwas dabei ist!

Viel Erfolg weiterhin! Und lass es uns wissen, wenn dein Projekt erfolgreich war!


Beste Grüße

Uwe


 
King-Lui
EuroCity (EC)
Beiträge: 1.051
Registriert am: 26.12.2011
Homepage: Link
Ort: Herdecke, zwischen Dortmund und Hagen
Gleise K-Gleise (Anlage), C-Gleise (Stammtisch)
Spurweite H0
Steuerung CS3plus, MS2, Rocrail
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#9 von Sandblech , 09.03.2015 21:42

Hallo Karsten,

ich denke schon das es den einen oder anderen interessiert (inkl. mir). Und außerhalb von Deutschland gibt es bestimmt einige die
sich sowas sehnsüchtig wünschen. Als Beispiel weise ich hier auf dieses Forum: http://www.marklin-users.net/forum/yaf_p...aspx#post482493
KingLui hat natürlich ein wenig Recht, doch die Update-Funktion von MS2 zu MS2 inkl. Gleisbox ist begrenzt:

Zitat
Aber Version 1.68 / Feature: Updatefähigkeit. Die MS2 kann jetzt Updates verteilen. Sie kann z. B. ein Update für die Gleisbox ausliefern, oder eine zweite MS2 mit einem Softwareupdate versorgen. Dies können aber nur Geräte, die selbst ihr Update von einer CS2 erhalten haben.


Somit bleibe ich weiter gespannt ob du es hin bekommst.

Die Frage ist noch, ob die Kombi aus MCP2515 als CAN-Controller und ein MCP2551 als Treiber schnell genug ist für eine Übertragung beim Update. Denn wenn da was verloren geht wäre das wohl fatal für den Update-Vorgang.

Gruß
Michael


Sandblech  
Sandblech
InterRegio (IR)
Beiträge: 107
Registriert am: 17.02.2012


RE: Märklin CAN Protokol 0x1B ACK message

#10 von vinylfan , 09.03.2015 21:53

Hallo,

wenn du das hinbekommst, ich wäre der erste Kunde.



Meine MS2 spinnt auch hin und wieder.


Grüße
Klaus


Rocogleis ohne Bettung, Loks von FM und Roco.
CanDB über MS2 nur DCC
, Booster Digikeijs
WinXP, iTrain 3.3
Meine Anlage im Bau
viewtopic.php?f=15&t=127112


 
vinylfan
InterCity (IC)
Beiträge: 864
Registriert am: 07.01.2015
Ort: Wirges WW
Gleise Zweileiter
Spurweite H0
Steuerung Can Digital
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#11 von Karsten42 , 09.03.2015 22:35

Hallo,

Vielen Dank für das "Mut-machen".
Das "Ding" mit der MS2 nach MS2 und 60113(Gleisbox) ist ja, dass irgendwer in der Reihe immer noch eine CS2 benötigt. Und in Warheit werden sicher etliche tausen MS2 mehr im Umlauf sein als CS2...

Die Übertragung mit 250kBaud ist nicht sonderlich schnell und alle 1024 Byte gibts eine CRC Summe zum check. Bisher haben alle Übertragungen zur MS2 einwandfrei geklappt ( es sei denn ICH habe etwas falsch gemacht ). Aktuell wird´s spannend die MS2 binaries so zu übertragen, daß diese die neuen Daten auch als Programmcode ausführt. Dies wird mit den 0x1B commands gemacht, und hier ist recht wenig bis gar nichts beschrieben. Das Update aller Dateien in das MS2 Dateisystem funktioniert schon ...

Ich schreibe einfach in diesen Thread ein Update wenn sich etwas wichtiges getan hat. Ist ja alles im wesentlichen nur eine geistige Herausforderung und viel Spass am knobeln und "überlisten".

Beste Grüße
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#12 von st-oldie , 09.03.2015 23:10

Hallo Karsten,

Zitat von Karsten42
Alles kein sooo großes Hexenwerk, wenn da nicht der Eine oder Andere undokumentierte "Kniff" drin wäre.



Oh ja, das kann ich nur unterschreiben. Ich hab di kommunikation der Märklin App mit der CS2 auf einem ARM Board unterstützt. Und bin dabei über einiges gestolpert, was nicht dokumentiert ist oder wo Märklin sich nicht an seine eigene Doku gwhalten hat. Das scheint im Wesentlichen die Übertragung von Daten zu betreffen.

Tschüß
Michael


st-oldie  
st-oldie
InterRegioExpress (IRE)
Beiträge: 458
Registriert am: 22.12.2009
Homepage: Link
Ort: Friedberg (Hessen)
Gleise Märklin K-Gleis
Spurweite H0
Steuerung Märklin Systems
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#13 von King-Lui , 09.03.2015 23:17

Zitat von Sandblech


...KingLui hat natürlich ein wenig Recht, doch die Update-Funktion von MS2 zu MS2 inkl. Gleisbox ist begrenzt:

Zitat
Aber Version 1.68 / Feature: Updatefähigkeit. Die MS2 kann jetzt Updates verteilen. Sie kann z. B. ein Update für die Gleisbox ausliefern, oder eine zweite MS2 mit einem Softwareupdate versorgen. Dies können aber nur Geräte, die selbst ihr Update von einer CS2 erhalten haben.





Hallo Michael,

nur noch einen kleinen Hinweis ohne das Projekt madig reden zu wollen. Meines Wissens nach, kann heute eine MS2 das Update weitergeben, auch wenn sie ihr eigenes Update nicht von einer CS2 bezogen hat. Ich glaube, das geht seit der Version 1.81.


Beste Grüße

Uwe


 
King-Lui
EuroCity (EC)
Beiträge: 1.051
Registriert am: 26.12.2011
Homepage: Link
Ort: Herdecke, zwischen Dortmund und Hagen
Gleise K-Gleise (Anlage), C-Gleise (Stammtisch)
Spurweite H0
Steuerung CS3plus, MS2, Rocrail
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#14 von Karsten42 , 09.03.2015 23:43

Moin Moin,

Ich bin schon etwas begeistert ob der großen Resonanz!Immer schön locker bleiben; es sind noch einige Hürden zu nehmen....

@King-Lui
Ja, soweit ich das "sehen" kann, ist ein update MS2 <-> MS2 ab der 1.8.3 möglich. Die Einschränkung woher die Daten kommen kann ich von "aussen" nicht sehen. Solange die notwendigen Files im Filesystem der MS2 liegen und SW >= 1.8.3 gestartet wird, ist ein Update MS2 <-> MS2 möglich.
Unbesehen belibt dann aber immer noch, daß zuerst bei irgendjemanden die Henne ( CS2 mit entspr. Update ) da sein muss...

@st-oldi
Vielleicht magst du ja deine Erfahrungen und Analysen mit den 0x1B commands teilen? Ich schreibe gern alles zusammen was ich bisher mitlesen konnte und was Micha aus diesem Forum für mich mittracen konnte.

Beste Grüße
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#15 von bertr2d2 , 10.03.2015 00:22

Hallo,

Zitat

Die Frage ist noch, ob die Kombi aus MCP2515 als CAN-Controller und ein MCP2551 als Treiber schnell genug ist für eine Übertragung beim Update. Denn wenn da was verloren geht wäre das wohl fatal für den Update-Vorgang.


dürfte kein Problem sein, da sich eine MCU quasi explizit um die Kommunikation mit dem CAN-Controller kümmert. Anders sähe das mit einem OS wie Linux aus. Die Latenzen im SPI-Treiber führen zu Paketverlusten.

@Karsten,

sehr interessant was Du vorhast. Hast Du einen Trace von einem Update einer MS2 durch eine CS2 ? Mich würde auch das Update einer Gleisbox durch eine MS2 interessieren.

Gruß

Gerd


Smallest Rocrail Server Ever II ist jetzt Smallest Railroad Server Ever II
SRSEII -> SRSEII (Raider heisst jetzt Twix, sonst ändert sich nix )


bertr2d2  
bertr2d2
CityNightLine (CNL)
Beiträge: 1.545
Registriert am: 09.10.2012
Spurweite H0
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#16 von st-oldie , 10.03.2015 15:28

Hallo Karsten,

Zitat von Karsten42
Vielleicht magst du ja deine Erfahrungen und Analysen mit den 0x1B commands teilen? Ich schreibe gern alles zusammen was ich bisher mitlesen konnte und was Micha aus diesem Forum für mich mittracen konnte.



Speziell zum Kommando 0x1B hab ich keine Informationen.

Ich hab in meiner Software von der MS2 die Liste der gespeicherten Loks abgerufen. Und mir zu jeder Lok die Infos geben lassen. Und daraus habe ich eine lokomotive.cs2 erstellt, die dann die Märklin App abrufen konnte. Und dabei habe ich festegestellt, daß die MS2 keine Folgenummer in die Pakete einträgt. Der Hash bleibt leer, wodurch die Nachrichten auch nicht als MS2/CS2 CAN Frames erkannt werden.

Ich wollte mich als nächstes mit der Übertragung der *.cs2 Dateien per CAN Frame befassen. Die Apps rufen die über http ab. Das Märklin PC Programm über CAN Frames. Also muß ich in meiner Software einen solchen Datenstrom erzeugen können.

Gerade das, was diese Datenübertragung betrifft, ist nicht oder nur unvollständig dokumentiert.

Tschüß
Michael


st-oldie  
st-oldie
InterRegioExpress (IRE)
Beiträge: 458
Registriert am: 22.12.2009
Homepage: Link
Ort: Friedberg (Hessen)
Gleise Märklin K-Gleis
Spurweite H0
Steuerung Märklin Systems
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#17 von Karsten42 , 10.03.2015 16:55

Moin,

@bertr2d2 ( Gerd )
Ich habe von beidem ein Trace. Das MS2 -> 60113 ist relativ einfach. Im CS2 nach MS2 sind einige andere Messages enthalten die nicht zum Update gehören. Auch ist dies leider nicht konstant bei verscheidenen Updates. Ich habe keine CS2 und habe Micha aus diesem Forum ein CAN-Sniffer gebaut damit er für mich den Trace erstellen kann. der GFP der CS2 antwortet leider auch obwohl dieser ja integraler Bestandteil der CS2 ist.
Hier wartet aber fettes "Glatteis", da wir mit den 0x1B Commands herumhantieren. Den Programmcode überschreiben ist immer recht heiß, da es dann nur noch die Hardwarprogrammierung gibt. Hier gibt´s nichts ausser das Schaltbild..
Wohin mit den Traces?

@st_oldi ( Michael )
Die Überrtragung von Daten mit den 0x20 und 0x21 Befehlen ist recht simpel und funktioniert hier bei mir einwandfrei. Auf einem Request mit 0x20 folgt ( wie auch dokumentiert ) ein 0x21 data stream. Hier ist nur zu bedenken, daß es zumindest drei unterscheidliche 0x20 Requests gibt die aus ein bis drei Datagrammen bestehen. Das letzte Datagramm wird ( wie immer ) mit einem gesetzten response Bit quittiert. Anbei ein Beispiel für die Übertragung der Lok datenbank von der CS2/MS2 an eine MS2. Dies sollte also grundsätzlich genau so laufen um die CS2 auszufragen, also ein CS2-Slave nachzubilden.

1
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
 

# Request MS2 for "langver" Get Version information
C:0x20 R:0 H:0x036C D:8 D:0x6c 0x61 0x6e 0x67 0x76 0x65 0x72 0x00
C:0x20 R:1 H:0x3F17 D:8 D:0x6c 0x61 0x6e 0x67 0x76 0x65 0x72 0x00
 
#Start send data stream, data length, 16Bit CRC
C:0x21 R:0 H:0x036C D:6 D:0x00 0x00 0x00 0x22 0xbf 0xbb
#Send data stream ! 0x0 Padding to power of 2 data length
C:0x21 R:0 H:0x036C D:8 D:0x20 0x2e 0x76 0x68 0x69 0x67 0x68 0x3d
C:0x21 R:0 H:0x036C D:8 D:0x31 0x0a 0x20 0x2e 0x76 0x6c 0x6f 0x77
C:0x21 R:0 H:0x036C D:8 D:0x3d 0x34 0x39 0x0a 0x20 0x2e 0x62 0x79
C:0x21 R:0 H:0x036C D:8 D:0x74 0x65 0x73 0x3d 0x34 0x36 0x32 0x37
C:0x21 R:0 H:0x036C D:8 D:0x30 0x0a 0x00 0x00 0x00 0x00 0x00 0x00
# This is the data content:
.vhigh=1
.vlow=49
.bytes=46270
 
#MS2 request to send language file lang.ms2
# "lang" followed by datagram contains first block number. Do not care about it, just reply it
# Counting decimal 0 [0x30] up to last block like 234 [0x32 0x33 0x34 ] !!
# Hash is your OWN hash, see Doku how to build this
C:0x20 R:0 H:0x9B76 D:8 D:0x6c 0x61 0x6e 0x67 0x00 0x00 0x00 0x00
C:0x20 R:0 H:0x9B76 D:8 D:0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00
C:0x20 R:1 H:0x3F17 D:8 D:0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00
 
#Send first Block length and 16Bit CRC, Has is same as receiver!
# length 0x400 ( 1024 Byte ), CRC 0x5e 0x0a
C:0x21 R:0 H:0x9B76 D:6 D:0x00 0x00 0x04 0x00 0x5e 0x0a
 
#Send data
# No block count in hash
C:0x21 R:0 H:0x9B76 D:8 D:0xff 0xfd 0x1c 0x6d 0xff 0xfd 0x1c 0x7d
C:0x21 R:0 H:0x9B76 D:8 D:0xff 0xfd 0x1c 0xae 0xff 0xfd 0x1c 0xae
C:0x21 R:0 H:0x9B76 D:8 D:0xff 0xfd 0x1c 0x8d 0xff 0xfd 0x1c 0x9d
C:0x21 R:0 H:0x9B76 D:8 D:0xff 0xfd 0x28 0x73 0xff 0xfd 0x28 0x69
....
 
#MS2 request next block, just reply
C:0x20 R:0 H:0x9B76 D:8 D:0x6c 0x61 0x6e 0x67 0x00 0x00 0x00 0x00
C:0x20 R:0 H:0x9B76 D:8 D:0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00
C:0x20 R:1 H:0x3F17 D:8 D:0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00
 
# go on to send data like before.
# Possible padding of last byte with 0x00
# !!! Calculkate CRC NOT for padding bytes !!!
 

 



Hoffe es hilft

Gruß
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#18 von bertr2d2 , 10.03.2015 18:18

Hallo Karsten,

Zitat von Karsten42
Moin,

@bertr2d2 ( Gerd )
Ich habe von beidem ein Trace. Das MS2 -> 60113 ist relativ einfach. Im CS2 nach MS2 sind einige andere Messages enthalten die nicht zum Update gehören. Auch ist dies leider nicht konstant bei verscheidenen Updates. Ich habe keine CS2 und habe Micha aus diesem Forum ein CAN-Sniffer gebaut damit er für mich den Trace erstellen kann. der GFP der CS2 antwortet leider auch obwohl dieser ja integraler Bestandteil der CS2 ist.
Hier wartet aber fettes "Glatteis", da wir mit den 0x1B Commands herumhantieren. Den Programmcode überschreiben ist immer recht heiß, da es dann nur noch die Hardwarprogrammierung gibt. Hier gibt´s nichts ausser das Schaltbild..
Wohin mit den Traces?

Gruß
Karsten


vielen Dank für deine Antwort. Bezüglich der Traces werde ich mit per PN melden.

Das Programmieren an realer Hardware birgt natürlich Gefahren aber ich möchte das erstmal an meiner virtuellen
Gleisbox nachstellen/verstehen. Ich habe mir ein Linux Programm geschrieben, das über SocketCAN eine Gleisbox
auf recht primitive Weise simuliert. Als zweiten Schritt will ich dann eine reale MS2 mit der virtuellen Gleisbox sprechen lassen.

Ich habe zudem eine Application Note von Silabs gelesen, in der ein CAN-Bootloader für die in der Gleisbox verwendeten CPU beschrieben ist.
Es würde mich nicht wundern, wenn M*rklin (bzw. die beauftragte Softwareschmiede) sich an dieser AN orientiert hat.

Gruß

Gerd


Smallest Rocrail Server Ever II ist jetzt Smallest Railroad Server Ever II
SRSEII -> SRSEII (Raider heisst jetzt Twix, sonst ändert sich nix )


bertr2d2  
bertr2d2
CityNightLine (CNL)
Beiträge: 1.545
Registriert am: 09.10.2012
Spurweite H0
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#19 von Sandblech , 10.03.2015 20:18

Hallo Karsten,

schön das du uns auf dem laufenden halten willst... ich werde das hier im Auge behalten.

Gruß
Michael


Sandblech  
Sandblech
InterRegio (IR)
Beiträge: 107
Registriert am: 17.02.2012


RE: Märklin CAN Protokol 0x1B ACK message

#20 von King-Lui , 10.03.2015 21:02

Hallo Ihr Lieben,

ich verstehe nur Bahnhof und Koffer klaun.

Seid Ihr sicher, dass Ihr nicht nur von einem Phrasenwürfel Begriffe nehmt, aneinander reiht und euch kaputt lacht über die, die versuchen diese Sätze zu entziffern? Wollt Ihr die NSA foppen?

Die Frage ist, wie komme ich an die Information, wenn Euer Ziel erreicht oder das Projekt beendet ist? Das würde mich nämlich interessieren.
Wie das alles funktioniert und mit welchen 0xhassenichgesehen Adresse da gewerkelt wird, kann ich nichts anfangen.

In diesem Sinne wünsche ich Euch ein gutes Gelingen!


Beste Grüße

Uwe


 
King-Lui
EuroCity (EC)
Beiträge: 1.051
Registriert am: 26.12.2011
Homepage: Link
Ort: Herdecke, zwischen Dortmund und Hagen
Gleise K-Gleise (Anlage), C-Gleise (Stammtisch)
Spurweite H0
Steuerung CS3plus, MS2, Rocrail
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#21 von vinylfan , 10.03.2015 21:25

Moinsen,


wäre auch dankbar wenn ich das update an der MS2 ohne Informatikstudium hinbekäme.


Grüße
Klaus


Rocogleis ohne Bettung, Loks von FM und Roco.
CanDB über MS2 nur DCC
, Booster Digikeijs
WinXP, iTrain 3.3
Meine Anlage im Bau
viewtopic.php?f=15&t=127112


 
vinylfan
InterCity (IC)
Beiträge: 864
Registriert am: 07.01.2015
Ort: Wirges WW
Gleise Zweileiter
Spurweite H0
Steuerung Can Digital
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#22 von Karsten42 , 10.03.2015 22:05

Hallo King-Lui und Vinylfan!

Entschuldigung! Ihr habt ja recht; das ist alles Doppeltgewobbelte ZF. Ursprünglich war mein Anliegen ja auch nur ein Schuss in´s Blaue in der sehr vagen Annahme, daß hier ein paar Programmierer von Märklin mitlesen und vielleicht ein wenigt Infos geben könnten.

Ich bitte also alle, die an der Softwaretechnischen Lösung interessiert sind, mir eine PM zu schicken.

Diejenigen die das Projekt für überkandidelt und fehlplaziert empfinden bitte ich um Nachsicht. Es war eben einfach so eine Idee....

Beste Grüße
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


RE: Märklin CAN Protokol 0x1B ACK message

#23 von st-oldie , 11.03.2015 21:22

Hallo Karsten,


Zitat von Karsten42
der GFP der CS2 antwortet leider auch obwohl dieser ja integraler Bestandteil der CS2 ist.



Das ist ein eindeutiges Jein. Ich hatte mal auf den Märklin Tagen das Mothernboard der CS2 liegen sehen. Und die Möglichkeit gehabt, an den Märklin Mitarbeiter Fragen zu stellen. Ich hatte als Einleitung mal locker flockig gefragt, wo denn der JTAG Stecker ist, wir haben ja in der Firma Entwicklungssysteme für ARM.

Er hat dann auf die Platine geschaut und auf den Stecker gezeigt, den ich auch in Verdacht hatte.

Und zum GFP der CS2. Der ist zwar auf dem Motherboard integriert, aber das ist im Prinzip eine über CAN an die Haupt-CPU angeschlossene Gleisbox! Was natürlich für die Entwicklung eine Beschelunigung durch copy&paste zur Folge hatte.

Zitat von Karsten42
Die Überrtragung von Daten mit den 0x20 und 0x21 Befehlen ist recht simpel und funktioniert hier bei mir einwandfrei. Auf einem Request mit 0x20 folgt ( wie auch dokumentiert ) ein 0x21 data stream. Hier ist nur zu bedenken, daß es zumindest drei unterscheidliche 0x20 Requests gibt die aus ein bis drei Datagrammen bestehen. Das letzte Datagramm wird ( wie immer ) mit einem gesetzten response Bit quittiert. Anbei ein Beispiel für die Übertragung der Lok datenbank von der CS2/MS2 an eine MS2. Dies sollte also grundsätzlich genau so laufen um die CS2 auszufragen, also ein CS2-Slave nachzubilden.



Danke für die Info. Ich denke auch, daß das für mich kein Hexenwerk ist. Ich hatte das bisher nur nicht gebraucht. Und mit dem Märklin 'PC Programm hab ich das Problem, daß ich das Netzwerk Interface nicht vorgeben kann. Auf meinem Notebook bindet die sich an mein LAN Interface statt an das WLAN Interface, obwohl ich auf dem LAN Interface keinen Link habe. Das ist Mist, denn ich möchte nicht das LAN Interface nur für die Märklin APP deaktivieren.

Ich hab ja die loknamen und die lokinfos schon von der MS2 abgefragt. Das wird ja mit den gleichen CAN Frames 0x20 und 0x21 gemacht. Der einzige Unterschied, der es etwas schwerer macht, ist, daß die Daten für die *.cs2 Dateien zlib komprimiert übertragen werden.

Tschüß
Michael


st-oldie  
st-oldie
InterRegioExpress (IRE)
Beiträge: 458
Registriert am: 22.12.2009
Homepage: Link
Ort: Friedberg (Hessen)
Gleise Märklin K-Gleis
Spurweite H0
Steuerung Märklin Systems
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#24 von st-oldie , 11.03.2015 21:34

Hallo Uwe,

Zitat von King-Lui
ich verstehe nur Bahnhof und Koffer klaun.

Seid Ihr sicher, dass Ihr nicht nur von einem Phrasenwürfel Begriffe nehmt, aneinander reiht und euch kaputt lacht über die, die versuchen diese Sätze zu entziffern? Wollt Ihr die NSA foppen?

Wie das alles funktioniert und mit welchen 0xhassenichgesehen Adresse da gewerkelt wird, kann ich nichts anfangen.



Naja, das ist halt genau das, weswegen das Stummi Forum so beliebt ist. Man bekommt wirklich fundierte Antworten und kann mit anderen Probleme lösen. Und es ist nun mal so, daß die Digitalsteuerungen mit Computern und IT zu tun haben. Und damit schon abseits der üblichen Modellbahnthemen liegen und vielleicht für viele eher unverständlich sind.

Auch wenn es zu Beginn vielleicht nicht komplett so gedacht war, ist dieser Thread ja keine Ankündigung eines Produkts bzw. Geräts. Sondern er dient tatsächlich dazu, die Funktionalität zu verstehen. Und damit das zu verstehen, was man als Basis für das Projekt braucht.

Zitat von King-Lui
Die Frage ist, wie komme ich an die Information, wenn Euer Ziel erreicht oder das Projekt beendet ist? Das würde mich nämlich interessieren.



Dazu müßte dann Karsten etwas schreiben. Aber ich denke, wenn er fertig ist wird das Ergebnis hier irgendwo vorgestellt.

Tschüß
Michael


st-oldie  
st-oldie
InterRegioExpress (IRE)
Beiträge: 458
Registriert am: 22.12.2009
Homepage: Link
Ort: Friedberg (Hessen)
Gleise Märklin K-Gleis
Spurweite H0
Steuerung Märklin Systems
Stromart Digital


RE: Märklin CAN Protokol 0x1B ACK message

#25 von Karsten42 , 11.03.2015 22:42

Moin Moin,

Wie versprochen hier ein kleines Update ( Ohne "Tech-Talk" wie es so schön modern heisst; Auch ich kenne noch 8Zoll Disketten.. )

Ich kann nun die MS2 komplett mit neuer Software versorgen. Auch ist es mir gelungen ein "Downgrade" durchzuführen ( von 2.1 auf 1.83 ). Jetzt stehen zunächst Bereinigung des Programmes an ( Optimierung, mehr Fehler abfangen, mehr Doku ). Danach werde ich das Teil ausgiebig testen; also den Software update, nicht aber die Funktion der MS2.

Weiteres dann später.

Gruß
Karsten


--
/// Never forget your towel \
You who are doomed, enter and abandon yourself to despair!


Karsten42  
Karsten42
RegionalExpress (RE)
Beiträge: 79
Registriert am: 16.01.2012


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz