nRF54 Tag/Anchor — Firmware Spec¶
| Product Family | EverTag Station / EverTag Tag nRF54 |
| Firmware Build | nRF54 Tag/Anchor |
| MCU Module | Panasonic PAN611 (nRF54L15) |
| Target Boards | 230220 (Tag), 232200 (Station Base), 232201 (Station Battery) |
| Application Role | Wirepas Mesh Anchor, NFC Configuration, Battery Hold-Up |
| OTAP Area ID | 0x9A06C200 (native) / 0x12A205 (legacy compatibility) |
1. Platform Overview & Shared Codebase¶
The EverTag Station is a modular platform built around the nRF54L15 SoC. The hardware architecture uses a single shared PCB design across all Station variants.
This specification covers the Tag/Anchor firmware build, which targets the 232200 (Station Base) and 232201 (Station Battery) boards, as well as the 230220 (Tag nRF54) board.
1.1 Firmware Binary Compatibility¶
A single firmware binary handles all three boards. The firmware detects the underlying hardware at startup using the V_SAMPLE ADC reading (P1.07) and conditionally initializes peripherals.
1.2 Board Variant Detection (V_SAMPLE -- P1.07)¶
All nRF54-based boards use a resistor divider on P1.07 (AIN3) to identify the base board variant. The divider uses a fixed R_top = 100k (1%) and a board-specific R_bottom in 16.5k steps.
| Board Article | Product | R_bottom | 12-bit ADC | ADC Window | This Build? |
|---|---|---|---|---|---|
| 230220 | Tag nRF54 Base | 0 ohm | 0 | 0--200 | Yes |
| 232200 | Station Base Std | 16.5k | 580 | 400--750 | Yes |
| 232201 | Station Base Battery | 33k | 1016 | 850--1200 | Yes |
| 232202 | Station Base WiFi | 49.9k | 1363 | 1200--1550 | No (Gateway build) |
| 232203 | Station Bat+WiFi | 66.5k | 1634 | 1500--1800 | No (Gateway build) |
| 232204 | Station Bat+Radar | 82.5k | 1851 | 1750--2050 | Yes |
If V_SAMPLE reads in 1200--1749 (232202/232203 gateway range), the firmware must halt and signal a firmware/board mismatch via UART0 and LED1 red fast-flash. See Firmware Compatibility for the full detection circuit, tolerance analysis, and extension board detection (P1.12).
1.3 Initialization Sequence¶
- Boot and read 12-bit ADC on P1.07 (
V_SAMPLE). - Identify the board variant from the ADC window table above.
- If 1200 ≤ value < 1750, abort (firmware/board mismatch -- 232202/232203 gateway board detected).
- Apply the common GPIO mux (directions are identical across all Tag/Anchor variants).
- Initialize the common ST25DV04K NFC interface via I2C.
- Conditionally initialize the remaining peripherals:
- SPI Accelerometer: Initialize only if board is
230220. - Battery Management: Initialize only if board is
232201or232204. - PIR/Radar Sensor: Initialize only if board is
232204. - Gateway features (UART1, Coex): Never initialized in this build.
| Peripheral | 230220 (Tag) | 232200 (Station) | 232201 (Station Bat) | 232204 (Station Bat+Radar) |
|---|---|---|---|---|
| I2C NFC (ST25DV04K) | Init | Init | Init | Init |
| SPI Accelerometer (LIS2DH12TR) | Init | Skip | Skip | Skip |
| LED (SK6812MINI, LED1 only) | Skip | Init | Init | Init |
| LED (Red GPIO) | Init | Skip | Skip | Skip |
| Service Button (P2.06) | Init | Init | Init | Init |
| Battery Mgmt (P1.06, P2.03--P2.05) | Skip | Skip | Init | Init |
| PIR/Radar Sensor (P1.11, P1.13, P1.14, P1.08, P2.09, P1.03) | Skip | Skip | Skip | Init |
| ESP32 / UART1 / Coexistence | Skip | Skip | Skip | Skip |
2. Wirepas Mesh Network Configuration¶
The firmware must incorporate the Wirepas Mesh protocol stack (5.x). To ensure compatibility with legacy tags and existing network infrastructure, the Station anchor adopts specific network parameters.
2.1 Addressing & Identification¶
| Parameter | Value (Hex) | Value (Dec) | Description |
|---|---|---|---|
| Default Network ID | 0x0000DE8E |
56974 |
Default mesh network address. |
| Default Channel | 0x05 |
5 |
Default RF channel. |
| Source Endpoint | 0xA000 |
- | MSB of the ETSI-assigned endpoint. |
| Destination Endpoint | 0x006B |
- | LSB of the ETSI-assigned endpoint. |
| Endpoint Value | 0xA06B |
- | Full CargoBeacon messaging endpoint. |
2.2 OTAP Area IDs¶
Wirepas OTAP uses Area IDs to target firmware updates to specific device groups. Two formats coexist for backward compatibility with the deployed nRF52 tag fleet.
| Area ID | Format | Firmware Build | Description |
|---|---|---|---|
0x12A205 |
Legacy | Tag/Anchor (nRF52) | Original OTAP ID used by the nRF52 tag fleet. Retained for backend and OTAP infrastructure compatibility. |
0x9A06C100 |
Native | Tag/Anchor (nRF52) | Native-format equivalent. OEM 0x1 = legacy nRF52 tag. |
0x9A06C200 |
Native | Tag/Anchor (nRF54) | This build. OEM 0x2 = nRF54 Tag/Anchor. Separates nRF54 anchors from the nRF52 tag fleet in OTAP. |
0x9A06C300 |
Native | Gateway (nRF54) | OEM 0x3 = nRF54 Gateway. See nRF54 Gateway — Firmware Spec. |
Native Area ID structure (32-bit):
| Field | Bits | Value | Description |
|---|---|---|---|
| Prefix | [31:28] | 0x9 |
DECT/proprietary marker. |
| Endpoint | [27:12] | 0xA06C |
CargoBeacon ETSI-assigned endpoint. |
| OEM | [11:8] | 0x2 |
OEM range. 0x1 = nRF52 tag, 0x2 = nRF54 Tag/Anchor, 0x3 = nRF54 Gateway. |
| Reserved | [7:0] | 0x00 |
HW variant byte (populated by build system per board). |
OTAP Separation
Using OEM 0x2 ensures that an OTAP update targeting nRF54 Tag/Anchor devices does not accidentally reprogram the nRF52 tag fleet (OEM 0x1), and vice versa. The gateway firmware (separate spec) will use a different OEM value to prevent cross-flashing between anchor and gateway builds on the shared Station PCB.
2.3 Role & Class Definitions¶
Unlike battery-operated tags (which default to Tag - NRLS / Class 250), the EverTag Station is a wall-powered device and defaults to an Anchor role.
- Default Role: Anchor - opportunistic
- Default Class: 249
- Open Joining: Disabled by default.
2.4 Network Keys¶
- Authentication Key: Default
0xFFFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF(16 bytes, 128-bit) - Encryption Key: Default
0xFFFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFF(16 bytes, 128-bit)
3. Hardware Abstraction & Drivers¶
The nRF54L15 is the system master. It handles all control logic, user input, and configuration storage.
3.1 NFC Configuration (ST25DV04K)¶
The external ST25DV04K EEPROM is the primary user configuration interface via smartphone.
Implementation Requirements:
1. I2C Interface: Communicate with the ST25DV04K on P1.04 (SCL) and P1.05 (SDA).
2. Interrupts: Handle GPO interrupts on P1.09 to trigger configuration sync.
3. TLV Format: Implement a Type-Length-Value (TLV) parser to read/write config records from the NFC memory to the internal nRF54 flash (the single source of truth).
4. Security: The tag requires an 8-character NFC PIN (Default: 12345678) to modify settings. Each character must be printable ASCII 33–126 (no spaces, no control characters).
3.2 Visual Indication & Service Button¶
LED and button behavior are defined in the UI Behavior specification. Key points relevant to the Wirepas anchor role:
- LED1 (SK6812MINI on P0.01): System/Wirepas status. Only LED1 (index 0) is populated on anchor variants (232200, 232201). LED2 is DNP.
- Service button (P2.06, active low): Short press activates LED status display; holds trigger reboot or factory reset.
- LED driver: Must use a non-blocking driver (e.g., PWM/I2S mapping) to drive the 800 kHz single-wire protocol without stalling the Wirepas stack.
4. Battery Management (Variant 232201)¶
If the ADC detection identifies board variant 232201, the firmware must initialize the battery monitoring tasks.
4.1 AC Power Failure & Hold-Up Mode¶
The Station Battery (232201) contains a LiFePO4 backup battery. Its primary purpose as a Wirepas Anchor is to provide hold-up routing during a temporary AC power loss.
Behavior during AC loss (DC_PRESENT goes HIGH):
1. Device continues routing Wirepas traffic.
2. Periodically read BAT_VOLTAGE on P1.06 (AIN2) using the SAADC.
3. When voltage drops below the ~2.5V critical threshold:
- Issue a graceful Wirepas leave request to the mesh network so neighbors can re-route.
- Wait for the leave to propagate or timeout.
- Put the nRF54 into deep sleep / power off.
4.2 Charger GPIO Interface¶
Battery status signals (active low, open-drain with pull-ups):
- P2.03 (DC_PRESENT): LOW = DC power present, HIGH = running on battery. Source: BSS138 MOSFET sensing 5V rail.
- P2.04 (CHARGE_STATUS): LOW = charging in progress. Source: MCP73123 STAT pin 7 (open-drain, 10k pull-up).
- P2.05 (CHARGE_ENABLE): Output. Drive LOW to enable charging, HIGH to disable.
5. Configuration Data Dictionary¶
All persistent configuration is stored in the nRF54 internal flash using the TLV format. Key parameters are inherited from the standard CargoBeacon specifications, with defaults tailored for the wall-powered Station architecture.
5.1 System & Security¶
| Parameter ID | Description | Default Value | Updatable Via |
|---|---|---|---|
ADMIN_PIN |
8-character PIN to unlock NFC writes (ASCII 33–126, no spaces) | 12345678 |
NFC, CLI |
PWR_EN |
Power enable/disable (virtual software switch) | Enabled | NFC |
BTN_SHUTOFF_TO |
Button hold duration to shut off (0 = disabled) | 0 (Disabled) |
NFC |
BAT_HOLDUP_LATENCY |
Hold-up latency on AC loss before leave | 300 seconds |
NFC, CLI |
5.2 Wirepas Network¶
| Parameter ID | Description | Default Value | Updatable Via |
|---|---|---|---|
NET_ID |
Wirepas network address (up to 3 bytes) | 56974 |
NFC, CLI |
NET_CH |
Wirepas RF channel | 5 |
NFC, CLI |
TAG_ROLE |
Wirepas node role | Anchor - opp |
NFC, CLI |
TAG_CLASS |
Wirepas grouping class | 249 (Anchor) |
NFC, CLI |
TAG_ID |
Mesh tag identifier (up to 4 bytes) | 3 LSB of BT-address | NFC, CLI |
AUTH_KEY |
Mesh authentication key (16 bytes) | 0xFFFF... |
NFC, CLI |
ENC_KEY |
Mesh encryption key (16 bytes) | 0xFFFF... |
NFC, CLI |
OPEN_JOIN_EN |
Auto network provisioning enable | Disabled | NFC |
5.3 Application & Positioning¶
Hardware Variations
For the 232200 and 232201 Station variants without an accelerometer, movement-based parameters (MOV_THRESHOLD, MOV_TIMEOUT, POS_INT_MOV) are ignored by the firmware.
| Parameter ID | Description | Default Value | Updatable Via |
|---|---|---|---|
POS_INT_IDLE |
Idle positioning interval (default-state) | 28800 seconds |
NFC, CLI, OTA |
POS_INT_MOV |
Movement positioning interval | 120 seconds |
NFC, CLI, OTA |
POS_INT_ALERT |
Alert positioning interval | 60 seconds |
NFC, CLI, OTA |
MOV_THRESHOLD |
Movement detection threshold for accelerometer | 800 mG |
NFC, CLI, OTA |
MOV_TIMEOUT |
Idle timeout to return to default-state | 30 seconds |
NFC, CLI, OTA |
ALERT_TIMEOUT |
Alert timeout to return to default-state | 120 seconds |
NFC, CLI, OTA |
BLOC_REP_INT |
Business logic report interval to backend | 60 minutes |
NFC, CLI, OTA |
5.4 Bluetooth Beaconing (Out-of-Network)¶
| Parameter ID | Description | Default Value | Updatable Via |
|---|---|---|---|
CBCN_MODE |
CargoBeacon advertisement mode (Off/On/No Net) | Off | NFC, OTA |
CBCN_TX_PWR |
CargoBeacon TX Power (-4dBm to +8dBm) | 0 dBm |
NFC, OTA |
CBCN_ADV_INT |
CargoBeacon advertisement interval | 2000 ms |
NFC, OTA |
IBCN_MODE |
iBeacon advertisement mode (Off/On/No Net) | Off | NFC, OTA |
IBCN_TX_PWR |
iBeacon TX Power (-4dBm to +8dBm) | 0 dBm |
NFC, OTA |
IBCN_ADV_INT |
iBeacon advertisement interval | 2000 ms |
NFC, OTA |
IBCN_UUID |
iBeacon UUID | f2746fd6... |
NFC, OTA |
IBCN_MAJOR |
iBeacon Major ID | 0x00 + TagID byte 3 |
NFC, OTA |
IBCN_MINOR |
iBeacon Minor ID | TagID bytes 2 & 1 | NFC, OTA |
GBCN_MODE |
GATT Service Beacon mode (Off/On/No Net) | Off | NFC, OTA |
GBCN_TX_PWR |
GBCN TX Power (-4dBm to +8dBm) | 0 dBm |
NFC, OTA |
GBCN_ADV_INT |
GBCN advertisement interval | 2000 ms |
NFC, OTA |
GBCN_UUID |
GBCN 128-bit Service UUID | (Project specific) | NFC, OTA |
6. Production Debug Interface¶
UART0 on the TC2030 J1 connector (P0.02 TX, P2.07 RX) at 115200 baud, 8N1. The CLI is primarily used for the boot self-test during production programming. UART0 auto-disables 5 minutes after flashing to reduce power consumption and free the peripheral for other use.
RF Certification & Peripheral Tests
Radio test commands (radio cw, radio txmod, radio rx) and peripheral test commands (nfc read, acc read, adc read, etc.) are not included in the Tag/Anchor build. RF certification testing is performed via the Gateway firmware build, which keeps the UART active and exposes the full radio and peripheral CLI. See Firmware Compatibility — CLI Command Set for the gateway-available commands.
6.1 Available CLI Commands¶
| Command | Purpose |
|---|---|
variant |
Report detected board variant (e.g., "232201"). |
status |
Full system status (board, radio, peripherals). |
version |
Firmware version, build date, board article. |
config get <key> / config set <key> <value> |
Read/write config in nRF54 flash. |
config dump |
Print all current TLV configuration settings. |
config factory-reset |
Erase all config, return to defaults. |
reset |
System reset. |