Skip to content

Repository files navigation

Programming Center

Decoder programming made easy and for everyone.

BigFred Programming Center

What you can do

BigFred Programming Center

  • Pick a decoder in the left menu (ZIMO MS450, ESU LokSound v4 / v5, RailBOX RB23xx)
  • Read and write CVs one at a time (accordion list from the decoder catalog)
  • Set the NMRA 3-point speed curve (CV 2 / 6 / 5) plus accel / brake (CV 3 / 4)
  • Set the DCC address (short CV 1, or long CV 17/18 and CV 29 bit 5)
  • Set master volume 0–100 (mapped to CV 266 / 63 / 203 by decoder)
  • Map function keys to lamp outputs (ZIMO MS/MN, ESU LokSound v4 / v5)
  • Update RailBOX RB23xx firmware over Soft-AP (F28 + wireless-programmer)

Run

make web-build
make host          # native binary at target/release/programming-center
# or, during development:
make dev-backend   # Axum on :8092
make dev-web       # Vite on :5176, proxies /api to the daemon

Health: GET /healthz. The kiosk stays off until you set "enabled": true.

Configuration

JSON at $DATA_DIR/etc/bigfred/programming-center/config.json (created on first start). Hot-reload: a bad file keeps the previous snapshot. Changes to http / CORS need a process restart.

{
  "http": "0.0.0.0:8092",
  "enabled": false,
  "mode": "bigfred",
  "programmingMode": "bigfred",
  "bigfred": { "address": "bigfred.local:8080" },
  "z21": { "hostname": "192.168.4.1", "port": 21150 },
  "ssoClientId": "programming-center",
  "redirectUris": [
    "http://bigfred.local:8092/auth/callback",
    "http://programming-center.local:8092/auth/callback",
    "http://localhost:8092/auth/callback"
  ],
  "corsEnabled": false,
  "corsOrigins": [],
  "idleTimeoutSecs": 86400,
  "pomWriteRepeat": true,
  "wirelessProgrammer": {
    "enabled": true,
    "socketConnectRetryInterval": 60
  }
}
  • mode: "bigfred" — SSO, proxy, command-station picker (BigFred login).
  • mode: "standalone" — no BigFred sign-in or proxy. CV traffic always goes to Z21 (z21.hostname:port); dcc-bus needs a layout session that standalone does not have.
  • programmingMode: "bigfred" (default with SSO) — CV via dcc-bus.
  • programmingMode: "z21" — CV via UDP to z21.hostname:port. Works with BigFred login in front of a direct Z21.
  • pomWriteRepeat: true (default) — send each POM write twice. POM carries no acknowledgement, so a dropped packet is otherwise silent. Set false for exactly one packet per write.
  • wirelessProgrammer.enabled (default true) — retry IPC hello to wireless-programmer every socketConnectRetryInterval seconds (default 60). Connect timeout is 2 s (not in JSON).

bigfred.address is host:port without a scheme. The daemon adds http:// and ws://.

Technical docs

Speed control: ZIMO MS/MN, ESU LokSound 5. Output mapping: ZIMO MS/MN, ESU LokSound v4 / v5. Digital coupler: ESU and ZIMO. RailBOX firmware: RB23xx Soft-AP.

ARCHITECTURE.md. Rust / TypeScript rules: CODING-GUIDELINES.md. License: Apache-2.0.

This project is part of the BigFred ecosystem.

About

DCC decoder programming web application (BigFred extension)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages