Implementing ETCS Level 2: Continuous Cab Signalling in Practice
ETCS Level 2 replaces lineside signals with radio‑based movement authorities, allowing continuous cab signalling. This guide walks through the core mechanism, shows a concrete balise and radio configuration example, and highlights limits and common pitfalls for safe deployment.
16 Nov 2025, 01:59 UTC

Why ETCS Level 2 Matters
ETCS Level 2 replaces traditional lineside signals with radio‑based movement authorities (MAs). It delivers continuous cab signalling, higher line speeds, and reduced wayside infrastructure. The key benefit is that the train receives MA updates every few seconds via GSM‑R, so the driver never has to look at a physical signal.
How Level 2 Works
At the core of Level 2 is a two‑fold data flow:
- Balise‑to‑train position reference – fixed balises on the track transmit short telegrams that let the onboard unit know its exact location.
- Radio‑to‑train movement authority – the Radio Infill Unit (RIU) at the Radio Block Centre (RBC) sends MA packets (Packet 15/16) over GSM‑R to the train’s ETCS unit.
The balises are typically arranged in a group of three: BG1 (header), BG2 (position), BG3 (speed profile). A balise group header (BG1) contains the group identifier and a checksum; BG2 carries the exact track position; BG3 includes a speed profile that the train can use while the MA is not yet received. When the train passes a balise group, the onboard unit decodes the telegrams and opens a radio session to the RIU. The RIU then issues a MA that extends beyond the balise group, allowing the train to continue without waiting for the next balise.
Example Configuration
Below is a minimal configuration that could be used in a lab test bench. The values are placeholders and must be replaced with real track identifiers and network parameters.
# Balise Group 1 – Header (BG1)
# NID_BG = 1, NID_PACKET = 1 (BG header), NID_C = 1
# Format: NID_BG | NID_PACKET | NID_C | CRC
BG1 = 0x01 0x01 0x01 0xABCD
# Balise Group 2 – Position (BG2)
# NID_PACKET = 2 (BG position), L_PACKET = 10, Q_DIR = 0, D_REF = 5000
BG2 = 0x02 0x0A 0x00 0x13 0x88
# Balise Group 3 – Speed Profile (BG3)
# NID_PACKET = 3 (BG SP), L_PACKET = 15, Q_DIR = 0, D_REF = 5000, V_MAX = 120
BG3 = 0x03 0x0F 0x00 0x13 0x88 0x78
# Radio Session Parameters (RIU)
# Cell ID, Frequency, Encryption key ID
RIU_CONFIG = {
"cell_id": "RBC001",
"frequency": "900MHz",
"encryption_id": 42
}
To program the balises, use the manufacturer’s balise programming tool. The tool typically runs on a Windows PC and connects to the balise via a serial or Ethernet interface. Example command (pseudo):
# Run balise programer with config file
balise_prog.exe --config balise_group1.cfg --port COM3
On the train side, the onboard ETCS unit must be configured to recognise the balise group ID and to initiate a GSM‑R session when the group is passed. The unit’s configuration file might contain:
# ETCS onboard configuration
balise_group_id=1
radio_cell_id=RBC001
radio_frequency=900MHz
After both sides are programmed, the train will decode the balise telegrams, open a radio session to the RIU, and receive MA packets. The MA packet (Packet 15) typically looks like:
# Packet 15 – Movement Authority
# NID_PACKET = 15, L_PACKET = 20, Q_DIR = 0, D_REF = 5000, D_MA = 2000, V_MAX = 120
MA_PACKET = 0x0F 0x14 0x00 0x13 0x88 0x07 0xD0 0x78
Limits and Common Pitfalls
- GSM‑R Coverage – Level 2 requires continuous radio coverage. In tunnels or remote sections, a coverage gap forces the train to fall back to Level 1, which may reduce line speed if no lineside signals are present.
- Balise Coding Errors – A wrong NID_PACKET or checksum will cause the onboard unit to ignore the telegram. This results in missing position updates and can trigger an emergency brake.
- Transition Zones – When handing over from Level 2 to Level 1 (or vice‑versa), the MA must be extended or reduced precisely. Overlaps can cause the train to stop unnecessarily; gaps can lead to unsafe overruns.
- Radio Interference – Antenna misalignment or external interference can drop the GSM‑R link. The unit must detect a loss and immediately switch to Level 1.
- Synchronization – The balise group must be timed so that the MA length covers the distance to the next balise. Mis‑calculated D_MA can cause the train to receive a MA that ends before the next balise, forcing an unexpected stop.
Practical Verification Steps
- Simulate Balises – Use a balise simulator to broadcast the configured telegrams. Verify that the onboard unit logs the receipt of each balise packet.
- Check Radio Session – Monitor the ETCS unit’s logs for a successful GSM‑R session establishment. The log should show a “Session Opened” event followed by receipt of MA packets.
- Validate MA Content – Confirm that the D_MA and V_MAX in the MA packet match the values programmed into the balise group. Any mismatch should be investigated.
- Drop GSM‑R Link – Simulate a radio outage. The unit should log a “Radio Lost” event and transition to Level 1, displaying the appropriate lineside signal aspect.
- Measure Speed Profile – During a test run, record the train’s speed and compare it to the MA’s speed profile. The train should not exceed the V_MAX until the MA ends.
After completing these checks, the system can be considered ready for deployment, provided that all real‑world constraints (e.g., actual track geometry and radio coverage maps) have been validated.
Take‑away
ETCS Level 2 delivers continuous cab signalling by combining balise position reference with radio‑based movement authorities. A correct configuration of balise telegrams, radio parameters, and transition logic is essential. Verify each component in a controlled environment before field deployment to avoid costly safety incidents.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.