Skip to content

Firmware Changelog

Changes from 1.1.2

Fixes

  • USB descriptor returns correct serial number (device id).
  • USB CCID aligns CCID max size to 272.
  • USB CCID returns correct slot status notifications.
  • Devwork action fget can now get "/".
  • Better error handling for fget when files exceed max JSON size (~1 KB limit).

(No standalone release notes — changes are listed under 1.1.3.)


Changes from 1.0.16

Features

  • Added self‑test for LoRa board (not yet operational).

Fixes

  • Persist configuration after 2 seconds (was 10 seconds).
  • Restore persisted config when entering DFU/PROV states.
  • Avoid losing persisted config when going UNALLOC → DFU or PROV.
  • Fix HTTPS regression from 1.1.1: CA certificates could not be parsed due to prj.conf options after WPA‑Enterprise removal.
  • Fix HTTP download file‑system access (don’t create file in network thread).
  • When an alert is cancelled from the backend, the “not in alerting” state is resent over MQTT even if the device was not in alerting.

Changes from 1.0.15

Features

  • Enable nRF70 SYSTEM+RAW binary for raw packet transmission. Requires DFU of wifi_update.bin.
  • Enable Cisco CCX code with configurable destination and source (default Airista OUI).
  • Added net.<networkname>.state data element to show active network connection state.

Fixes

  • Fix alttext localisation for icons and msglist replacement text.
  • Update user self‑test to be more interactive (validates buttons, LEDs, vibration, sound, etc.).
  • Update production self‑test to this source; fix self_test_usb().
  • Button long‑press time returned to 3 seconds.

Removals

  • WPA‑Enterprise code removed (untested and flash space too full).

Changes from 1.0.14

Features

  • Added pb (page back) action to go back one page in the history stack.
  • Cryptomgr / dedpinchk: first version of key‑based IP access (disabled).
  • Provisioning mode timeout (without activity) extended to 180 seconds at startup.

Fixes

  • Provisioning mode cleans up persisted data (if any).
  • Long‑press time changed to 2 seconds (was 3 seconds).
  • netwifi: uses checkPeriodSecs from config for connection checks.
  • Fix bug when deleting all messages from msglist while DED is open showing an unread message (assert, buffer use after free).

Removals

  • Cryptomgr, LoRa network connection, uiperimgr, dedpinchk (flash space saving).

Changes from 1.0.13

Features

  • Added onBlue (long press) option for alert trigger.
  • Ability to delete all messages in alert msglist over TLV (T=0x05, L=0x00).
  • Ability to persistently update network config auth sections via received JSON messages.
  • Added time device to manage time sync to wall clock times.
  • Added key (security) manager initial version to handle PINs (partial).
  • Added access control via key for IPs (partial).

Notes

  • Released for client deployment.

Changes from 1.0.12

Features

  • ALP: created wifialp device; pushIP/pushPort config moved here.
  • ALP: added enabled flag to send regular HELLO_REQUEST packets.
  • ALP: parses some HELLO_RESPONSE commands.
  • Msglist: widget now supports multi‑line entries. Line height set by formatter.mlh. Newline in mfmt via field name "NL".
  • Msglist: max number of entries can be set via DED param.
  • Alertmgr: can trigger duress by pressing Blue and Red simultaneously (onBlueRed:true, origin=10).
  • Alertmgr: can trigger duress by pulling duress then pressing Blue, Red, Grey, or Blue+Red (appropriate config flags and origin causes).
  • DED msglist: can include "closeded" action in a widget on the skeleton page to close the DED.
  • Added "kbd" DED type for string/number input using a user‑supplied skeleton IP.
  • DED: msglist and kbd DEDs now flash (invert) widgets in their skeleton pages when pressed.

Fixes

  • Fixed formatter option percent_circle.
  • BQ battery gauge chip config updated to use bin for battery detection.
  • netwifi: changes to make WiFi connection handling more robust.

Changes from 1.0.11

Features

  • Added persistence of dynamic data.
  • Implementation of USB CCID class for smartcard access.
  • ALP protocol update to set pos_reason. Sends UDP ALP on alert and long press on back/next buttons.
  • alloc_local action can now set allocated user data (allocate with locally provisioned files + dynamic user data over WiFi in unallocated state).
  • Added fmkd to create directories on the filesystem.
  • Msglist widget now has folder functionality (one level).

Fixes

  • Hack to NCS gpio_mcp23xxx.c to set a higher‑priority work queue for button processing during e‑paper updates.
  • fdld action uses a temp file in /tmp during download, then renames to target.
  • commperi only enables the GPIO of nRF52 reset on MCP when pulling it low; floats otherwise to allow nRF52 hardware reset of radio board.
  • NFC fix using cherry‑picked commits from later NCS versions.

Changes from 1.0.10

Features

  • Added potential ability to send raw WiFi management or data packets (not yet enabled).
  • Added netloraperi to handle LoRa daughter cards.
  • Added communications timeout check on downlink to detect lost backend/app connection (devcfg.core.app_timeout_secs).
  • Added possibility to send WiFi scan results via UDP packet to a remote server (ALP/ELP protocol).

Fixes

  • NFC callback method changed (direct IRQ handling); still buggy when accessing ISO7816.
  • Minor memory leak in mqttmgr when connecting/disconnecting.
  • Networks that are the same in both alloc and unalloc states are not reset when changing state.
  • Fixed msglist handling issues.
  • Fixed TLV DL handling issues; added test mode via devcfg.bleperi.tlvtest.

Removals

  • Removed netusbfs and Mifare APDU processor (flash space saving).

Changes from 1.0.9

Features

  • Added haptic vibration for touch button presses. Default 100 ms (configurable/disabled in vibrmgr).

Fixes

  • Entering DFU or provisioning modes now done via reboot to ensure networks start fresh.
  • Memory optimisation to slightly increase heap.
  • Battery gauge (bq27421) only re‑initialised on a HARD reset (power‑on or magnet).

Changes from 1.0.8

Fixes

  • Flush network output messages when closing down networking.
  • Keep network queue size reasonable.
  • Reduce memory usage during state changes.
  • Self‑test AT+AUDIN_START changed to detect tones (duration, frequency, level) instead of VAD.
  • AT+AUDOUT_ON default duration changed to 10 seconds, gain to 30.
  • Rule manager now executes actions using wsched, one request per action in order. This prevents blocking when rules trigger (e.g. alerts that previously delayed network messages).

Changes from 1.0.7

Features

  • Provisioning/DFU modes use the network defined in devcfg.fw.provnet.
  • Better screen messages for DFU and provisioning states.
  • E‑paper screen update uses a semaphore to wait for SPI, allowing parallel processing of other non‑wsched threads.
  • Touch events use async processing to read I2C during screen updates.
  • Msglist widget handles multiple pages of messages with scroll bar and swipe up/down gestures.

Fixes

  • Exit provisioning state using devwork action local_return.
  • Msglist widget drawing update when list changes (from network).

Known issues

  • Button inputs async processing not working.

Changes from 1.0.6

Features

  • Audio manager now uses 16‑bit PCM samples at 8 kHz only.
  • Audio record and play to flash disk files operational (raw PCM, 16‑bit/8 kHz):
    • Play from /audio/<id>.pcm or /audio_rec/<id>.pcm
    • Record to /audio_rec/<id>.pcm
  • ded_ml updated to update non‑msg fields in both the message and skeleton IP.
  • ded_ml skeleton IP page can now include 1onN and bool_inplace DEDs.
  • Created new widget format "list" to render msglist content as one line per message.
  • New formatter attribute "mfmt" specifying message fields to show and their sizes:
    • In pixels for "list" format
    • In characters for "text" format with "msglist" formatter
  • New formatter names:
    • "nmsgs" — number of messages in a msglist
    • "nmsgsUnread" — number of unread messages in a msglist
  • Updated bool formatters for text and graphic msglist values: true if there are unread messages, false if none.
  • Updated ded_ml alerts msglist processing: isRead is part of the JSON content.
    • Updated when a message has been shown and the user explicitly navigates away.
    • Generates an uplink message when updated (backend knows the user saw the message).

Fixes

  • ded_ml only updates isRead to true if the user actually navigates from the page.
  • MQTT JSON message length no longer has 8 bytes of padding.
  • Text string truncation algorithm corrected when close to region size.
  • Truncated string character changed from "*" to ".".
  • "back" navigation when using ded_ml no longer places the skeleton page on the history stack.
  • fdld returns 0 in ares when download successfully starts, and sends an uplink message when it completes.

Changes from 1.0.5

Features

  • Added circular log for events (system events only).
  • ISO7816 implementation with associated devcfg / devdata.
  • nfcmgr updated to allow mode=2 and use apdumgr for raw APDU processing.
  • Mifare emulation validated for apdumgr.
  • devdata.alert.origin is now an enum (small int) for better TLV packing.
  • Widgets flash when pressed unless they are DEDs (which re‑render anyway).

Fixes

  • Send button release AT commands when released N times for alert processing (same as alert end message).

Initial documented version

Features

  • Corrected handling of prone alert; checked double‑tap and red triggers.
  • Added devcfg.alert.trigger to force alert from action or backend.
  • Alert status message indicates origin (duress loop, prone, fall, shock, etc.).
  • Added WPA2/WPA3 enterprise EAP‑TLS handling (to be tested).
  • Accelerometer ignores data when vibration motor is active.
  • USB enable flag is now configurable and persistent over boot (key press toggles on/off at each boot).

Fixes

  • Fixed rule hysteresis counter check (counter is always positive; the 0→1 or 1→0 transition triggers).
  • Fix user self‑test BLE‑peri test (must set active flag to change state).

The following limitations apply to current firmware (1.1.3):

  • NDEF JSON does not replace values for known keys.
  • Provisioning and DFU modes still undergoing testing.
  • Limited power optimisation: ~5 mA idle with BLE service, ~10 mA with WiFi.
  • Limited font support:
    • Sizes available: 10, 14 (+14 bold), 22, 26 pixels
    • Restricted to ISO‑8859‑1 character set
    • No UTF‑8/16/32 support
  • Limited DED types: boolean inplace (bool_inplace), 1‑of‑N inplace (1ofn_inplace), multi‑page message list (msglist).
  • No UI input during screen refresh (buttons ignored).
  • BLE GATT services on either nRF52 (bleperi) or nRF53 (ble). nRF53 is preferred; nRF52 GATT is deprecated.
  • nRF53 DFU fully tested over USB only (IES DFU implemented but untested).
  • nRF52 DFU only over BLE with Nordic DFU app.