Märklin CAN CS2/3/3+/Gleisbox hardware support

Hi,

Märklin CAN (MCAN) is supported by Traintastic using the Märklin Central Station 2, Central Station 3, Central Station 3+, or e.g. a CC-Schnitte + Gleisbox setup.

Driving locomotives and switching turnouts/signals are supported. Feedback via the Märklin CAN bus is also supported, although not everything has been tested with every hardware combination. I don’t own all of these devices myself, so testing is somewhat limited.

When testing, please enable the Log all communication and debug settings.

This will log all commands sent and received by Traintastic.

Using the Diagnostic Report option, the world configuration, log, etc. can be collected and posted here. This will help with diagnosing issues and improving Märklin CAN support.

Greetings,
Reinder

Hello @reinder

thanks for the settings, i managed to get it work yesterday and i did some quick testing today.
CAN Node List if its interesting at all:

What did work:

  • Start/Stop
  • Inputs are recognized
  • Motorola Decoder Locomotives controling

What did not work:

  • MFX Decoder Locomotives
    • (didnt work in most control softwares as far as i experienced)
  • DCC Decoder Locomotives
    • trains just simply didnt react on any change like direction or light on / off
  • Turnouts via Motorola or DCC

My turnouts do work in another opensource model railroad software via “MM”, which i guess stands for Märklin Motorola.

If you need any other informations or more logs just let me know.

traintastic.txt (276.9 KB)

Kind regards and a nice sunday

Zasig

Hi @Zasig,

(Moved your post to a new Märklin CAN topic, to keep the other topic more general)

Thanks for testing!

The node list is helpful, now I know what hardware is connected.

Something I noticed in the log:

2026-08-15;20:19:00.340380;marklin_can_1;D2002;RX: S88Polling [4 10 0 00FF 220 A289FF6C2080FFDCDC0000000000000000000000007513DE55A904808043AB148E590000007513DE55A9048010290074EC760000D0B7F21D8E59000000EAFF7FEC760000070000000000000040B8F21D8E590000F0375F148E590000A8B8F21D8E5900003A1C5F148E59000000EAFF7FEC7600000000000000000000000000000000000010290074EC76000050B1E91D8E590000000000008E5900000000000000000000000000000000000007000000000000004D3153148E590000000000008E59000000000000000000000000000000000000403FE81D8E590000]

This is not correct, I happens a few times. Looks like a communication bug on the Traintastic side, need to dive into the code for that.

DCC Decoder Locomotives

2026-08-16;08:41:34.117104;marklin_can_1;D2001;TX: LocomotiveFunction set DCC(42) number=0 value=1 [0 06 0 032A 6 0000C02A0001]
2026-08-16;08:41:34.132801;marklin_can_1;D2002;RX: LocomotiveFunction ack DCC(42) number=0 value=1 [0 06 1 4F2F 6 0000C02A0001]

Traintastic receives an answer, so it is handled somewhere.

Cloud you try:

  • Traintastic → online
  • Toggle light/F0 of DCC loco with MS2.
  • Toggle direction of DCC loco with MS2.
  • Change speed of DCC loco with MS2.
  • Traintastic → offline
  • Post the log here.

I’d hope we can see the messages it sends to control the locomotive, maybe that will give a clue why it isn’t working.

Turnouts via Motorola or DCC

2026-08-16;09:12:17.996348;marklin_can_1;D2001;TX: AccessoryControl Motorola(1) position=0 current=0 switch_time=default [0 0B 0 8300 6 000030000000]
2026-08-16;09:12:18.012298;marklin_can_1;D2002;RX: AccessoryControl Motorola(1) position=0 current=0 switch_time=default [0 0B 1 4F2F 6 000030000000]
2026-08-16;09:12:18.560541;marklin_can_1;D2001;TX: AccessoryControl Motorola(1) position=1 current=0 switch_time=default [0 0B 0 8300 6 000030000100]
2026-08-16;09:12:18.577037;marklin_can_1;D2002;RX: AccessoryControl Motorola(1) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000030000100]
2026-08-16;09:12:19.638186;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=0 current=0 switch_time=default [0 0B 0 8301 6 000030010000]
2026-08-16;09:12:19.654308;marklin_can_1;D2002;RX: AccessoryControl Motorola(2) position=0 current=0 switch_time=default [0 0B 1 4F2F 6 000030010000]
2026-08-16;09:12:20.342464;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=0 switch_time=default [0 0B 0 8301 6 000030010100]
2026-08-16;09:12:20.358943;marklin_can_1;D2002;RX: AccessoryControl Motorola(2) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000030010100]
2026-08-16;09:12:22.516652;marklin_can_1;D2001;TX: AccessoryControl DCC(2) position=1 current=0 switch_time=default [0 0B 0 C301 6 000038010100]
2026-08-16;09:12:22.532370;marklin_can_1;D2002;RX: AccessoryControl DCC(2) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000038010100]
2026-08-16;09:12:23.493284;marklin_can_1;D2001;TX: AccessoryControl DCC(1) position=1 current=0 switch_time=default [0 0B 0 C300 6 000038000100]
2026-08-16;09:12:23.509991;marklin_can_1;D2002;RX: AccessoryControl DCC(1) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000038000100]
2026-08-16;09:12:24.825380;marklin_can_1;D2001;TX: AccessoryControl Motorola(1) position=1 current=0 switch_time=default [0 0B 0 8300 6 000030000100]
2026-08-16;09:12:24.841150;marklin_can_1;D2002;RX: AccessoryControl Motorola(1) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000030000100]
2026-08-16;09:12:25.032554;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=0 switch_time=default [0 0B 0 8301 6 000030010100]
2026-08-16;09:12:25.049109;marklin_can_1;D2002;RX: AccessoryControl Motorola(2) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000030010100]
2026-08-16;09:12:25.782418;marklin_can_1;D2001;TX: AccessoryControl DCC(2) position=1 current=0 switch_time=default [0 0B 0 C301 6 000038010100]
2026-08-16;09:12:25.798732;marklin_can_1;D2002;RX: AccessoryControl DCC(2) position=1 current=0 switch_time=default [0 0B 1 4F2F 6 000038010100]

Traintastic receives an answer, so it is handled somewhere too.

Did you use the output keyboard or turnouts on a board?

Can you try to switch these with the MS2 as well, just like above?

MFX Decoder Locomotives

I only dry tested this, I don’t have any MFX loco’s (I’m a 2 rail guy).
So this will be a hard one.

Many thanks for testing and the help of improving Traintastic!

Just a double check, did these settings work for the CC-Schnitte?:

  • Baudrate: 500000
  • Flow control: Hardware

Greetings,
Reinder

Hi @reinder

thanks for moving and following up!

So first, it was my fault with DCC none of my hardware is working with DCC, even with a different software. I remembered wrong what i used in the past in settings.

Motorola it is and all trains do work with Motorola - besides the MFX train.

But traintastic is getting the control changes from the MFX train when i control it via MS2

image

So maybe if i can just set an adress for the MFX loco, it works? if i can manually change that in the files somewhere - just let me know.

Back to the turnouts.

traintastic.txt (9.8 KB)

The first switch commands are made via traintastic and the later ones via MS2. It looks exactly the same for me + i can even see the switches visually feedback in the MS2 screen, but the turnout does not physically switch.

And yes the settings are working perfectly.

Cheers

Zasig

Hi @Zasig,

MFX works a bit different, each loco has a unique id → UID, the command station maps this to a virtual address → SID (Session ID?)

When Traintastic goes online it will request the ConfigData, that contains the loco list with UID ↔ SID information. But what is see in the log, there is no response to that command. So maybe that is only for CS2/3/3+. I see there many StatusDataConfig messages, maybe that is MS2 loco info, need to investigate that.

There is a difference, the MS2 is sending a message with current=1, Traintastic sends it with current=0. In the log there is also a current=0 message after the current=1, don’t know if Traintastic has to send it, or that it is sent by e.g. the MS2. (The message is send with default switch time, so I expect that the MS2 will send the current=0 / off message, but keep an eye on your turnout coils, just to be sure.)

I’ve changed that, in Build #2116 at traintastic.org/en/download/develop/master (build is in progress currently)

Greetings,
Reinder

1 Like

I’m going to test the switches with the new build on the weekend. Thanks for that. If you need anything else, just let me know.

Greetings,

Zasig

Hi @reinder

i tested the Build 2116 and the switches do work now :+1:

Here is a short log from a few switch tests:

2026-08-22;20:17:19.405209;world;N1014;Power: on
2026-08-22;20:17:19.405546;marklin_can_1;D2001;TX: SystemGo Motorola(0) [0 00 0 0300 5 0000000001]
2026-08-22;20:17:19.405574;marklin_can_1;D2001;TX: SystemHalt Motorola(0) [0 00 0 0300 5 0000000002]
2026-08-22;20:17:19.422165;marklin_can_1;D2002;RX: WriteConfig [0 08 1 0001 79 2F05000000000100]
2026-08-22;20:17:21.464751;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=1 switch_time=default [0 0B 0 8301 6 000030010101]
2026-08-22;20:17:21.481519;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010101]
2026-08-22;20:17:22.467410;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=0 current=1 switch_time=default [0 0B 0 8301 6 000030010001]
2026-08-22;20:17:22.483843;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010001]
2026-08-22;20:17:23.349745;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=1 switch_time=default [0 0B 0 8301 6 000030010101]
2026-08-22;20:17:23.365884;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010101]
2026-08-22;20:17:23.573770;marklin_can_1;D2002;RX: SystemStop uid=5B000000 [0 00 0 0030 155 5B00000000000000]
2026-08-22;20:17:23.573844;marklin_can_1;D2002;RX: [0 00 0 0031 79 2F084746680B012F]
2026-08-22;20:17:24.122401;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=0 current=1 switch_time=default [0 0B 0 8301 6 000030010001]
2026-08-22;20:17:24.138565;marklin_can_1;D2002;RX: WriteConfig [0 08 1 0017 79 2F06000030010001]
2026-08-22;20:17:25.130187;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 3 000600]
2026-08-22;20:17:25.229690;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=1 switch_time=default [0 0B 0 8301 6 000030010101]
2026-08-22;20:17:25.246170;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010101]
2026-08-22;20:17:26.237961;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 3 000600]
2026-08-22;20:17:26.251349;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=0 current=1 switch_time=default [0 0B 0 8301 6 000030010001]
2026-08-22;20:17:26.283900;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010001]
2026-08-22;20:17:27.107244;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=1 current=1 switch_time=default [0 0B 0 8301 6 000030010101]
2026-08-22;20:17:27.123634;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010101]
2026-08-22;20:17:27.987688;marklin_can_1;D2001;TX: AccessoryControl Motorola(2) position=0 current=1 switch_time=default [0 0B 0 8301 6 000030010001]
2026-08-22;20:17:28.004296;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 79 2F06000030010001]
2026-08-22;20:17:28.995925;marklin_can_1;D2002;RX: MFXSeek [0 00 0 0017 3 000600]
2026-08-22;20:17:29.239584;world;N1015;Power: off
2026-08-22;20:17:29.239969;marklin_can_1;D2001;TX: SystemStop Motorola(0) [0 00 0 0300 5 0000000000]
2026-08-22;20:17:29.255893;marklin_can_1;D2002;RX: SystemStop uid=2F050000 [0 00 0 0001 79 2F05000000000000]
2026-08-22;20:17:34.006365;world;N1013;Communication: disabled

Kind regards