Skip to content

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

  1. Boot and read 12-bit ADC on P1.07 (V_SAMPLE).
  2. Identify the board variant from the ADC window table above.
  3. If 1200 ≤ value < 1750, abort (firmware/board mismatch -- 232202/232203 gateway board detected).
  4. Apply the common GPIO mux (directions are identical across all Tag/Anchor variants).
  5. Initialize the common ST25DV04K NFC interface via I2C.
  6. Conditionally initialize the remaining peripherals:
  7. SPI Accelerometer: Initialize only if board is 230220.
  8. Battery Management: Initialize only if board is 232201 or 232204.
  9. PIR/Radar Sensor: Initialize only if board is 232204.
  10. 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.