Your layout. Your way. One board at a time.
User Reference — Release 27
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:
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).
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.
The annotated photograph below shows a Panel Controller with all its connectors and key features identified.
| Feature | Description |
|---|---|
| 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. |
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.
http://4.3.2.1.
http://panel-64ee04.local) or by using the IP address shown in the
status bar.
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:
| # | Section | What it does |
|---|---|---|
| 1 | Header | Shows board name, product image, and your location description. |
| 2 | Live Charts | Wi-Fi signal, traffic, CAN activity, and MQTT activity (toggle with Show/Hide Charts). |
| 3 | Port Configuration | Set up all 16 input and 16 output channels. |
| 4 | EasyConfig | Quickly assign V-Port addresses for a whole board in one go. |
| 5 | CAN Bus | CAN ID settings. |
| 6 | Wi-Fi | Roaming, boot delay, and credential sharing. |
| 7 | Navigation Links | Save, Load, Backup, Restore, Update, Reboot, Network Monitor, and Documentation. |
| 8 | Status Bar | Software version, IP address, board name, and connected Wi-Fi network. |
| 9 | Protocol | Switch between CAN, Native MQTT, and JMRI. |
| 10 | Status Log | Live messages showing network activity, board reports, and system events. |
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.
| Column | What it controls |
|---|---|
| Phys Port | The physical connector number on the board (1–16). This is fixed. |
| V-Port | The 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 Type | The type of switch or sensor connected (see below). |
| Invert | Reverses the sense of the input — useful if your wiring reads backwards. |
| RGB / LED Colour | Sets the Red, Green, and Blue brightness for this channel's LED (0–255 each). Combine values to create any colour. |
| B/G | Background mode — when ticked, the LED shows a dim background colour when off, rather than being completely dark. |
| Type | Best for |
|---|---|
| Stateless | The default switch type. Click to toggle the V-Port. |
| Push to make btn | Momentary push button — press to toggle the state. |
| Toggle Switch | On/off toggle switch — state follows the switch position. |
| Occupancy Sensor | Track block detector — active when the block is occupied. |
| Points Pos Sensor | Points position feedback — indicates the actual position of the turnout. |
| Column | What it controls |
|---|---|
| Phys Port | The physical LED output number on the board (1–16). |
| V-Port | The virtual port this output listens to. When a matching V-Port message arrives (from any board on the network), this LED responds. |
| Invert | Reverses the LED state — lights when off and vice versa. |
Setting up 16 channels does not have to be slow. The interface includes several shortcuts to save you time:
| Shortcut | Where | What 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. |
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.
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.
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.
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.
| Button | What it does |
|---|---|
| Share | Broadcasts your Wi-Fi name and password to all boards over the CAN bus. Each board saves the credentials and connects automatically. |
| Revoke | Tells all boards on the CAN network to forget the stored Wi-Fi credentials. Useful if you change your Wi-Fi password. |
| Erase | Erases the Wi-Fi credentials on this board only. The board will restart its hotspot so you can set up a new network. |
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.
| Feature | What 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. |
| Feature | What’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. |
Release 26 builds on the foundation of V25 with a focus on reliability, cloud backup, and a polished user experience. If you are upgrading from V25, here is everything that has changed.
| Feature | What it does |
|---|---|
| Cloud Backup & Restore | Your board settings are automatically backed up to the cloud whenever you save changes. You can also back up manually, browse your backup history, lock important backups, delete old ones, and restore any backup with one click. Your settings are safe even if the board is lost or damaged. |
| Firmware Validation & Rollback | After installing an update, you have a 10-minute window to check everything works. If you do not accept the update, the board automatically rolls back to the previous version. You can also roll back manually at any time from the Update page. |
| Recovery Mode | If something goes seriously wrong, hold the button at power-on for 10 seconds to enter recovery mode. The board downloads a known-good firmware from the cloud and restores itself. |
| Local Time | Timestamps in the status log and CAN monitor now show your local time instead of board uptime. Time is set automatically from the internet -- no configuration needed. |
| Live Dashboard | A dedicated dashboard page shows system health at a glance -- memory usage, Wi-Fi signal, CAN bus statistics, MQTT status, and a full channel I/O status table. All updating live. |
| Ownership Transfer | Selling or giving away your board? The new "Change registered owner" option lets a new owner register the board in their name. |
| Update Progress Bars | The Software Update page now shows real-time progress bars for both firmware and filesystem downloads, so you can see exactly how far along the update is. |
| Pre-release Channel | Opt in to test new features before they are officially released. A toggle on the Update page lets you switch between the stable and pre-release channels. |
| Area | What changed |
|---|---|
| Navigation | Every page now has a consistent navigation footer with links to Settings, Dashboard, CAN Monitor, Update, and the User Guide. No more hunting for links to other pages. The main settings page is cleaner with less clutter. |
| Update Engine | Completely rewritten for reliability. Downloads are faster, memory usage is lower, and updates work reliably even on boards with limited free memory. |
| Memory Efficiency | Internal buffers have been optimised, freeing up 25KB of RAM. The settings page loads faster and more reliably, especially on busy boards. |
| Version Checking | The board checks for updates in the background every 4 hours. If an update is available, you will see a notification in the status log with a link to the Update page. No need to check manually. |
| Settings Page | CAN bus, Wi-Fi, and protocol settings are now combined into a single Network section. The page is easier to navigate with collapsible sections that remember their open/closed state. |
These features are not exclusive to the Panel Controller. All System2 boards -- including Mini Panel, Input-32, Output-32, and Servo-8 -- will receive the same updates as we roll V26 out across the product range. If you have multiple System2 boards on your layout, they will all benefit from cloud backup, firmware validation, the improved update engine, and the refreshed user interface.
V27 builds on Release 26 with improved filtering, instant rollback, and better reliability under the hood.
| Feature | What it does |
|---|---|
| CAN Monitor Filtering | The Network Monitor now has a full filter bar at the top. You can filter live CAN traffic by CAN ID (single value or range), board name, V-Port (single or range), RFID tag text, and message type (Port, RFID, or Management). A Pause button freezes the display so you can examine packets without scrolling. The filter bar turns pink when any filter is active, and shows a running count of shown vs filtered packets. All filtering runs in the browser -- no extra load on the board. |
| Instant Rollback Button | The firmware validation banner now shows an orange "Roll back now" button alongside the green "Keep this version" button. Instead of waiting for the 10-minute countdown to expire, you can immediately roll back to the previous firmware with one click. The button only appears when a previous firmware version is available. |
| User Guide Link | A User Guide link now appears in the footer navigation on every page, giving you one-click access to this document directly from your board. |
| Area | What changed |
|---|---|
| TLS Reliability | A dedicated TLS buffer pool pre-allocates memory at boot, before the heap becomes fragmented. This means cloud backup and version checks now work reliably even when the board has been running for a long time. Previously, these features could fail if the heap was too fragmented to allocate the 33KB needed for a TLS handshake -- now only 17KB of contiguous memory is required. |
| Memory Efficiency | CAN bus driver buffers returned to standard sizes, and the internal packet statistics system has been rewritten to use a compact ring buffer instead of a large timestamp array. These changes free approximately 10KB of RAM for other tasks. |
| Rollback Safety | The countdown timer on the validation banner no longer flickers when the browser reconnects. Rollback and auto-rollback events are now logged to the cloud dashboard for diagnostics. |
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:
The default. Ultra-reliable, two-wire connection between boards. Works without Wi-Fi, internet, or any computer at all.
System2's own wireless protocol using V-Port numbering over MQTT. Ideal for layouts where running CAN wires is impractical.
Connects directly to JMRI layout software using standard MQTT turnout and sensor topics. Two-way communication.
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:
| Protocol | Network | When 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).
When you select Native or JMRI as the protocol, the header bar reveals two extra fields: Broker and Port.
broker1.local or 192.168.0.100).The status log will confirm the protocol change and remind you to save and reboot.
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.
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.
The navigation links give you full control over your settings:
| Action | What it does |
|---|---|
| Save Changes | Writes your current settings to the board's permanent memory. Settings survive power cuts and reboots. |
| Reload Values | Discards any unsaved changes and reloads the last saved settings. |
| Reset to Defaults | Restores factory defaults for all channel and network settings. |
| Backup Data | Downloads a JSON file containing all your settings to your computer. Keep this as insurance. |
| Restore Data | Uploads a previously saved backup file and applies it to the board. |
| Cloud Backup | Opens the cloud backup dialog where you can back up to the cloud, browse your backup history, restore, lock, or delete backups. Requires free product registration. |
| Reboot | Restarts the board. Any unsaved changes are lost. |
Cloud backup takes the safety of your board settings to the next level. While the local Backup Data button saves a file to your computer, cloud backup stores your settings securely on the MegaPoints cloud servers. Your settings are safe even if your computer and your board are both lost or damaged.
Cloud backup requires a free product registration. Once registered, backups happen automatically every time you save changes. You can also back up manually at any time.
On the main settings page, click Cloud Backup in the action bar (between Restore and Reboot). If you are registered, the link appears in purple. If not, it appears greyed out with a tooltip explaining that registration is needed.
Example: You have just finished configuring all 16 ports on your new Panel Controller. You click Save Changes, then open Cloud Backup and click Backup Now. The status shows "Backup saved successfully" in green. Your configuration is now safely stored in the cloud.
Example: You replaced a faulty Panel Controller with a new one. After connecting to Wi-Fi and registering, you open Cloud Backup. Your previous board's backups are there (they are stored by MAC address, but you can see them from the MegaPoints dashboard). You click Restore on the most recent one, and within seconds your new board has all the same port mappings, CAN ID, and network settings as the old one.
The system keeps up to 5 unlocked backups per board. When a 6th is created, the oldest unlocked backup is automatically removed. To protect an important backup from rotation:
Every time you click Save Changes on the main settings page, the board automatically sends a backup to the cloud in the background. You do not need to do anything -- it just happens. If the board cannot reach the cloud (for example, your internet is down), it simply tries again next time you save.
If you sell or give away your board, the new owner will need to register it in their name. A small "Change registered owner" link appears below the action bar on the main settings page. Clicking it clears the current registration so the new owner can register fresh.
Click Show Charts at the top of the main page to reveal four real-time charts covering the last 5 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.
| Chart | What it shows |
|---|---|
| Wi-Fi RSSI | Signal strength in dBm. Green is good (above −60), yellow is fair, red is weak. |
| Wi-Fi Traffic | Application-level packets sent (Tx) and received (Rx) per 5-second interval. |
| CAN Activity | CAN bus packets per second, averaged over 5-second windows. Shows how busy your wired network is. |
| MQTT Activity | MQTT messages sent, received, errors, and reconnection attempts (only active when using an MQTT-based protocol). |
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 board checks for updates automatically every 4 hours. If a new version is available, you will see a notification in the Status Log on the main page with a direct link to the Update page.
The update page shows a complete release history with a summary of every version released since the one you are currently running. Click the arrow next to any release to read detailed notes about what changed.
From V26 onwards, every update includes a 10-minute validation window. After the board reboots onto the new firmware, you will see a yellow banner at the top of the page with a countdown timer:
This gives you time to check that everything is working properly before you commit to the new version. You have four choices:
| Action | What happens |
|---|---|
| Click "Keep this version" | The new firmware is accepted permanently. The validation banner disappears and the board continues running the new version. This is the normal case. |
| Click "Roll back now" | Immediately rolls back to the previous firmware without waiting for the countdown. The board reboots onto the previous version within a few seconds. This button only appears when a previous firmware version is available on the board. |
| Let the timer expire | If you do nothing for 10 minutes, the board automatically reboots back to the previous version. This protects you if the new firmware has a problem that prevents you from reaching the settings page. |
| Reboot the board | If you reboot (via the Reboot button or by cycling power) before accepting, the board reverts to the previous version immediately. |
Example: You update from V25 to V26. The board reboots and you see the validation banner. You check that your ports are working, the CAN monitor shows traffic, and the dashboard looks right. Everything is fine, so you click "Keep this version". Done -- you are now on V26 permanently.
Example: You update and the board reboots, but something does not look right -- perhaps a chart is missing or a setting looks wrong. You simply wait for the 10-minute timer to expire. The board reboots itself and you are back on the previous version, exactly as it was before the update. No harm done.
Even after accepting an update, you can roll back to the previous version at any time. On the Update page, you will see a Rollback button showing the version you can revert to. Click it and the board switches back immediately.
Example: You accepted V26 last week, but you have discovered an issue with your particular setup. Visit the Update page, click "Rollback to V25", and you are back to the version that was working. You can try V26 again later when an updated beta is available.
In the unlikely event that your board will not start properly after an update, there is a last-resort recovery option:
You can also trigger recovery mode by connecting a USB cable and typing RECOVER followed by Enter in the serial monitor.
If you would like to try new features before they are officially released, you can opt in to the pre-release channel. On the Update page, toggle the Pre-release channel switch. You will see beta versions appear alongside stable releases.
Pre-release firmware is tested but may contain bugs. It is not recommended for boards in permanent use on your layout. The firmware validation window applies to pre-release updates too, so you can always roll back if needed.
Example: You hear about an exciting new feature being tested. You toggle on pre-release, see "V27 beta 3" appear, and install it. After testing, you decide it is not ready for your layout, so you roll back to V26 stable. No problem.
Every firmware update is digitally signed using RSA-PSS cryptography. The board verifies the signature before applying any update. Only authentic software from MegaPoints Controllers can be installed.
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.
Each row in the monitor shows:
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.
From V27 beta 1, the Network Monitor includes a filter bar at the top of the packet display. This lets you focus on exactly the traffic you need to see, even on a busy layout with hundreds of messages per second.
| Filter | What it does |
|---|---|
| CAN ID | Show only packets from a specific CAN address (e.g. 1234) or a range
(e.g. 1000-2000). Leave blank to show all addresses. |
| Board | Filter by board name (partial match, not case-sensitive). Only packets from boards whose name contains the text you type will be shown. |
| V-Port | Show only packets for a specific virtual port number or range. Only applies to port-state messages (D0=1). |
| RFID | Filter by RFID tag ID (partial match). Only packets with a decoded RFID tag matching the text will be shown. |
| Type checkboxes | Toggle visibility of message types independently: Port (channel state changes), RFID (tag reads), and Mgmt (reports, announces, credential sharing). Use All to toggle all three at once. |
| Pause | Freezes the display. New packets are discarded while paused, letting you examine the current output without it scrolling away. |
When any filter is active, the filter bar turns pink and a counter shows how many packets have been shown versus filtered out. Click Clear to reset all filters and return to the unfiltered view.
All filtering runs entirely in the browser -- there is no additional load on the board and no network overhead.
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.
Local timestamps: If your board has an internet connection, the status log and CAN monitor show your local time (e.g. "14:32:05") rather than board uptime. Time is set automatically from the internet using your location -- no configuration needed. If the internet is unavailable, the board falls back to showing uptime since last reboot.
Typical messages include:
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.
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.
Replace panel-64ee04.local with your board's name or IP address.
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"
}
GET http://panel-64ee04.local/api/channels
Returns an array of all channel configurations and current states.
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!
GET http://panel-64ee04.local/api/set?location=Signal+Box+North&wifiRoaming=1
Updates one or more settings in a single request.
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.
GET http://panel-64ee04.local/api/settings/export
Downloads a complete backup of all settings as a JSON file.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/status | Board status and identity |
| GET | /api/channels | All 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}/toggle | Toggle channel state |
| GET | /api/wifi | Wi-Fi connection details |
| GET | /api/can | CAN bus diagnostics |
| GET | /api/mqtt | MQTT broker status |
| GET | /api/settings | All writable settings |
| PUT | /api/settings | Update settings (JSON body) |
| GET | /api/set?key=val | Update settings via URL parameters |
| GET | /api/settings/export | Download full backup |
| POST | /api/settings/import | Restore from backup file |
| GET | /api/boards | List known boards (CSV or JSON) |
| POST | /api/actions/save | Save settings to permanent memory |
| POST | /api/actions/load | Reload saved settings |
| POST | /api/actions/defaults | Reset to factory defaults |
| POST | /api/actions/reboot | Restart the board |
For complete API documentation, refer to the dedicated API reference document available through the Documentation link on your board's main page.
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.
| Feature | Detail |
|---|---|
| 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. |
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.
| Processor | ESP32 dual-core |
| Inputs | 16 channels via shift register (active scanning) |
| Outputs | 16 LED channels via shift register |
| CAN bus | 125 kbit/s, standard frames, 64-deep RX buffer, 32-deep TX buffer |
| Wi-Fi | 802.11 b/g/n, 2.4 GHz, WPA2, mDNS hostname resolution |
| V-Port range | 1 – 60,000 |
| MQTT | Async client, QoS 1, auto-reconnect with 30s back-off |
| Settings storage | Non-volatile (NVS) — survives power loss and updates |
| OTA updates | HTTPS from AWS S3, RSA-3072 PSS signed, MD5 verified |
| Web interface | Async web server, WebSocket + SSE live updates |
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.
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.
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:
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.
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:
| Version | Date | Changes |
|---|---|---|
| V27 | 4 April 2026 | New: CAN Monitor packet filtering with filter bar (19). New: Instant rollback button on firmware validation banner. New: User Guide link in footer navigation. Improved: TLS buffer pool for reliable cloud operations. Improved: Memory efficiency with compact ring buffers. Improved: Rollback timer stability. Promoted all V27 beta features to stable. |
| V26 | 27 March 2026 | Added: Cloud Backup & Restore section (15). Added: What's New in V26 summary (11). Rewritten: Software Updates section with validation, rollback, recovery mode, progress bars, and pre-release channel. Added: Local time in status log. Added: Ownership transfer. Updated: Saving section with cloud backup reference. Updated: Navigation and UI descriptions to reflect standardised footer menus and reorganised settings page. Added: Revision history. |
| V25 | 23 March 2026 | Initial release of this document. Covers all V25 features including live charts, Wi-Fi roaming, signed firmware updates, REST API, backup & restore, CAN bus back-pressure, boot delay, EasyConfig, and the refreshed user interface. |