# Supported systems

Model Train Script supports two command station families and includes a built-in demo mode for trying out the app without hardware.

## Demo mode

The built-in simulator lets you explore Model Train Script without a physical command station. It emulates a Z21 system including feedback modules, so you can build track plans, create vehicles, and develop automation scripts offline. A great way to get started.

## Z21

Model Train Script connects to Z21-compatible command stations over your local network using UDP (port 21105).

### Compatible hardware

The Z21 protocol is supported by multiple manufacturers. Any Z21-compatible system can be used, though Model Train Script is tested with a Roco Z21.

Known compatible manufacturers include:

* **Roco / Fleischmann** — Z21 (black/white)
* **Zimo** — MX10 / MX10EC
* **DigiKeijs** — DR5000
* **Yamorc** — YD7001
* **mXion** — mXion SS (a speed step workaround is available in the [profile configuration](/docs/manual/profile.md) for mXion devices)

### Features

* **Locomotive control** — Speed, direction, and functions (F0–F28). Supports 14, 28, and 128 speed steps.
* **Accessories** — Switch turnouts and signals, including extended accessories (0–255). Optional automatic deactivation timers for accessory outputs.
* **Feedback** — All three feedback buses are supported:
  * **R-Bus** — Up to 19 modules with 8 ports each.
  * **LocoNet** — Up to 2048 addresses. Supports RailCom address detection.
  * **CAN bus** — Up to 256 addresses with 8 ports each. Supports RailCom address detection.
* **CV programming** — Read and write CVs on the programming track and on the main (POM).
* **Track power** — Turn power on/off and monitor status (including short circuit detection).

### Network setup

Out of the box, a Z21 is configured to use a static IP address (default 192.168.0.111). For a better experience you might want to connect your command station to your router. A good tutorial can be found [here](https://www.youtube.com/watch?v=kvB5Jqqv5-M) on YouTube.

{% hint style="warning" %}
Due to a limitation of the Z21 protocol, only one device should have automation enabled at the same time. Configure this in [App Settings](/docs/manual/settings.md).
{% endhint %}

## ESU ECoS

Model Train Script connects to the ECoS command station over your local network using TCP (port 15471). It is tested with an ECoS 2.1.

### Features

* **Locomotive control** — Speed, direction, and functions. Vehicles can be imported directly from the ECoS including their names and function mappings.
* **Accessories** — Switch turnouts and signals.
* **Feedback** — ECoSLink (S88 and ECoSDetector modules) with RailCom support. Other buses like LocoNet or S88 over external interfaces are currently not supported.
* **Track power** — Turn power on/off and monitor status.

{% hint style="info" %}
CV programming is not supported via the ECoS connection. Use the ECoS interface directly for programming tasks.
{% endhint %}

{% hint style="warning" %}
PC Control must be enabled in the settings of your ECoS for Model Train Script to connect.
{% endhint %}

## Feature comparison

| Feature                             | Z21 | ECoS | Demo |
| ----------------------------------- | :-: | :--: | :--: |
| Locomotive control                  |  ✓  |   ✓  |   ✓  |
| Accessories                         |  ✓  |   ✓  |   ✓  |
| Extended accessories                |  ✓  |   —  |   ✓  |
| Accessory deactivation timers       |  ✓  |   —  |   ✓  |
| R-Bus feedback                      |  ✓  |   —  |   ✓  |
| LocoNet feedback                    |  ✓  |   —  |   ✓  |
| CAN bus feedback                    |  ✓  |   —  |   ✓  |
| ECoSLink feedback                   |  —  |   ✓  |   —  |
| RailCom address detection           |  ✓  |   ✓  |   ✓  |
| CV programming                      |  ✓  |   —  |   —  |
| Vehicle import from command station |  —  |   ✓  |   —  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://modeltrainscript.gitbook.io/docs/manual/supported-systems.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
