MegaPoints Controllers logo

System2 Panel Controller

Your layout. Your way. One board at a time.

User Reference — Release 25 and later

Contents

Getting Started

  1. What is the Panel Controller?
  2. Welcome to System2
  3. Hooking Up Your Board
  4. Getting Connected — Wi-Fi Setup
  5. The Main Page at a Glance
  6. Configuring Your Ports
  7. EasyConfig — Quick V-Port Setup
  8. Wi-Fi Settings & Roaming
  9. Sharing Wi-Fi Credentials

Panel Controller in Detail

  1. New in Release 25 — At a Glance
  2. Networks & Protocols
  3. Choosing a Protocol
  4. Saving, Loading & Restoring
  5. Live Monitoring Charts
  6. Software Updates
  7. Network Monitor
  8. Status Log & Diagnostics
  9. For the Tinkerer — the Built-in API
  10. Technical Reference & Reliability Enhancements
  11. Connecting Multiple Boards — the CAN Bus and Wiring

1. What is the Panel Controller?

The Panel Controller is a System2 board designed for mimic panels and control desks. It connects your physical push buttons and toggle switches to the rest of your layout, and drives LEDs to show the current state of points, signals, and track occupancy.

It provides:

Panel Controller header showing board identity and location
The top of the main page shows your board name, product image, and location description.

2. Welcome to System2

System2 is a modern, British-designed control platform for model railway layouts of every size. It was built from the ground up to be simple for newcomers, yet powerful enough for the largest exhibition layouts. System2 is the exclusive control system behind Pete Waterman's The Grand Challenge — holder of the Guinness World Record for the largest portable model railway at 694.9 metres of track.

Every System2 board carries its own built-in administration page, so there is no single computer or central controller that everything depends on. You configure each board from any web browser on a phone, tablet, or PC — no special software to install, no apps to download.

This guide covers Release 25 and later of the Panel Controller firmware. If your board is running an earlier version, you can update it over the internet in minutes (see Software Updates).

3. Hooking Up Your Board

Before diving into the software, let’s get your Panel Controller physically connected. This section walks you through the board layout, what each connector and button does, and how to wire boards together on the CAN bus.

Board Layout

The annotated photograph below shows a Panel Controller with all its connectors and key features identified.

Panel Controller board — annotated hook-up guide
Panel Controller hook-up guide. All connectors and controls are labelled.
FeatureDescription
Dual LED connectors × 16 16 pairs of header pins along the top edge. Each pair drives one LED (or LED pair). Plug in the LED leads with the black lead towards the outer edge of the board. The three-position jumper block (NORM / LEDS / COMP) selects the output wiring mode for your LEDs.
Input connectors × 16 16 pairs of header pins along the bottom edge, labelled SIG (signal) and GND (ground). Plug in the leads with the black lead towards the outer edge. Connect your push buttons, toggle switches, or sensors here.
Power Connector 12 V DC, any polarity, 1.5 A maximum. Two-position screw terminal on the right-hand side of the board.
Network Connector Two-position screw terminal for the CAN bus: CAN-H and CAN-L. Observe polarity — connect H to H and L to L on every board.
CAN Network termination jumper Activates a built-in 120 Ω termination resistor. Leave this jumper fitted on the first and last boards of the CAN bus, and remove it from all boards in between (see Termination Jumpers).
Board name and serial number Printed on the left edge. The board name (e.g. panel-d07c10) is also the Wi-Fi hotspot name and the hostname you type into a browser to access the board.
Wi-Fi Hotspot start button Press and hold during power-up to force the board into Wi-Fi hotspot mode. Useful for initial setup or if the board cannot reach your Wi-Fi network.
RUN LED Status indicator (not shown in the photo — located near the centre of the board, labelled RUN). In normal operation it flashes at 1 Hz (once per second). A fast flash (10 Hz) means the board is in hotspot/access-point mode. A rapid flutter indicates the board is being identified from the web interface.
PWR LED Power indicator. Lights up when the board is receiving 12 V power.

What You Need

Wiring a Single Board

  1. Connect your 12 V power supply to the 12V and GND positions on the green screw terminal. Observe polarity — the labels are printed on the board.
  2. If this board will communicate over the CAN bus, connect a twisted-pair cable to the H and L terminals. Make sure CAN H goes to CAN H on every board, and CAN L goes to CAN L.
  3. Plug in your pre-wired buttons (supplied with the starter kit), your own switches, or sensors as needed. You can mix any number of different types in any position.
  4. Connect your LEDs to the OUTPUT pins. Set the NORM/LEDS/COMP jumper to match your LED wiring configuration (see Configuring Your Ports).
  5. Power on. The PWR LED should light, and after a few seconds the board will either connect to your Wi-Fi network or start its own hotspot (see Getting Connected).

4. Getting Connected — Wi-Fi Setup

When your Panel Controller is brand new (or after a Wi-Fi reset), it does not yet know your Wi-Fi network name and password. It will create its own temporary hotspot so you can tell it which network to join. You only need to do this once — the board remembers your Wi-Fi details permanently, even after power cuts and software updates.

Even better, once one board knows your Wi-Fi credentials you can share them across the wired CAN network to every other System2 board with a single button press (see Sharing Wi-Fi Credentials). So in practice, you only ever type your Wi-Fi password once for your entire layout.

Step-by-step Wi-Fi Setup

  1. Power on your Panel Controller. If it has no stored Wi-Fi credentials, its onboard LED will flash rapidly and it will appear as a Wi-Fi hotspot named after its board ID (e.g. panel-64ee04).
  2. Connect to the hotspot. On your phone or tablet, open your Wi-Fi settings and look for the board's name. Tap to connect — there is no password.
    Phone Wi-Fi list showing panel hotspot
    The Panel Controller's hotspot appears in your phone's Wi-Fi list.
  3. A setup page opens automatically. Your phone's captive-portal detection will open the Wi-Fi configuration page. If it does not appear within a few seconds, open a web browser and go to http://4.3.2.1.
    Wi-Fi setup page with scan results
    The Wi-Fi setup page. Tap Scan WiFi to see available networks.
  4. Select your network and enter the password. Tap Scan WiFi to see nearby networks. Choose yours from the dropdown, type your password, and press Save.
    Wi-Fi credentials saved confirmation
    The board confirms your credentials are saved and asks you to reboot.
  5. Reconnect to your own Wi-Fi. Switch your phone back to your normal Wi-Fi network. The board will reboot and join the same network. You can now access it by typing its name into a browser (e.g. http://panel-64ee04.local) or by using the IP address shown in the status bar.
If the board cannot connect to your Wi-Fi (wrong password, network out of range), it will automatically restart its hotspot after a few attempts, so you can try again. You can also hold the onboard button at power-on to force the hotspot to start.

5. The Main Page at a Glance

Once connected to Wi-Fi, open a web browser and navigate to your board. The main page gives you complete control of your Panel Controller. It is divided into clear sections, from top to bottom:

Full main page overview 1 2 3 4 5 6 7 8 9 10
The complete main page — everything is on a single, scrollable page. Numbers match the tour below.
#SectionWhat it does
1HeaderShows board name, product image, and your location description.
2Live ChartsWi-Fi signal, traffic, CAN activity, and MQTT activity (toggle with Show/Hide Charts).
3Port ConfigurationSet up all 16 input and 16 output channels.
4EasyConfigQuickly assign V-Port addresses for a whole board in one go.
5CAN BusCAN ID settings.
6Wi-FiRoaming, boot delay, and credential sharing.
7Navigation LinksSave, Load, Backup, Restore, Update, Reboot, Network Monitor, and Documentation.
8Status BarSoftware version, IP address, board name, and connected Wi-Fi network.
9ProtocolSwitch between CAN, Native MQTT, and JMRI.
10Status LogLive messages showing network activity, board reports, and system events.
Navigation links
The navigation area provides quick links to all key functions.

6. Configuring Your Ports

The port configuration table is the heart of the Panel Controller. Each of the 16 rows represents one physical input (button/switch) and one physical output (LED) on the board.

Port configuration table
The port configuration table — 16 inputs on the left, 16 outputs on the right.

Input Ports (left side)

ColumnWhat it controls
Phys PortThe physical connector number on the board (1–16). This is fixed.
V-PortThe virtual port number this input sends when activated. Match it to the V-Port on the device you want to control (e.g. a Servo-8 output).
Latch (ms)How long the input signal is held before it can change again. Prevents accidental double-presses. 600 ms is a good default.
Input TypeThe type of switch or sensor connected (see below).
InvertReverses the sense of the input — useful if your wiring reads backwards.
RGB / LED ColourSets the Red, Green, and Blue brightness for this channel's LED (0–255 each). Combine values to create any colour.
B/GBackground mode — when ticked, the LED shows a dim background colour when off, rather than being completely dark.

Input Types

Input type dropdown
Choose the type of switch or sensor connected to each channel.
Every element of the page has a tooltip. Hover over (or long-press on mobile) any column heading, field, or control to see a description of what it does.
Tooltip showing V-Port description on hover
Hovering over a V-Port field shows a helpful tooltip describing its purpose.
TypeBest for
StatelessThe default switch type. Click to toggle the V-Port.
Push to make btnMomentary push button — press to toggle the state.
Toggle SwitchOn/off toggle switch — state follows the switch position.
Occupancy SensorTrack block detector — active when the block is occupied.
Points Pos SensorPoints position feedback — indicates the actual position of the turnout.
The Stateless input type is not supported when using the JMRI protocol. If you are connecting to JMRI, use one of the other input types instead.

Output Ports (right side)

Output ports with invert toggles
Each output has its own V-Port and an invert toggle.
ColumnWhat it controls
Phys PortThe physical LED output number on the board (1–16).
V-PortThe virtual port this output listens to. When a matching V-Port message arrives (from any board on the network), this LED responds.
InvertReverses the LED state — lights when off and vice versa.

Shortcuts & Time-savers

Setting up 16 channels does not have to be slow. The interface includes several shortcuts to save you time:

ShortcutWhereWhat it does
+ after a number V-Port fields Auto-fills all rows below with incrementing values. Type 100+ and rows fill with 100, 101, 102, 103…
- after a number V-Port fields Auto-fills all rows below with decrementing values. Type 200- and rows fill with 200, 199, 198…
. after a number V-Port fields Copies the same value to all rows below. Type 500. and every row gets 500.
. after a number Latch (ms) field Applies the same latch time to all 16 channels. Type 100. to set 100 ms everywhere.
Shift+click Invert & B/G toggles Hold Shift and click a toggle to apply the same state to all remaining rows in that column.
These shortcuts work on both the input V-Port fields and the output V-Port fields. They are a huge time-saver when setting up a new board from scratch.
Input and output V-Ports do not need to match on the same row. For example, Input 1 might send V-Port 100 to control a Servo-8, while Output 1 listens on V-Port 200 to show a signal state.

7. EasyConfig — Quick V-Port Setup

Typing V-Port numbers one by one for all 16 channels can be tedious. EasyConfig lets you assign a complete block of V-Port addresses in one click. This feature is especially useful when setting up multiple boards — you can configure each board without having to think about individual V-Port numbers. It saves significant time and avoids mistakes when you just want to get going quickly.

Select a board number from the dropdown. The system automatically assigns a sequential range of V-Ports to all 16 input and output channels based on that board number. Board 1 starts at V-Port 1, Board 2 at V-Port 17, Board 3 at V-Port 33, and so on.

EasyConfig dropdown
Select a board number and EasyConfig fills in all V-Port addresses for you.
Use the Locate Board toggle to make a board's onboard LED flash rapidly, so you can identify which physical board you are configuring. This is especially helpful if your boards are not connected by wire and you are configuring them remotely over Wi-Fi.

8. Wi-Fi Settings & Roaming

WiFi settings bar
The Wi-Fi settings area on the main page.

Roaming

Many layouts, especially exhibition layouts, use more than one Wi-Fi access point to cover a large area. Roaming tells the board to periodically check whether a stronger access point is available, and seamlessly switch to it if so.

We recommend leaving Roaming on (the default). Even if you only have a single access point today, roaming causes no harm and means your boards are ready to take advantage of a second access point if you add one later. With roaming on, the board scans every five minutes and only switches if it finds a significantly stronger signal, so there is no disruption during normal operation.

RSSI chart showing roaming improvement
This Wi-Fi signal chart shows a real roaming event. The signal was weak (red) until the board found a closer access point and switched — signal strength jumped to strong (green) immediately.

Boot Delay

On large layouts with many boards, enabling Boot delay adds a short pause (1–15 seconds) before the board connects to Wi-Fi at power-on. This staggers the Wi-Fi connection requests and avoids overwhelming your router when everything powers up at once. This is probably not necessary unless you have a particularly slow router and a large number of boards — say 30 or more. Most users can leave this off.

9. Sharing Wi-Fi Credentials

Once one Panel Controller is connected to your Wi-Fi, you can send those credentials to every other System2 board on the wired CAN network with a single button press. This means you never need to set up Wi-Fi on each board individually.

Share, Revoke, and Erase buttons
The Wi-Fi credential management buttons.
ButtonWhat it does
ShareBroadcasts your Wi-Fi name and password to all boards over the CAN bus. Each board saves the credentials and connects automatically.
RevokeTells all boards on the CAN network to forget the stored Wi-Fi credentials. Useful if you change your Wi-Fi password.
EraseErases the Wi-Fi credentials on this board only. The board will restart its hotspot so you can set up a new network.
The credentials are sent as data packets over the CAN bus wiring. Only boards physically wired to the same CAN bus will receive them.

10. New in Release 25 — At a Glance

Release 25 of the Panel Controller firmware is the most feature-rich update yet. Here is a quick summary of everything that’s new or improved.

New Features

FeatureWhat it does
Live Charts Four real-time charts on the main page — Wi-Fi signal, Wi-Fi traffic, CAN bus activity, and MQTT activity — with 10 minutes of rolling history. Click to zoom.
Wi-Fi Roaming The board automatically finds and switches to the strongest access point on your network. Ideal for large layouts with multiple Wi-Fi access points.
Signed Firmware Updates Every firmware update is cryptographically signed with RSA-3072 and verified before installation. Rollback to any version from V25 onwards.
REST API A full JSON API for reading and controlling the board from scripts, home automation systems, or custom dashboards. 16 endpoints covering every setting.
Backup & Restore Export your entire board configuration as a JSON file. Restore it to the same board or use it as a template for setting up new boards.
CAN Bus Back-Pressure Intelligent TX buffer management prevents message loss during heavy traffic. The board gracefully drops non-critical frames rather than overflowing.
Boot Delay Optional staggered startup prevents Wi-Fi connection storms when many boards power on simultaneously. Probably not needed unless you have 30+ boards.
Refreshed UI Reorganised navigation, colour-coded port sections, tooltips on every element, and a dedicated Wi-Fi settings area. Mobile-friendly responsive layout.

Improvements

FeatureWhat’s improved
Network Monitor Now shows board names alongside CAN IDs, making it easy to see which device sent each message. Colour-coded display with improved performance and appearance.
Wi-Fi Credential Sharing Now supports maximum-length network names (32 characters) and passwords (64 characters) via the new Protocol v4 chunked transfer with checksum validation.
MQTT & JMRI Performance enhancements to both Native MQTT and JMRI protocol modes, including improved message throughput, more reliable reconnection, and reduced latency.
Wi-Fi Reliability Completely rewritten Wi-Fi connection engine with non-blocking state machine and automatic recovery from dropped connections.
CAN Bus Performance Doubled receive and transmit buffer depths, improved frame processing throughput, and added intelligent back-pressure management. Tested and proven at sustained loads well beyond typical layout traffic.

11. Networks & Protocols

System2 uses a concept called Virtual Ports (V-Ports). Every switch, sensor, LED, or servo on your layout is assigned a V-Port number (from 1 to 60,000). When a button is pressed on one board, it sends its V-Port number across the network. Any other board listening for that same V-Port reacts — it really is that simple.

Data travels across two networks using three protocols:

CAN

Wired (CAN Bus)

The default. Ultra-reliable, two-wire connection between boards. Works without Wi-Fi, internet, or any computer at all.

Native MQTT

Wi-Fi

System2's own wireless protocol using V-Port numbering over MQTT. Ideal for layouts where running CAN wires is impractical.

JMRI

Wi-Fi

Connects directly to JMRI layout software using standard MQTT turnout and sensor topics. Two-way communication.

You can change protocol at any time from the main page. Your board can use the CAN wired network and Wi-Fi simultaneously — CAN for board-to-board communication and Wi-Fi for the browser-based configuration pages.
Protocol selection button
The Protocol button on the main page — tap it to cycle between CAN, Native MQTT, and JMRI.

12. Choosing a Protocol

The Protocol button near the bottom of the main page lets you choose how your board communicates with other devices. Tap it to cycle through the three options:

ProtocolNetworkWhen to use it
CAN Wired Default. Best reliability. No internet or computer needed. Use when boards are connected by the two-wire CAN bus cable.
Native MQTT Wi-Fi Wireless communication using System2's own V-Port addressing over an MQTT broker. Use when you cannot run CAN wires.
JMRI Wi-Fi Connects to JMRI model railway software. Uses standard MQTT turnout/sensor topics so JMRI sees your inputs and outputs natively.

When using Native MQTT or JMRI, you also need to provide the address and port of an MQTT broker (a small piece of software that routes messages between devices — Mosquitto is a popular free choice).

Configuring the MQTT Broker

When you select Native or JMRI as the protocol, the header bar reveals two extra fields: Broker and Port.

  1. Tap the Protocol button until it shows Native (for System2 MQTT) or JMRI.
  2. In the Broker field, enter the hostname or IP address of your MQTT broker (e.g. broker1.local or 192.168.0.100).
  3. In the Port field, enter the broker’s listening port. The standard MQTT port is 1883 and is filled in by default.
  4. Click Save Changes, then Reboot to activate the new settings.

The status log will confirm the protocol change and remind you to save and reboot.

MQTT broker settings showing Protocol set to Native with Broker and Port fields
After selecting Native or JMRI, the Broker address and Port fields appear in the header bar. Enter your MQTT broker details here.

Native MQTT — How It Connects

In Native MQTT mode, boards communicate wirelessly through an MQTT broker instead of the CAN bus. Each board connects to your Wi-Fi network and publishes its V-Port states to the broker. Other boards subscribe to the same topics and react accordingly — the broker handles all the message routing.

Native MQTT Mode — Wireless via Broker MQTT Broker (e.g. Mosquitto) Panel Controller mimic panel Servo Driver under baseboard Servo Driver under baseboard Your Wi-Fi Network (2.4 GHz)
In Native MQTT mode, all boards connect to your Wi-Fi network and communicate through a central MQTT broker. No CAN wiring is needed.

JMRI Mode — Computer-Based Control

In JMRI mode, the boards communicate with JMRI (Java Model Railroad Interface) running on a computer. JMRI connects to the same MQTT broker and uses standard turnout and sensor topics. Your boards appear as native JMRI accessories — no extra hardware or adapters required.

JMRI Mode — Computer-Based Layout Control MQTT Broker (e.g. Mosquitto) JMRI on PC / Mac / Pi Panel Controller mimic panel Servo Driver under baseboard Servo Driver under baseboard Your Wi-Fi Network (2.4 GHz)
In JMRI mode, boards and JMRI software both connect to the same MQTT broker over Wi-Fi. JMRI sees your boards as native turnouts and sensors.
The MQTT broker can run on any computer on your network — the same PC running JMRI, a Raspberry Pi, or a dedicated server. Mosquitto is a popular free, open-source broker that works on Windows, macOS, Linux, and Raspberry Pi. See the Mosquitto website and our setup guides for installation instructions.
After changing the protocol, click Save Changes and then Reboot for the change to take effect.

13. Saving, Loading & Restoring

The navigation links give you full control over your settings:

ActionWhat it does
Save ChangesWrites your current settings to the board's permanent memory. Settings survive power cuts and reboots.
Reload ValuesDiscards any unsaved changes and reloads the last saved settings.
Reset to DefaultsRestores factory defaults for all channel and network settings.
Backup DataDownloads a JSON file containing all your settings to your computer. Keep this as insurance.
Restore DataUploads a previously saved backup file and applies it to the board.
RebootRestarts the board. Any unsaved changes are lost.
Restore settings confirmation dialog
Before restoring from a backup, the board shows you what's in the file and asks for confirmation.
Get into the habit of backing up your settings after completing a configuration session. The backup file is small and can save time if you ever need to replace a board.

14. Live Monitoring Charts

Click Show Charts at the top of the main page to reveal four real-time charts covering the last 10 minutes of activity. They update every 5 seconds. Click on any chart to expand it for a larger, more detailed view — click outside the expanded chart to close it.

Live monitoring charts
Four real-time charts: Wi-Fi signal, Wi-Fi traffic, CAN bus activity, and MQTT activity. Click any chart to expand it.
ChartWhat it shows
Wi-Fi RSSISignal strength in dBm. Green is good (above −60), yellow is fair, red is weak.
Wi-Fi TrafficApplication-level packets sent (Tx) and received (Rx) per 5-second interval.
CAN ActivityCAN bus packets per second, averaged over 5-second windows. Shows how busy your wired network is.
MQTT ActivityMQTT messages sent, received, errors, and reconnection attempts (only active when using an MQTT-based protocol).

15. Software Updates

Software updates are one of the most important features of the Panel Controller. Unlike traditional model railway electronics that are frozen at the version they ship with, your Panel Controller can update itself over the internet, gaining new features, improvements, and fixes long after you purchased it. This future-proofs your investment — the board you buy today will keep getting better over time.

The system checks for updates automatically when it starts. If a new version is available, you will see it on the Software Update page, accessible via the Update Firmware link on the main page.

Software Update page
The Software Update page shows the update log and current version status.

What you see on the update page

When updates are available, the page shows a complete release history with summary descriptions of every version released since the one you are currently running. You can expand each release to read detailed notes about what changed.

Full release history
Toggle View full history to see all past releases, each with an install button.
Release notes detail
Expand a release to read detailed notes about what was added, changed, or fixed.

How to install an update

  1. Navigate to the Software Update page by clicking Update Firmware on the main page.
  2. The page will check for the latest version automatically and tell you if you are up to date.
  3. If an update is available, click Install Latest Update (or choose a specific version from the history list).
  4. The board will download and install two files — the firmware (1/2) and the filesystem (2/2). This takes 4–8 minutes depending on your internet speed. Do not power off the board during this process.
  5. Progress is shown in the Update Log with percentage updates. The onboard LED will flash erratically during the download.
  6. When complete, the board reboots automatically onto the new version.
Update in progress
The Update Log shows download progress in real time.
Update complete
Update complete — both files written successfully. The board reboots automatically.

Security

Every firmware update is digitally signed using RSA-PSS cryptography. The board verifies the signature and signing key before applying any update. This ensures only authentic, authorised software from MegaPoints Controllers can be installed.

Signature verification in update log
The update log confirms the RSA-PSS signature and signing key are verified before the update is applied.

Can I go back to an older version?

Yes. The full history view lets you install any previous release. Simply click the Install button next to the version you want. You can roll back to any version from V25 onwards — that is when we introduced the new update system that supports version history and rollback.

An active internet connection (via Wi-Fi) is required for software updates. The CAN wired network alone cannot download updates. Make sure your board is connected to Wi-Fi before starting.

16. Network Monitor

The Network Monitor (accessible from the navigation links) is a powerful diagnostic tool that shows you every CAN bus message in real time. It is invaluable for troubleshooting or simply understanding how your layout communicates.

Network Monitor full view
The Network Monitor page shows a live stream of CAN bus packets with decoded information.

Each row in the monitor shows:

Network Monitor column key
The key explains what each column means.

The monitor also resolves board names automatically — when it recognises a CAN ID from a board that has reported in, it shows the board's hostname for easy identification.

Network Monitor with board names
Board names appear alongside CAN IDs, making it easy to see which device sent each message.

17. Status Log & Diagnostics

The Status Log at the bottom of the main page shows live system messages as they happen. It is the first place to look if something is not behaving as expected.

Status log showing board reports
The Status Log shows network reports, protocol changes, and save confirmations in real time.

Typical messages include:

Connection Loss

If the browser loses its connection to the board (for instance if the board reboots or Wi-Fi drops briefly), a clear yellow banner appears at the top of the page and the board automatically attempts to reconnect.

Disconnected banner
The disconnected banner — the page automatically reconnects when the board comes back online.

18. For the Tinkerer — the Built-in API

We’re opening up the boards for anyone with the appropriate skill set to play with. The Panel Controller includes a full REST API that lets you read and control the board programmatically. If you enjoy scripting, building custom dashboards, or integrating with home automation systems, this is for you.

You can use the API from any tool that speaks HTTP — a web browser address bar, a command line with curl, Python scripts, Node-RED, or even a smartphone app. All responses are in JSON format.

This section is likely to grow based on user feedback. If there is something you would like to be able to do with the API, let us know.

Quick examples

Replace panel-64ee04.local with your board's name or IP address.

Check board status

GET http://panel-64ee04.local/api/status

Returns hostname, IP, software version, protocol, uptime, and more:

{
  "hostname": "panel-64ee04",
  "ip": "192.168.0.63",
  "swVersion": 25,
  "protocol": "CAN",
  "uptime": 86400,
  "location": "Baseboard 25"
}

Read all 16 channels

GET http://panel-64ee04.local/api/channels

Returns an array of all channel configurations and current states.

Toggle a channel

GET http://panel-64ee04.local/api/channel/3/toggle

Toggles channel 3 on or off and returns the new state. You can even do this from a browser address bar!

Change a setting from the browser address bar

GET http://panel-64ee04.local/api/set?location=Signal+Box+North&wifiRoaming=1

Updates one or more settings in a single request.

List all boards on the network

GET http://panel-64ee04.local/api/boards?probe&json

Sends a network probe, waits 3 seconds, then returns a JSON list of every board that responded.

Back up your settings

GET http://panel-64ee04.local/api/settings/export

Downloads a complete backup of all settings as a JSON file.

Full API endpoints

MethodEndpointDescription
GET/api/statusBoard status and identity
GET/api/channelsAll 16 channel configurations
GET/api/channel/{n}Single channel (1–16)
PUT/api/channel/{n}Update channel settings (JSON body)
GET/POST/api/channel/{n}/toggleToggle channel state
GET/api/wifiWi-Fi connection details
GET/api/canCAN bus diagnostics
GET/api/mqttMQTT broker status
GET/api/settingsAll writable settings
PUT/api/settingsUpdate settings (JSON body)
GET/api/set?key=valUpdate settings via URL parameters
GET/api/settings/exportDownload full backup
POST/api/settings/importRestore from backup file
GET/api/boardsList known boards (CSV or JSON)
POST/api/actions/saveSave settings to permanent memory
POST/api/actions/loadReload saved settings
POST/api/actions/defaultsReset to factory defaults
POST/api/actions/rebootRestart the board

For complete API documentation, refer to the dedicated API reference document available through the Documentation link on your board's main page.

19. Technical Reference & Reliability Enhancements

Built for reliability

The System2 platform has been engineered with robustness as a top priority. The Panel Controller is the same system trusted to run The Grand Challenge, Pete Waterman's Guinness World Record-holding portable layout with nearly 700 metres of track and dozens of System2 boards operating simultaneously.

What makes it robust

FeatureDetail
CAN bus The same automotive-grade serial bus used in cars, trucks, and aircraft. It features built-in error detection, automatic retransmission, and bus-off recovery. Immune to most electrical interference found on model railway layouts.
Auto CAN ID Detects CAN ID collisions in real time and resolves them automatically, with NVS-backed persistence. No manual coordination needed.
Wi-Fi auto-reconnect If the Wi-Fi connection drops, the board automatically reconnects. A maximum of 3 automatic reboots are attempted before stopping, to avoid reboot loops.
Wi-Fi roaming Boards scan for and switch to the strongest available access point every 5 minutes when signal quality drops below −70 dBm.
Thread-safe design NVS (settings storage) access is protected by FreeRTOS mutexes to prevent data corruption. MQTT receive uses a lock-free queue between the networking task and the main loop.
CAN TX back-pressure When the CAN transmit buffer is more than 75% full, non-critical frames are dropped to prevent buffer overflow and keep critical messages flowing.
WebSocket rate limiting Browser messages are capped at 50 per second and 200 bytes per message, protecting against runaway scripts or faulty connections.
Signed firmware updates RSA-3072 PSS signature verification with key pinning. Only firmware signed with the authentic MegaPoints OTA key is accepted.
Credential sharing security Wi-Fi credentials sent over CAN use source-locked assembly with timeout, preventing interleaved or spoofed packets from corrupting data.
NVS write optimisation Settings are only written to flash when values actually change (dirty-check against shadow copies), preventing unnecessary flash wear.
Switch debounce Configurable latch timers (default 600 ms) prevent double-triggers from noisy switches or bouncy buttons.

Testing and quality

Every release goes through extensive testing before publication. The firmware includes comprehensive CAN bus stress testing, Wi-Fi failover testing, NVS integrity verification, MQTT broker disconnect/reconnect cycles, and over-the-air update validation including signature verification. The Status Log, Network Monitor, and live charts provide full visibility into the system's operation, making it straightforward to verify that everything is working correctly.

Specifications

ProcessorESP32 dual-core
Inputs16 channels via shift register (active scanning)
Outputs16 LED channels via shift register
CAN bus125 kbit/s, standard frames, 64-deep RX buffer, 32-deep TX buffer
Wi-Fi802.11 b/g/n, 2.4 GHz, WPA2, mDNS hostname resolution
V-Port range1 – 60,000
MQTTAsync client, QoS 1, auto-reconnect with 30s back-off
Settings storageNon-volatile (NVS) — survives power loss and updates
OTA updatesHTTPS from AWS S3, RSA-3072 PSS signed, MD5 verified
Web interfaceAsync web server, WebSocket + SSE live updates

20. Connecting Multiple Boards — the CAN Bus and Wiring

The CAN bus is the wired backbone of a System2 layout. It runs at 125 kbit/s over a simple two-wire connection, and is extremely reliable — the same technology used in cars, aircraft, and industrial machinery.

CAN Bus settings
CAN Bus settings — Auto CAN ID is recommended for most users.

Each board on the CAN network needs a unique CAN ID. With Auto CAN ID turned on (the green toggle), the system manages this for you automatically. If two boards accidentally share an ID, they will detect the collision and pick new, unique IDs within seconds.

Connecting Multiple Boards — the CAN Wiring

The CAN bus is a simple two-wire network that connects all your System2 boards together. It carries switch states, LED commands, and management messages between boards at 125 kbit/s. The wiring is straightforward: run a twisted-pair cable from board to board, connecting H to H and L to L in a daisy-chain.

The simplest setup is two boards connected by a single cable:

Simplest Setup — Two Boards CAN H CAN L Panel Controller mimic panel TERM Servo Driver under baseboard TERM Jumper IN Jumper IN
The simplest CAN bus: two boards, both with termination jumpers fitted. A single twisted-pair cable connects CAN H to CAN H and CAN L to CAN L.

When you add more boards, they simply tap into the same pair of wires. The CAN bus is a linear bus — branch it out from board to board rather than running separate cables back to a central point.

CAN Bus Wiring — Multiple Boards CAN H CAN L Panel Controller mimic panel TERM Servo Driver under baseboard TERM Servo Driver under baseboard TERM DCC Gateway DCC interface TERM Jumper IN Jumper REMOVED Jumper REMOVED Jumper IN DCC Track Bus DCC Accessory address = V-Port address (e.g. Accessory 86 → V-Port 86)
Four boards connected to a CAN bus. Termination jumpers are fitted on the first and last boards only; the two Servo Drivers in between have their jumpers removed. The DCC Gateway connects to your DCC command station — DCC Accessory addresses map directly to V-Port addresses, so sending a command to Accessory 86 translates to V-Port 86. It’s that simple.

Termination Jumpers

Every System2 board has a built-in 120 Ω termination resistor that is activated by a small jumper on the board, labelled TERM. The CAN bus standard requires exactly two termination resistors — one at each physical end of the bus cable. The rule is simple:

If termination jumpers are missing from both ends, the bus may suffer from signal reflections causing intermittent communication errors. If too many jumpers are left in, the signal is over-damped and range is reduced. Always leave exactly two — one at each end.
With only two boards on the bus, both boards keep their termination jumpers fitted — each one is an end of the bus.
Unless you have a specific reason to set CAN IDs manually, leave Auto CAN ID switched on. It is the simplest and most reliable option.