Porting nRF52833 custom-board BLE application from NCS 2.8.0 to 3.4.0

Hi,

We have a BLE peripheral on nRF52833-QIAA (custom board based on nrf52833) building with NCS 2.8.0, sysbuild, extended advertising, GATT, a prebuilt custom bootloader, and static partitions (pm_static). We need to move to NCS 3.4.0.

  1. Can we jump 2.8.0 -> 3.4.0 directly, or must we go through intermediate NCS releases?

  2. In 3.4.0, is SoftDevice Controller required for nRF52833, or can we keep the Zephyr BT controller (bt_ctlr_set_public_addr(), bt_le_ext_adv_*)?

  3. Will our existing sysbuild + pm_static layout (custom bootloader at 0x0, app at 0x3000) still work, and can we still DFU an application-only hex onto devices that already have the current bootloader?

  4. Is TinyCrypt still supported in 3.4.0, or do we have to switch to PSA / Mbed TLS?

  5. For a custom nRF52833 board, what usually breaks first in this upgrade (board files, BT APIs, Partition Manager, or flash size)?

Thanks in advance.

  • hi jitendra,

    thanks for posting doubt here,

    1. Direct 2.8.0 → 3.4.0 jump?

    • Yes, no sequential upgrade needed — but read migration notes 3.0→3.4 cumulatively (Zephyr 3.7→4.4).
    • Biggest 3.0 break was parent/child multi-image removal — you're on sysbuild already, so skipped.
    • 3.4.0 is Nordic's first LTS (5 yrs patch-only) and the last release supporting nRF52 — land here and stop.

    2. SoftDevice Controller required?

    • SDC is default and the only production-supported controller. Zephyr LL still builds (bt-ll-sw-split snippet) but is EXPERIMENTAL/unsupported.
    • bt_ctlr_set_public_addr() works on SDC — implemented in sdk-nrf/subsys/bluetooth/controller/hci_driver.c.
    • bt_le_ext_adv_* is host API — unchanged. No code change needed.

    3. sysbuild + pm_static + app-only DFU?

    • Partition Manager deprecated but still works; removal end of 2026, so LTS keeps it for the full window. Your 0x0/0x3000 layout is preservable.
    • App-only DFU works only if your bootloader's image contract (header/trailer/CRC/jump offset) is unchanged — that's yours to own.
    • Main trap: NCS 3.0's ZMS settings backend is incompatible with legacy. Set CONFIG_SETTINGS_ZMS_LEGACY=y and keep the storage partition byte-identical, or fielded units lose all bonds.
    • Test DFU on a golden unit still running the 2.8.0 app, not on erased boards.

    4. TinyCrypt?

    • Removed from Zephyr entirely — mandatory move to PSA Crypto.
    • Don't go via legacy Mbed TLS: 3.4.0 ships Mbed TLS 4.1.0 with deprecated mbedtls_ APIs removed. Use CONFIG_PSA_CRYPTO for crypto, CONFIG_MBEDTLS only for TLS/X.509.
    • nRF52833 has no CryptoCell → software nrf_oberon, bigger than TinyCrypt. Budget for it.
    • Also: BLE legacy pairing off by default since 3.0 — disable CONFIG_BT_SMP_SC_PAIR_ONLY if needed.

    5. What breaks first?

    1. Kconfig/DTS churn — high volume, low risk
    2. TinyCrypt → PSA — guaranteed
    3. RAM/flash footprint — on 52833, RAM binds first
    4. PM/DFU — hit last, highest consequence (bricked/wiped units, not build errors)
    5. Board files — least likely; 2.8.0 is already HWMv2

    Also: west flash now defaults to nRF Util not nrfjprog (breaks CI silently); HAL defines like NRF52833_XXAA deprecated → use Kconfig symbols.

    thanks and regards

    NIshant

Related