RailCommand Signals and Object Tables

Last updated: August 27, 2026

Concept

RailCommand gives every layout a set of JMRI-style object tables — one per object type: Signals, Turnouts, Sensors, and Toggles. Each is the authoritative list of that object's addresses and settings for the layout. You reach them per layout at /app/railcommand/layouts/{LayoutId}/signals, /turnouts, /sensors, and /toggles.

The most important idea is what is derived versus authored. Signal aspects are data-driven: the aspect a signal shows is computed from the layout's derived graph topology, not from anything you set by hand. Each signal cell maps to a mast, the mast maps to a derived SignalingRelation naming its protected block(s) and the next block, and block occupancy resolves the aspect — Stop when a protected block is occupied, Approach when the next block is occupied, otherwise Clear. When a signal has no derived relation it stays dark/unknown — it never falls back to a proximity guess. What you author is the signal's identity and wiring: name, style, signaling system, DCC addresses, aspect colours, and — in the Layout Editor — its facing.

How To

  1. Open Signal Configuration at /app/railcommand/layouts/{LayoutId}/signals. The summary cards show Total Signals, Configured, Missing DCC Address, and By Type; use the Status, Type, Style, and Connection filters to narrow the list.
  2. Click a signal row to open its inline editor. Set Signal Name, Signal Style (Color Light, Searchlight, Position, Semaphore, Dwarf), and Signaling System (Default, NORAC, GCOR, CROR, and the European/Japanese presets).
  3. Enter DCC Address 1, and DCC Address 2 for 4-aspect signals; tick Stop Restricted Mode if the signal drops to restricting rather than stop.
  4. Under Signal Aspects, set each aspect's colour and name. Restricting shown as picks how this mast displays a Restricting indication — the system default, flashing red, red over yellow, or flashing yellow (railroads legitimately use any of these; heads without a lunar lamp, like the SE8c's, can never show steady lunar). Choosing a non-default forks a tenant mast type carrying the choice. Use the Aspect Output Map (Index / Name / Addr 1 State / Addr 2 State) to name the decoded head wiring so the colour ordering matches the physical head. Click Save.
  5. For Turnouts / Sensors / Toggles, open the matching table and click Add — the add-at-position form takes Panel, Type, Column, Row, Orientation (0-7), Name, and DCC Address (turnouts also take a Normal route). Placement is collision-guarded and re-derives topology.
  6. Wrong aspect family on an imported signal? Reassign it in place — no delete-and-replace. On the web, open the signal on the Layout Editor canvas and set Element type / Aspect Family on the General tab. On the desktop, select the signal and use Aspect family in the cell-properties panel. The cell keeps its identity: name, DCC addresses, authored facing, and its physical head configuration all ride through (lamp count is not aspect count). Only the family-scoped parts re-gate — the stale aspect rows are cleared and re-prepopulated from the new family's preset, and the mast re-binds to the new family's default mast type. A signal carrying a specialized or regional type (searchlight, dwarf, position-light, semaphore, Ks, Hp0/Hp1/Hp2, or a British/French/Dutch/Italian/Japanese/Swiss type) is named as itself in the picker, and converting it to a plain 2/3/4-aspect family asks for confirmation first, because that replaces the specialized type and the glyph drawn on the switchboard.
  7. Author signal facing in the Layout Editor; the facing picker offers the real ports of the signal's graph node (compass ports for track, role ports like Normal/Reverse for turnouts).
  8. Driving heads from a Digitrax SE8c? Use SE8c Board Setup (button in the Signal Configuration header, or /app/railcommand/layouts/{LayoutId}/se8c-setup) before binding: it walks the board's factory reset, Board ID, head wiring types, and the required 4th-aspect-Dark option switches — automated (RailCommand sends every switch command through the running operating session's layout host) or guided (it shows the exact throttle commands). The final step drives the test mast and asks what you see; the Dark answer is the proof the board is configured for RailCommand.

Troubleshooting

A signal shows dark or "unknown" — It has no derived SignalingRelation. Confirm it is placed on the graph and its facing points into a real block; re-open the Layout Editor so topology re-derives.

"Missing DCC Address" count is red — One or more signals have no DCC Address 1. Open each and set the address, or mark it as a dispatcher-driven signal.

A "No conn" badge appears — That signal (or turnout) is Without connection: driven by the dispatcher group, not a LocoNet/DCC address. That is expected for virtual dispatcher objects.

Add-at-position rejects the cell — The Column/Row is occupied. Pick an empty cell; the form will not overwrite an existing object.

An imported signal has the wrong number of aspects — Reassign its aspect family in place rather than deleting and re-placing it (step 6). Deleting would mint a new cell and lose the anchors, facing, and wiring that hang off the old one.

The aspect family will not change on a head-extension cell — Head extensions belong to a multi-head mast, so the family is a property of the anchor. Change it on the anchor signal, or ungroup the mast first.

A specialized or regional signal type is not in the family picker — The picker offers the three plain families plus the type the cell already has. It converts away from a specialized type (with a confirmation), but it cannot convert into one: to change a signal to a regional type, place that type from the palette.

Safety Notes

These pages are authoring surfaces only. Editing a signal, adding a turnout, or naming an aspect updates the layout's stored configuration; it does not move hardware and does not change what a live signal is showing. During an operating session the local/UE5 runtime owns aspect resolution and any physical signal output — the web and the Avalonia desktop present state and forward intent, they never actuate hardware. Because aspects are derived from topology, an incorrect facing or a mis-placed block can change what a signal protects. Treat facing and block placement as safety-relevant: verify them in the editor before an operating session, and never hand-edit an aspect to "fix" a wrong indication — correct the topology instead.