MERG CBUS/VLCB hardware support

Moin Reinder,

thank you for the info. I will build and test it tommorrow.

I had found the problem with the build errors of Univeral_LCB for PIC18F26K80. Ian uses the Microchip XC8 V2.46 compiler. I have the XC8 V3.10. The problem is the different optimizer and some functions, which called from IRQs. These functions must be defined __reentrant with XC8 V3.10. Otherwise the compiler duplicates the functions, which results in much errors “defined more than once”. Ian asked for a pull request, which I have done in the morning today. One problem solved! :slight_smile:

Today I build the CANCMDB and CANCAB. Both kits runs perfect! Just a few minutes ago I test to drive a Loco with traintastic. Light, forward, backward - it runs! Also the CANCAB tolds me, that the Loco 3 is controlled elsewhere - perfect! I’m thrilled!

I will write a article for my site and the H0-Modellbahnforum about the actually state of Traintastic and CBUS/VLCB. This is undoubtedly the most cost-effective way to control a model railway and be able to do everything yourself, from the software to the hardware. No dependencies on manufacturers with lengthy update cycles; you can build and repair everything yourself. I really like that! Thank you for your great support!

I have a CANUSB kit here, which I don’t need and two empty PCBs for CANVOUT/CANMIO. I have ordered some parts, so that I could send you the CANUSB and one CANVOUT/CANMIO. But I need to wait for the parts (mostly the connectors) and then I must solder it. Is that okay for you?

Greetings & have a nice evening!

Tom

Moin Tom,

I had found the problem with the build errors of Univeral_LCB for PIC18F26K80. Ian uses the Microchip XC8 V2.46 compiler. I have the XC8 V3.10. The problem is the different optimizer and some functions, which called from IRQs. These functions must be defined __reentrant with XC8 V3.10. Otherwise the compiler duplicates the functions, which results in much errors “defined more than once”. Ian asked for a pull request, which I have done in the morning today. One problem solved! :slight_smile:

The power of open source software, great job!

Today I build the CANCMDB and CANCAB. Both kits runs perfect!

The CANCAB looks really nice, is everything included in the kit? (Buttons, knob, display, housing and spiral cable etc.)

Just a few minutes ago I test to drive a Loco with traintastic. Light, forward, backward - it runs! Also the CANCAB tolds me, that the Loco 3 is controlled elsewhere - perfect! I’m thrilled!

:tada: Another milestone reached, one thing that I need to improve is stealing by the CANCAB, then Traintastic must release the train.

I will write a article for my site and the H0-Modellbahnforum about the actually state of Traintastic and CBUS/VLCB. This is undoubtedly the most cost-effective way to control a model railway and be able to do everything yourself, from the software to the hardware. No dependencies on manufacturers with lengthy update cycles; you can build and repair everything yourself. I really like that! Thank you for your great support!

Thanks for testing and writing about Traintastic! The userbase is still small, these writings will help to attract more users :slight_smile:

I have a CANUSB kit here, which I don’t need and two empty PCBs for CANVOUT/CANMIO. I have ordered some parts, so that I could send you the CANUSB and one CANVOUT/CANMIO. But I need to wait for the parts (mostly the connectors) and then I must solder it. Is that okay for you?

Sure, that would be great! I really appreciate that! Many thanks in advance.

Greetings,
Reinder

Moin Reinder,

I can’t compile Traintastic with my “old” Debian 12 and g++

tom@amarok:~/projects/linux/traintastic/server$ g++ --version
g++ (Debian 12.2.0-14+deb12u1) 12.2.0

The problem with <format> could be solved, but now I have much more errors, i.e. <optional>, std::nullopt and much more like:

home/tom/projects/linux/traintastic/server/src/hardware/protocol/cbus/cbuskernel.cpp:286:18: error: ‘struct CBUS::Kernel::Engine’ has no member named ‘session’
286 | engine.session = ploc.session;

I think, I must setup a virtual machine with Debian 13 to have the same development environment as you use. But, if I build Traintastic with Debian 13, will it further run on my Debian 12? Or are there dependencies with libraries that I don’t have and can’t install?

I simply have too many dependencies to just update my primary system casually.

Greetings

Tom

Moin Tom,

What kind of errors do you get? Can you post the build log (as txt file)?

I don’t think building on Debian 13 and the running on Debian 12 will work, on Debian 13 it will build against a newer version of the std c++ lib.

Greetings,
Reinder

Hi Reinder,

here is the build.log. I have to make dinner now; maybe I’ll have time later.

I did a fresh clone and use

tom@amarok:~/projects/linux/traintastic/server/build$ git branch

  • cbus
    master

Greetings, Tom

build.txt (38.5 KB)

Moin Tom,

Based on the build log I’ve applied two fixes that should help, see commit fadc4bc3.

Greetings,
Reinder

Moin Reinder,

it compiles without errors, thank you. Here a short info about my first test with this version:

If I click on the red stop button, the server runs with these messages and I hear some short clicks of the CANCMD speaker.

2026-03-15 21:01:40.277798 cbus_1 D2001: TX: RESTP [0A]
2026-03-15 21:01:40.280559 cbus_1 D2002: RX: ESTOP [06]
2026-03-15 21:01:40.280664 world N1017: Stopped
2026-03-15 21:01:40.280923 cbus_1 D2001: TX: RESTP [0A]
2026-03-15 21:01:40.283645 cbus_1 D2002: RX: ESTOP [06]
2026-03-15 21:01:40.283756 world N1017: Stopped
2026-03-15 21:01:40.284030 cbus_1 D2001: TX: RESTP [0A]
2026-03-15 21:01:40.286714 cbus_1 D2002: RX: ESTOP [06]
2026-03-15 21:01:40.286818 world N1017: Stopped
2026-03-15 21:01:40.287081 cbus_1 D2001: TX: RESTP [0A]
2026-03-15 21:01:40.289855 cbus_1 D2002: RX: ESTOP [06]
2026-03-15 21:01:40.289959 world N1017: Stopped

The server don’t stop with these messages and I can’t start it again with a click on the green button. I have to kill and restart the server.

At power on these messages are send and receive on CBUS:



2026-03-15 21:13:25.046790 world N1012: Communication: enabled
2026-03-15 21:13:25.047690 cbus_1 D2001: TX: RSTAT [0C]
2026-03-15 21:13:25.047742 cbus_1 D2001: TX: QNN [0D]
2026-03-15 21:13:25.055163 cbus_1 D2002: RX: STAT [E3 FF FE 00 1C 04 66 0C]
2026-03-15 21:13:25.055922 cbus_1 D2002: RX: PNN [B6 00 01 A5 20 5F]
2026-03-15 21:13:25.056698 cbus_1 D2002: RX: PNN [B6 FF FF A5 09 0A]
2026-03-15 21:13:25.057561 cbus_1 D2002: RX: PNN [B6 FF FE A5 53 0E]

The PNN are the three CAN nodes: CANCMDB (central station, FFFE), CANCAB2 (FFFF) and CANVOUT (0001).

I configured this layout:

The left point and signal:

The right point and signal

And the two sensors:

There are some design problems, small input lines and so on. But this is at the moment not important! I will make a small screen video about this.

But the important things - it runs! :slight_smile:

I can switch the points and signals, the LEDs at the output of the CANVOUT/CANMIO boards are switch correctly. That seems all right, at the moment I see here no problem.

The inputs are recognized well. The sensors change the color to green. But they don’t goes off, if the sensor is free again. For the test I set the corresponding input port to Low (GND).

I use the setting occupied sensor for this test.

The input events looks like that:

2026-03-15 21:17:52.876271 cbus_1 D2002: RX: ACON node=1 event=1234 [90 00 01 04 D2]
2026-03-15 21:17:52.917297 cbus_1 D2002: RX: ACOF node=1 event=1234 [91 00 01 04 D2]

Port low → ACON, Port high → ACOF - this is correct. But the sensors remain green:

Should they not signal the state of the input? Or have them someother logic?

With the setting for the reed contact nothing happens. Also not with reverse mode.

I haven’t test the short events until yet.

I think those are just minor details; the basic setup is already working great. I’m amazed at how you managed to do it in such a short time!

I try to understand the internal of Traintastic, but it’s not simple for me :wink: Do you have a class diagramm or something else about that?

That’s enough for today, I have to go back to work tomorrow and I’ll treat myself to a glass of red wine to celebrate the success :slight_smile:

Greetings, Tom

Moin Reinder,

totally forgotten:

Yes, all the kits are complete with all parts which are needed. Also includes all the kits a printed documentation “how to build” and the schematic of the board. A manual is not included but available as PDF.

Greetings, Tom

Moin Tom,

The RESTP/ESTOP seems to be an endless loop caused by Traintastic, once it receives an ESTOP it requests an estop, I’ll try look into it tomorrow.

Thanks for the STAT and PNN responses, I’ll see what I can do with them :slight_smile:

Found the sensor issue, I copied/modified the ACOF code to ACON but forgot to change false to true, see fe6a2197 :woozy_face:

I’m amazed at how you managed to do it in such a short time!

Thank you :blush:

I try to understand the internal of Traintastic, but it’s not simple for me :wink: Do you have a class diagramm or something else about that?

There is some documentation available here, but it is far from complete. My wish is to create a mkdocs generated developer manual like the user manual.


This evening I added DKEEP support, so Traintastic will now send session keep alive commands to the CANCMD. The default keep alive is 4 sec after the last send command for a session. The VLCB Opcode specification doesn’t give an advice on the default value, the CBUS Developer’s Guide Rev 6c states that the cab sends it at least once every 4 seconds. (It is configurable from 1 to 30 secs in Traintastic)

The build you’re running now doesn’t have DKEEP, so I wonder after how many seconds the CANCMD will stop the loco. It will also be interesting to see after how much time the CANCAB sends a DKEEP.

We made a lot of progress on the CBUS/VLCB support :tada:

Greetings,
Reinder

p.s. The signals a meant to be in the track:
image

Moin Reinder,

the sensors are now ok. I see no error with the 8 Inputs and 8 Outputs now. Great! What do you think about a list of events of the node, in the setup procedure of the board? I.e. I click a signal/point/sensor, set the node and there is a button to read all events from node, than a click on the event in the list to choose it for the signal/point/sensor? Not yet, but for the future :wink:

I like doxygen and latex :wink: I know mkdocs, but never do something with it. It’s a litte bit as DokuWiki, which I use for my site. Markup like markdown, no database, only textfiles.

Apropos: This is the start page for CBUS/VLCB on my website. Traintastic is also there :wink: I will add all feature things on my site, boards, layouts, software and I have also a Gitea repo.

If I start with lua scripting, I will document it, so that we could made also a fine lua manual. Further I will have a look at mkdocs, to translate the manual into German. If I have the time :wink: I could add a section for CBUS/VLCB - but I have no other command station, only the old Roco Multimaus with the Booster without com interface, so I can only write about CBUS.

Okay, during I write this I test the DKEEP from CANCAB2, every 4 seconds:

2026-03-16 22:52:23.469666 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:27.663342 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:31.857066 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:36.050723 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:40.244427 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:44.438147 cbus_1 D2002: RX: DKEEP session=1 [23 01]
2026-03-16 22:52:48.631705 cbus_1 D2002: RX: DKEEP session=1 [23 01]

Traintastic sends also a DKEEP:

2026-03-16 22:58:19.894408 cbus_1 D2001: TX: DSPD session=1 speed=58 direction=fwd [47 01 BA]
2026-03-16 22:58:20.094540 cbus_1 D2001: TX: DSPD session=1 speed=59 direction=fwd [47 01 BB]
2026-03-16 22:58:24.094631 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:58:28.094702 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:58:32.094788 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:58:32.457973 cbus_1 D2001: TX: DSPD session=1 speed=58 direction=fwd [47 01 BA]
2026-03-16 22:58:32.958406 cbus_1 D2001: TX: DSPD session=1 speed=57 direction=fwd

Also after stop the loco but every second:

2026-03-16 22:58:56.774789 cbus_1 D2001: TX: DSPD session=1 speed=2 direction=fwd [47 01 82]
2026-03-16 22:58:57.275227 cbus_1 D2001: TX: DSPD session=1 speed=0 direction=fwd [47 01 80]
2026-03-16 22:59:01.275247 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:59:05.275292 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:59:09.275379 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 22:59:13.275463 cbus_1 D2001: TX: DKEEP session=1 [23 01]

After the loco is released in Traintastic, CANCAB2 still says that the loco is in use, when I choose it.

2026-03-16 23:03:53.400197 client_throttle_1 I3002: Throttle client_throttle_1 released train Güterzug
2026-03-16 23:03:53.400304 cbus_1 D2001: TX: GLOC short_address=3 mode=steal [61 00 03 01]
2026-03-16 23:03:53.403120 cbus_1 D2002: RX: ERR error=SessionCancelled session=1 [63 01 00 08]
2026-03-16 23:03:53.404422 cbus_1 D2002: RX: PLOC session=1 short_address=3 speed=13 direction=rev f0=false f1=false f2=false f3=false f4=false f5=false f6=false f7=false f8=false f9=false f10=false f11=false f12=false [E1 01 00 03 0D 00 00 00]
2026-03-16 23:03:53.404445 cbus_1 D2001: TX: STMOD session=1 speed_mode=128 service_mode=false sound_control_mode=false [44 01 00]
2026-03-16 23:03:53.404453 cbus_1 D2001: TX: DSPD session=1 speed=1 direction=rev [47 01 01]
2026-03-16 23:03:57.404525 cbus_1 D2001: TX: DKEEP session=1 [23 01]
2026-03-16 23:04:01.272317 cbus_1 D2002: RX: RLOC short_address=3 [40 00 03]
2026-03-16 23:04:01.273358 cbus_1 D2002: RX: ERR error=LocoAddressTaken short_address=3 [63 00 03 02]
2026-03-16 23:04:01.404586 cbus_1 D2001: TX: DKEEP session=1 [23 01]

This happens also, if I stop the Traintastic server. I have to power of CANCMDB to release the loco for use it again with CANCAB2.

Another idea for the usability:

If I want to change the direction, I must always click first on zero. With the CANCAB and also other throttle I could change the direction always. The loco will stop with the decoder parameter for braking, change the direction and speed up also with the decoder parameters (accelerate) to the speed as set at the throttle. Is that possible to change this?

Okay, almost time to sleep :slight_smile:

Greetings, Tom

Moin Tom,

the sensors are now ok. I see no error with the 8 Inputs and 8 Outputs now. Great!

Then basic input/output support is :white_check_mark:

What do you think about a list of events of the node, in the setup procedure of the board? I.e. I click a signal/point/sensor, set the node and there is a button to read all events from node, than a click on the event in the list to choose it for the signal/point/sensor? Not yet, but for the future :wink:

I like it, that will make life easier for future users :slight_smile:

Somehow I can’t access your site from my home IP, using a VPN I can access it…strange. It is a really nice article (I’ve read it using Firefox translate, my German is not that good.)

In the cbus branch manual is already a WIP page about CBUS/VLCB in the appendix, see here.
The manual also has a Lua scripting reference section under appendix, the pages are partly auto generated based on the Traintastic source code. Feedback and improvements and practical examples are very welcome :slight_smile:

CBUS/VLCB is the first hardware system that has a proper throttle acquire/release, Traintastic’s HAL isn’t currently aware of that, so I need to make some adjustments there. The CANCAB also has a Steal option, that should make it possible to take control even if Traintastic doesn’t release it properly.

Traintastic doesn’t allow to change direction if the train is moving, I can add a world setting for that to make it configurable. (The default value is debatable then :stuck_out_tongue:)

My todo list:

  • Implement acquire/release awareness.
  • When interface goes online sync power/estop.
  • Basic list of discovered nodes. (nice to have)

Greetings,
Reinder

p.s. once all the basics are working I’ll merge it into master.

Moin Tom,

Proper throttle acquire/release is a tough nut to crack.

It also affects PR #163 where @gfgit is working on (a new PR is coming). Currently Traintastic doesn’t process “feedback” of CS (command station) connected throttles that alter the speed/direction/functions. This would be really nice because it makes it possible to track trains that are controlled by CS throttles, and for multi headed trains, a CS throttle can control one loco, based on that speed/direction Traintastic will send commands to the other loco(s).

I’ll do a review of the current state of CBUS/VLCB, then merge it to master.

It will probably take some time to develop a good solution for the throttle acquire/release because it also affects all the other protocol implementations.

A temporary hack could be to release on EStop, ugly but it works sort of…

Greetings,
Reinder

Moin Reinder,

at the moment this is not a big problem for me. You know, I test the CBUS hardware. The next thing is with my own CBUS hardware and more powerful PIC controller with more inputs and outputs. Also I must test servos, I have some here. Later in the day I will do some order at Digikey. The German distributors are sometimes terrible slowly. But Digikeys Website also tells this “Due to the high volume of orders, processing your order may take up to 4 additional working days.” I think, that this have something to do with the war; it was the same during the Corona pandemic. I’ll also take a look at Mouser and Farnell.

So no rush :slight_smile:

Greetings, Tom

Moin Tom,

Good to know :slight_smile:

Do you have a classic DCC turnout decoder? I’ve already added DCCext support and I’m adding support for standard DCC accessory but it needs testing :slight_smile:

I read in the CBUS/VLCB specs that there are also short/long on/off events with 1, 2 or 3 additional data bytes. Do you know what they are used for?

Do servo’s work using the same short/long event stuff?, I guess so, but just to be sure :slight_smile:

Greetings,
Reinder

Moin Reinder,

Nope, I have no DCC decoder for that. I never prefered to switch accessories with DCC, it’s not a good protocol to do that. DCC has no confirmation.

Do you mean ACON1, ACOF1 or ACON2 and so on? I have no idea which node uses that. However, the servo controllers have some parameters for angle, position and runtime. Also I found some article at MERG forum about analog values, i.e. positions. So I think a ACON2 could be used for switch on and drive until value reached databyte 2 or 3.

I know more, when I have build a node to control servos. It’s the same PCB as for CANVOUT, but with some other parts, I don’t have until yet.

Greetings, Tom

Moin Tom,

I also prefer to control accessory using another bus, apart from conformation is, it also requires track power during switch and it wastes loco bandwidth :slight_smile: I expect it to work, so we’ll see in the future :slight_smile:

Do you mean ACON1, ACOF1 or ACON2 and so on?

Yes, these more data events could be useful for turntables as well or as you mentioned for servo control.

Small update, I added a node list:

This in simulaton mode, there only is a CANCMDB in it for now. This is just the info provided by the PNN response to the QNN. Need to read some more through the specs to see if there is more useful information to query.

Greetings,
Reinder

Moin Reinder,

today I have not done much, it was a lazy sunday. I update my repository, add the branch documentation and add some stylesheets from doxygen-awesome-css. It’s mainly for me to learn more about Traintastic :wink: I haven’t do a pull request, but if you want to have a look to the doxygen files traintastic/docs/doxygen/server/html at documentation · DL7BJ/traintastic · GitHub I like this design :slight_smile:

If you know all nodes, you could query all events from a node. I think this should be <NERD>There are also some instructions to read parameters and variables from a node.

The CANCAB2 is missing:

2026-03-22 21:15:54.728603 cbus_1 D2001: TX: QNN [0D]
2026-03-22 21:15:54.732056 cbus_1 D2002: RX: PNN node=65535 manufacturer_id=165 module_id=9 flags=0x0A [B6 FF FF A5 09 0A]
2026-03-22 21:15:54.732069 cbus_1 D2001: TX: RQNPN node=65535 param=7 [73 FF FF 07]
2026-03-22 21:15:54.732084 cbus_1 D2001: TX: RQNPN node=65535 param=2 [73 FF FF 02]
2026-03-22 21:15:54.732324 cbus_1 D2002: RX: ACK [00]
2026-03-22 21:15:54.733642 cbus_1 D2002: RX: PNN node=65534 manufacturer_id=165 module_id=83 flags=0x0E [B6 FF FE A5 53 0E]
2026-03-22 21:15:54.733658 cbus_1 D2001: TX: RQNPN node=65534 param=7 [73 FF FE 07]
2026-03-22 21:15:54.733668 cbus_1 D2001: TX: RQNPN node=65534 param=2 [73 FF FE 02]
2026-03-22 21:15:54.733891 cbus_1 D2002: RX: ACK [00]
2026-03-22 21:15:54.736640 cbus_1 D2002: RX: PNN node=1 manufacturer_id=165 module_id=32 flags=0x5F [B6 00 01 A5 20 5F]

But I think, it’s not so important to list here the throttles, however the CANCAB2 is seeing by the server, module_id 9.

Greetings, Tom

Moin Tom,

It was a sunny sunday here, even did some work in the garden :slight_smile:

The material design is looking nice for Doxygen, the documentation itself is not so good, only a really really small part of the codebase has some Doxygen comments :frowning:

I tried to read some node parameters, but I don’t see a response:

TX: RQNPN node=65535 param=7 [73 FF FF 07]
TX: RQNPN node=65535 param=2 [73 FF FF 02]
RX: ACK [00]

This should read the module major and minor (software?) version, but all I see is an ACK, maybe the sending of the messages to fast, so the module has no time to respond. Could you give it a try using Lua? Add push button to a board, and create a script:

world.get_object('push_button_1').on_pressed(
  function ()
    -- RQNPN node=65534 param=7
    world.get_object('cbus_1').send({0x73, 0xFF, 0xFE, 0x07})
  end)

Pressing the button will send a message on the CBUS CAN bus :slight_smile:

Just had a quick look at CANCMD’s commands.c, it seems not to have RQNPN support. (it is also 6yr since the last change, I wonder if there isn’t a newer version of the firmware.)

About the missing node, if you close the interface dialog and reopen it, is it still missing? (There is still a timing issue somewhere, that popups sometimes.)

Greetings,
Reinder

Moin Reinder,

Yes, but the call graphs are a little help for me to understand the function of Traintastic.

The latest version is 4f and if you look at flim.c you will find RQNPN. You have to distinguish between Slim and Flim mode; nowadays, only Flim is really used.

My CANCMDB kit has the 4f version. I tried to read the parameters with MMC:

messageRouter: GRID_CONNECT_SEND RQNPN (73) Node 65534 Node parameter Index 1
messageRouter: GRID_CONNECT_RECEIVE PARAN (9B) Node 65534 Parameter Index 1 Parameter Value 165

The CANCMDB has also some variables:

messageRouter: GRID_CONNECT_SEND NVRD (71) Node 65534 Node Variable Index 48
messageRouter: GRID_CONNECT_RECEIVE NVANS (97) Node 65534 Node Variable Index 48 Node Variable Value 0

And as I see with MMC, the CANCAB2 uses the SlimMode, perhaps that could be a problem.

MMC can’t read parameters or variables of CANCAB2. I will check, if the CANCAB has parameters, but it’s 100% assembler code.

As I started the server the connection to /dev/ttyACM0 can’t be established. The hardware interface was offline, curios, I save always the world:

But after set it and restart server and client also the CANCAB2 is there.

With the Lua Script I got the data:

2026-03-23 23:21:09.175356 cbus_1 D2001: TX: RQNPN node=65534 param=7 [73 FF FE 07]
2026-03-23 23:21:09.178473 cbus_1 D2002: RX: PARAN node=65534 param=7 value=4 [9B FF FE 07 04]
2026-03-23 23:24:54.064429 cbus_1 D2001: TX: RQNPN node=65534 param=7 [73 FF FE 07]
2026-03-23 23:24:54.067480 cbus_1 D2002: RX: PARAN node=65534 param=7 value=4 [9B FF FE 07 04]

This looks okay for me, it’s only a time of 3-4ms. The value is correct, look at my screenshot from MMC.

Hope that helps :slight_smile:

Greetings, Tom

Moin Tom,

My bad, I just checked the CANCMD master branch, didn’t look further, oops.

Thanks for the MMC and Lua checks, it does work so the issue is in the interface initialization sequence, I think the messages are sent to quickly, I’m going to change it, wait for the QNN/PNN phase to complete (100ms after last PNN message), and then start querying node parameters.

The node variables are also really nice, would be a nice addition for the future to support that in Traintastic too. I wonder what happens if you enable the Send Current Interval, I expect the CANCMD to send the track current periodically in some kind of message, we can of course peek into the source code to find out :slight_smile:

Greetings,
Reinder