diff --git a/.checkpatch.conf b/.checkpatch.conf
index 971cf6ba56db..3248690b08e8 100644
--- a/.checkpatch.conf
+++ b/.checkpatch.conf
@@ -51,3 +51,4 @@
--exclude applications/nrf5340_audio/src/utils/macros
--exclude lib/at_parser/generated
--exclude lib/bin/lwm2m_carrier/include
+--exclude tests/lib/uicc_lwm2m
diff --git a/.github/test-spec.yml b/.github/test-spec.yml
index 7267583c3db0..defe5414dff7 100644
--- a/.github/test-spec.yml
+++ b/.github/test-spec.yml
@@ -592,6 +592,7 @@
- "snippets/emulated-*/**/*"
- "tests/subsys/event_manager_proxy/**/*"
- "tests/benchmarks/multicore/idle/**/*"
+ - "tests/drivers/gpio/egpio_basic_api/**/*"
- "tests/drivers/pwm/**/*"
- "tests/drivers/sensor/**/*"
diff --git a/.github/workflows/src-mirror.yml b/.github/workflows/src-mirror.yml
index 442dd6f88806..35f88d8d7fc5 100644
--- a/.github/workflows/src-mirror.yml
+++ b/.github/workflows/src-mirror.yml
@@ -21,9 +21,9 @@ jobs:
git config --global pack.windowMemory "32m" &&
west forall -c 'git gc --prune --aggressive'
- - name: Create 7z archive
+ - name: Create tar archive
run: |
- 7z a -t7z src.7z ./workspace/
+ tar -C ./workspace -czvf src.tar.gz .
- name: Set up JFrog CLI
uses: jfrog/setup-jfrog-cli@v4
@@ -32,7 +32,7 @@ jobs:
env:
ARTIFACTORY_URL: https://eu.files.nordicsemi.com/artifactory
REPOSITORY: ncs-src-mirror
- FILE_PATH: src.7z
+ FILE_PATH: src.tar.gz
TARGET_PATH: external/${{ github.ref_name }}/
run: >
jfrog rt u $FILE_PATH $REPOSITORY/$TARGET_PATH
diff --git a/.github/workflows/pip-requirements.yml b/.github/workflows/validate-pip-requirements-fixed-file.yml
similarity index 67%
rename from .github/workflows/pip-requirements.yml
rename to .github/workflows/validate-pip-requirements-fixed-file.yml
index 8b3892e930be..cffe93501313 100644
--- a/.github/workflows/pip-requirements.yml
+++ b/.github/workflows/validate-pip-requirements-fixed-file.yml
@@ -1,7 +1,7 @@
name: Validate pip requirements-fixed.txt
on:
- pull_request_target:
+ pull_request:
types: [opened, synchronize, reopened]
branches:
- main
@@ -9,9 +9,6 @@ on:
paths:
- 'scripts/requirements*.txt'
-env:
- REACT_EMOTE: 'eyes'
-
jobs:
check-requirements:
runs-on: ubuntu-20.04
@@ -30,7 +27,7 @@ jobs:
echo "python_version=$PYTHON_VERSION" >> $GITHUB_OUTPUT
- name: Setup python version
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '${{ steps.pyv.outputs.python_version }}'
@@ -40,31 +37,11 @@ jobs:
pip3 install --user -U setuptools wheel pip virtualenv virtualenvwrapper
- name: Execute script diff action
- uses: nrfconnect/action-script-diff@v0.2
+ uses: nrfconnect/action-script-diff@v0.3
with:
- github-token: ${{ secrets.NCS_GITHUB_TOKEN }}
- message_diff: |
- This pr introduces changes to requirements files.
- The compiled requirements-fixed.txt has changed.
- To automatically add the changed file to this pr react with the :$REACT_EMOTE: emote to this comment and re-run the check.
- [Check Run]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID)
-
- requirements-fixed.txt diff
-
- \`\`\` diff
- $GITDIFF
- \`\`\`
-
- message_success: |
- The changes to the 'requirements-fixed.txt' have been added to this PR.
- All further changes to any of the requirements file will automatically be applied as long an :$REACT_EMOTE: is present.
- git_diff_root: ncs/nrf
- diff_path: scripts
- diff_file: requirements-fixed.txt
- reaction_emote: "${{ env.REACT_EMOTE }}"
- git_user_name: "Nordic Builder"
- git_user_email: "pylon@nordicsemi.no"
+ diff_file: "ncs/nrf/scripts/requirements-fixed.txt"
script_call: |
+ cd ncs
OUT_FILE="nrf/scripts/requirements-fixed.txt"
echo "Writing frozen requirements to: $OUT_FILE"
echo "Log python version: $(python --version)"
diff --git a/.github/workflows/west-commands.yml b/.github/workflows/west-commands.yml
index a795e86b8b63..f9f9551f3111 100644
--- a/.github/workflows/west-commands.yml
+++ b/.github/workflows/west-commands.yml
@@ -4,10 +4,9 @@ on:
pull_request:
branches: [main]
paths:
- - scripts/west_commands/mypy.ini
- - scripts/west_commands/ncs_commands.py
- - scripts/west_commands/ncs_west_helpers.py
- - scripts/west_commands/pygit2_helpers.py
+ - scripts/west_commands/**
+ - scripts/requirements-west-ncs-sbom.txt
+ - scripts/requirements-extra.txt
jobs:
west_commands_job:
@@ -15,16 +14,11 @@ jobs:
name: Run Python checks for west commands on patch series (PR)
steps:
- name: Checkout the code
- uses: actions/checkout@v3
+ uses: nrfconnect/action-checkout-west-update@main
with:
path: ncs/nrf
- ref: ${{ github.event.pull_request.head.sha }}
- fetch-depth: 0
- - name: cache-pip
- uses: actions/cache@v3
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-doc-pip
+ git-ref: ${{ github.event.pull_request.head.sha }}
+ git-fetch-depth: 0
- name: Install python dependencies
working-directory: ncs/nrf
run: |
@@ -38,3 +32,31 @@ jobs:
working-directory: ncs/nrf/scripts/west_commands
run: |
python3 -m mypy --config-file mypy.ini ncs_west_helpers.py pygit2_helpers.py ncs_commands.py
+
+ run-west-cmds:
+ name: Run smoke tests for ncs west commands
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-13, windows-latest]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout sources
+ uses: nrfconnect/action-checkout-west-update@main
+ with:
+ git-fetch-depth: 0
+ path: nrf
+ - name: Install requirements
+ shell: bash
+ run: |
+ pip3 install -r nrf/scripts/requirements-west-ncs-sbom.txt
+ pip3 install -r nrf/scripts/requirements-extra.txt
+ - name: Test ncs-sbom with asset tracker sample
+ shell: bash
+ run: |
+ west ncs-sbom --input-files nrf/applications/asset_tracker_v2/**/*.c
+ - name: Smoke test ncs-loot & ncs-compare
+ shell: bash
+ run: |
+ west ncs-loot -h
+ west ncs-compare -h
diff --git a/CODEOWNERS b/CODEOWNERS
index 41e9c3c2e7cb..a2e405622aa2 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -4,8 +4,10 @@
# Order is important; the last matching pattern takes the most
# precedence.
-# No general default entry with `*`. Instead the compliance workflow verifies
-# that all new files are covered by an entry in the CODEOWNERS file.
+# The default entry with `*` only applies to GitHub adding reviewers.
+# The compliance workflow verifies that all new files are covered by an
+# entry in the CODEOWNERS file, but skips this `*` entry altogether.
+* @nrfconnect/ncs-code-owners
# Root folder
/.* @nrfconnect/ncs-code-owners
@@ -14,7 +16,7 @@
/Jenkinsfile @nrfconnect/ncs-ci
/ncs_version.h.in @nrfconnect/ncs-code-owners
/LICENSE @carlescufi
-/README.rst @carlescufi
+/README.rst @carlescufi @nrfconnect/ncs-doc-leads
/VERSION @nrfconnect/ncs-code-owners
/west.yml @nrfconnect/ncs-code-owners
/west-test.yml @nrfconnect/ncs-ci
@@ -25,7 +27,6 @@
/.vscode/ @FilipZajdel
# Applications
-/applications/ @nrfconnect/ncs-code-owners
/applications/asset_tracker_v2/ @nrfconnect/ncs-cia @coderbyheart
/applications/connectivity_bridge/ @nrfconnect/ncs-cia @nordic-auko
/applications/ipc_radio/ @nrfconnect/ncs-si-muffin
@@ -34,15 +35,28 @@
/applications/matter_weather_station/ @nrfconnect/ncs-matter
/applications/nrf5340_audio/ @nrfconnect/ncs-audio
/applications/nrf_desktop/ @nrfconnect/ncs-si-bluebagel
-/applications/sdp/ @masz-nordic
+/applications/sdp/ @nrfconnect/ncs-ll-ursus
/applications/serial_lte_modem/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-iot-oulu
/applications/serial_lte_modem/src/lwm2m_carrier/ @nrfconnect/ncs-carrier
/applications/zigbee_weather_station/ @nrfconnect/ncs-zigbee
-/applications/**/*.rst @nrfconnect/ncs-doc-owners
+/applications/asset_tracker_v2/**/*.rst @nrfconnect/ncs-cia-doc
+/applications/connectivity_bridge/*.rst @nrfconnect/ncs-cia-doc
+/applications/ipc_radio/*.rst @nrfconnect/ncs-si-muffin-doc
+/applications/machine_learning/*.rst @nrfconnect/ncs-si-muffin-doc
+/applications/matter_bridge/**/*.rst @nrfconnect/ncs-matter-doc
+/applications/matter_weather_station/*.rst @nrfconnect/ncs-matter-doc
+/applications/nrf5340_audio/**/*.rst @nrfconnect/ncs-audio-doc
+/applications/nrf_desktop/**/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/applications/serial_lte_modem/**/*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/applications/serial_lte_modem/doc/CARRIER_AT_commands.rst @nrfconnect/ncs-carrier-doc
+/applications/zigbee_weather_station/*.rst @nrfconnect/ncs-terahertz-doc
# Boards
-/boards/ @nrfconnect/ncs-co-boards
+/boards/nordic/nrf52* @nrfconnect/ncs-co-boards @nrfconnect/ncs-si-bluebagel
/boards/nordic/thingy91* @nrfconnect/ncs-co-boards @nrfconnect/ncs-cia
+/boards/shields/coverage_support/ @nrfconnect/ncs-low-level-test
+
+/boards/shields/pca63566/doc/*.rst @nrfconnect/ncs-doc-leads
# SUIT configuration files
/config/suit/ @nrfconnect/ncs-charon
@@ -53,64 +67,275 @@
/cmake/sysbuild/suit_utilities.cmake @nrfconnect/ncs-charon
# All doc related files
-/doc/ @nrfconnect/ncs-co-doc
/doc/_zoomin/ @nrfconnect/ncs-co-doc @nrfconnect/ncs-doc-leads
-/doc/**/*.rst @nrfconnect/ncs-doc-owners
-/doc/**/*.svg @nrfconnect/ncs-doc-owners
-/doc/**/*.png @nrfconnect/ncs-doc-owners
-/doc/nrf/protocols/thread/*.rst @wiba-nordic
-/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ @FrancescoSer
+/doc/kconfig/ @nrfconnect/ncs-doc-leads
+/doc/matter/ @nrfconnect/ncs-matter-doc
+/doc/mcuboot/ @nrfconnect/ncs-pluto-doc
+/doc/nrf/*.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/app_dev/ @nrfconnect/ncs-doc-leads @nrfconnect/ncs-vestavind-doc
+/doc/nrf/app_dev/bootloaders_dfu/ @nrfconnect/ncs-pluto-doc
+/doc/nrf/app_dev/device_guides/fem/ @nrfconnect/ncs-doc-leads
+/doc/nrf/app_dev/device_guides/nrf52/ @nrfconnect/ncs-doc-leads
+/doc/nrf/app_dev/device_guides/nrf53/ @nrfconnect/ncs-doc-leads
+/doc/nrf/app_dev/device_guides/nrf53/qspi_xip_guide_nrf5340.rst @nrfconnect/ncs-pluto-doc
/doc/nrf/app_dev/device_guides/nrf54l/ @annwoj
+/doc/nrf/app_dev/device_guides/nrf70/ @nrfconnect/ncs-wifi-doc
+/doc/nrf/app_dev/device_guides/nrf91/ @nrfconnect/ncs-modem-doc
+/doc/nrf/app_dev/device_guides/nrf91/nrf91_snippet.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/app_dev/device_guides/pmic/ @nrfconnect/ncs-pmic-doc
+/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ @FrancescoSer
+/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_*.rst @nrfconnect/ncs-charon-doc
+/doc/nrf/app_dev/device_guides/nrf54h.rst @FrancescoSer
+/doc/nrf/app_dev/device_guides/wifi_coex.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/dev_model_and_contributions/ @nrfconnect/ncs-doc-leads @nrfconnect/ncs-vestavind-doc
+/doc/nrf/drivers/bh1749.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/drivers/bme68x_iaq.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/drivers/entropy_cc3xx.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/drivers/eth_rtt.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/drivers/hw_cc3xx.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/drivers/paw3212.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/drivers/pmw3360.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/drivers/sensor_sim.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/drivers/sensor_stub.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/drivers/uart_ipc.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/drivers/uart_nrf_sw_lpuart.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/external_comp/avsystem.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/external_comp/bt_fast_pair.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/external_comp/coremark.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/external_comp/dult.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/external_comp/edge_impulse.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/external_comp/memfault.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/external_comp/nrf_cloud.rst @nrfconnect/ncs-nrf-cloud-doc
+/doc/nrf/gsg_guides/ @nrfconnect/ncs-doc-leads @nrfconnect/ncs-vestavind-doc @nrfconnect/ncs-wayland-doc
+/doc/nrf/gsg_guides/thingy91_gsg.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/gsg_guides/nrf9160_gs.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/gsg_guides/nrf7002_gs.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/includes/ @nrfconnect/ncs-doc-leads
+/doc/nrf/includes/boardname_tables/sample_boardnames.txt @nrfconnect/ncs-co-doc
+/doc/nrf/installation/ @nrfconnect/ncs-doc-leads @nrfconnect/ncs-vestavind-doc @nrfconnect/ncs-wayland-doc
+/doc/nrf/libraries/bin/ @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/bin/lwm2m_carrier/ @nrfconnect/ncs-carrier-doc
+/doc/nrf/libraries/bluetooth_services/ @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-dragoon-doc
+/doc/nrf/libraries/bluetooth_services/mesh/ @nrfconnect/ncs-paladin-doc
+/doc/nrf/libraries/bluetooth_services/adv_prov.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/bluetooth_services/mesh.rst @nrfconnect/ncs-paladin-doc
+/doc/nrf/libraries/bluetooth_services/services/fast_pair.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/bluetooth_services/services/wifi_prov.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/libraries/caf/ @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/debug/cpu_load.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/debug/etb_trace.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/debug/index.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/debug/memfault_ncs.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/debug/ppi_trace.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/dfu/ @nrfconnect/ncs-pluto-doc
+/doc/nrf/libraries/dfu/suit_dfu.rst @nrfconnect/ncs-charon-doc
+/doc/nrf/libraries/gazell/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/modem/nrf_modem_lib/ @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_cmd_custom.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_cmd_parser.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_host.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_monitor.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_params.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_parser.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/at_shell.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/modem/gcf_sms_lib.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/index.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/location.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/modem/lte_lc.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/modem/modem_antenna.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/modem/modem_attest_token.rst @nrfconnect/ncs-nrf-cloud-doc
+/doc/nrf/libraries/modem/modem_battery.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/modem_info.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/modem_jwt.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/libraries/modem/modem_key_mgmt.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/modem_slm.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/libraries/modem/pdn.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/sms.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/modem/uicc_lwm2m.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/modem/zzhc.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/mpsl/ @nrfconnect/ncs-dragoon-doc
+/doc/nrf/libraries/networking/aws_*.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/azure_*.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/coap_utils.rst @nrfconnect/ncs-terahertz-doc
+/doc/nrf/libraries/networking/download_client.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/libraries/networking/fota_download.rst @nrfconnect/ncs-pluto-doc
+/doc/nrf/libraries/networking/ftp_client.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/libraries/networking/icalendar_parser.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/networking/index.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/networking/lwm2m_*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/libraries/networking/mqtt_helper.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/nrf_cloud.rst @nrfconnect/ncs-nrf-cloud-doc
+/doc/nrf/libraries/networking/nrf_cloud_*.rst @nrfconnect/ncs-nrf-cloud-doc
+/doc/nrf/libraries/networking/nrf_provisioning.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/doc/nrf/libraries/networking/rest_client.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/networking/softap_wifi_provision.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/wifi_credentials.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/wifi_mgmt_ext.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/networking/wifi_ready.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/libraries/nfc/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/nrf_rpc/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/adp536x.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/others/app_event_manager.rst @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/others/app_event_manager_profiler_tracer.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/others/audio_module.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/contin_array.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/data_fifo.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/date_time.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/others/dk_buttons_and_leds.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/others/dm.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/dult.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/others/ei_wrapper.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/emds.rst @nrfconnect/ncs-paladin-doc
+/doc/nrf/libraries/others/esb.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/event_manager_proxy.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/fem_al.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/flash_map_pm.rst @nrfconnect/ncs-pluto-doc
+/doc/nrf/libraries/others/hw_id.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/others/index.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/others/network_core_monitor.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/nrf_profiler.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/libraries/others/pcm_mix.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/pcm_stream_channel_modifier.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/qos.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/libraries/others/ram_pwrdn.rst @nrfconnect/ncs-terahertz-doc
+/doc/nrf/libraries/others/sfloat.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/st25r3911b_nfc.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/supl_os_client.rst @nrfconnect/ncs-iot-positioning-doc
+/doc/nrf/libraries/others/tone.rst @nrfconnect/ncs-audio-doc
+/doc/nrf/libraries/others/uart_async_adapter.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/others/wave_gen.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/libraries/security/bootloader/ @nrfconnect/ncs-pluto-doc
+/doc/nrf/libraries/security/nrf_security/ @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/security/tfm/ @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/security/fatal_error.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/security/hw_unique_key.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/security/identity_key.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/security/index.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/security/trusted_storage.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/libraries/shell/ @nrfconnect/ncs-doc-leads
+/doc/nrf/libraries/zigbee/ @nrfconnect/ncs-terahertz-doc
+/doc/nrf/libraries/index.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/protocols/amazon_sidewalk/ @nrfconnect/ncs-sidewalk-doc
+/doc/nrf/protocols/bt/bt_mesh/ @nrfconnect/ncs-paladin-doc
+/doc/nrf/protocols/bt/bt_qualification/ @nrfconnect/ncs-dragoon-doc
+/doc/nrf/protocols/bt/ @nrfconnect/ncs-dragoon-doc
+/doc/nrf/protocols/coexistence/ @nrfconnect/ncs-doc-leads
+/doc/nrf/protocols/dect/ @nrfconnect/ncs-modem-doc
+/doc/nrf/protocols/esb/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/protocols/gazell/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/protocols/lte/ @nrfconnect/ncs-carrier-doc
+/doc/nrf/protocols/matter/ @nrfconnect/ncs-matter-doc
+/doc/nrf/protocols/multiprotocol/ @nrfconnect/ncs-doc-leads
+/doc/nrf/protocols/nfc/ @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/protocols/thread/ @nrfconnect/ncs-terahertz-doc
+/doc/nrf/protocols/wifi/ @nrfconnect/ncs-wifi-doc
+/doc/nrf/protocols/zigbee/ @nrfconnect/ncs-terahertz-doc
+/doc/nrf/releases_and_maturity/ @nrfconnect/ncs-doc-release
+/doc/nrf/releases_and_maturity/abi_compatibility.rst @FrancescoSer
+/doc/nrf/samples/amazon_sidewalk.rst @nrfconnect/ncs-sidewalk-doc
+/doc/nrf/samples/bl.rst @nrfconnect/ncs-dragoon-doc
+/doc/nrf/samples/cellular.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/samples/crypto.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/samples/debug.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/samples/dect.rst @nrfconnect/ncs-modem-doc
+/doc/nrf/samples/edge.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/samples/esb.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/samples/fast_pair.rst @nrfconnect/ncs-si-bluebagel-doc
+/doc/nrf/samples/gazell.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/samples/keys.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/samples/matter.rst @nrfconnect/ncs-matter-doc
+/doc/nrf/samples/mesh.rst @nrfconnect/ncs-paladin-doc
+/doc/nrf/samples/net.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/samples/nfc.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/samples/nrf5340.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/samples/other.rst @nrfconnect/ncs-doc-leads
+/doc/nrf/samples/peripheral.rst @nrfconnect/ncs-radio-sw-doc
+/doc/nrf/samples/pmic.rst @nrfconnect/ncs-pmic-doc
+/doc/nrf/samples/sdfw.rst @nrfconnect/ncs-aurora-doc
+/doc/nrf/samples/sensor.rst @nrfconnect/ncs-cia-doc
+/doc/nrf/samples/serialization.rst @nrfconnect/ncs-si-muffin-doc
+/doc/nrf/samples/suit.rst @nrfconnect/ncs-charon-doc
+/doc/nrf/samples/tfm.rst @nrfconnect/ncs-aegir-doc
+/doc/nrf/samples/thread.rst @nrfconnect/ncs-terahertz-doc
+/doc/nrf/samples/wifi.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/samples/wifi_provisioning.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/samples/wifi_zephyr.rst @nrfconnect/ncs-wifi-doc
+/doc/nrf/samples/zigbee.rst @nrfconnect/ncs-terahertz-doc
+/doc/nrf/security/ @nrfconnect/ncs-aegir-doc
+/doc/nrf/templates/ @nrfconnect/ncs-doc-leads
+/doc/nrf/test_and_optimize/ @nrfconnect/ncs-doc-leads
+/doc/nrf/test_and_optimize/optimizing/power_nrf91.rst @nrfconnect/ncs-cia-doc
+
+/doc/**/*.svg @nrfconnect/ncs-doc-leads
+/doc/**/*.png @nrfconnect/ncs-doc-leads
+
# Drivers
-/drivers/ @nrfconnect/ncs-co-drivers
-/drivers/gpio/ @nrfconnect/ncs-co-drivers @masz-nordic
+/drivers/bluetooth/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-dragoon
+/drivers/entropy/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-aegir
+/drivers/flash/ @nrfconnect/ncs-co-drivers
+/drivers/gpio/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-ll-ursus
+/drivers/hw_cc3xx/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-aegir
+/drivers/mpsl/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-dragoon
+/drivers/net/ @nrfconnect/ncs-co-drivers @doki-nordic
/drivers/serial/ @nrfconnect/ncs-co-drivers @nordic-krch
/drivers/sensor/bh1749/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
/drivers/sensor/bme68x_iaq/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
/drivers/sensor/paw3212/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-si-bluebagel
/drivers/sensor/pmw3360/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-si-bluebagel
+/drivers/sensor/sensor_sim/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
+/drivers/sensor/sensor_stub/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
# Devicetree
/dts/ @nrfconnect/ncs-co-drivers
# External
-/ext/ @carlescufi
+/ext/curl/ @nrfconnect/ncs-code-owners @jhirsi
+/ext/freebsd-getopt/ @nrfconnect/ncs-code-owners
+/ext/iperf3/ @nrfconnect/ncs-code-owners @jhirsi
# Include
-/include/ @nrfconnect/ncs-code-owners
-/include/net/azure_* @nrfconnect/ncs-cia @coderbyheart
-/include/net/wifi_credentials.h @nrfconnect/ncs-cia
-/include/net/nrf_cloud_* @nrfconnect/ncs-nrf-cloud
/include/audio/ @nrfconnect/ncs-audio
/include/audio_module/ @nrfconnect/ncs-audio
/include/bluetooth/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-dragoon
-/include/bluetooth/services/fast_pair/ @nrfconnect/ncs-si-bluebagel
/include/bluetooth/adv_prov.h @nrfconnect/ncs-si-bluebagel
/include/bluetooth/mesh/ @nrfconnect/ncs-paladin
+/include/bluetooth/services/fast_pair/ @nrfconnect/ncs-si-bluebagel
/include/caf/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/include/debug/ @nrfconnect/ncs-co-drivers
/include/debug/ppi_trace.h @nrfconnect/ncs-co-drivers @nordic-krch
+/include/dfu/ @nrfconnect/ncs-code-owners
/include/dfu/dfu_target_suit.h @nrfconnect/ncs-charon
/include/dfu/suit_dfu_fetch_source.h @nrfconnect/ncs-charon
/include/dfu/suit_dfu.h @nrfconnect/ncs-charon
-/include/drivers/ @nrfconnect/ncs-co-drivers
-/include/drivers/gpio/ @nrfconnect/ncs-co-drivers @masz-nordic
-/include/dult.h @nrfconnect/ncs-si-bluebagel
+/include/drivers/flash/ @nrfconnect/ncs-co-drivers
+/include/drivers/gpio/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-ll-ursus
+/include/drivers/bme68x_iaq.h @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
+/include/drivers/sensor_sim.h @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
+/include/drivers/sensor_stub.h @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
+/include/emds/ @balaklaka @nrfconnect/ncs-paladin
+/include/fem_al/ @nrfconnect/ncs-dragoon
/include/logging/ @nrfconnect/ncs-protocols-serialization
+/include/mgmt/ @nrfconnect/ncs-pluto
+/include/modem/ @nrfconnect/ncs-modem
/include/mpsl/ @nrfconnect/ncs-dragoon
-/include/net/ @nrfconnect/ncs-co-networking
+/include/net/azure_* @nrfconnect/ncs-cia @coderbyheart
+/include/net/nrf_cloud_* @nrfconnect/ncs-nrf-cloud
+/include/net/wifi_credentials.h @nrfconnect/ncs-cia
/include/nfc/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-si-muffin
/include/nrf_compress/ @nordicjm
+/include/nrf_rpc/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-si-muffin
+/include/power/ @nrfconnect/ncs-co-drivers
/include/sdfw/ @nrfconnect/ncs-aurora
/include/sdfw/sdfw_services/extmem_remote.h @nrfconnect/ncs-charon
/include/sdfw/sdfw_services/suit_service.h @nrfconnect/ncs-charon
+/include/sdp/ @nrfconnect/ncs-ll-ursus
/include/shell/ @nordic-krch
+/include/tfm/ @nrfconnect/ncs-aegir
+/include/zigbee/ @nrfconnect/ncs-zigbee
+/include/dult.h @nrfconnect/ncs-si-bluebagel
# Libraries
-/lib/ @nrfconnect/ncs-code-owners
-/lib/bin/ @nrfconnect/ncs-co-networking @lemrey
-/lib/bin/lwm2m_carrier/ @nrfconnect/ncs-carrier
-/lib/boot_banner/ @nordicjm
/lib/adp536x/ @nrfconnect/ncs-cia
/lib/at_cmd_parser/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
/lib/at_cmd_custom/ @nrfconnect/ncs-modem
@@ -118,55 +343,62 @@
/lib/at_monitor/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
/lib/at_parser/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
/lib/at_shell/ @nrfconnect/ncs-cia
-/lib/gcf_sms/ @nrfconnect/ncs-modem
-/lib/nrf_modem_lib/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/lib/bin/ @nrfconnect/ncs-co-networking @lemrey
+/lib/bin/lwm2m_carrier/ @nrfconnect/ncs-carrier
+/lib/boot_banner/ @nordicjm
+/lib/contin_array/ @nrfconnect/ncs-audio
+/lib/data_fifo/ @nrfconnect/ncs-audio
+/lib/date_time/ @trantanen @tokangas
+/lib/dk_buttons_and_leds/ @nrfconnect/ncs-si-muffin
/lib/edge_impulse/ @nrfconnect/ncs-si-muffin
+/lib/fatal_error/ @nordic-krch
/lib/fem_al/ @nrfconnect/ncs-si-muffin
-/lib/fprotect/ @nrfconnect/ncs-pluto
/lib/flash_patch/ @nrfconnect/ncs-pluto
+/lib/fprotect/ @nrfconnect/ncs-pluto
+/lib/gcf_sms/ @nrfconnect/ncs-modem
+/lib/hw_id/ @nrfconnect/ncs-cia
+/lib/hw_unique_key/ @nrfconnect/ncs-aegir
+/lib/identity_key/ @nrfconnect/ncs-aegir
/lib/location/ @trantanen @jhirsi @tokangas
/lib/lte_link_control/ @tokangas @trantanen @jhirsi @nrfconnect/ncs-modem
/lib/modem_antenna/ @tokangas @nrfconnect/ncs-modem
+/lib/modem_attest_token/ @jayteemo
/lib/modem_battery/ @nrfconnect/ncs-modem
/lib/modem_info/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/lib/modem_jwt/ @nrfconnect/ncs-iot-oulu @nrfconnect/ncs-modem
/lib/modem_key_mgmt/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/lib/modem_slm/ @nrfconnect/ncs-iot-oulu
/lib/multithreading_lock/ @nrfconnect/ncs-dragoon
+/lib/nrf_modem_lib/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/lib/pcm_mix/ @nrfconnect/ncs-audio
+/lib/pcm_stream_channel_modifier/ @nrfconnect/ncs-audio
/lib/pdn/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/lib/qos/ @nrfconnect/ncs-cia
/lib/ram_pwrdn/ @MarekPorwisz
-/lib/fatal_error/ @nordic-krch
+/lib/sample_rate_converter/ @nrfconnect/ncs-audio
/lib/sfloat/ @nrfconnect/ncs-si-muffin
/lib/sms/ @trantanen @tokangas
/lib/st25r3911b/ @nrfconnect/ncs-si-muffin
/lib/supl/ @nrfconnect/ncs-co-networking @tokangas
-/lib/date_time/ @trantanen @tokangas
-/lib/hw_id/ @nrfconnect/ncs-cia
-/lib/wave_gen/ @nrfconnect/ncs-si-muffin
-/lib/hw_unique_key/ @nrfconnect/ncs-aegir
-/lib/identity_key/ @nrfconnect/ncs-aegir
-/lib/modem_jwt/ @nrfconnect/ncs-iot-oulu @nrfconnect/ncs-modem
-/lib/modem_slm/ @nrfconnect/ncs-iot-oulu
-/lib/modem_attest_token/ @jayteemo
-/lib/qos/ @nrfconnect/ncs-cia
-/lib/contin_array/ @nrfconnect/ncs-audio
-/lib/data_fifo/ @nrfconnect/ncs-audio
-/lib/pcm_mix/ @nrfconnect/ncs-audio
-/lib/pcm_stream_channel_modifier/ @nrfconnect/ncs-audio
-/lib/sample_rate_converter/ @nrfconnect/ncs-audio
/lib/tone/ @nrfconnect/ncs-audio
+/lib/uicc_lwm2m/ @stig-bjorlykke
+/lib/wave_gen/ @nrfconnect/ncs-si-muffin
# Modules
-/modules/ @nrfconnect/ncs-co-build-system
-/modules/mcuboot/ @nrfconnect/ncs-pluto
+/modules/azure-sdk-for-c/ @nrfconnect/ncs-cia @plskeggs
/modules/cjson/ @nrfconnect/ncs-cia @plskeggs
-/modules/trusted-firmware-m/ @nrfconnect/ncs-aegir
/modules/coremark/ @nrfconnect/ncs-si-bluebagel
+/modules/mcuboot/ @nrfconnect/ncs-pluto
+/modules/memfault-firmware-sdk/ @nrfconnect/ncs-cia @plskeggs
+/modules/nrfxlib/ @nrfconnect/ncs-code-owners
+/modules/trusted-firmware-m/ @nrfconnect/ncs-aegir
+/modules/wfa-qt/ @nrfconnect/ncs-wifi
# Samples
-/samples/ @nrfconnect/ncs-code-owners
/samples/CMakeLists.txt @nrfconnect/ncs-co-build-system
-/samples/net/ @nrfconnect/ncs-cia @nrfconnect/ncs-modem
-/samples/sensor/bh1749/ @nrfconnect/ncs-cia
-/samples/sensor/bme68x_iaq/ @nrfconnect/ncs-cia
+/samples/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/samples/app_event_manager_profiler_tracer/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/samples/benchmarks/coremark/ @nrfconnect/ncs-si-bluebagel
/samples/bluetooth/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-dragoon
/samples/bluetooth/broadcast_config_tool/ @nrfconnect/ncs-audio
/samples/bluetooth/mesh/ @nrfconnect/ncs-paladin
@@ -174,47 +406,59 @@
/samples/bluetooth/direction_finding_connectionless_tx/ @ppryga-nordic
/samples/bluetooth/fast_pair/ @nrfconnect/ncs-si-bluebagel
/samples/bootloader/ @nrfconnect/ncs-pluto
-/samples/matter/ @nrfconnect/ncs-matter
+/samples/caf/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/samples/caf_sensor_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/samples/cellular/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
+/samples/cellular/battery/ @nrfconnect/ncs-modem
+/samples/cellular/location/ @trantanen @jhirsi @tokangas
+/samples/cellular/lwm2m_carrier/ @nrfconnect/ncs-carrier
+/samples/cellular/lwm2m_client/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-iot-oulu
+/samples/cellular/modem_shell/ @trantanen @jhirsi @tokangas
+/samples/cellular/nidd/ @stig-bjorlykke
+/samples/cellular/nrf_cloud_* @nrfconnect/ncs-nrf-cloud
+/samples/cellular/nrf_provisioning/ @nrfconnect/ncs-iot-oulu
+/samples/cellular/modem_trace_flash/ @nrfconnect/ncs-modem
+/samples/cellular/slm_shell/ @nrfconnect/ncs-iot-oulu
+/samples/cellular/sms/ @trantanen @tokangas
+/samples/cellular/uicc_lwm2m/ @stig-bjorlykke
+/samples/common/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
/samples/crypto/ @nrfconnect/ncs-aegir
/samples/debug/memfault/ @nrfconnect/ncs-cia
/samples/debug/ppi_trace/ @nordic-krch
-/samples/hw_id/ @nrfconnect/ncs-cia
+/samples/dect/dect_phy/dect_shell/ @jhirsi
+/samples/dect/dect_phy/hello_dect/ @nrfconnect/ncs-modem
/samples/edge_impulse/ @nrfconnect/ncs-si-muffin
-/samples/esb/ @lemrey
-/samples/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/samples/esb/ @nrfconnect/ncs-si-muffin
/samples/event_manager_proxy/ @nrfconnect/ncs-si-muffin
/samples/gazell/ @leewkb4567
+/samples/hw_id/ @nrfconnect/ncs-cia
+/samples/ipc/ipc_service/ @nrfconnect/ncs-si-muffin
/samples/keys/ @nrfconnect/ncs-aegir
+/samples/matter/ @nrfconnect/ncs-matter
/samples/mpsl/ @nrfconnect/ncs-dragoon
+/samples/net/ @nrfconnect/ncs-cia @nrfconnect/ncs-modem
/samples/nfc/ @nrfconnect/ncs-si-muffin
+/samples/nrf5340/netboot/ @nrfconnect/ncs-pluto
+/samples/nrf5340/multiprotocol_rpmsg/ @hubertmis
/samples/nrf_rpc/ @nrfconnect/ncs-si-muffin
+/samples/sensor/bh1749/ @nrfconnect/ncs-cia
+/samples/sensor/bme68x_iaq/ @nrfconnect/ncs-cia
/samples/nrf5340/empty_app_core/ @nrfconnect/ncs-si-muffin
-/samples/cellular/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-modem
-/samples/cellular/battery/ @MirkoCovizzi
-/samples/cellular/location/ @trantanen @jhirsi @tokangas
-/samples/cellular/lwm2m_carrier/ @nrfconnect/ncs-carrier
-/samples/cellular/lwm2m_client/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-iot-oulu
-/samples/cellular/modem_shell/ @trantanen @jhirsi @tokangas
-/samples/cellular/nidd/ @stig-bjorlykke
-/samples/cellular/nrf_cloud_* @nrfconnect/ncs-nrf-cloud
-/samples/cellular/nrf_provisioning/ @nrfconnect/ncs-iot-oulu
-/samples/cellular/modem_trace_flash/ @eivindj-nordic
-/samples/cellular/slm_shell/ @nrfconnect/ncs-iot-oulu
-/samples/cellular/sms/ @trantanen @tokangas
-/samples/openthread/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-thread
+/samples/nrf_compress/ @nordicjm
/samples/nrf_profiler/ @nrfconnect/ncs-si-bluebagel
/samples/nrf_rpc/protocols_serialization/ @nrfconnect/ncs-protocols-serialization
-/samples/peripheral/radio_test/ @nrfconnect/ncs-si-muffin
-/samples/peripheral/lpuart/ @nordic-krch
+/samples/openthread/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-thread
/samples/peripheral/802154_phy_test/ @nrfconnect/ncs-radio-sw
/samples/peripheral/802154_sniffer/ @e-rk
-/samples/tfm/ @nrfconnect/ncs-aegir
-/samples/zigbee/ @nrfconnect/ncs-zigbee
-/samples/nrf5340/netboot/ @nrfconnect/ncs-pluto
-/samples/nrf5340/multiprotocol_rpmsg/ @hubertmis
+/samples/peripheral/lpuart/ @nordic-krch
+/samples/peripheral/radio_test/ @nrfconnect/ncs-si-muffin
+/samples/pmic/native/ @nordic-auko
/samples/sdfw/ @nrfconnect/ncs-aurora
/samples/sdfw/ssf_client/ @anhmolt
+/samples/sensor/bh1749/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
+/samples/sensor/bme68x_iaq/ @nrfconnect/ncs-co-drivers @nrfconnect/ncs-cia
/samples/suit/ @nrfconnect/ncs-charon
+/samples/tfm/ @nrfconnect/ncs-aegir
/samples/wifi/provisioning/ble/ @wentong-li @bama-nordic
/samples/wifi/provisioning/softap/ @nrfconnect/ncs-cia
/samples/wifi/radio_test/ @bama-nordic @sachinthegreen
@@ -229,11 +473,72 @@
/samples/wifi/softap/ @D-Triveni @krish2718
/samples/wifi/monitor/ @D-Triveni
/samples/wifi/promiscuous/ @D-Triveni
-/samples/benchmarks/coremark/ @nrfconnect/ncs-si-bluebagel
-/samples/**/*.rst @nrfconnect/ncs-doc-owners
+/samples/zigbee/ @nrfconnect/ncs-zigbee
+
+/samples/app_event_manager/*.rst @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
+/samples/app_event_manager_profiler_tracer/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/benchmarks/coremark/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/samples/bluetooth/**/*.rst @nrfconnect/ncs-dragoon-doc @nrfconnect/ncs-si-muffin-doc
+/samples/bluetooth/broadcast_config_tool/*.rst @nrfconnect/ncs-audio-doc
+/samples/bluetooth/fast_pair/**/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/samples/bluetooth/mesh/**/*.rst @nrfconnect/ncs-paladin-doc
+/samples/bootloader/*.rst @nrfconnect/ncs-pluto-doc
+/samples/caf/*.rst @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
+/samples/caf_sensor_manager/*.rst @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
+/samples/cellular/**/*.rst @nrfconnect/ncs-modem-doc
+/samples/cellular/gnss/*.rst @nrfconnect/ncs-iot-positioning-doc
+/samples/cellular/location/*.rst @nrfconnect/ncs-iot-positioning-doc
+/samples/cellular/lwm2m_carrier/*.rst @nrfconnect/ncs-carrier-doc
+/samples/cellular/lwm2m_client/*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/samples/cellular/modem_shell/*.rst @nrfconnect/ncs-iot-positioning-doc
+/samples/cellular/nrf_cloud_*/**/*.rst @nrfconnect/ncs-nrf-cloud-doc
+/samples/cellular/nrf_provisioning/*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/samples/cellular/slm_shell/*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/samples/cellular/sms/*.rst @nrfconnect/ncs-iot-positioning-doc
+/samples/crypto/**/*.rst @nrfconnect/ncs-aegir-doc
+/samples/debug/memfault/*.rst @nrfconnect/ncs-cia-doc
+/samples/debug/ppi_trace/*.rst @nrfconnect/ncs-doc-leads
+/samples/dect/**/*.rst @nrfconnect/ncs-modem-doc
+/samples/esb/**/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/edge_impulse/**/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/event_manager_proxy/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/gazell/**/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/hw_id/*.rst @nrfconnect/ncs-cia-doc
+/samples/ipc/ipc_service/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/keys/**/*.rst @nrfconnect/ncs-aegir-doc
+/samples/matter/**/*.rst @nrfconnect/ncs-matter-doc
+/samples/mpsl/**/*.rst @nrfconnect/ncs-dragoon-doc
+/samples/net/**/*.rst @nrfconnect/ncs-cia-doc
+/samples/net/coap_client/*.rst @nrfconnect/ncs-iot-oulu-tampere-doc
+/samples/nfc/**/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/nrf5340/empty_app_core/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/nrf5340/empty_net_core/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/samples/nrf5340/extxip_smp_svr/*.rst @nrfconnect/ncs-pluto-doc
+/samples/nrf5340/multiprotocol_rpmsg/*.rst @nrfconnect/ncs-doc-leads
+/samples/nrf5340/netboot/*.rst @nrfconnect/ncs-pluto-doc
+/samples/nrf5340/remote_shell/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/nrf_profiler/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/samples/nrf_rpc/entropy_nrf53/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/nrf_rpc/protocols_serialization/**/*.rst @nrfconnect/ncs-terahertz-doc
+/samples/openthread/**/*.rst @nrfconnect/ncs-terahertz-doc
+/samples/peripheral/802154_phy_test/*.rst @nrfconnect/ncs-radio-sw-doc
+/samples/peripheral/802154_sniffer/*.rst @nrfconnect/ncs-radio-sw-doc
+/samples/peripheral/lpuart/*.rst @nrfconnect/ncs-doc-leads
+/samples/peripheral/radio_test/*.rst @nrfconnect/ncs-si-muffin-doc
+/samples/pmic/**/*.rst @nrfconnect/ncs-pmic-doc
+/samples/sdfw/**/*.rst @nrfconnect/ncs-aurora-doc
+/samples/sensor/**/*.rst @nrfconnect/ncs-cia-doc
+/samples/suit/**/*.rst @nrfconnect/ncs-charon-doc
+/samples/tfm/**/*.rst @nrfconnect/ncs-aegir-doc
+/samples/wifi/**/*.rst @nrfconnect/ncs-wifi-doc
+/samples/wifi/provisioning/softap/*.rst @nrfconnect/ncs-cia-doc
+/samples/zigbee/**/*.rst @nrfconnect/ncs-terahertz-doc
+
+/samples/**/*.svg @nrfconnect/ncs-doc-leads
+/samples/**/*.png @nrfconnect/ncs-doc-leads
+
# Scripts
-/scripts/ @nrfconnect/ncs-code-owners
/scripts/docker/ @nrfconnect/ncs-ci
/scripts/ci/tags.yaml @nordic-piks @PerMac @katgiadla
/scripts/ci/twister_ignore.txt @nordic-piks @PerMac @katgiadla
@@ -242,6 +547,7 @@
/scripts/ncs-toolchain-version-minimum.txt @nrfconnect/ncs-co-build-system @nrfconnect/ncs-ci
/scripts/tools-versions-*.txt @nrfconnect/ncs-co-build-system @nrfconnect/ncs-ci
/scripts/requirements-*.txt @nrfconnect/ncs-co-build-system @nrfconnect/ncs-ci
+/scripts/west_commands/genboard/ @gmarull
/scripts/west_commands/sbom/ @nrfconnect/ncs-si-muffin
/scripts/west_commands/thingy91x_dfu.py @nrfconnect/ncs-cia
/scripts/bootloader/ @nrfconnect/ncs-pluto
@@ -249,27 +555,39 @@
/scripts/print_docker_image.sh @nrfconnect/ncs-ci
/scripts/print_toolchain_checksum.sh @nrfconnect/ncs-ci
+/scripts/hid_configurator/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/scripts/memfault/*.rst @nrfconnect/ncs-cia-doc
+/scripts/nrf_provision/fast_pair/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/scripts/partition_manager/*.rst @nrfconnect/ncs-aurora-doc
+/scripts/shell/ble_console/**/*.rst @nrfconnect/ncs-doc-leads
+/scripts/west_commands/sbom/*.rst @nrfconnect/ncs-si-muffin-doc
+
# Share
-/share/ @nrfconnect/ncs-co-build-system
+/share/ @nrfconnect/ncs-co-build-system
# Snippets
-/snippets/ @nrfconnect/ncs-co-boards @nrfconnect/ncs-co-build-system
-/snippets/emulated*/ @masz-nordic
+/snippets/ci-shell/ @nrfconnect/ncs-protocols-serialization
+/snippets/emulated*/ @nrfconnect/ncs-ll-ursus
/snippets/hw-flow-control/ @nrfconnect/ncs-low-level-test @miha-nordic
+/snippets/matter-diagnostic-logs/ @nrfconnect/ncs-matter
+/snippets/nordic-bt-rpc/ @ppryga-nordic
+/snippets/nrf70-driver-debug/ @krish2718 @sachinthegreen
+/snippets/nrf70-driver-verbose-debug/ @krish2718 @sachinthegreen
+/snippets/nrf70-fw-patch-ext-flash/ @krish2718 @sachinthegreen
+/snippets/nrf70-wifi/ @krish2718 @sachinthegreen
/snippets/nrf91-modem-trace-ext-flash/ @nrfconnect/ncs-cia
-/snippets/nrf91-modem-trace-uart/ @eivindj-nordic
+/snippets/nrf91-modem-trace-ram/ @nrfconnect/ncs-modem
+/snippets/nrf91-modem-trace-rtt/ @nrfconnect/ncs-modem
+/snippets/nrf91-modem-trace-uart/ @nrfconnect/ncs-modem
/snippets/tfm-enable-share-uart/ @nrfconnect/ncs-cia
-/snippets/nrf70-driver-verbose-debug/ @krish2718 @sachinthegreen
-/snippets/nrf70-driver-debug/ @krish2718 @sachinthegreen
/snippets/wpa-supplicant-debug/ @krish2718 @sachinthegreen
-/snippets/nrf70-fw-patch-ext-flash/ @krish2718 @sachinthegreen
-/snippets/nordic-bt-rpc/ @ppryga-nordic
-/snippets/matter-diagnostic-logs/ @nrfconnect/ncs-matter
-/snippets/ci-shell/ @nrfconnect/ncs-protocols-serialization
/snippets/zperf/ @nrfconnect/ncs-protocols-serialization
+/snippets/nordic-bt-rpc/*.rst @nrfconnect/ncs-doc-leads
+
# Subsystems
-/subsys/ @nrfconnect/ncs-code-owners
+/subsys/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
+/subsys/app_event_manager_profiler_tracer/ @nrfconnect/ncs-si-bluebagel
/subsys/audio/audio_module_template/ @nrfconnect/ncs-audio
/subsys/audio_module/ @nrfconnect/ncs-audio
/subsys/bluetooth/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-dragoon
@@ -277,6 +595,7 @@
/subsys/bluetooth/controller/ @nrfconnect/ncs-dragoon
/subsys/bluetooth/host_extensions/ @nrfconnect/ncs-dragoon
/subsys/bluetooth/mesh/ @nrfconnect/ncs-paladin
+/subsys/bluetooth/rpc/ @nrfconnect/ncs-si-bluebagel
/subsys/bluetooth/services/fast_pair/ @nrfconnect/ncs-si-bluebagel
/subsys/bluetooth/services/wifi_prov/ @wentong-li @bama-nordic
/subsys/bootloader/ @nrfconnect/ncs-pluto
@@ -286,17 +605,15 @@
/subsys/dfu/dfu_multi_image/ @Damian-Nordic
/subsys/dm/ @nrfconnect/ncs-si-muffin
/subsys/dult/ @nrfconnect/ncs-si-bluebagel
-/subsys/ieee802154/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-radio-sw
-/subsys/mgmt/ @nrfconnect/ncs-pluto
-/subsys/mgmt/suitfu/ @nrfconnect/ncs-charon
/subsys/emds/ @balaklaka @nrfconnect/ncs-paladin
/subsys/esb/ @lemrey
-/subsys/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
-/subsys/app_event_manager_profiler_tracer/ @nrfconnect/ncs-si-bluebagel
/subsys/event_manager_proxy/ @nrfconnect/ncs-si-muffin
/subsys/fw_info/ @nrfconnect/ncs-pluto
/subsys/gazell/ @leewkb4567
+/subsys/ieee802154/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-radio-sw
/subsys/logging/ @nrfconnect/ncs-protocols-serialization
+/subsys/mgmt/ @nrfconnect/ncs-pluto
+/subsys/mgmt/suitfu/ @nrfconnect/ncs-charon
/subsys/mpsl/ @nrfconnect/ncs-dragoon
/subsys/mpsl/cx/ @ankuns @martintv
/subsys/mpsl/fem/ @ankuns @martintv
@@ -307,29 +624,29 @@
/subsys/net/lib/ftp_client/ @nrfconnect/ncs-iot-oulu
/subsys/net/lib/icalendar_parser/ @lats1980
/subsys/net/lib/lwm2m_client_utils/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-iot-oulu
-/subsys/net/lib/nrf_cloud/ @nrfconnect/ncs-nrf-cloud
+/subsys/net/lib/nrf_cloud/ @nrfconnect/ncs-nrf-cloud
/subsys/net/lib/nrf_provisioning/ @nrfconnect/ncs-iot-oulu
/subsys/net/lib/zzhc/ @junqingzou
/subsys/net/lib/wifi_credentials/ @nrfconnect/ncs-cia
/subsys/net/lib/softap_wifi_provision/ @nrfconnect/ncs-cia
/subsys/net/openthread/ @nrfconnect/ncs-co-networking @nrfconnect/ncs-thread
/subsys/net/openthread/rpc/ @nrfconnect/ncs-protocols-serialization
+/subsys/net_core_monitor/ @nrfconnect/ncs-si-muffin
/subsys/nfc/ @nrfconnect/ncs-si-muffin
/subsys/nfc/rpc/ @nrfconnect/ncs-protocols-serialization
/subsys/nrf_compress/ @nordicjm
+/subsys/nrf_profiler/ @nrfconnect/ncs-si-bluebagel
/subsys/nrf_rpc/ @nrfconnect/ncs-si-muffin
+/subsys/nrf_security/ @nrfconnect/ncs-aegir
/subsys/partition_manager/ @nordicjm @tejlmand
/subsys/pcd/ @nrfconnect/ncs-pluto
-/subsys/nrf_profiler/ @nrfconnect/ncs-si-bluebagel
-/subsys/shell/ @nordic-krch
/subsys/sdfw_services/ @nrfconnect/ncs-aurora
/subsys/sdfw_services/services/extmem/ @nrfconnect/ncs-charon
/subsys/sdfw_services/services/suit_service/ @nrfconnect/ncs-charon
+/subsys/shell/ @nordic-krch
/subsys/suit/ @nrfconnect/ncs-charon
-/subsys/nrf_security/ @nrfconnect/ncs-aegir
/subsys/trusted_storage/ @nrfconnect/ncs-aegir
/subsys/uart_async_adapter/ @nrfconnect/ncs-si-muffin
-/subsys/net_core_monitor/ @nrfconnect/ncs-si-muffin
/subsys/zigbee/ @nrfconnect/ncs-zigbee
# Sysbuild
@@ -338,60 +655,62 @@
/sysbuild/suit.cmake @nrfconnect/ncs-charon
# Tests
-/tests/ @nrfconnect/ncs-co-verification @katgiadla
/tests/benchmarks/ @nrfconnect/ncs-low-level-test
/tests/benchmarks/multicore/ @carlescufi @nrfconnect/ncs-low-level-test
+/tests/benchmarks/multicore/idle* @nrfconnect/ncs-low-level-test
/tests/benchmarks/multicore/idle/ @adamkondraciuk @nrfconnect/ncs-low-level-test
/tests/benchmarks/multicore/idle_gpio/ @adamkondraciuk @nrfconnect/ncs-low-level-test
-/tests/bluetooth/tester/ @carlescufi @nrfconnect/ncs-paladin
/tests/bluetooth/iso/ @nrfconnect/ncs-audio @Frodevan
+/tests/bluetooth/tester/ @carlescufi @nrfconnect/ncs-paladin
/tests/crypto/ @stephen-nordic @magnev
-/tests/drivers/flash_patch/ @nrfconnect/ncs-pluto
+/tests/drivers/gpio/egpio_basic_api/ @nrfconnect/ncs-ll-ursus
/tests/drivers/flash/flash_rpc/ @nrfconnect/ncs-pluto
+/tests/drivers/flash_patch/ @nrfconnect/ncs-pluto
/tests/drivers/fprotect/ @nrfconnect/ncs-pluto
/tests/drivers/lpuart/ @nordic-krch
/tests/drivers/nrfx_integration_test/ @nrfconnect/ncs-co-drivers
/tests/drivers/pwm/gpio_loopback/ @nrfconnect/ncs-low-level-test
/tests/drivers/sensor/multicore_temp/ @nrfconnect/ncs-low-level-test
-/tests/lib/at_parser/ @MirkoCovizzi
-/tests/lib/at_cmd_parser/ @lemrey
-/tests/lib/at_cmd_custom/ @eivindj-nordic
+/tests/lib/at_cmd_parser/ @nrfconnect/ncs-modem
+/tests/lib/at_cmd_custom/ @nrfconnect/ncs-modem
+/tests/lib/at_parser/ @nrfconnect/ncs-modem
+/tests/lib/contin_array/ @nrfconnect/ncs-audio
+/tests/lib/data_fifo/ @nrfconnect/ncs-audio
/tests/lib/date_time/ @trantanen @tokangas
/tests/lib/edge_impulse/ @nrfconnect/ncs-si-muffin
-/tests/lib/nrf_fuel_gauge/ @nordic-auko
-/tests/lib/gcf_sms/ @eivindj-nordic
+/tests/lib/gcf_sms/ @nrfconnect/ncs-modem
/tests/lib/hw_unique_key*/ @nrfconnect/ncs-aegir
/tests/lib/hw_id/ @nrfconnect/ncs-cia
/tests/lib/location/ @trantanen @tokangas
-/tests/lib/lte_lc/ @trantanen @tokangas
/tests/lib/lte_lc_api/ @trantanen @tokangas
-/tests/lib/modem_jwt/ @nrfconnect/ncs-iot-oulu
-/tests/lib/modem_battery/ @MirkoCovizzi
+/tests/lib/modem_battery/ @nrfconnect/ncs-modem
/tests/lib/modem_info/ @nrfconnect/ncs-cia
-/tests/lib/qos/ @nrfconnect/ncs-cia
-/tests/lib/sfloat/ @nrfconnect/ncs-si-muffin
-/tests/lib/sms/ @trantanen @tokangas
-/tests/lib/nrf_modem_lib/ @lemrey @MirkoCovizzi
-/tests/lib/nrf_modem_lib/nrf9x_sockets/ @MirkoCovizzi
-/tests/lib/pdn/ @lemrey @eivindj-nordic
-/tests/lib/ram_pwrdn/ @Damian-Nordic
-/tests/lib/contin_array/ @nrfconnect/ncs-audio
-/tests/lib/data_fifo/ @nrfconnect/ncs-audio
+/tests/lib/modem_jwt/ @nrfconnect/ncs-iot-oulu
+/tests/lib/nrf_fuel_gauge/ @nordic-auko
+/tests/lib/nrf_modem_lib/ @nrfconnect/ncs-modem
+/tests/lib/nrf_modem_lib/nrf9x_sockets/ @nrfconnect/ncs-modem
+/tests/lib/pdn/ @nrfconnect/ncs-modem
/tests/lib/pcm_mix/ @nrfconnect/ncs-audio
/tests/lib/pcm_stream_channel_modifier/ @nrfconnect/ncs-audio
+/tests/lib/qos/ @nrfconnect/ncs-cia
+/tests/lib/ram_pwrdn/ @Damian-Nordic
/tests/lib/sample_rate_converter/ @nrfconnect/ncs-audio
+/tests/lib/sfloat/ @nrfconnect/ncs-si-muffin
+/tests/lib/sms/ @trantanen @tokangas
/tests/lib/tone/ @nrfconnect/ncs-audio
+/tests/lib/uicc_lwm2m/ @stig-bjorlykke
/tests/mocks/nrf_rpc/ @nrfconnect/ncs-protocols-serialization
/tests/modules/lib/zcbor/ @oyvindronningstad
/tests/modules/mcuboot/direct_xip/ @nrfconnect/ncs-pluto
/tests/modules/mcuboot/external_flash/ @nrfconnect/ncs-pluto
/tests/nrf5340_audio/ @nrfconnect/ncs-audio @nordic-auko
+/tests/subsys/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
/tests/subsys/audio/audio_module_template/ @nrfconnect/ncs-audio
/tests/subsys/audio_module/ @nrfconnect/ncs-audio
/tests/subsys/bluetooth/gatt_dm/ @nrfconnect/ncs-si-muffin
-/tests/subsys/bluetooth/mesh/ @nrfconnect/ncs-paladin
/tests/subsys/bluetooth/enocean/ @nrfconnect/ncs-paladin
/tests/subsys/bluetooth/fast_pair/ @nrfconnect/ncs-si-bluebagel
+/tests/subsys/bluetooth/mesh/ @nrfconnect/ncs-paladin
/tests/subsys/bootloader/ @nrfconnect/ncs-pluto
/tests/subsys/caf/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
/tests/subsys/debug/cpu_load/ @nordic-krch
@@ -399,29 +718,32 @@
/tests/subsys/dfu/dfu_multi_image/ @Damian-Nordic
/tests/subsys/emds/ @balaklaka @nrfconnect/ncs-paladin
/tests/subsys/event_manager_proxy/ @nrfconnect/ncs-si-muffin
-/tests/subsys/app_event_manager/ @nrfconnect/ncs-si-muffin @nrfconnect/ncs-si-bluebagel
/tests/subsys/fw_info/ @nrfconnect/ncs-pluto
/tests/subsys/mpsl/ @nrfconnect/ncs-dragoon
/tests/subsys/net/lib/aws_*/ @nrfconnect/ncs-cia
/tests/subsys/net/lib/azure_iot_hub/ @nrfconnect/ncs-cia
/tests/subsys/net/lib/fota_download/ @nrfconnect/ncs-pluto
/tests/subsys/net/lib/lwm2m_*/ @nrfconnect/ncs-iot-oulu
+/tests/subsys/net/lib/mqtt_helper/ @nrfconnect/ncs-cia
/tests/subsys/net/lib/nrf_cloud/ @nrfconnect/ncs-nrf-cloud
/tests/subsys/net/lib/nrf_provisioning/ @nrfconnect/ncs-iot-oulu
/tests/subsys/net/lib/wifi_credentials*/ @nrfconnect/ncs-cia
-/tests/subsys/net/lib/mqtt_helper/ @nrfconnect/ncs-cia
/tests/subsys/net/openthread/rpc/ @nrfconnect/ncs-protocols-serialization
/tests/subsys/nfc/rpc/ @nrfconnect/ncs-protocols-serialization
/tests/subsys/nrf_compress/ @nordicjm
+/tests/subsys/nrf_profiler/ @nrfconnect/ncs-si-bluebagel
/tests/subsys/partition_manager/region/ @nordicjm @tejlmand
-/tests/subsys/partition_manager/static_pm_file/ @nordicjm @tejlmand
+/tests/subsys/partition_manager/static_pm_file/ @nordicjm @tejlmand
/tests/subsys/pcd/ @nrfconnect/ncs-pluto
-/tests/subsys/nrf_profiler/ @nrfconnect/ncs-si-bluebagel
/tests/subsys/sdfw_services/ @nrfconnect/ncs-aurora
-/tests/subsys/zigbee/ @nrfconnect/ncs-zigbee
/tests/subsys/suit/ @nrfconnect/ncs-charon
/tests/tfm/ @nrfconnect/ncs-aegir @stephen-nordic @magnev
/tests/unity/ @nordic-krch
+/tests/subsys/zigbee/ @nrfconnect/ncs-zigbee
+
+/tests/benchmarks/multicore/idle/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/tests/benchmarks/multicore/idle_gpio/*.rst @nrfconnect/ncs-si-bluebagel-doc
+/tests/benchmarks/multicore/idle_with_pwm/*.rst @nrfconnect/ncs-si-bluebagel-doc
# CI specific west
/test-manifests/99-default-test-nrf.yml @nrfconnect/ncs-ci
diff --git a/applications/asset_tracker_v2/README.rst b/applications/asset_tracker_v2/README.rst
index 5b71df8e2fba..1702f5a5d277 100644
--- a/applications/asset_tracker_v2/README.rst
+++ b/applications/asset_tracker_v2/README.rst
@@ -7,7 +7,10 @@ Asset Tracker v2
:local:
:depth: 2
-The Asset Tracker v2 is a real-time configurable ultra-low power capable application firmware for the nRF91 Series :term:`System in Package (SiP)`.
+.. important::
+ |ATv2_maintenance_note|
+
+Asset Tracker v2 is a real-time configurable ultra-low power capable application firmware for the nRF91 Series :term:`System in Package (SiP)`.
See the subpages for detailed documentation on the application and its modules:
diff --git a/applications/asset_tracker_v2/doc/app_behavior.rst b/applications/asset_tracker_v2/doc/app_behavior.rst
index 2fa18042ebb8..ab8d73cc0e91 100644
--- a/applications/asset_tracker_v2/doc/app_behavior.rst
+++ b/applications/asset_tracker_v2/doc/app_behavior.rst
@@ -7,6 +7,9 @@ Application behavior and functionality
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
This section describes the general functioning of the Asset Tracker v2 application.
Data types
diff --git a/applications/asset_tracker_v2/doc/app_module.rst b/applications/asset_tracker_v2/doc/app_module.rst
index 951b3d1e51e1..092fc7749c25 100644
--- a/applications/asset_tracker_v2/doc/app_module.rst
+++ b/applications/asset_tracker_v2/doc/app_module.rst
@@ -7,6 +7,9 @@ Application module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The application module controls key mechanisms in the Asset Tracker v2.
It decides when to sample data, what types of data to sample, and has explicit control over some aspects of the application.
diff --git a/applications/asset_tracker_v2/doc/asset_tracker_v2_description.rst b/applications/asset_tracker_v2/doc/asset_tracker_v2_description.rst
index 1cf39f1da2d0..6be8811c08ef 100644
--- a/applications/asset_tracker_v2/doc/asset_tracker_v2_description.rst
+++ b/applications/asset_tracker_v2/doc/asset_tracker_v2_description.rst
@@ -7,6 +7,9 @@ Application description
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The Asset Tracker v2 application is built on the following principles:
* Ultra-low power by design - The application highlights the power saving features of the nRF91 Series SiP, which is critical for successfully developing small form-factor devices and products which need very long battery lifetime.
diff --git a/applications/asset_tracker_v2/doc/cloud_module.rst b/applications/asset_tracker_v2/doc/cloud_module.rst
index 0f76ab798725..ae1b41517a41 100644
--- a/applications/asset_tracker_v2/doc/cloud_module.rst
+++ b/applications/asset_tracker_v2/doc/cloud_module.rst
@@ -7,6 +7,9 @@ Cloud module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The cloud module establishes and maintains the connection to a supported cloud service.
It uses the :ref:`Cloud wrapper API ` to integrate and handle the client libraries present in the |NCS|.
diff --git a/applications/asset_tracker_v2/doc/cloud_wrapper.rst b/applications/asset_tracker_v2/doc/cloud_wrapper.rst
index 7c638ee22ae9..7a61f1cdb88a 100644
--- a/applications/asset_tracker_v2/doc/cloud_wrapper.rst
+++ b/applications/asset_tracker_v2/doc/cloud_wrapper.rst
@@ -7,6 +7,9 @@ Cloud wrapper API
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The cloud wrapper API is a generic API used for controlling the connection to a supported |NCS| client library through :ref:`Integration layers `.
It exposes generic functions such as ``send``, ``connect``, and ``disconnect``, hiding the functionality that is specific to a single client library implementation.
diff --git a/applications/asset_tracker_v2/doc/data_module.rst b/applications/asset_tracker_v2/doc/data_module.rst
index 756dd872b884..f8bf8425327c 100644
--- a/applications/asset_tracker_v2/doc/data_module.rst
+++ b/applications/asset_tracker_v2/doc/data_module.rst
@@ -7,6 +7,9 @@ Data module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The data module gathers data that has been sampled by other modules in the system and stores it into ring buffers.
It keeps track of data requested by the :ref:`asset_tracker_v2_app_module` and decides when data is sent to the cloud.
diff --git a/applications/asset_tracker_v2/doc/debug_module.rst b/applications/asset_tracker_v2/doc/debug_module.rst
index 36adac09cab9..7f9b3895e58b 100644
--- a/applications/asset_tracker_v2/doc/debug_module.rst
+++ b/applications/asset_tracker_v2/doc/debug_module.rst
@@ -7,6 +7,9 @@ Debug module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The debug module intends to improve the overall debugging experience in the application.
By default, it subscribes to all the events in the system and implements support for `Memfault`_ through the :ref:`mod_memfault` module integrated in |NCS|.
diff --git a/applications/asset_tracker_v2/doc/firmware_architecture.rst b/applications/asset_tracker_v2/doc/firmware_architecture.rst
index a4fa477cb1d1..47b069ea2535 100644
--- a/applications/asset_tracker_v2/doc/firmware_architecture.rst
+++ b/applications/asset_tracker_v2/doc/firmware_architecture.rst
@@ -7,6 +7,9 @@ Firmware architecture
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The Asset Tracker v2 application has a modular structure, where each module has a defined scope of responsibility.
The application makes use of the :ref:`app_event_manager` to distribute events between modules in the system.
The Application Event Manager is used for all the communication between the modules.
diff --git a/applications/asset_tracker_v2/doc/location_module.rst b/applications/asset_tracker_v2/doc/location_module.rst
index e571f807fdc0..c3ddad55641e 100644
--- a/applications/asset_tracker_v2/doc/location_module.rst
+++ b/applications/asset_tracker_v2/doc/location_module.rst
@@ -7,6 +7,9 @@ Location module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The location module controls the GNSS, cellular and Wi-Fi positioning functionality.
It can be used to retrieve the location of the device in the form of events containing a position, velocity and time (PVT) structure.
diff --git a/applications/asset_tracker_v2/doc/lwm2m_carrier_library.rst b/applications/asset_tracker_v2/doc/lwm2m_carrier_library.rst
index 05420fe84212..5679659616f5 100644
--- a/applications/asset_tracker_v2/doc/lwm2m_carrier_library.rst
+++ b/applications/asset_tracker_v2/doc/lwm2m_carrier_library.rst
@@ -3,6 +3,10 @@
Using the carrier library
#########################
+.. important::
+ |ATv2_maintenance_note|
+
+
.. |application_sample_name| replace:: Asset Tracker v2 application
.. include:: /includes/lwm2m_carrier_library.txt
diff --git a/applications/asset_tracker_v2/doc/modem_module.rst b/applications/asset_tracker_v2/doc/modem_module.rst
index e73b8129f319..22f84003ee06 100644
--- a/applications/asset_tracker_v2/doc/modem_module.rst
+++ b/applications/asset_tracker_v2/doc/modem_module.rst
@@ -7,6 +7,9 @@ Modem module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The modem module communicates with the modem to control the LTE connection and retrieve information from the modem about the device and LTE network.
Features
diff --git a/applications/asset_tracker_v2/doc/modules.rst b/applications/asset_tracker_v2/doc/modules.rst
index c1370c10c029..854015292dff 100644
--- a/applications/asset_tracker_v2/doc/modules.rst
+++ b/applications/asset_tracker_v2/doc/modules.rst
@@ -3,6 +3,10 @@
Application modules
###################
+.. important::
+ |ATv2_maintenance_note|
+
+
The Asset Tracker v2 application consists of a set of modules.
See :ref:`asset_tracker_v2_architecture` for more information on how the application is structured.
diff --git a/applications/asset_tracker_v2/doc/modules_common.rst b/applications/asset_tracker_v2/doc/modules_common.rst
index 59c4ef79c74f..ddd73d7accd9 100644
--- a/applications/asset_tracker_v2/doc/modules_common.rst
+++ b/applications/asset_tracker_v2/doc/modules_common.rst
@@ -7,6 +7,9 @@ Modules common API
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The Modules common API provides the functionality to administer mechanisms in the application architecture, and consist of functions that are shared between modules.
The API supports the following functionalities:
diff --git a/applications/asset_tracker_v2/doc/sensor_module.rst b/applications/asset_tracker_v2/doc/sensor_module.rst
index 351e55fd277d..ed607d2c07c1 100644
--- a/applications/asset_tracker_v2/doc/sensor_module.rst
+++ b/applications/asset_tracker_v2/doc/sensor_module.rst
@@ -7,6 +7,9 @@ Sensor module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The sensor module interacts with external sensors present on the `Thingy:91 `_ and Thingy:91 X.
It collects environmental data and detects motion over a set threshold value.
diff --git a/applications/asset_tracker_v2/doc/ui_module.rst b/applications/asset_tracker_v2/doc/ui_module.rst
index 845cc0116484..a88ea0d04323 100644
--- a/applications/asset_tracker_v2/doc/ui_module.rst
+++ b/applications/asset_tracker_v2/doc/ui_module.rst
@@ -7,6 +7,9 @@ User Interface module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The User Interface module controls and monitors the UI elements on nRF91 Series development kits, Thingy:91, and Thingy:91 X.
Features
diff --git a/applications/asset_tracker_v2/doc/unit_test.rst b/applications/asset_tracker_v2/doc/unit_test.rst
index 7608b3cd1e55..1654d469fedf 100644
--- a/applications/asset_tracker_v2/doc/unit_test.rst
+++ b/applications/asset_tracker_v2/doc/unit_test.rst
@@ -7,6 +7,9 @@ Unit tests
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The internal modules of the :ref:`asset_tracker_v2` application have a set of unit tests in the :file:`asset_tracker_v2/tests` folder.
Following are the modules that have unit tests:
diff --git a/applications/asset_tracker_v2/doc/util_module.rst b/applications/asset_tracker_v2/doc/util_module.rst
index 5d598584c1db..29fa256f930e 100644
--- a/applications/asset_tracker_v2/doc/util_module.rst
+++ b/applications/asset_tracker_v2/doc/util_module.rst
@@ -7,6 +7,9 @@ Utility module
:local:
:depth: 2
+.. important::
+ |ATv2_maintenance_note|
+
The utility module provides the functionality to administer and monitor mechanisms in the application architecture.
Features
diff --git a/applications/connectivity_bridge/prj.conf b/applications/connectivity_bridge/prj.conf
index 8693f39ac72e..239733fa0ba5 100644
--- a/applications/connectivity_bridge/prj.conf
+++ b/applications/connectivity_bridge/prj.conf
@@ -73,3 +73,6 @@ CONFIG_NRFX_TIMER2=y
CONFIG_NRFX_PPI=y
CONFIG_HW_ID_LIBRARY=y
+CONFIG_RESET_ON_FATAL_ERROR=y
+CONFIG_ASSERT=y
+CONFIG_POWEROFF=y
diff --git a/applications/connectivity_bridge/src/modules/CMakeLists.txt b/applications/connectivity_bridge/src/modules/CMakeLists.txt
index c455903dc109..6a9e15dff7a0 100644
--- a/applications/connectivity_bridge/src/modules/CMakeLists.txt
+++ b/applications/connectivity_bridge/src/modules/CMakeLists.txt
@@ -4,7 +4,7 @@
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
-target_sources_ifdef(CONFIG_PM_DEVICE
+target_sources_ifdef(CONFIG_POWEROFF
app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/power_handler.c)
target_sources_ifdef(CONFIG_SERIAL
diff --git a/applications/connectivity_bridge/src/modules/power_handler.c b/applications/connectivity_bridge/src/modules/power_handler.c
index 06996418f53a..0b0cf7210e7a 100644
--- a/applications/connectivity_bridge/src/modules/power_handler.c
+++ b/applications/connectivity_bridge/src/modules/power_handler.c
@@ -8,6 +8,7 @@
#include
#include
#include
+#include
#define MODULE power_handler
#include "module_state_event.h"
@@ -49,6 +50,7 @@ static bool app_event_handler(const struct app_event_header *aeh)
__ASSERT_NO_MSG(module_active_count >= 0);
if (module_active_count == 0) {
+ /* All modules went into standby, shutting down system. */
k_work_reschedule(&power_down_work, K_SECONDS(1));
}
}
@@ -56,9 +58,8 @@ static bool app_event_handler(const struct app_event_header *aeh)
}
if (is_power_down_event(aeh)) {
-#if defined(CONFIG_SOC_SERIES_NRF52X)
- nrf_power_system_off(NRF_POWER);
-#endif
+ /* Put the chip in SYSTEM OFF mode, to be rebooted when USB is connected. */
+ sys_poweroff();
}
/* If event is unhandled, unsubscribe. */
diff --git a/applications/connectivity_bridge/src/modules/usb_bulk_interface.c b/applications/connectivity_bridge/src/modules/usb_bulk_interface.c
index 7d8a07dab62d..650561e224c0 100644
--- a/applications/connectivity_bridge/src/modules/usb_bulk_interface.c
+++ b/applications/connectivity_bridge/src/modules/usb_bulk_interface.c
@@ -205,12 +205,15 @@ static bool app_event_handler(const struct app_event_header *aeh)
const struct module_state_event *event = cast_module_state_event(aeh);
if (check_state(event, MODULE_ID(main), MODULE_STATE_READY)) {
+ /* tell the rest of the system that we are busy. */
+ module_set_state(MODULE_STATE_READY);
+
/* Add MS OS 2.0 BOS descriptor to BOS structure */
usb_bos_register_cap((void *)&bos_cap_msosv2);
/* Point interface index to string descriptor */
iface_string_desc_init(&dapusb_config);
- /* tell the usb_cdc_handler we are done */
+ /* tell the usb_cdc_handler we are done. */
module_set_state(MODULE_STATE_STANDBY);
}
return false;
diff --git a/applications/ipc_radio/README.rst b/applications/ipc_radio/README.rst
index dfaf9a4e3c92..6c78b02cf072 100644
--- a/applications/ipc_radio/README.rst
+++ b/applications/ipc_radio/README.rst
@@ -76,9 +76,6 @@ You can select the Bluetooth Low Energy serialization using the :kconfig:option:
The Bluetooth Low Energy and IEEE 802.15.4 functionalities can operate simultaneously and are only limited by available memory.
-.. note::
- The IEEE 802.15.4 is currently not supported on the :ref:`zephyr:nrf54h20dk_nrf54h20` board.
-
Sysbuild Kconfig options
========================
diff --git a/applications/ipc_radio/overlay-bt_hci_ipc.conf b/applications/ipc_radio/overlay-bt_hci_ipc.conf
index b3c871080986..5771becc0206 100644
--- a/applications/ipc_radio/overlay-bt_hci_ipc.conf
+++ b/applications/ipc_radio/overlay-bt_hci_ipc.conf
@@ -16,8 +16,6 @@ CONFIG_BT_HCI_RAW=y
CONFIG_BT_CTLR_ASSERT_HANDLER=y
CONFIG_ASSERT=y
-CONFIG_DEBUG_INFO=y
-CONFIG_EXCEPTION_STACK_TRACE=y
CONFIG_IPC_RADIO_BT=y
CONFIG_IPC_RADIO_BT_HCI_IPC=y
diff --git a/applications/matter_bridge/Kconfig b/applications/matter_bridge/Kconfig
index d8a415b49b6a..dc4e3344840b 100644
--- a/applications/matter_bridge/Kconfig
+++ b/applications/matter_bridge/Kconfig
@@ -80,7 +80,11 @@ config BT_SCAN
# Configure how many Bluetooth LE devices the Matter bridge can support (the final number is given value - 1, as 1 connection is used for the Matter Bluetooth LE service).
config BT_MAX_CONN
- default 3
+ default 10
+
+# Set ACL RX count to CONFIG_BT_MAX_CONN + 1, as it is expected that CONFIG_BT_BUF_ACL_RX_COUNT > CONFIG_BT_MAX_CONN.
+config BT_BUF_ACL_RX_COUNT
+ default 11
config BT_SCAN_FILTER_ENABLE
default y
@@ -111,7 +115,7 @@ config BT_SETTINGS
# Configure how many Bluetooth LE devices will be paired with Matter bridge. Assuming it will be only bridged devices, it should be set to BT_MAX_CONN - 1.
config BT_MAX_PAIRED
- default 2
+ default 9
# Use two Bluetooth LE identities. The first one is used by the peripheral for Matter service advertising purposes, and the other is used by the Matter bridge central.
config BT_ID_MAX
diff --git a/applications/matter_bridge/doc/matter_bridge_description.rst b/applications/matter_bridge/doc/matter_bridge_description.rst
index 4e657247032d..0c99ab9ee87d 100644
--- a/applications/matter_bridge/doc/matter_bridge_description.rst
+++ b/applications/matter_bridge/doc/matter_bridge_description.rst
@@ -531,7 +531,7 @@ Every Bluetooth LE bridged device uses a separate Bluetooth LE connection, so yo
Since the Matter stack uses one Bluetooth LE connection for commissioning, the maximum number of connections you can use for bridged devices is one less than is configured using the :kconfig:option:`CONFIG_BT_MAX_CONN` Kconfig option.
Increasing the number of Bluetooth LE connections affects the RAM usage on both the application and network cores.
-The current maximum number of Bluetooth LE connections that can be selected using the default configuration is ``10``.
+The current maximum number of Bluetooth LE connections that can be selected using the default configuration is ``10``, which effectively means 9 bridged devices.
.. tabs::
@@ -547,7 +547,7 @@ The current maximum number of Bluetooth LE connections that can be selected usin
You can increase the number of Bluetooth LE connections if you decrease the size of the Bluetooth LE TX/RX buffers used by the Bluetooth controller, but this will decrease the communication throughput.
- Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` by decreasing the size of Bluetooth LE TX/RX buffers:
+ Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` (which effectively means 19 bridged devices) by decreasing the size of Bluetooth LE TX/RX buffers:
.. parsed-literal::
:class: highlight
@@ -559,7 +559,7 @@ The current maximum number of Bluetooth LE connections that can be selected usin
You can not increase the default number of Bluetooth LE connections in this configuration using overlays.
This is because the configuration uses both Thread and Bluetooth LE protocols, and limited RAM memory.
You can still increase the number of connections by modifying the board files and decreasing the buffer sizes.
- The default number of connections is nine.
+ The default number of connections is ``10``, which effectively means 9 bridged devices.
.. group-tab:: nRF54 DKs
@@ -571,7 +571,7 @@ The current maximum number of Bluetooth LE connections that can be selected usin
You can increase the number of Bluetooth LE connections if you decrease the size of the Bluetooth LE TX/RX buffers used by the Bluetooth controller, but this will decrease the communication throughput.
- Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` by decreasing the sizes of Bluetooth LE TX/RX buffers:
+ Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` (which effectively means 19 bridged devices) by decreasing the sizes of Bluetooth LE TX/RX buffers:
.. parsed-literal::
:class: highlight
@@ -582,7 +582,7 @@ The current maximum number of Bluetooth LE connections that can be selected usin
You can increase the number of Bluetooth LE connections if you decrease the size of the Bluetooth LE TX/RX buffers used by the Bluetooth controller, but this will decrease the communication throughput.
- Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` by decreasing the sizes of Bluetooth LE TX/RX buffers:
+ Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` (which effectively means 19 bridged devices) by decreasing the sizes of Bluetooth LE TX/RX buffers:
.. parsed-literal::
:class: highlight
@@ -599,7 +599,7 @@ The current maximum number of Bluetooth LE connections that can be selected usin
You can increase the number of Bluetooth LE connections if you decrease the size of the Bluetooth LE TX/RX buffers used by the Bluetooth controller, but this will decrease the communication throughput.
- Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` by decreasing the sizes of Bluetooth LE TX/RX buffers:
+ Build the target using the following command in the project directory to enable a configuration that increases the number of Bluetooth LE connections to ``20`` (which effectively means 19 bridged devices) by decreasing the sizes of Bluetooth LE TX/RX buffers:
.. parsed-literal::
:class: highlight
diff --git a/applications/nrf5340_audio/src/audio/audio_datapath.c b/applications/nrf5340_audio/src/audio/audio_datapath.c
index 733ca782c4b7..96d9f7311475 100644
--- a/applications/nrf5340_audio/src/audio/audio_datapath.c
+++ b/applications/nrf5340_audio/src/audio/audio_datapath.c
@@ -69,9 +69,9 @@ LOG_MODULE_REGISTER(audio_datapath, CONFIG_AUDIO_DATAPATH_LOG_LEVEL);
#define PRES_COMP_NUM_DATA_PTS (DRIFT_MEAS_PERIOD_US / CONFIG_AUDIO_FRAME_DURATION_US)
/* Audio clock - nRF5340 Analog Phase-Locked Loop (APLL) */
-#define APLL_FREQ_CENTER 39854
-#define APLL_FREQ_MIN 36834
-#define APLL_FREQ_MAX 42874
+#define APLL_FREQ_MIN HFCLKAUDIO_12_165_MHZ
+#define APLL_FREQ_CENTER HFCLKAUDIO_12_288_MHZ
+#define APLL_FREQ_MAX HFCLKAUDIO_12_411_MHZ
/* Use nanoseconds to reduce rounding errors */
/* clang-format off */
#define APLL_FREQ_ADJ(t) (-((t)*1000) / 331)
diff --git a/applications/nrf5340_audio/src/modules/audio_i2s.c b/applications/nrf5340_audio/src/modules/audio_i2s.c
index d8c113ae644e..2b855ce7a49f 100644
--- a/applications/nrf5340_audio/src/modules/audio_i2s.c
+++ b/applications/nrf5340_audio/src/modules/audio_i2s.c
@@ -16,8 +16,6 @@
#define I2S_NL DT_NODELABEL(i2s0)
-#define HFCLKAUDIO_12_288_MHZ 0x9BAE
-
enum audio_i2s_state {
AUDIO_I2S_STATE_UNINIT,
AUDIO_I2S_STATE_IDLE,
diff --git a/applications/nrf5340_audio/src/modules/audio_i2s.h b/applications/nrf5340_audio/src/modules/audio_i2s.h
index 0c732dcb5749..e7171320e53c 100644
--- a/applications/nrf5340_audio/src/modules/audio_i2s.h
+++ b/applications/nrf5340_audio/src/modules/audio_i2s.h
@@ -15,6 +15,17 @@
* be 10 or 7.5 ms. Since we can't have floats in a define we use 15/2 instead
*/
+/**
+ * Calculation:
+ * FREQ_VALUE = 2^16 * ((12 * f_out / 32M) - 4)
+ * f_out == 12.288
+ * 39845.888 = 2^16 * ((12 * 12.288 / 32M) - 4)
+ * 39846 = 0x9BA6
+ */
+#define HFCLKAUDIO_12_288_MHZ 0x9BA6
+#define HFCLKAUDIO_12_165_MHZ 0x8FD8
+#define HFCLKAUDIO_12_411_MHZ 0xA774
+
#if ((CONFIG_AUDIO_FRAME_DURATION_US == 7500) && CONFIG_SW_CODEC_LC3)
#define FRAME_SIZE_BYTES \
diff --git a/applications/nrf_desktop/bootloader_dfu.rst b/applications/nrf_desktop/bootloader_dfu.rst
index f6495c6a76d3..f15f79b1e432 100644
--- a/applications/nrf_desktop/bootloader_dfu.rst
+++ b/applications/nrf_desktop/bootloader_dfu.rst
@@ -317,6 +317,10 @@ The update image can also be transferred in the background through one of the fo
The `nRF Connect Device Manager`_ application transfers the image update files over the Simple Management Protocol (SMP).
+.. note::
+ If your DFU target is not paired through Bluetooth with your Android device, the DFU procedure automatically triggers the pairing procedure.
+ The nRF Desktop configurations with the DFU support over SMP require encryption for operations on the Bluetooth GATT SMP service (see the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT` Kconfig option).
+
To perform DFU using the `nRF Connect Device Manager`_ mobile app, complete the following steps:
.. tabs::
diff --git a/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_fast_pair.conf b/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_fast_pair.conf
index 5e7ddf15bfff..29a89b0c987f 100644
--- a/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_fast_pair.conf
+++ b/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_fast_pair.conf
@@ -113,7 +113,7 @@ CONFIG_LED_PWM=y
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_mcuboot_smp.conf b/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_mcuboot_smp.conf
index b6e4d4d2f407..fd6081c5e720 100644
--- a/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_mcuboot_smp.conf
+++ b/applications/nrf_desktop/configuration/nrf52840dk_nrf52840/prj_mcuboot_smp.conf
@@ -99,7 +99,7 @@ CONFIG_LED_PWM=y
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_BT_L2CAP_TX_MTU=260
diff --git a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_fast_pair.conf b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_fast_pair.conf
index a75263a4fc1f..3a1bfb8bab41 100644
--- a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_fast_pair.conf
+++ b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_fast_pair.conf
@@ -155,7 +155,7 @@ CONFIG_SPI_NRFX_RAM_BUFFER_SIZE=8
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_mcuboot_smp.conf b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_mcuboot_smp.conf
index e82be3872341..b25f3b562942 100644
--- a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_mcuboot_smp.conf
+++ b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_mcuboot_smp.conf
@@ -141,7 +141,7 @@ CONFIG_ZCBOR=y
CONFIG_CRC=y
CONFIG_MCUMGR=y
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_MCUMGR_GRP_IMG=y
diff --git a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_release_fast_pair.conf b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_release_fast_pair.conf
index 43eb5444b973..70b3fd6bffbf 100644
--- a/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_release_fast_pair.conf
+++ b/applications/nrf_desktop/configuration/nrf52840gmouse_nrf52840/prj_release_fast_pair.conf
@@ -149,7 +149,7 @@ CONFIG_SPI_NRFX_RAM_BUFFER_SIZE=8
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf52kbd_nrf52832/prj_release_fast_pair.conf b/applications/nrf_desktop/configuration/nrf52kbd_nrf52832/prj_release_fast_pair.conf
index 4bc310b853b4..6c05724e3396 100644
--- a/applications/nrf_desktop/configuration/nrf52kbd_nrf52832/prj_release_fast_pair.conf
+++ b/applications/nrf_desktop/configuration/nrf52kbd_nrf52832/prj_release_fast_pair.conf
@@ -112,7 +112,7 @@ CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf5340dk_nrf5340_cpunet/images/ipc_radio/prj.conf b/applications/nrf_desktop/configuration/nrf5340dk_nrf5340_cpunet/images/ipc_radio/prj.conf
index b6141122a043..f3b89b7c3d4a 100644
--- a/applications/nrf_desktop/configuration/nrf5340dk_nrf5340_cpunet/images/ipc_radio/prj.conf
+++ b/applications/nrf_desktop/configuration/nrf5340dk_nrf5340_cpunet/images/ipc_radio/prj.conf
@@ -29,8 +29,6 @@ CONFIG_BT_CTLR_DATA_LENGTH_MAX=35
CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=3000
CONFIG_ASSERT=y
-CONFIG_DEBUG_INFO=y
-CONFIG_EXCEPTION_STACK_TRACE=y
# Use minimal C library instead of the Picolib
CONFIG_MINIMAL_LIBC=y
diff --git a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj.conf b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj.conf
index d7d5f7414349..f5571ec57872 100644
--- a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj.conf
+++ b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj.conf
@@ -117,7 +117,7 @@ CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=1024
# Enable MCUmgr Bluetooth transport
CONFIG_DESKTOP_DFU_MCUMGR_ENABLE=y
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
# Allow for large Bluetooth data packets.
CONFIG_BT_L2CAP_TX_MTU=498
diff --git a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj_release.conf b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj_release.conf
index c76ea6d62d0b..366a64afb0b4 100644
--- a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj_release.conf
+++ b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpuapp/prj_release.conf
@@ -95,7 +95,7 @@ CONFIG_UART_CONSOLE=n
# Enable MCUmgr Bluetooth transport
CONFIG_DESKTOP_DFU_MCUMGR_ENABLE=y
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
# Allow for large Bluetooth data packets.
CONFIG_BT_L2CAP_TX_MTU=498
diff --git a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpurad/images/ipc_radio/prj.conf b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpurad/images/ipc_radio/prj.conf
index f99145ba2140..7fe4abce1e3d 100644
--- a/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpurad/images/ipc_radio/prj.conf
+++ b/applications/nrf_desktop/configuration/nrf54h20dk_nrf54h20_cpurad/images/ipc_radio/prj.conf
@@ -34,8 +34,6 @@ CONFIG_BT_CTLR_FILTER_ACCEPT_LIST=y
CONFIG_BT_CTLR_PRIVACY=y
CONFIG_ASSERT=y
-CONFIG_DEBUG_INFO=y
-CONFIG_EXCEPTION_STACK_TRACE=y
# Disable reset on fatal error for better debbuging experience.
CONFIG_RESET_ON_FATAL_ERROR=n
diff --git a/applications/nrf_desktop/configuration/nrf54l15dk_nrf54l15_cpuapp/prj_fast_pair.conf b/applications/nrf_desktop/configuration/nrf54l15dk_nrf54l15_cpuapp/prj_fast_pair.conf
index 90362d6a0db1..4b6467321641 100644
--- a/applications/nrf_desktop/configuration/nrf54l15dk_nrf54l15_cpuapp/prj_fast_pair.conf
+++ b/applications/nrf_desktop/configuration/nrf54l15dk_nrf54l15_cpuapp/prj_fast_pair.conf
@@ -102,7 +102,7 @@ CONFIG_LED_PWM=y
# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
+CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT=y
CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
CONFIG_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/app.overlay b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/app.overlay
deleted file mode 100644
index a773a2afeccd..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/app.overlay
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-/* For nRF54L, watchdog status is disabled by default. Needs to be enabled in DTS overlay. */
-&wdt31 {
- status = "okay";
-};
-
-/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
-&cpuapp_rram {
- reg = < 0x0 DT_SIZE_K(1524) >;
-};
-
-/ {
- /* Disable pwmleds and redefine them to align configuration with CAF LEDs requirements.
- * The configuration needs to match the used board revision.
- */
- /delete-node/ pwmleds;
-
- pwmleds0 {
- compatible = "pwm-leds";
- status = "okay";
-
- pwm_led0: led_pwm_0 {
- status = "okay";
- pwms = <&pwm20 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
- label = "LED System State";
- };
- };
-
- pwmleds1 {
- compatible = "pwm-leds";
- status = "okay";
-
- pwm_led1: led_pwm_1 {
- status = "okay";
- pwms = <&pwm21 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
- label = "LED Conn State";
- };
- };
-
- pwmleds2 {
- compatible = "pwm-leds";
- status = "okay";
-
- pwm_led2: led_pwm_2 {
- status = "okay";
- pwms = <&pwm22 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
- label = "LED Num Lock";
- };
- };
-};
-
-&pwm20 {
- status = "okay";
- pinctrl-0 = <&pwm20_default_alt>;
- pinctrl-1 = <&pwm20_sleep_alt>;
- pinctrl-names = "default", "sleep";
-};
-
-&pwm21 {
- status = "okay";
- pinctrl-0 = <&pwm21_default_alt>;
- pinctrl-1 = <&pwm21_sleep_alt>;
- pinctrl-names = "default", "sleep";
-};
-
-&pwm22 {
- status = "okay";
- pinctrl-0 = <&pwm22_default_alt>;
- pinctrl-1 = <&pwm22_sleep_alt>;
- pinctrl-names = "default", "sleep";
-};
-
-&pinctrl {
- pwm20_default_alt: pwm20_default_alt {
- group1 {
- psels = ;
- };
- };
-
- pwm20_sleep_alt: pwm20_sleep_alt {
- group1 {
- psels = ;
- low-power-enable;
- };
- };
-
- pwm21_default_alt: pwm21_default_alt {
- group1 {
- psels = ;
- };
- };
-
- pwm21_sleep_alt: pwm21_sleep_alt {
- group1 {
- psels = ;
- low-power-enable;
- };
- };
-
- pwm22_default_alt: pwm22_default_alt {
- group1 {
- psels = ;
- };
- };
-
- pwm22_sleep_alt: pwm22_sleep_alt {
- group1 {
- psels = ;
- low-power-enable;
- };
- };
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_def.h
deleted file mode 100644
index 5aee49473efb..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_def.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include
-
-/* This configuration file is included only once from button module and holds
- * information about pins forming keyboard matrix.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} buttons_def_include_once;
-
-static const struct gpio_pin col[] = {};
-
-static const struct gpio_pin row[] = {
- { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button0), gpios) },
- { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button1), gpios) },
- { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button2), gpios) },
- { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(button3), gpios) },
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_sim_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_sim_def.h
deleted file mode 100644
index b6a008dc1686..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/buttons_sim_def.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include
-
-/* This configuration file is included only once from buttons_sim module
- * and holds information about generated button presses sequence.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} buttons_sim_def_include_once;
-
-const static uint16_t simulated_key_sequence[] = {
- KEY_ID(0x00, 0x11), /* N */
- KEY_ID(0x00, 0x12), /* O */
- KEY_ID(0x00, 0x15), /* R */
- KEY_ID(0x00, 0x07), /* D */
- KEY_ID(0x00, 0x0C), /* I */
- KEY_ID(0x00, 0x06), /* C */
- KEY_ID(0x00, 0x2C), /* spacebar */
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/click_detector_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/click_detector_def.h
deleted file mode 100644
index 38a3fee1443b..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/click_detector_def.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include
-
-/* This configuration file is included only once from click_detector module
- * and holds information about click detector configuration.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} click_detector_def_include_once;
-
-static const struct click_detector_config click_detector_config[] = {
- {
- .key_id = CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON,
- .consume_button_event = false,
- },
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def.h
deleted file mode 100644
index 445b2f14943e..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include "hid_keyboard_leds.h"
-
-/* This configuration file is included only once from hid_state module and holds
- * information about LEDs associated with HID keyboard LEDs report.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} hid_keyboard_leds_def_include_once;
-
-static const struct led_effect keyboard_led_on = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255));
-static const struct led_effect keyboard_led_off = LED_EFFECT_LED_OFF();
-
-/* Map HID keyboard LEDs to application LED IDs. */
-static const uint8_t keyboard_led_map[] = {
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def_keyboard.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def_keyboard.h
deleted file mode 100644
index 22308715e464..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keyboard_leds_def_keyboard.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include "hid_keyboard_leds.h"
-
-/* This configuration file is included only once from hid_state module and holds
- * information about LEDs associated with HID keyboard LEDs report.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} hid_keyboard_leds_def_include_once;
-
-/* On the nRF54L15 SoC, you can only use the **GPIO1** port for PWM hardware peripheral output.
- * Because of that, on the PDK PCA10156 revision v0.3.0, **LED 0** and **LED 2** cannot be used for
- * PWM output.
- *
- * You can still use these LEDs with the PWM LED driver, but you must set the LED color to
- * ``LED_COLOR(255, 255, 255)`` or ``LED_COLOR(0, 0, 0)``. This ensures the PWM peripheral is not
- * used for the mentioned LEDs.
- */
-static const struct led_effect keyboard_led_on = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255));
-static const struct led_effect keyboard_led_off = LED_EFFECT_LED_OFF();
-
-/* Map HID keyboard LEDs to application LED IDs. */
-static const uint8_t keyboard_led_map[] = {
- [HID_KEYBOARD_LEDS_NUM_LOCK] = 2,
- [HID_KEYBOARD_LEDS_CAPS_LOCK] = LED_UNAVAILABLE,
- [HID_KEYBOARD_LEDS_SCROLL_LOCK] = LED_UNAVAILABLE,
- [HID_KEYBOARD_LEDS_COMPOSE] = LED_UNAVAILABLE,
- [HID_KEYBOARD_LEDS_KANA] = LED_UNAVAILABLE,
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def.h
deleted file mode 100644
index 08cd2cfdae9e..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include "hid_keymap.h"
-#include
-
-/* This configuration file is included only once from hid_state module and holds
- * information about mapping between buttons and generated reports.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} hid_keymap_def_include_once;
-
-/*
- * HID keymap. The Consumer Control keys are defined in section 15 of
- * the HID Usage Tables document under the following URL:
- * https://www.usb.org/sites/default/files/hut1_12.pdf
- */
-static const struct hid_keymap hid_keymap[] = {
- /* Intentionally left empty. nRF54L PDK by default uses all buttons only to control
- * generating motion.
- */
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def_keyboard.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def_keyboard.h
deleted file mode 100644
index 02dff560c18c..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/hid_keymap_def_keyboard.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include "hid_keymap.h"
-#include
-
-/* This configuration file is included only once from hid_state module and holds
- * information about mapping between buttons and generated reports.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} hid_keymap_def_include_once;
-
-/*
- * HID keymap. The Consumer Control keys are defined in section 15 of
- * the HID Usage Tables document under the following URL:
- * https://www.usb.org/sites/default/files/hut1_12.pdf
- */
-static const struct hid_keymap hid_keymap[] = {
- { KEY_ID(0x00, 0x00), 0x0004, REPORT_ID_KEYBOARD_KEYS }, /* A */
- { KEY_ID(0x00, 0x01), 0x0005, REPORT_ID_KEYBOARD_KEYS }, /* B */
- { KEY_ID(0x00, 0x02), 0x00E1, REPORT_ID_KEYBOARD_KEYS }, /* left shift */
-
- { KEY_ID(0x00, 0x04), 0x0004, REPORT_ID_KEYBOARD_KEYS }, /* A */
- { KEY_ID(0x00, 0x05), 0x0005, REPORT_ID_KEYBOARD_KEYS }, /* B */
- { KEY_ID(0x00, 0x06), 0x0006, REPORT_ID_KEYBOARD_KEYS }, /* C */
- { KEY_ID(0x00, 0x07), 0x0007, REPORT_ID_KEYBOARD_KEYS }, /* D */
- { KEY_ID(0x00, 0x08), 0x0008, REPORT_ID_KEYBOARD_KEYS }, /* E */
- { KEY_ID(0x00, 0x09), 0x0009, REPORT_ID_KEYBOARD_KEYS }, /* F */
- { KEY_ID(0x00, 0x0A), 0x000A, REPORT_ID_KEYBOARD_KEYS }, /* G */
- { KEY_ID(0x00, 0x0B), 0x000B, REPORT_ID_KEYBOARD_KEYS }, /* H */
- { KEY_ID(0x00, 0x0C), 0x000C, REPORT_ID_KEYBOARD_KEYS }, /* I */
- { KEY_ID(0x00, 0x0D), 0x000D, REPORT_ID_KEYBOARD_KEYS }, /* J */
- { KEY_ID(0x00, 0x0E), 0x000E, REPORT_ID_KEYBOARD_KEYS }, /* K */
- { KEY_ID(0x00, 0x0F), 0x000F, REPORT_ID_KEYBOARD_KEYS }, /* L */
- { KEY_ID(0x00, 0x10), 0x0010, REPORT_ID_KEYBOARD_KEYS }, /* M */
- { KEY_ID(0x00, 0x11), 0x0011, REPORT_ID_KEYBOARD_KEYS }, /* N */
- { KEY_ID(0x00, 0x12), 0x0012, REPORT_ID_KEYBOARD_KEYS }, /* O */
- { KEY_ID(0x00, 0x13), 0x0013, REPORT_ID_KEYBOARD_KEYS }, /* P */
- { KEY_ID(0x00, 0x14), 0x0014, REPORT_ID_KEYBOARD_KEYS }, /* Q */
- { KEY_ID(0x00, 0x15), 0x0015, REPORT_ID_KEYBOARD_KEYS }, /* R */
- { KEY_ID(0x00, 0x16), 0x0016, REPORT_ID_KEYBOARD_KEYS }, /* S */
- { KEY_ID(0x00, 0x17), 0x0017, REPORT_ID_KEYBOARD_KEYS }, /* T */
- { KEY_ID(0x00, 0x18), 0x0018, REPORT_ID_KEYBOARD_KEYS }, /* U */
- { KEY_ID(0x00, 0x19), 0x0019, REPORT_ID_KEYBOARD_KEYS }, /* V */
- { KEY_ID(0x00, 0x1A), 0x001A, REPORT_ID_KEYBOARD_KEYS }, /* W */
- { KEY_ID(0x00, 0x1B), 0x001B, REPORT_ID_KEYBOARD_KEYS }, /* X */
- { KEY_ID(0x00, 0x1C), 0x001C, REPORT_ID_KEYBOARD_KEYS }, /* Y */
- { KEY_ID(0x00, 0x1D), 0x001D, REPORT_ID_KEYBOARD_KEYS }, /* Z */
-
- { KEY_ID(0x00, 0x2C), 0x002C, REPORT_ID_KEYBOARD_KEYS }, /* spacebar */
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/app.overlay b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/app.overlay
deleted file mode 100644
index f7ae36e73487..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/app.overlay
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Application does not use cpuflpr core. Assign whole RRAM to cpuapp. */
-&cpuapp_rram {
- reg = < 0x0 DT_SIZE_K(1524) >;
-};
-
-/ {
- chosen {
- zephyr,code-partition = &boot_partition;
- };
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private.pem b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private.pem
deleted file mode 100644
index af30c7b46e05..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDMgpljNyVhjcme
-L5w3afeB45AuxOKocy4y/WCbAgH5fWU6KP4E3DNCbKsta17hyZyzfC0QJl4gJK8Z
-76FmGNHEv3Xg5ZXBLRo8SDak0zqCkhprx70m8xSEx6sxCPDFndYECluv/G0XPvIz
-dQJ9yQdHHv78niAJQoGCf/0D4NjrTj5GIMSmyh1bssmi1j6TxrBXH+eplfyeuhbK
-DlagXRjTXOBtyNY7SSAhDZX0xCIdLWJ5GLyRmKvX4HXvhdFjuBwdQmfBggU37gPz
-mvhnell2c2Fyd/zcefl9H8paKFiIJd16GcJfmlO5zR++JhME+tGO92+dnp51NrE5
-jD7JvDBHAgMBAAECggEABeKCLcKHTwHTTzvOfSJi+WKwzO+5wqAh2wdt0WK4PNN4
-vLjeP7SNvbe+dehKNX662sf+zKFWAbXHMMdeTRT3avfEGWxx0o+3hWGMlPybs+h8
-CHrvEfZaXPcZPCgmNCw2XYJmIK/HpyzBWm1fsiU9PN+C9dufpLSRtngeseRf9DwM
-eG6Et2J5RLxeTHk6J7FhLK0peW3Str3Mrc3eqcRM/AvdKlEwjL/lUjrsIAIBYpwQ
-fl62E00MsTmFu/35iVlPHIWRstZ0NZxwfVJKjunoSIiUTI33KrB2RiNR6hcXSN/B
-LnzvVO71mHr41R6IvDbmorGR+dekA5kPXTCsQ6qoZQKBgQDcv4BgiG5kCEVXqHla
-M/dsAsXX1u2+uftIL+7UbpCdwmNf8jm5nAyIU5RomGD2+sWdUXGd5urUYALLuzms
-WpL19RuKp+uwueJ2Gj6Onbn0ZrUzz92+0nL73hdQVXFuHFFrRT/1p3NZn8ApA7wN
-X2Fvw71Zmg64WAmFEdzSV19W6wKBgQDtK0TagT+OztmcIHtw1w94uJRSqrqvKtXT
-yqtba23aKBhbJlQOccpw6oNgxiQJf48CnOO3bY1r08i4RmQ8efNs0IYhKwhrslVj
-TTUP9lmJxFpbi6ABFufuih1xV7lr4qCme2yoyU6/Wm6GXGF9WAAHU7HQ88EPPHTg
-MS7DKrhtFQKBgHxM3RX+XOK5AYrdlA+l6XGJkiv6m37lLMi2LO6zn30l4104gSax
-5yCwp4XKH/eSt8ng/XAjgiG6OnjL4SrbCZuzvCF0crPdx9Ym6wjVactkNi6Jotx7
-lkGbCley9R9ClNopcV17P+m8mbC+qJqDFdOgTbPxms5UzG+A4m4Swt2nAoGAPD1P
-QciuYhF8CEHf2KtnTJxlYBHpVPCmWyMRHylMP6sLdKtpkjmo18FZGU16fcceheVf
-mYmD8C1cwCFw+ENpZuwYBXiurNwhABXuMl26JFnxMWtnep9czaPbEpzbheGMOH0E
-/mITVFsd05bHVFTzvOivM4mWMc6DSSZ04DGLonkCgYBtEF1taMXwOQWiN5feFDPJ
-tsBjeONi4n0oUcYmm9zRuvTgP3CswK5B4yFWTZ+UcDwAyg6jeFT9kKeB5TA+i0mE
-0XOEZA+X0ybm/V1gERliQqyKQ38waNjlXeM3fYfD/KFBpmtXZB+hjebfXBVggzyA
-WBbUOJ/pM1gbI8wtH4kyOw==
------END PRIVATE KEY-----
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private_fast_pair.pem b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private_fast_pair.pem
deleted file mode 100644
index 59463fd2229b..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/mcuboot_private_fast_pair.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDW6mrXbq6DAPhv
-pM31j+H0t/T227c39Ve34HxvsoqnUsmVUpaI1VZqp+r5VZ4j4LAM0ya9gOuHc33Z
-isgW6lvy5/T83gq7hpjptOKbOO/yuhropuyqJtAtFEKuHzvebnAcZEf/S3oBOik4
-BF12g6WaGrMauW478C0/HUmLXkXhiUmv4j3AOKvMywe4htvZ6wwKYa8/8GXyxDoF
-M2VhYMH+aen6Aj7nZobKmIBMBHFfsqvY4UtQgPkrDFRxiP4LzaeYFB87BJt6scNJ
-rNI1hAxSs5Pw9YbA6DXNJWzhJt9bInRsuqTgtOvI/D6PLz2UK/o76NuDUEAOiqos
-9UqYui6JAgMBAAECggEAHTZHx3iX596d5i70f8hK4kSO228J/GUwwyGUSGpwRkYO
-eGl9ZKP61wxz9+gXUrEbvOKGhYOcgBDGrmcaw2KflOjKeASGWO72oe2gT5DxrIB3
-X+AwkwArk7UJSzmbnaRNQM6wqpbLwpbxO1f8jDtgqw2uApfpz+PZgpashHEP9pO+
-08jYGHNVdgOxG6QGth/1ib9fu+GriLtXQpBMbUXuMVgtQjl6DdWttWl+ZGr45W8x
-T6fEr5DMY7ikfYZmeTTFVGmYLtXc4omMXFikzbKs0VkQg6sQM6vvFGMQVcSRXTgq
-QrdWIx7F5Ueg1zFbs4snEJp1rRSLvIa+jsjEjPG9wQKBgQDlCVB+MiiGGkgYJbCx
-ikMJI6zMNjcWA0rNx3LW6+K6+YaH+KRahqpo3SepgzhMIbrvm7S2l3DaXrdJRduA
-vSj3VPDkZOgrBFSMv0NYKoXHCWra+vN5P+WkxiPRLz7X1eDC+d4IGEDfS5kRakAe
-sXT5s2IghiNtE13/vbHKI2wTdQKBgQDwN4jJDw57pK8aWu/Y3NtKPOUf3pOCchfT
-/SlOutsnklO7XqE/GG/qkdilpQIFRgMJZ8pmwsqTOwCMFd5YMFFGW08Cf0NNKQu+
-PtvvzWS8feDd1vuefu/ddjgTONXG3ZyFVsRyo8HXuZQzRUmezV3Wso4jCNYgUEiC
-u2HA5ccwRQKBgEpXM6FCdpTQgwYTdb6qugeFZNkD3+1tNCKG0megOP+nbltEAVTA
-0R8oaW9EAEn1yM9tIsMBdMfsZmGKIy0uONXO5EG93v3XcfodOqarZrCsBdr+CXkZ
-nFhXV9jWFPfJnCKtJ7xI4wWXbB+S9S0BPI6wAvG7mFQXLTONRt/tj27hAoGATqPv
-nNrYA/Ra+sbQhG9xPvGGlRNZuTe+w0C62DJl8qN90/Zb1XsbkHBku320lqNf9SFM
-aq3UgbSsLjAulTJkOSNFT2z4THdmh8auW+gi1W5kQlvSDgZCYn8ERo6xtaPxTNmm
-AF3J5OS1Nr+1JU7YLKRR0fhfmT6PLnVHwE25Ev0CgYBw4tT/CDLMuS5A+LuEalQA
-+AFWuCR+Xw+MFF55ioMlHqveSUVbJzhkllR76JUMP7/7aaJsqi4A7zjr+tgvBobf
-qYyYyoLPahOHA+h330RHh3IPX2JZWBMVT1bb/K+qxQ9CkwCYXKFPzXVi/JU/Yjgz
-Yh16Jr2zB33KIZIMyeM2LA==
------END PRIVATE KEY-----
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj.conf
deleted file mode 100644
index f51a24fe9890..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-CONFIG_SIZE_OPTIMIZATIONS=y
-
-# Disable memory guard to avoid false faults in application after boot
-CONFIG_HW_STACK_PROTECTION=n
-
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_MAIN_STACK_SIZE=10240
-CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h"
-
-CONFIG_BOOT_MAX_IMG_SECTORS=256
-CONFIG_BOOT_BOOTSTRAP=n
-
-CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
-
-CONFIG_FLASH=y
-
-# Reduce memory consumption
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-CONFIG_GPIO=n
-CONFIG_SERIAL=n
-CONFIG_CONSOLE=n
-CONFIG_UART_CONSOLE=n
-CONFIG_USE_SEGGER_RTT=n
-
-# Use minimal C library instead of the Picolib
-CONFIG_MINIMAL_LIBC=y
-
-# Improve debugging experience by disabling reset on fatal error
-CONFIG_RESET_ON_FATAL_ERROR=n
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_fast_pair.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_fast_pair.conf
deleted file mode 100644
index f51a24fe9890..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_fast_pair.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-CONFIG_SIZE_OPTIMIZATIONS=y
-
-# Disable memory guard to avoid false faults in application after boot
-CONFIG_HW_STACK_PROTECTION=n
-
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_MAIN_STACK_SIZE=10240
-CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h"
-
-CONFIG_BOOT_MAX_IMG_SECTORS=256
-CONFIG_BOOT_BOOTSTRAP=n
-
-CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
-
-CONFIG_FLASH=y
-
-# Reduce memory consumption
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-CONFIG_GPIO=n
-CONFIG_SERIAL=n
-CONFIG_CONSOLE=n
-CONFIG_UART_CONSOLE=n
-CONFIG_USE_SEGGER_RTT=n
-
-# Use minimal C library instead of the Picolib
-CONFIG_MINIMAL_LIBC=y
-
-# Improve debugging experience by disabling reset on fatal error
-CONFIG_RESET_ON_FATAL_ERROR=n
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_keyboard.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_keyboard.conf
deleted file mode 100644
index f51a24fe9890..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_keyboard.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-CONFIG_SIZE_OPTIMIZATIONS=y
-
-# Disable memory guard to avoid false faults in application after boot
-CONFIG_HW_STACK_PROTECTION=n
-
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_MAIN_STACK_SIZE=10240
-CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h"
-
-CONFIG_BOOT_MAX_IMG_SECTORS=256
-CONFIG_BOOT_BOOTSTRAP=n
-
-CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
-
-CONFIG_FLASH=y
-
-# Reduce memory consumption
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-CONFIG_GPIO=n
-CONFIG_SERIAL=n
-CONFIG_CONSOLE=n
-CONFIG_UART_CONSOLE=n
-CONFIG_USE_SEGGER_RTT=n
-
-# Use minimal C library instead of the Picolib
-CONFIG_MINIMAL_LIBC=y
-
-# Improve debugging experience by disabling reset on fatal error
-CONFIG_RESET_ON_FATAL_ERROR=n
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_release.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_release.conf
deleted file mode 100644
index f51a24fe9890..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/images/mcuboot/prj_release.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-CONFIG_SIZE_OPTIMIZATIONS=y
-
-# Disable memory guard to avoid false faults in application after boot
-CONFIG_HW_STACK_PROTECTION=n
-
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_MAIN_STACK_SIZE=10240
-CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h"
-
-CONFIG_BOOT_MAX_IMG_SECTORS=256
-CONFIG_BOOT_BOOTSTRAP=n
-
-CONFIG_BOOT_VERSION_CMP_USE_BUILD_NUMBER=y
-
-CONFIG_FLASH=y
-
-# Reduce memory consumption
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-CONFIG_GPIO=n
-CONFIG_SERIAL=n
-CONFIG_CONSOLE=n
-CONFIG_UART_CONSOLE=n
-CONFIG_USE_SEGGER_RTT=n
-
-# Use minimal C library instead of the Picolib
-CONFIG_MINIMAL_LIBC=y
-
-# Improve debugging experience by disabling reset on fatal error
-CONFIG_RESET_ON_FATAL_ERROR=n
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/led_state_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/led_state_def.h
deleted file mode 100644
index eeb15ce4d2e0..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/led_state_def.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include "led_state.h"
-#include
-
-/* This configuration file is included only once from led_state module and holds
- * information about LED effect associated with each state.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} led_state_def_include_once;
-
-
-/* Map function to LED ID */
-static const uint8_t led_map[LED_ID_COUNT] = {
- [LED_ID_SYSTEM_STATE] = 0,
- [LED_ID_PEER_STATE] = 1
-};
-
-/* On the nRF54L15 SoC, you can only use the **GPIO1** port for PWM hardware peripheral output.
- * Because of that, on the PDK PCA10156 revision v0.3.0 **LED 0** and **LED 2** cannot be used
- * for PWM output.
- *
- * You can still use these LEDs with the PWM LED driver, but you must set the LED color to
- * ``LED_COLOR(255, 255, 255)`` or ``LED_COLOR(0, 0, 0)``. This ensures the PWM peripheral is not
- * used for the mentioned LEDs.
- */
-
-static const struct led_effect led_system_state_effect[LED_SYSTEM_STATE_COUNT] = {
- [LED_SYSTEM_STATE_IDLE] = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255)),
- [LED_SYSTEM_STATE_CHARGING] = LED_EFFECT_LED_ON(LED_COLOR(255, 255, 255)),
- [LED_SYSTEM_STATE_ERROR] = LED_EFFECT_LED_BLINK(200, LED_COLOR(255, 255, 255)),
-};
-
-static const struct led_effect led_peer_state_effect[LED_PEER_COUNT][LED_PEER_STATE_COUNT] = {
- {[LED_PEER_STATE_DISCONNECTED] = LED_EFFECT_LED_OFF(),
- [LED_PEER_STATE_CONNECTED] = LED_EFFECT_LED_ON(LED_COLOR(100, 100, 100)),
- [LED_PEER_STATE_PEER_SEARCH] = LED_EFFECT_LED_BREATH(1000, LED_COLOR(100, 100, 100)),
- [LED_PEER_STATE_CONFIRM_SELECT] = LED_EFFECT_LED_BLINK(50, LED_COLOR(100, 100, 100)),
- [LED_PEER_STATE_CONFIRM_ERASE] = LED_EFFECT_LED_BLINK(25, LED_COLOR(100, 100, 100)),
- [LED_PEER_STATE_ERASE_ADV] = LED_EFFECT_LED_BREATH(100, LED_COLOR(100, 100, 100)),
- },
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static.yml b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static.yml
deleted file mode 100644
index 0525b519b522..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-app:
- address: 0x8800
- region: flash_primary
- size: 0xb7800
-mcuboot:
- address: 0x0
- region: flash_primary
- size: 0x8000
-mcuboot_pad:
- address: 0x8000
- region: flash_primary
- size: 0x800
-mcuboot_primary:
- address: 0x8000
- orig_span: &id001
- - app
- - mcuboot_pad
- region: flash_primary
- size: 0xb8000
- span: *id001
-mcuboot_primary_app:
- address: 0x8800
- orig_span: &id002
- - app
- region: flash_primary
- size: 0xb7800
- span: *id002
-mcuboot_secondary:
- address: 0xc0000
- orig_span: &id003
- - mcuboot_secondary_pad
- - mcuboot_secondary_app
- region: flash_primary
- size: 0xb8000
- span: *id003
-mcuboot_secondary_pad:
- region: flash_primary
- address: 0xc0000
- size: 0x800
-mcuboot_secondary_app:
- region: flash_primary
- address: 0xc0800
- size: 0xb7800
-settings_storage:
- address: 0x178000
- region: flash_primary
- size: 0x5000
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_fast_pair.yml b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_fast_pair.yml
deleted file mode 100644
index 725785cf4026..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_fast_pair.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-app:
- address: 0x8800
- region: flash_primary
- size: 0xb6800
-mcuboot:
- address: 0x0
- region: flash_primary
- size: 0x8000
-mcuboot_pad:
- address: 0x8000
- region: flash_primary
- size: 0x800
-mcuboot_primary:
- address: 0x8000
- orig_span: &id001
- - app
- - mcuboot_pad
- region: flash_primary
- size: 0xb7000
- span: *id001
-mcuboot_primary_app:
- address: 0x8800
- orig_span: &id002
- - app
- region: flash_primary
- size: 0xb6800
- span: *id002
-mcuboot_secondary:
- address: 0xbf000
- orig_span: &id003
- - mcuboot_secondary_pad
- - mcuboot_secondary_app
- region: flash_primary
- size: 0xb7000
- span: *id003
-mcuboot_secondary_pad:
- region: flash_primary
- address: 0xbf000
- size: 0x800
-mcuboot_secondary_app:
- region: flash_primary
- address: 0xbf800
- size: 0xb6800
-bt_fast_pair:
- address: 0x176000
- region: flash_primary
- size: 0x1000
-settings_storage:
- address: 0x177000
- region: flash_primary
- size: 0x6000
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_keyboard.yml b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_keyboard.yml
deleted file mode 100644
index 0525b519b522..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_keyboard.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-app:
- address: 0x8800
- region: flash_primary
- size: 0xb7800
-mcuboot:
- address: 0x0
- region: flash_primary
- size: 0x8000
-mcuboot_pad:
- address: 0x8000
- region: flash_primary
- size: 0x800
-mcuboot_primary:
- address: 0x8000
- orig_span: &id001
- - app
- - mcuboot_pad
- region: flash_primary
- size: 0xb8000
- span: *id001
-mcuboot_primary_app:
- address: 0x8800
- orig_span: &id002
- - app
- region: flash_primary
- size: 0xb7800
- span: *id002
-mcuboot_secondary:
- address: 0xc0000
- orig_span: &id003
- - mcuboot_secondary_pad
- - mcuboot_secondary_app
- region: flash_primary
- size: 0xb8000
- span: *id003
-mcuboot_secondary_pad:
- region: flash_primary
- address: 0xc0000
- size: 0x800
-mcuboot_secondary_app:
- region: flash_primary
- address: 0xc0800
- size: 0xb7800
-settings_storage:
- address: 0x178000
- region: flash_primary
- size: 0x5000
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_release.yml b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_release.yml
deleted file mode 100644
index 0525b519b522..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/pm_static_release.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-app:
- address: 0x8800
- region: flash_primary
- size: 0xb7800
-mcuboot:
- address: 0x0
- region: flash_primary
- size: 0x8000
-mcuboot_pad:
- address: 0x8000
- region: flash_primary
- size: 0x800
-mcuboot_primary:
- address: 0x8000
- orig_span: &id001
- - app
- - mcuboot_pad
- region: flash_primary
- size: 0xb8000
- span: *id001
-mcuboot_primary_app:
- address: 0x8800
- orig_span: &id002
- - app
- region: flash_primary
- size: 0xb7800
- span: *id002
-mcuboot_secondary:
- address: 0xc0000
- orig_span: &id003
- - mcuboot_secondary_pad
- - mcuboot_secondary_app
- region: flash_primary
- size: 0xb8000
- span: *id003
-mcuboot_secondary_pad:
- region: flash_primary
- address: 0xc0000
- size: 0x800
-mcuboot_secondary_app:
- region: flash_primary
- address: 0xc0800
- size: 0xb7800
-settings_storage:
- address: 0x178000
- region: flash_primary
- size: 0x5000
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/port_state_def.h b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/port_state_def.h
deleted file mode 100644
index 30d47da14299..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/port_state_def.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#include
-
-#include "port_state.h"
-
-/* This configuration file is included only once from board module and holds
- * information about default pin states set while board is on and off.
- */
-
-/* This structure enforces the header file is included only once in the build.
- * Violating this requirement triggers a multiple definition error at link time.
- */
-const struct {} port_state_def_include_once;
-
-
-static const struct port_state port_state_on[] = {
-};
-
-static const struct port_state port_state_off[] = {
-};
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj.conf
deleted file mode 100644
index 8212535635a5..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj.conf
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-# Application Configuration
-
-CONFIG_DESKTOP_INIT_LOG_MOTION_EVENT=n
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_EVENT=n
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_SENT_EVENT=n
-CONFIG_CAF_INIT_LOG_KEEP_ALIVE_EVENTS=n
-
-CONFIG_DESKTOP_ROLE_HID_PERIPHERAL=y
-CONFIG_DESKTOP_PERIPHERAL_TYPE_MOUSE=y
-CONFIG_DESKTOP_DEVICE_PID=0x52DE
-CONFIG_DESKTOP_HID_BOOT_INTERFACE_MOUSE=y
-
-CONFIG_DESKTOP_MOTION_BUTTONS_ENABLE=y
-CONFIG_DESKTOP_MOTION_BUTTONS_UP_KEY_ID=0
-CONFIG_DESKTOP_MOTION_BUTTONS_DOWN_KEY_ID=3
-CONFIG_DESKTOP_MOTION_BUTTONS_LEFT_KEY_ID=2
-CONFIG_DESKTOP_MOTION_BUTTONS_RIGHT_KEY_ID=1
-
-CONFIG_CAF_BUTTONS=y
-CONFIG_CAF_BUTTONS_POLARITY_INVERSED=y
-CONFIG_CAF_BUTTONS_PM_KEEP_ALIVE=n
-
-CONFIG_CAF_CLICK_DETECTOR=y
-
-CONFIG_CAF_LEDS=y
-
-CONFIG_DESKTOP_BLE_USE_DEFAULT_ID=y
-
-CONFIG_DESKTOP_BLE_PEER_CONTROL=y
-CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON=0x0000
-CONFIG_DESKTOP_BLE_PEER_ERASE_ON_START=y
-
-CONFIG_DESKTOP_BLE_SECURITY_FAIL_TIMEOUT_S=10
-CONFIG_DESKTOP_BLE_LOW_LATENCY_LOCK=y
-
-CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_OUT_REPORT=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_ENABLE=y
-
-################################################################################
-# Zephyr Configuration
-
-CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
-CONFIG_ISR_STACK_SIZE=1536
-CONFIG_MAIN_STACK_SIZE=840
-CONFIG_BT_RX_STACK_SIZE=2048
-CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
-CONFIG_BT_HCI_TX_STACK_SIZE=1536
-
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-
-CONFIG_NUM_COOP_PRIORITIES=10
-CONFIG_NUM_PREEMPT_PRIORITIES=11
-
-CONFIG_HEAP_MEM_POOL_SIZE=512
-
-CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_HW_STACK_PROTECTION=y
-CONFIG_RESET_ON_FATAL_ERROR=n
-
-CONFIG_GPIO=y
-
-CONFIG_REBOOT=y
-
-CONFIG_SPEED_OPTIMIZATIONS=y
-
-CONFIG_PWM=y
-
-CONFIG_LED=y
-CONFIG_LED_PWM=y
-
-CONFIG_BT_MAX_PAIRED=2
-CONFIG_BT_ID_MAX=3
-
-CONFIG_BT_CTLR_SDC_LLPM=y
-CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
-CONFIG_BT_ATT_TX_COUNT=4
-CONFIG_BT_CONN_TX_MAX=4
-
-CONFIG_STREAM_FLASH=y
-CONFIG_IMG_MANAGER=y
-CONFIG_MCUBOOT_IMG_MANAGER=y
-
-# Assign RRAM write buffer size to ensure short write slots. Trying to allocate long write slots
-# while maintaining a BLE connection with short interval and no connection latency may lead to
-# timeouts in flash_sync_mpsl.
-CONFIG_NRF_RRAM_WRITE_BUFFER_SIZE=8
-
-################################################################################
-
-CONFIG_ASSERT=y
-CONFIG_ASSERT_LEVEL=2
-
-# nRF54L PDK uses UART for logs.
-CONFIG_SERIAL=y
-CONFIG_CONSOLE=y
-CONFIG_UART_CONSOLE=y
-
-CONFIG_LOG=y
-CONFIG_LOG_BACKEND_UART=y
-CONFIG_LOG_BACKEND_SHOW_COLOR=n
-CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP=n
-CONFIG_LOG_MODE_DEFERRED=y
-CONFIG_LOG_PRINTK=y
-CONFIG_LOG_BUFFER_SIZE=4096
-CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=1024
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_fast_pair.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_fast_pair.conf
deleted file mode 100644
index a374218176a6..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_fast_pair.conf
+++ /dev/null
@@ -1,151 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-# debug: Fast Pair version
-#
-# This debug build type configuration enables Fast Pair support.
-# The build type configuration supports both configuration channel and MCUmgr DFU transports.
-#
-# Application Configuration
-
-CONFIG_DESKTOP_INIT_LOG_MOTION_EVENT=n
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_EVENT=n
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_SENT_EVENT=n
-CONFIG_CAF_INIT_LOG_KEEP_ALIVE_EVENTS=n
-
-CONFIG_DESKTOP_ROLE_HID_PERIPHERAL=y
-CONFIG_DESKTOP_PERIPHERAL_TYPE_MOUSE=y
-CONFIG_DESKTOP_DEVICE_PID=0x52DE
-CONFIG_DESKTOP_DEVICE_GENERATION="FastPair"
-CONFIG_DESKTOP_HID_BOOT_INTERFACE_MOUSE=y
-
-CONFIG_DESKTOP_MOTION_BUTTONS_ENABLE=y
-CONFIG_DESKTOP_MOTION_BUTTONS_UP_KEY_ID=0
-CONFIG_DESKTOP_MOTION_BUTTONS_DOWN_KEY_ID=3
-CONFIG_DESKTOP_MOTION_BUTTONS_LEFT_KEY_ID=2
-CONFIG_DESKTOP_MOTION_BUTTONS_RIGHT_KEY_ID=1
-
-CONFIG_CAF_BUTTONS=y
-CONFIG_CAF_BUTTONS_POLARITY_INVERSED=y
-CONFIG_CAF_BUTTONS_PM_KEEP_ALIVE=n
-
-CONFIG_CAF_CLICK_DETECTOR=y
-
-CONFIG_CAF_LEDS=y
-
-CONFIG_DESKTOP_DFU_MCUMGR_ENABLE=y
-CONFIG_CAF_INIT_LOG_BLE_SMP_TRANSFER_EVENTS=n
-
-# Align advertising intervals with Fast Pair specification.
-CONFIG_CAF_BLE_ADV_FAST_INT_MIN=0x0040
-CONFIG_CAF_BLE_ADV_FAST_INT_MAX=0x0060
-CONFIG_CAF_BLE_ADV_SLOW_INT_MIN=0x0060
-CONFIG_CAF_BLE_ADV_SLOW_INT_MAX=0x0080
-
-# Disable filter accept list to allow for multiple bonds for a given local identity.
-CONFIG_CAF_BLE_ADV_FILTER_ACCEPT_LIST=n
-CONFIG_CAF_BLE_STATE_MAX_LOCAL_ID_BONDS=3
-
-# Align the advertised TX power with Fast Pair expectations.
-CONFIG_BT_ADV_PROV_TX_POWER_CORRECTION_VAL=-17
-
-CONFIG_DESKTOP_BLE_USE_DEFAULT_ID=y
-
-CONFIG_DESKTOP_BLE_PEER_CONTROL=y
-CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON=0x0000
-CONFIG_DESKTOP_BLE_PEER_ERASE_ON_START=y
-
-CONFIG_DESKTOP_BLE_SECURITY_FAIL_TIMEOUT_S=30
-CONFIG_DESKTOP_BLE_LOW_LATENCY_LOCK=y
-
-CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_OUT_REPORT=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_ENABLE=y
-
-################################################################################
-# Zephyr Configuration
-
-CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
-CONFIG_ISR_STACK_SIZE=1536
-CONFIG_MAIN_STACK_SIZE=840
-CONFIG_BT_RX_STACK_SIZE=2048
-CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
-CONFIG_BT_HCI_TX_STACK_SIZE=1536
-
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-
-CONFIG_NUM_COOP_PRIORITIES=10
-CONFIG_NUM_PREEMPT_PRIORITIES=11
-
-CONFIG_HEAP_MEM_POOL_SIZE=2048
-
-CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_HW_STACK_PROTECTION=y
-CONFIG_RESET_ON_FATAL_ERROR=n
-
-CONFIG_GPIO=y
-
-CONFIG_REBOOT=y
-
-CONFIG_SPEED_OPTIMIZATIONS=y
-
-CONFIG_PWM=y
-
-CONFIG_LED=y
-CONFIG_LED_PWM=y
-
-# Enable MCUmgr Bluetooth transport and increase Bluetooth buffers to speed up DFU image transfer.
-CONFIG_MCUMGR_TRANSPORT_BT=y
-CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
-CONFIG_MCUMGR_GRP_IMG_VERSION_CMP_USE_BUILD_NUMBER=y
-
-CONFIG_IMG_MANAGER=y
-CONFIG_MCUBOOT_IMG_MANAGER=y
-
-CONFIG_MCUMGR_GRP_IMG_REJECT_DIRECT_XIP_MISMATCHED_SLOT=y
-
-CONFIG_BT_L2CAP_TX_MTU=260
-CONFIG_BT_BUF_ACL_RX_SIZE=264
-
-CONFIG_BT_MAX_PAIRED=4
-CONFIG_BT_ID_MAX=3
-
-CONFIG_BT_CTLR_SDC_LLPM=y
-CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
-CONFIG_BT_ATT_TX_COUNT=4
-CONFIG_BT_CONN_TX_MAX=4
-
-CONFIG_BT_FAST_PAIR=y
-CONFIG_BT_FAST_PAIR_USE_CASE_MOUSE=y
-CONFIG_BT_FAST_PAIR_LOG_LEVEL_DBG=y
-CONFIG_BT_PRIVACY=y
-
-# Assign RRAM write buffer size to ensure short write slots. Trying to allocate long write slots
-# while maintaining a BLE connection with short interval and no connection latency may lead to
-# timeouts in flash_sync_mpsl.
-CONFIG_NRF_RRAM_WRITE_BUFFER_SIZE=8
-
-################################################################################
-
-CONFIG_ASSERT=y
-CONFIG_ASSERT_LEVEL=2
-
-# nRF54L PDK uses UART for logs.
-CONFIG_SERIAL=y
-CONFIG_CONSOLE=y
-CONFIG_UART_CONSOLE=y
-
-CONFIG_LOG=y
-CONFIG_LOG_BACKEND_UART=y
-CONFIG_LOG_BACKEND_SHOW_COLOR=n
-CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP=n
-CONFIG_LOG_MODE_DEFERRED=y
-CONFIG_LOG_PRINTK=y
-CONFIG_LOG_BUFFER_SIZE=4096
-CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=1024
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_keyboard.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_keyboard.conf
deleted file mode 100644
index 3cc6397aae29..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_keyboard.conf
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-# debug: Keyboard version
-#
-# This debug build type configuration acts as a keyboard.
-#
-# Application Configuration
-
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_EVENT=n
-CONFIG_DESKTOP_INIT_LOG_HID_REPORT_SENT_EVENT=n
-CONFIG_CAF_INIT_LOG_KEEP_ALIVE_EVENTS=n
-
-CONFIG_DESKTOP_ROLE_HID_PERIPHERAL=y
-CONFIG_DESKTOP_PERIPHERAL_TYPE_KEYBOARD=y
-CONFIG_DESKTOP_DEVICE_PID=0x52DD
-CONFIG_DESKTOP_HID_BOOT_INTERFACE_KEYBOARD=y
-CONFIG_DESKTOP_HID_STATE_HID_KEYMAP_DEF_PATH="hid_keymap_def_keyboard.h"
-CONFIG_DESKTOP_HID_STATE_HID_KEYBOARD_LEDS_DEF_PATH="hid_keyboard_leds_def_keyboard.h"
-CONFIG_DESKTOP_HID_REPORT_EXPIRATION=10000
-CONFIG_DESKTOP_HID_EVENT_QUEUE_SIZE=60
-
-CONFIG_CAF_BUTTONS=y
-CONFIG_CAF_BUTTONS_POLARITY_INVERSED=y
-CONFIG_CAF_BUTTONS_PM_KEEP_ALIVE=n
-
-CONFIG_CAF_CLICK_DETECTOR=y
-
-CONFIG_CAF_LEDS=y
-
-CONFIG_DESKTOP_BUTTONS_SIM_ENABLE=y
-CONFIG_DESKTOP_BUTTONS_SIM_INTERVAL=100
-CONFIG_DESKTOP_BUTTONS_SIM_LOOP_FOREVER=y
-CONFIG_DESKTOP_BUTTONS_SIM_TRIGGER_KEY_ID=0x03
-
-CONFIG_DESKTOP_BLE_PEER_CONTROL=y
-CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON=0x0000
-CONFIG_DESKTOP_BLE_PEER_ERASE_ON_START=y
-
-CONFIG_DESKTOP_BLE_USE_DEFAULT_ID=y
-
-CONFIG_DESKTOP_BLE_SECURITY_FAIL_TIMEOUT_S=10
-CONFIG_DESKTOP_BLE_LOW_LATENCY_LOCK=y
-
-CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_OUT_REPORT=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_ENABLE=y
-
-################################################################################
-# Zephyr Configuration
-
-CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
-CONFIG_ISR_STACK_SIZE=1536
-CONFIG_MAIN_STACK_SIZE=840
-CONFIG_BT_RX_STACK_SIZE=2048
-CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
-CONFIG_BT_HCI_TX_STACK_SIZE=1536
-
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-
-CONFIG_NUM_COOP_PRIORITIES=10
-CONFIG_NUM_PREEMPT_PRIORITIES=11
-
-CONFIG_HEAP_MEM_POOL_SIZE=4096
-
-CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_HW_STACK_PROTECTION=y
-CONFIG_RESET_ON_FATAL_ERROR=n
-
-CONFIG_GPIO=y
-CONFIG_REBOOT=y
-
-CONFIG_SPEED_OPTIMIZATIONS=y
-
-CONFIG_PWM=y
-
-CONFIG_LED=y
-CONFIG_LED_PWM=y
-
-CONFIG_BT_MAX_PAIRED=2
-CONFIG_BT_ID_MAX=3
-
-CONFIG_BT_CTLR_SDC_LLPM=y
-CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
-CONFIG_BT_ATT_TX_COUNT=6
-CONFIG_BT_CONN_TX_MAX=6
-
-CONFIG_STREAM_FLASH=y
-CONFIG_IMG_MANAGER=y
-CONFIG_MCUBOOT_IMG_MANAGER=y
-
-# Assign RRAM write buffer size to ensure short write slots. Trying to allocate long write slots
-# while maintaining a BLE connection with short interval and no connection latency may lead to
-# timeouts in flash_sync_mpsl.
-CONFIG_NRF_RRAM_WRITE_BUFFER_SIZE=8
-
-################################################################################
-
-CONFIG_ASSERT=y
-CONFIG_ASSERT_LEVEL=2
-
-# nRF54L PDK uses UART for logs.
-CONFIG_SERIAL=y
-CONFIG_CONSOLE=y
-CONFIG_UART_CONSOLE=y
-
-CONFIG_LOG=y
-CONFIG_LOG_BACKEND_UART=y
-CONFIG_LOG_BACKEND_SHOW_COLOR=n
-CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP=n
-CONFIG_LOG_MODE_DEFERRED=y
-CONFIG_LOG_PRINTK=y
-CONFIG_LOG_BUFFER_SIZE=4096
-CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=1024
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_release.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_release.conf
deleted file mode 100644
index d21819bcaa51..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/prj_release.conf
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-# Application Configuration
-
-CONFIG_DESKTOP_ROLE_HID_PERIPHERAL=y
-CONFIG_DESKTOP_PERIPHERAL_TYPE_MOUSE=y
-CONFIG_DESKTOP_DEVICE_PID=0x52DE
-CONFIG_DESKTOP_HID_BOOT_INTERFACE_MOUSE=y
-
-CONFIG_DESKTOP_MOTION_BUTTONS_ENABLE=y
-CONFIG_DESKTOP_MOTION_BUTTONS_UP_KEY_ID=0
-CONFIG_DESKTOP_MOTION_BUTTONS_DOWN_KEY_ID=3
-CONFIG_DESKTOP_MOTION_BUTTONS_LEFT_KEY_ID=2
-CONFIG_DESKTOP_MOTION_BUTTONS_RIGHT_KEY_ID=1
-
-CONFIG_CAF_BUTTONS=y
-CONFIG_CAF_BUTTONS_POLARITY_INVERSED=y
-CONFIG_CAF_BUTTONS_PM_KEEP_ALIVE=n
-
-CONFIG_CAF_CLICK_DETECTOR=y
-
-CONFIG_CAF_LEDS=y
-
-CONFIG_DESKTOP_BLE_PEER_CONTROL=y
-CONFIG_DESKTOP_BLE_PEER_CONTROL_BUTTON=0x0000
-CONFIG_DESKTOP_BLE_PEER_ERASE_ON_START=y
-
-CONFIG_DESKTOP_BLE_SECURITY_FAIL_TIMEOUT_S=10
-CONFIG_DESKTOP_BLE_LOW_LATENCY_LOCK=y
-
-CONFIG_DESKTOP_WATCHDOG_ENABLE=y
-CONFIG_DESKTOP_FAILSAFE_ENABLE=y
-
-CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_OUT_REPORT=y
-CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_ENABLE=y
-
-# Assign RRAM write buffer size to ensure short write slots. Trying to allocate long write slots
-# while maintaining a BLE connection with short interval and no connection latency may lead to
-# timeouts in flash_sync_mpsl.
-CONFIG_NRF_RRAM_WRITE_BUFFER_SIZE=8
-
-################################################################################
-# Zephyr Configuration
-
-CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
-CONFIG_ISR_STACK_SIZE=1536
-CONFIG_MAIN_STACK_SIZE=840
-CONFIG_BT_RX_STACK_SIZE=2048
-CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
-CONFIG_BT_HCI_TX_STACK_SIZE=1536
-
-CONFIG_BOOT_BANNER=n
-CONFIG_NCS_BOOT_BANNER=n
-
-CONFIG_NUM_COOP_PRIORITIES=10
-CONFIG_NUM_PREEMPT_PRIORITIES=11
-
-CONFIG_HEAP_MEM_POOL_SIZE=512
-
-CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
-CONFIG_SYSTEM_CLOCK_NO_WAIT=y
-
-CONFIG_HW_STACK_PROTECTION=n
-CONFIG_RESET_ON_FATAL_ERROR=n
-
-CONFIG_GPIO=y
-
-CONFIG_SERIAL=n
-CONFIG_CONSOLE=n
-CONFIG_UART_CONSOLE=n
-CONFIG_USE_SEGGER_RTT=n
-
-CONFIG_REBOOT=y
-
-CONFIG_SPEED_OPTIMIZATIONS=y
-
-CONFIG_PWM=y
-
-CONFIG_LED=y
-CONFIG_LED_PWM=y
-
-CONFIG_BT_MAX_PAIRED=2
-CONFIG_BT_ID_MAX=3
-
-CONFIG_BT_CTLR_SDC_LLPM=y
-CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
-CONFIG_BT_ATT_TX_COUNT=4
-CONFIG_BT_CONN_TX_MAX=4
-
-CONFIG_STREAM_FLASH=y
-CONFIG_IMG_MANAGER=y
-CONFIG_MCUBOOT_IMG_MANAGER=y
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild.conf
deleted file mode 100644
index f777fb91fbb5..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-
-SB_CONFIG_BOOTLOADER_MCUBOOT=y
-SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP=y
-SB_CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
-SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APPLICATION_CONFIG_DIR}/images/mcuboot/mcuboot_private.pem"
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_fast_pair.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_fast_pair.conf
deleted file mode 100644
index e2d9e7ec083e..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_fast_pair.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-
-SB_CONFIG_BT_FAST_PAIR=y
-SB_CONFIG_BOOTLOADER_MCUBOOT=y
-SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP=y
-SB_CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
-SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APPLICATION_CONFIG_DIR}/images/mcuboot/mcuboot_private_fast_pair.pem"
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_keyboard.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_keyboard.conf
deleted file mode 100644
index f777fb91fbb5..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_keyboard.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-
-SB_CONFIG_BOOTLOADER_MCUBOOT=y
-SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP=y
-SB_CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
-SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APPLICATION_CONFIG_DIR}/images/mcuboot/mcuboot_private.pem"
diff --git a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_release.conf b/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_release.conf
deleted file mode 100644
index f777fb91fbb5..000000000000
--- a/applications/nrf_desktop/configuration/nrf54l15pdk_nrf54l15_cpuapp/sysbuild_release.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Copyright (c) 2024 Nordic Semiconductor ASA
-#
-# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-#
-################################################################################
-
-SB_CONFIG_BOOTLOADER_MCUBOOT=y
-SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP=y
-SB_CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
-SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APPLICATION_CONFIG_DIR}/images/mcuboot/mcuboot_private.pem"
diff --git a/applications/nrf_desktop/doc/dfu_mcumgr.rst b/applications/nrf_desktop/doc/dfu_mcumgr.rst
index c3873f2552a0..b3513a76559a 100644
--- a/applications/nrf_desktop/doc/dfu_mcumgr.rst
+++ b/applications/nrf_desktop/doc/dfu_mcumgr.rst
@@ -36,6 +36,13 @@ The module selects the following configurations:
* :kconfig:option:`CONFIG_MCUMGR` - This option enables the MCUmgr support, which is required for the DFU process.
For details, see :ref:`zephyr:mcu_mgr` in the Zephyr documentation.
+* :kconfig:option:`CONFIG_MCUMGR_GRP_OS` - This option enables the MCUmgr OS management handlers that are required for the DFU process.
+ For details, see :ref:`zephyr:device_mgmt` in the Zephyr documentation.
+
+ MCUmgr OS management handlers:
+
+ * :kconfig:option:`CONFIG_MCUMGR_GRP_OS_BOOTLOADER_INFO` - MCUmgr handler responsible for providing the bootloader information.
+
* :kconfig:option:`CONFIG_MCUMGR_MGMT_NOTIFICATION_HOOKS` - This option enables the MCUmgr notification hook support, which allows the module to listen for an MCUmgr event.
For details, see :ref:`zephyr:mcumgr_callbacks` in the Zephyr documentation.
@@ -79,14 +86,9 @@ MCUmgr configuration using MCUboot backend
The MCUboot backend configuration selects the following options:
-* MCUmgr groups:
-
- * :kconfig:option:`CONFIG_MCUMGR_GRP_IMG` - This option enables the MCUmgr image management handlers that are required for the DFU process.
- For details, see :ref:`zephyr:device_mgmt` in the Zephyr documentation.
- * :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_MUTEX`
- * :kconfig:option:`CONFIG_MCUMGR_GRP_OS` - This option enables the MCUmgr OS management handlers that are required for the DFU process.
- For details, see :ref:`zephyr:device_mgmt` in the Zephyr documentation.
-
+* :kconfig:option:`CONFIG_MCUMGR_GRP_IMG` - This option enables the MCUmgr image management handlers that are required for the DFU process.
+ For details, see :ref:`zephyr:device_mgmt` in the Zephyr documentation.
+* :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_MUTEX`
* :kconfig:option:`CONFIG_IMG_MANAGER`
* :kconfig:option:`CONFIG_STREAM_FLASH`
* :kconfig:option:`CONFIG_MCUBOOT_BOOTUTIL_LIB`
diff --git a/applications/nrf_desktop/sample.yaml b/applications/nrf_desktop/sample.yaml
index 519014c6c80a..c3a8061c877d 100644
--- a/applications/nrf_desktop/sample.yaml
+++ b/applications/nrf_desktop/sample.yaml
@@ -1,6 +1,8 @@
sample:
- name: nRF Desktop
- description: HID device reference design
+ name: nRF Desktop - HID reference design
+ description: The nRF Desktop is an HID reference design application.
+ It can be configured to function as a mouse, keyboard or USB dongle
+ bridging radio connected HID peripheral.
common:
sysbuild: true
tags: ci_build sysbuild ci_applications_nrf_desktop
@@ -19,11 +21,9 @@ tests:
applications.nrf_desktop.zdebug.uart:
platform_allow:
- nrf54h20dk/nrf54h20/cpuapp
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
integration_platforms:
- nrf54h20dk/nrf54h20/cpuapp
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
applications.nrf_desktop.zdebug:
build_only: true
@@ -51,10 +51,8 @@ tests:
extra_args: FILE_SUFFIX=wwcb
applications.nrf_desktop.zdebug_fast_pair.gmouse.uart:
platform_allow:
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
integration_platforms:
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
extra_args: FILE_SUFFIX=fast_pair
FP_MODEL_ID=0x8E717D
@@ -115,10 +113,8 @@ tests:
extra_args: FILE_SUFFIX=dongle
applications.nrf_desktop.zdebug_keyboard.uart:
platform_allow:
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
integration_platforms:
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
extra_args: FILE_SUFFIX=keyboard
applications.nrf_desktop.zdebug_keyboard:
@@ -160,7 +156,6 @@ tests:
- nrf52840gmouse/nrf52840
- nrf5340dk/nrf5340/cpuapp
- nrf54h20dk/nrf54h20/cpuapp
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
integration_platforms:
- nrf52dmouse/nrf52832
@@ -175,7 +170,6 @@ tests:
- nrf52840gmouse/nrf52840
- nrf5340dk/nrf5340/cpuapp
- nrf54h20dk/nrf54h20/cpuapp
- - nrf54l15pdk/nrf54l15/cpuapp
- nrf54l15dk/nrf54l15/cpuapp
extra_args: FILE_SUFFIX=release
applications.nrf_desktop.zrelease_fast_pair.keyboard:
diff --git a/applications/nrf_desktop/src/modules/Kconfig.config_channel b/applications/nrf_desktop/src/modules/Kconfig.config_channel
index 50d26b9263ea..d01de82965d4 100644
--- a/applications/nrf_desktop/src/modules/Kconfig.config_channel
+++ b/applications/nrf_desktop/src/modules/Kconfig.config_channel
@@ -60,9 +60,6 @@ config DESKTOP_CONFIG_CHANNEL_DFU_ENABLE
depends on (SSF_SUIT_SERVICE_ENABLED || !SUIT)
help
This option enables DFU over the config channel.
- The option automatically enables 8-bit write block size emulation to
- ensure that update images with size unaligned to word size can be
- handled while writing to SoC FLASH.
if DESKTOP_CONFIG_CHANNEL_DFU_ENABLE
diff --git a/applications/nrf_desktop/src/modules/Kconfig.dfu_mcumgr b/applications/nrf_desktop/src/modules/Kconfig.dfu_mcumgr
index 8aaa9884fc41..b3d708639b22 100644
--- a/applications/nrf_desktop/src/modules/Kconfig.dfu_mcumgr
+++ b/applications/nrf_desktop/src/modules/Kconfig.dfu_mcumgr
@@ -9,6 +9,8 @@ menuconfig DESKTOP_DFU_MCUMGR_ENABLE
select EXPERIMENTAL
select CAF_BLE_SMP_TRANSFER_EVENTS if MCUMGR_TRANSPORT_BT
select MCUMGR
+ select MCUMGR_GRP_OS
+ select MCUMGR_GRP_OS_BOOTLOADER_INFO
select MCUMGR_MGMT_NOTIFICATION_HOOKS
select MCUMGR_SMP_COMMAND_STATUS_HOOKS
select CRC
@@ -47,7 +49,6 @@ config DESKTOP_DFU_BACKEND_MCUBOOT
select IMG_MANAGER
select MCUMGR_GRP_IMG
select MCUMGR_GRP_IMG_MUTEX if DESKTOP_DFU_LOCK
- select MCUMGR_GRP_OS
select STREAM_FLASH
depends on BOOTLOADER_MCUBOOT
help
diff --git a/applications/nrf_desktop/src/modules/Kconfig.usb_state b/applications/nrf_desktop/src/modules/Kconfig.usb_state
index dee657d9df98..a0f7424236b6 100644
--- a/applications/nrf_desktop/src/modules/Kconfig.usb_state
+++ b/applications/nrf_desktop/src/modules/Kconfig.usb_state
@@ -96,9 +96,16 @@ config DESKTOP_USB_STACK_NEXT
bool "USB next stack [EXPERIMENTAL]"
select EXPERIMENTAL
select USB_DEVICE_STACK_NEXT
+ imply SOC_FLASH_NRF_PARTIAL_ERASE
help
Use experimental integration of USB next stack.
+ The option implies partial erase of nRF SoC flash in the driver
+ configuration to improve stability of the USB next stack. The partial
+ erase feature works around device errors that might be reported by
+ Windows USB host in Device Manager if USB cable is connected while
+ erasing secondary image slot in background.
+
config DESKTOP_USB_STACK_LEGACY
bool "USB legacy stack"
select USB_DEVICE_STACK
diff --git a/applications/sdp/gpio/CMakeLists.txt b/applications/sdp/gpio/CMakeLists.txt
index 5a428c69b31e..2e996f5b15ca 100644
--- a/applications/sdp/gpio/CMakeLists.txt
+++ b/applications/sdp/gpio/CMakeLists.txt
@@ -9,6 +9,6 @@ cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(emulated_gpio)
-target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICMSG app PRIVATE src/nrfe_icmsg.c)
-target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_MBOX app PRIVATE src/nrfe_mbox.c)
target_sources(app PRIVATE src/main.c)
+target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICMSG app PRIVATE src/backend/backend_icmsg.c)
+target_sources_ifdef(CONFIG_GPIO_NRFE_EGPIO_BACKEND_MBOX app PRIVATE src/backend/backend_mbox.c)
diff --git a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.conf b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.conf
index 4d4345cb7004..6c1b7543e212 100644
--- a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.conf
+++ b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.conf
@@ -18,6 +18,7 @@ CONFIG_PM=n
# Interrupts
CONFIG_DYNAMIC_INTERRUPTS=n
CONFIG_IRQ_OFFLOAD=n
+CONFIG_GEN_SW_ISR_TABLE=n
# Memory protection
CONFIG_THREAD_STACK_INFO=n
@@ -26,6 +27,7 @@ CONFIG_FPU=n
# Boot
CONFIG_BOOT_BANNER=n
+CONFIG_NCS_BOOT_BANNER=n
# Console
CONFIG_CONSOLE=n
diff --git a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.overlay b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.overlay
index 80ecba58376d..ccbed019993a 100644
--- a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.overlay
+++ b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr.overlay
@@ -10,19 +10,27 @@
#address-cells = <1>;
#size-cells = <1>;
- sram_tx: memory@20018000 {
- reg = <0x20018000 0x0800>;
+ sram_tx: memory@2003c000 {
+ reg = <0x2003c000 0x0800>;
};
- sram_rx: memory@20020000 {
- reg = <0x20020000 0x0800>;
+ sram_rx: memory@2003c800 {
+ reg = <0x2003c800 0x0800>;
};
};
};
};
+&cpuflpr_sram {
+ reg = <0x2003d000 DT_SIZE_K(12)>;
+ ranges = <0x0 0x2003d000 0x3000>;
+};
+
&cpuflpr_vevif_rx {
status = "okay";
+ interrupts = <16 NRF_DEFAULT_IRQ_PRIORITY>;
+ nordic,tasks = <1>;
+ nordic,tasks-mask = <0x00010000>;
};
&cpuflpr_vevif_tx {
diff --git a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_icmsg.overlay b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_icmsg.overlay
index 002cf9b3aded..8413634b2dae 100644
--- a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_icmsg.overlay
+++ b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_icmsg.overlay
@@ -10,7 +10,7 @@
compatible = "zephyr,ipc-icmsg";
tx-region = <&sram_tx>;
rx-region = <&sram_rx>;
- mboxes = <&cpuflpr_vevif_rx 21>, <&cpuflpr_vevif_tx 20>;
+ mboxes = <&cpuflpr_vevif_rx 16>, <&cpuflpr_vevif_tx 20>;
mbox-names = "rx", "tx";
status = "okay";
};
diff --git a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_mbox.overlay b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_mbox.overlay
index 57534433d353..747ef88e440c 100644
--- a/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_mbox.overlay
+++ b/applications/sdp/gpio/boards/nrf54l15dk_nrf54l15_cpuflpr_mbox.overlay
@@ -7,7 +7,7 @@
/ {
mbox_consumer: mbox_consumer {
compatible = "vnd,mbox-consumer";
- mboxes = <&cpuflpr_vevif_rx 21>, <&cpuflpr_vevif_tx 20>;
+ mboxes = <&cpuflpr_vevif_rx 16>, <&cpuflpr_vevif_tx 20>;
mbox-names = "rx", "tx";
};
};
diff --git a/applications/sdp/gpio/include/main.h b/applications/sdp/gpio/include/main.h
deleted file mode 100644
index e0a0e0cf0c35..000000000000
--- a/applications/sdp/gpio/include/main.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2024 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
- */
-
-#ifndef MAIN_H__
-#define MAIN_H__
-
-#include
-#include
-
-#if !defined(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICMSG) && !defined(CONFIG_GPIO_NRFE_EGPIO_BACKEND_MBOX)
-#error "Define communication backend type"
-#endif
-
-void process_packet(nrfe_gpio_data_packet_t *packet);
-int backend_init(void);
-
-#endif /* MAIN_H__ */
diff --git a/applications/sdp/gpio/src/backend/backend.h b/applications/sdp/gpio/src/backend/backend.h
new file mode 100644
index 000000000000..02e6bb37541e
--- /dev/null
+++ b/applications/sdp/gpio/src/backend/backend.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2024 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+ */
+
+#ifndef _BACKEND_H__
+#define _BACKEND_H__
+
+#include
+
+#if !defined(CONFIG_GPIO_NRFE_EGPIO_BACKEND_ICMSG) && !defined(CONFIG_GPIO_NRFE_EGPIO_BACKEND_MBOX)
+#error "Define communication backend type"
+#endif
+
+/**
+ * @brief Callback function called by backend when new packet arrives.
+ *
+ * @param packet New packet.
+ */
+typedef void (*backend_callback_t)(nrfe_gpio_data_packet_t *packet);
+
+/**
+ * @brief Initialize backend.
+ *
+ * @param callback Function to be called when new packet arrives.
+ */
+int backend_init(backend_callback_t callback);
+
+
+#endif /* BACKEND_H__ */
diff --git a/applications/sdp/gpio/src/nrfe_icmsg.c b/applications/sdp/gpio/src/backend/backend_icmsg.c
similarity index 83%
rename from applications/sdp/gpio/src/nrfe_icmsg.c
rename to applications/sdp/gpio/src/backend/backend_icmsg.c
index 64d7478bd99f..b23cabbee22d 100644
--- a/applications/sdp/gpio/src/nrfe_icmsg.c
+++ b/applications/sdp/gpio/src/backend/backend_icmsg.c
@@ -4,12 +4,12 @@
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
-#include "../include/main.h"
+#include "backend.h"
#include
static struct ipc_ept ep;
-
-volatile uint32_t bound_sem = 1;
+static backend_callback_t cbck;
+static volatile uint32_t bound_sem = 1;
static void ep_bound(void *priv)
{
@@ -21,7 +21,7 @@ static void ep_recv(const void *data, size_t len, void *priv)
(void)len;
(void)priv;
- process_packet((nrfe_gpio_data_packet_t *)data);
+ cbck((nrfe_gpio_data_packet_t *)data);
}
static struct ipc_ept_cfg ep_cfg = {
@@ -31,11 +31,12 @@ static struct ipc_ept_cfg ep_cfg = {
},
};
-int backend_init(void)
+int backend_init(backend_callback_t callback)
{
int ret = 0;
const struct device *ipc0_instance;
volatile uint32_t delay = 0;
+ cbck = callback;
#if !defined(CONFIG_SYS_CLOCK_EXISTS)
/* Wait a little bit for IPC service to be ready on APP side */
diff --git a/applications/sdp/gpio/src/nrfe_mbox.c b/applications/sdp/gpio/src/backend/backend_mbox.c
similarity index 94%
rename from applications/sdp/gpio/src/nrfe_mbox.c
rename to applications/sdp/gpio/src/backend/backend_mbox.c
index c0573b47a855..ff8ccae4e4b2 100644
--- a/applications/sdp/gpio/src/nrfe_mbox.c
+++ b/applications/sdp/gpio/src/backend/backend_mbox.c
@@ -4,10 +4,11 @@
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
-#include "../include/main.h"
+#include "backend.h"
#include
static const struct mbox_dt_spec rx_channel = MBOX_DT_SPEC_GET(DT_PATH(mbox_consumer), rx);
+static backend_callback_t cbck;
/**
* @brief Callback function for when a message is received from the mailbox
@@ -40,7 +41,7 @@ static void mbox_callback(const struct device *instance, uint32_t channel, void
nrfe_gpio_data_packet_t *packet = (nrfe_gpio_data_packet_t *)&rx_data->data;
- process_packet(packet);
+ cbck(packet);
/* Clear shared_data.buffer_size (there is no more data available)
* This is necessary so that the other core knows that the data has been read
@@ -73,9 +74,10 @@ static int mbox_init(void *shared_data)
return mbox_set_enabled_dt(&rx_channel, true);
}
-int backend_init(void)
+int backend_init(backend_callback_t callback)
{
int ret = 0;
+ cbck = callback;
static nrfe_gpio_mbox_data_t *rx_data =
(nrfe_gpio_mbox_data_t *)((uint8_t *)(DT_REG_ADDR(DT_NODELABEL(sram_rx))));
diff --git a/applications/sdp/gpio/src/main.c b/applications/sdp/gpio/src/main.c
index fc31686ae2df..8fdf18083961 100644
--- a/applications/sdp/gpio/src/main.c
+++ b/applications/sdp/gpio/src/main.c
@@ -4,10 +4,11 @@
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
-#include "../include/main.h"
-
+#include "./backend/backend.h"
+#include
#include
#include
+#include
#include
#include
#include
@@ -144,7 +145,7 @@ int main(void)
{
int ret = 0;
- ret = backend_init();
+ ret = backend_init(process_packet);
if (ret < 0) {
return 0;
}
diff --git a/applications/serial_lte_modem/doc/SOCKET_AT_commands.rst b/applications/serial_lte_modem/doc/SOCKET_AT_commands.rst
index 35690bfb3dd5..3b25511d0854 100644
--- a/applications/serial_lte_modem/doc/SOCKET_AT_commands.rst
+++ b/applications/serial_lte_modem/doc/SOCKET_AT_commands.rst
@@ -571,6 +571,10 @@ Syntax
Indicates that the socket is in active use by a server application.
This lets the modem stay in connected mode longer.
+ * ``62`` - :c:macro:`SO_IPV6_DELAYED_ADDR_REFRESH`.
+
+ * ```` is an integer that indicates whether delayed IPv6 address refresh is enabled.
+ It is ``0`` for disabled or ``1`` for enabled.
See :ref:`nRF socket options ` for explanation of the supported options.
diff --git a/applications/serial_lte_modem/src/slm_at_socket.c b/applications/serial_lte_modem/src/slm_at_socket.c
index a00c80b03131..ddc667d947cf 100644
--- a/applications/serial_lte_modem/src/slm_at_socket.c
+++ b/applications/serial_lte_modem/src/slm_at_socket.c
@@ -346,6 +346,9 @@ static int at_sockopt_to_sockopt(enum at_sockopt at_option, int *level, int *opt
*level = IPPROTO_IPV6;
*option = SO_IPV6_ECHO_REPLY;
break;
+ case AT_SO_IPV6_DELAYED_ADDR_REFRESH:
+ *level = IPPROTO_IPV6;
+ *option = SO_IPV6_DELAYED_ADDR_REFRESH;
case AT_SO_BINDTOPDN:
*level = SOL_SOCKET;
*option = SO_BINDTOPDN;
diff --git a/applications/serial_lte_modem/src/slm_sockopt.h b/applications/serial_lte_modem/src/slm_sockopt.h
index 71960baf1911..749eaf076a12 100644
--- a/applications/serial_lte_modem/src/slm_sockopt.h
+++ b/applications/serial_lte_modem/src/slm_sockopt.h
@@ -26,6 +26,7 @@ enum at_sockopt {
AT_SO_BINDTOPDN = 40,
AT_SO_TCP_SRV_SESSTIMEO = 55,
AT_SO_RAI = 61,
+ AT_SO_IPV6_DELAYED_ADDR_REFRESH = 62,
};
/**
diff --git a/applications/serial_lte_modem/src/slm_trap_macros.h b/applications/serial_lte_modem/src/slm_trap_macros.h
index 5844dd04f448..783d0e5a62ab 100644
--- a/applications/serial_lte_modem/src/slm_trap_macros.h
+++ b/applications/serial_lte_modem/src/slm_trap_macros.h
@@ -13,8 +13,8 @@
* when forwarding intercepted AT commands from within the callbacks.
* Alternatives to these functions are available in slm_util.h.
*/
-#define nrf_modem_at_printf(...) function_disallowed_use_slm_util_alternative(void)
-#define nrf_modem_at_scanf(...) function_disallowed_use_slm_util_alternative(void)
-#define nrf_modem_at_cmd_async(...) function_disallowed(void)
+#define nrf_modem_at_printf(...) function_disallowed_use_slm_util_printf_alternative(__VA_ARGS__)
+#define nrf_modem_at_scanf(...) function_disallowed_use_slm_util_scanf_alternative(__VA_ARGS__)
+#define nrf_modem_at_cmd_async(...) function_disallowed(__VA_ARGS__)
#endif
diff --git a/boards/shields/coverage_support/boards/nrf52840dk_nrf52840.conf b/boards/shields/coverage_support/boards/nrf52840dk_nrf52840.conf
new file mode 100644
index 000000000000..1164b4fc066c
--- /dev/null
+++ b/boards/shields/coverage_support/boards/nrf52840dk_nrf52840.conf
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2024 Nordic Semiconductor ASA
+#
+# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+#
+
+CONFIG_FORCE_COVERAGE=y
+CONFIG_COVERAGE_GCOV=y
+CONFIG_COVERAGE_GCOV_HEAP_SIZE=0
+CONFIG_MAIN_STACK_SIZE=4096
+CONFIG_TEST_EXTRA_STACK_SIZE=2048
+CONFIG_ISR_STACK_SIZE=5120
+CONFIG_IDLE_STACK_SIZE=4096
+CONFIG_PRIVILEGED_STACK_SIZE=2048
+CONFIG_SHELL_STACK_SIZE=4096
+CONFIG_ZTEST_STACK_SIZE=4096
+CONFIG_IPM_CONSOLE_STACK_SIZE=8092
+CONFIG_IPC_SERVICE_BACKEND_ICMSG_WQ_STACK_SIZE=4096
+CONFIG_SIZE_OPTIMIZATIONS=y
diff --git a/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.conf b/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.conf
new file mode 100644
index 000000000000..1164b4fc066c
--- /dev/null
+++ b/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.conf
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2024 Nordic Semiconductor ASA
+#
+# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+#
+
+CONFIG_FORCE_COVERAGE=y
+CONFIG_COVERAGE_GCOV=y
+CONFIG_COVERAGE_GCOV_HEAP_SIZE=0
+CONFIG_MAIN_STACK_SIZE=4096
+CONFIG_TEST_EXTRA_STACK_SIZE=2048
+CONFIG_ISR_STACK_SIZE=5120
+CONFIG_IDLE_STACK_SIZE=4096
+CONFIG_PRIVILEGED_STACK_SIZE=2048
+CONFIG_SHELL_STACK_SIZE=4096
+CONFIG_ZTEST_STACK_SIZE=4096
+CONFIG_IPM_CONSOLE_STACK_SIZE=8092
+CONFIG_IPC_SERVICE_BACKEND_ICMSG_WQ_STACK_SIZE=4096
+CONFIG_SIZE_OPTIMIZATIONS=y
diff --git a/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.overlay b/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.overlay
new file mode 100644
index 000000000000..330a442cdcdf
--- /dev/null
+++ b/boards/shields/coverage_support/boards/nrf5340dk_nrf5340_cpuapp.overlay
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2024 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+ */
+
+&uart0 {
+ hw-flow-control;
+};
diff --git a/boards/shields/coverage_support/boards/nrf54h20dk_nrf54h20_cpuapp.overlay b/boards/shields/coverage_support/boards/nrf54h20dk_nrf54h20_cpuapp.overlay
index 3da5eb309810..70e96a9b0348 100644
--- a/boards/shields/coverage_support/boards/nrf54h20dk_nrf54h20_cpuapp.overlay
+++ b/boards/shields/coverage_support/boards/nrf54h20dk_nrf54h20_cpuapp.overlay
@@ -18,3 +18,7 @@
&cpurad_slot0_partition {
reg = <0x66000 DT_SIZE_K(128)>;
};
+
+&uart136 {
+ hw-flow-control;
+};
diff --git a/boards/shields/coverage_support/boards/nrf54l15dk_nrf54l15_cpuapp.overlay b/boards/shields/coverage_support/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
index ec3bcb57a555..2e241b49ea82 100644
--- a/boards/shields/coverage_support/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
+++ b/boards/shields/coverage_support/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
@@ -11,3 +11,7 @@
&slot0_partition {
reg = <0x10000 DT_SIZE_K(388)>;
};
+
+&uart20 {
+ hw-flow-control;
+};
diff --git a/cmake/sysbuild/image_signing.cmake b/cmake/sysbuild/image_signing.cmake
index 136f77b730bd..7710e6df9a0e 100644
--- a/cmake/sysbuild/image_signing.cmake
+++ b/cmake/sysbuild/image_signing.cmake
@@ -52,8 +52,10 @@ function(zephyr_mcuboot_tasks)
# MCUboot.
#
# Therefore, go with an explicitly installed imgtool first, falling
- # back on mcuboot/scripts/imgtool.py.
- if(IMGTOOL)
+ # back on mcuboot/scripts/imgtool.py. We exclude the system imgtool when
+ # compressed image support is enabled due to needing a version of imgtool
+ # that has features not in the most recent public release.
+ if(IMGTOOL AND NOT CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT_ENABLED)
set(imgtool_path "${IMGTOOL}")
elseif(DEFINED ZEPHYR_MCUBOOT_MODULE_DIR)
set(IMGTOOL_PY "${ZEPHYR_MCUBOOT_MODULE_DIR}/scripts/imgtool.py")
@@ -103,6 +105,19 @@ function(zephyr_mcuboot_tasks)
set(imgtool_extra)
endif()
+ if(CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT_ENABLED)
+ set(imgtool_bin_extra --compression lzma2armthumb)
+ else()
+ set(imgtool_bin_extra)
+ endif()
+
+ # Apply compression to hex file if this is a test
+ if(ncs_compress_test_compress_hex)
+ set(imgtool_hex_extra ${imgtool_bin_extra})
+ else()
+ set(imgtool_hex_extra)
+ endif()
+
if(CONFIG_MCUBOOT_HARDWARE_DOWNGRADE_PREVENTION)
set(imgtool_extra --security-counter ${CONFIG_MCUBOOT_HW_DOWNGRADE_PREVENTION_COUNTER_VALUE} ${imgtool_extra})
endif()
@@ -153,7 +168,7 @@ function(zephyr_mcuboot_tasks)
# calls to the "extra_post_build_commands" property ensures they run
# after the commands which generate the unsigned versions.
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands COMMAND
- ${imgtool_sign} ${imgtool_args} ${unconfirmed_args})
+ ${imgtool_sign} ${imgtool_args} ${imgtool_bin_extra} ${unconfirmed_args})
if(NOT "${keyfile_enc}" STREQUAL "")
if(CONFIG_BUILD_WITH_TFM)
@@ -169,7 +184,7 @@ function(zephyr_mcuboot_tasks)
)
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands COMMAND
- ${imgtool_sign} ${imgtool_args} --encrypt "${keyfile_enc}" ${unconfirmed_args})
+ ${imgtool_sign} ${imgtool_args} --encrypt "${keyfile_enc}" ${imgtool_bin_extra} ${unconfirmed_args})
endif()
endif()
@@ -196,7 +211,7 @@ function(zephyr_mcuboot_tasks)
# calls to the "extra_post_build_commands" property ensures they run
# after the commands which generate the unsigned versions.
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands COMMAND
- ${imgtool_sign} ${imgtool_args} ${imgtool_directxip_hex_command} ${unconfirmed_args})
+ ${imgtool_sign} ${imgtool_args} ${imgtool_directxip_hex_command} ${imgtool_hex_extra} ${unconfirmed_args})
if(NOT "${keyfile_enc}" STREQUAL "")
set(unconfirmed_args ${input}.hex ${output}.encrypted.hex)
@@ -206,7 +221,7 @@ function(zephyr_mcuboot_tasks)
)
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands COMMAND
- ${imgtool_sign} ${imgtool_args} --encrypt "${keyfile_enc}" ${unconfirmed_args})
+ ${imgtool_sign} ${imgtool_args} --encrypt "${keyfile_enc}" ${imgtool_hex_extra} ${unconfirmed_args})
endif()
endif()
diff --git a/cmake/sysbuild/suit.cmake b/cmake/sysbuild/suit.cmake
index a96d095e4f6b..9f2939f1c377 100644
--- a/cmake/sysbuild/suit.cmake
+++ b/cmake/sysbuild/suit.cmake
@@ -83,9 +83,14 @@ function(suit_generate_dfu_zip)
GLOBAL PROPERTY
SUIT_DFU_ARTIFACTS
)
+ get_property(
+ additional_script_params
+ GLOBAL PROPERTY
+ SUIT_DFU_ZIP_ADDITIONAL_SCRIPT_PARAMS
+ )
set(root_name "${SB_CONFIG_SUIT_ENVELOPE_ROOT_ARTIFACT_NAME}.suit")
- set(script_params "${root_name}type=suit-envelope")
+ set(script_params "${root_name}type=suit-envelope;${additional_script_params}")
include(${ZEPHYR_NRF_MODULE_DIR}/cmake/fw_zip.cmake)
@@ -105,9 +110,14 @@ function(suit_generate_recovery_dfu_zip)
GLOBAL PROPERTY
SUIT_RECOVERY_DFU_ARTIFACTS
)
+ get_property(
+ additional_script_params
+ GLOBAL PROPERTY
+ SUIT_RECOVERY_DFU_ZIP_ADDITIONAL_SCRIPT_PARAMS
+ )
set(root_name "${SB_CONFIG_SUIT_ENVELOPE_APP_RECOVERY_ARTIFACT_NAME}.suit")
- set(script_params "${root_name}type=suit-envelope")
+ set(script_params "${root_name}type=suit-envelope;${additional_script_params}")
include(${ZEPHYR_NRF_MODULE_DIR}/cmake/fw_zip.cmake)
@@ -316,17 +326,30 @@ function(suit_create_package)
)
endforeach()
- # First parse which images should be extracted to which cache partition
+ # First parse which images should be extracted to which cache partitions
set(DFU_CACHE_PARTITIONS_USED "")
+ set(RECOVERY_DFU_CACHE_PARTITIONS_USED "")
+
foreach(image ${IMAGES})
sysbuild_get(EXTRACT_TO_CACHE IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE KCONFIG)
if(EXTRACT_TO_CACHE)
sysbuild_get(CACHE_PARTITION_NUM IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_PARTITION KCONFIG)
- list(APPEND DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM})
- list(APPEND SUIT_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image})
+
+ unset(CONFIG_SUIT_RECOVERY)
+ sysbuild_get(CONFIG_SUIT_RECOVERY IMAGE ${image} VAR CONFIG_SUIT_RECOVERY KCONFIG)
+
+ if(CONFIG_SUIT_RECOVERY)
+ list(APPEND RECOVERY_DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM})
+ list(APPEND SUIT_RECOVERY_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image})
+ else()
+ list(APPEND DFU_CACHE_PARTITIONS_USED ${CACHE_PARTITION_NUM})
+ list(APPEND SUIT_CACHE_PARTITION_${CACHE_PARTITION_NUM} ${image})
+ endif()
endif()
endforeach()
+
list(REMOVE_DUPLICATES DFU_CACHE_PARTITIONS_USED)
+ list(REMOVE_DUPLICATES RECOVERY_DFU_CACHE_PARTITIONS_USED)
# Then create the cache partitions
foreach(CACHE_PARTITION_NUM ${DFU_CACHE_PARTITIONS_USED})
@@ -339,16 +362,45 @@ function(suit_create_package)
"--input" "\"${IMAGE_CACHE_URI},${BINARY_DIR}/zephyr/${BINARY_FILE}.bin\""
)
endforeach()
- list(APPEND CACHE_CREATE_ARGS "--output-file" "${SUIT_ROOT_DIRECTORY}dfu_cache_partition_${CACHE_PARTITION_NUM}.bin")
if(SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM}_EB_SIZE)
list(APPEND CACHE_CREATE_ARGS "--eb-size" "${SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM}_EB_SIZE}")
endif()
- suit_create_cache_partition("${CACHE_CREATE_ARGS}")
+ suit_create_cache_partition(
+ "${CACHE_CREATE_ARGS}"
+ "${SUIT_ROOT_DIRECTORY}dfu_cache_partition_${CACHE_PARTITION_NUM}.bin"
+ ${CACHE_PARTITION_NUM}
+ FALSE
+ )
endforeach()
if(SB_CONFIG_SUIT_BUILD_RECOVERY)
+
+ # Create cache partitions for the recovery images
+ foreach(CACHE_PARTITION_NUM ${RECOVERY_DFU_CACHE_PARTITIONS_USED})
+ set(CACHE_CREATE_ARGS "")
+ foreach(image ${SUIT_RECOVERY_CACHE_PARTITION_${CACHE_PARTITION_NUM}})
+ sysbuild_get(BINARY_DIR IMAGE ${image} VAR APPLICATION_BINARY_DIR CACHE)
+ sysbuild_get(BINARY_FILE IMAGE ${image} VAR CONFIG_KERNEL_BIN_NAME KCONFIG)
+ sysbuild_get(IMAGE_CACHE_URI IMAGE ${image} VAR CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI KCONFIG)
+ list(APPEND CACHE_CREATE_ARGS
+ "--input" "\"${IMAGE_CACHE_URI},${BINARY_DIR}/zephyr/${BINARY_FILE}.bin\""
+ )
+ endforeach()
+
+ if(SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM}_EB_SIZE)
+ list(APPEND CACHE_CREATE_ARGS "--eb-size" "${SUIT_DFU_CACHE_PARTITION_${CACHE_PARTITION_NUM}_EB_SIZE}")
+ endif()
+
+ suit_create_cache_partition(
+ "${CACHE_CREATE_ARGS}"
+ "${SUIT_ROOT_DIRECTORY}dfu_cache_partition_recovery_${CACHE_PARTITION_NUM}.bin"
+ ${CACHE_PARTITION_NUM}
+ TRUE
+ )
+ endforeach()
+
suit_get_manifest(${SB_CONFIG_SUIT_ENVELOPE_APP_RECOVERY_TEMPLATE_FILENAME} INPUT_APP_RECOVERY_ENVELOPE_JINJA_FILE)
# create app recovery envelope if defined
@@ -368,6 +420,34 @@ function(suit_create_package)
endif()
endif()
+ if(SB_CONFIG_SUIT_MULTI_IMAGE_PACKAGE_BUILD)
+ include(${ZEPHYR_NRF_MODULE_DIR}/cmake/fw_zip.cmake)
+ include(${ZEPHYR_NRF_MODULE_DIR}/cmake/dfu_multi_image.cmake)
+
+ set(suit_multi_image_ids)
+ set(suit_multi_image_paths)
+ set(suit_multi_image_targets)
+
+ list(APPEND suit_multi_image_ids 0)
+ # Include the suit Envelope to the multi image package to store it in dfu_partition
+ list(APPEND suit_multi_image_paths "${SUIT_ROOT_DIRECTORY}root.suit")
+ list(APPEND suit_multi_image_targets "${SUIT_ROOT_DIRECTORY}root.suit")
+ # Include cache partition to the multi image package to store it in cache_partition
+ foreach(cache_partition_num ${DFU_CACHE_PARTITIONS_USED})
+ math(EXPR dfu_image_id "${cache_partition_num} + 1")
+ list(APPEND suit_multi_image_ids ${dfu_image_id})
+ list(APPEND suit_multi_image_paths "${SUIT_ROOT_DIRECTORY}dfu_cache_partition_${cache_partition_num}.bin")
+ endforeach()
+
+ dfu_multi_image_package(
+ dfu_multi_image_pkg
+ IMAGE_IDS ${suit_multi_image_ids}
+ IMAGE_PATHS ${suit_multi_image_paths}
+ OUTPUT ${CMAKE_BINARY_DIR}/dfu_multi_image.bin
+ DEPENDS ${suit_multi_image_targets}
+ )
+ endif() # SB_CONFIG_SUIT_MULTI_IMAGE_PACKAGE_BUILD
+
suit_get_manifest(${SB_CONFIG_SUIT_ENVELOPE_ROOT_TEMPLATE_FILENAME} INPUT_ROOT_ENVELOPE_JINJA_FILE)
message(STATUS "Found root manifest template: ${INPUT_ROOT_ENVELOPE_JINJA_FILE}")
diff --git a/cmake/sysbuild/suit_utilities.cmake b/cmake/sysbuild/suit_utilities.cmake
index 61074a641153..9acdbc639c02 100644
--- a/cmake/sysbuild/suit_utilities.cmake
+++ b/cmake/sysbuild/suit_utilities.cmake
@@ -84,7 +84,10 @@ function(suit_create_envelope input_file output_file create_signature)
endif()
endfunction()
-function(suit_create_cache_partition args)
+function(suit_create_cache_partition args output_file partition_num recovery)
+
+ list(APPEND args "--output-file" "${output_file}")
+
set_property(
GLOBAL APPEND PROPERTY SUIT_POST_BUILD_COMMANDS
COMMAND ${PYTHON_EXECUTABLE} ${SUIT_GENERATOR_CLI_SCRIPT}
@@ -92,4 +95,16 @@ function(suit_create_cache_partition args)
${args}
BYPRODUCTS ${output_file}
)
+
+ get_filename_component(output_file_name ${output_file} NAME)
+
+ if (recovery)
+ set_property(GLOBAL APPEND PROPERTY SUIT_RECOVERY_DFU_ARTIFACTS ${output_file})
+ set_property(GLOBAL APPEND PROPERTY SUIT_RECOVERY_DFU_ZIP_ADDITIONAL_SCRIPT_PARAMS
+ "${output_file_name}type=cache;${output_file_name}partition=${partition_num};")
+ else()
+ set_property(GLOBAL APPEND PROPERTY SUIT_DFU_ARTIFACTS ${output_file})
+ set_property(GLOBAL APPEND PROPERTY SUIT_DFU_ZIP_ADDITIONAL_SCRIPT_PARAMS
+ "${output_file_name}type=cache;${output_file_name}partition=${partition_num};")
+ endif()
endfunction()
diff --git a/cmake/sysbuild/zip.cmake b/cmake/sysbuild/zip.cmake
index 7c7ca4841470..aadc580eb2e6 100644
--- a/cmake/sysbuild/zip.cmake
+++ b/cmake/sysbuild/zip.cmake
@@ -97,8 +97,13 @@ function(dfu_app_zip_package)
)
endif()
else()
- set(app_update_name "${DEFAULT_IMAGE}.bin")
- set(secondary_app_update_name mcuboot_secondary_app.bin)
+ if(SB_CONFIG_BOOT_ENCRYPTION)
+ set(app_update_name "${DEFAULT_IMAGE}.signed.encrypted.bin")
+ else()
+ set(app_update_name "${DEFAULT_IMAGE}.signed.bin")
+ set(secondary_app_update_name mcuboot_secondary_app.signed.bin)
+ endif()
+
mcuboot_image_number_to_slot(slot_primary ${SB_CONFIG_MCUBOOT_APPLICATION_IMAGE_NUMBER} n)
mcuboot_image_number_to_slot(slot_secondary ${SB_CONFIG_MCUBOOT_APPLICATION_IMAGE_NUMBER} y)
@@ -111,10 +116,15 @@ function(dfu_app_zip_package)
"${app_update_name}slot_index_secondary=${slot_secondary}"
"${app_update_name}version_MCUBOOT=${CONFIG_MCUBOOT_IMGTOOL_SIGN_VERSION}"
)
- list(APPEND bin_files "${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin")
+ if(SB_CONFIG_BOOT_ENCRYPTION)
+ list(APPEND bin_files "${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.encrypted.bin")
+ set(exclude_files EXCLUDE ${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.encrypted.bin)
+ else()
+ list(APPEND bin_files "${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin")
+ set(exclude_files EXCLUDE ${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin)
+ endif()
list(APPEND zip_names ${app_update_name})
list(APPEND signed_targets ${DEFAULT_IMAGE}_extra_byproducts)
- set(exclude_files EXCLUDE ${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin)
set(include_files INCLUDE ${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.bin)
else()
# Application in DirectXIP mode
@@ -133,12 +143,12 @@ function(dfu_app_zip_package)
"${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin"
"${CMAKE_BINARY_DIR}/mcuboot_secondary_app/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin"
)
- list(APPEND zip_names "${app_update_name};${secondary_app_update_name}")
- list(APPEND signed_targets ${DEFAULT_IMAGE}_extra_byproducts mcuboot_secondary_app_extra_byproducts)
set(exclude_files EXCLUDE
${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin
${CMAKE_BINARY_DIR}/mcuboot_secondary_app/zephyr/${CONFIG_KERNEL_BIN_NAME}.signed.bin
)
+ list(APPEND zip_names "${app_update_name};${secondary_app_update_name}")
+ list(APPEND signed_targets ${DEFAULT_IMAGE}_extra_byproducts mcuboot_secondary_app_extra_byproducts)
set(include_files INCLUDE
${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/${CONFIG_KERNEL_BIN_NAME}.bin
${CMAKE_BINARY_DIR}/mcuboot_secondary_app/zephyr/${CONFIG_KERNEL_BIN_NAME}.bin
diff --git a/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2
index a543fd490b49..d47f93979790 100644
--- a/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/default/v1/app_envelope.yaml.jinja2
@@ -74,7 +74,12 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
+{%- if application['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Application DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
diff --git a/config/suit/templates/nrf54h20/default/v1/app_recovery_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/default/v1/app_recovery_envelope.yaml.jinja2
index e709761515a3..ab6e6b592555 100644
--- a/config/suit/templates/nrf54h20/default/v1/app_recovery_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/default/v1/app_recovery_envelope.yaml.jinja2
@@ -139,7 +139,12 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
+{%- if application['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Application DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
{%- if rad_recovery is defined %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
diff --git a/config/suit/templates/nrf54h20/default/v1/rad_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/default/v1/rad_envelope.yaml.jinja2
index 63f88053a61c..0ffbeb1b7ae7 100644
--- a/config/suit/templates/nrf54h20/default/v1/rad_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/default/v1/rad_envelope.yaml.jinja2
@@ -79,7 +79,12 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
+{%- if radio['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Radio DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in radio['config'] and radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
diff --git a/config/suit/templates/nrf54h20/default/v1/rad_recovery_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/default/v1/rad_recovery_envelope.yaml.jinja2
index cef1c230f52b..7f9beec0eb61 100644
--- a/config/suit/templates/nrf54h20/default/v1/rad_recovery_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/default/v1/rad_recovery_envelope.yaml.jinja2
@@ -69,7 +69,13 @@ SUIT_Envelope_Tagged:
{%- elif DEFAULT_VERSION is defined %}
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
+
+{%- if radio['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Radio DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
suit-parameter-uri: '#{{ rad_recovery['name'] }}'
@@ -101,7 +107,7 @@ SUIT_Envelope_Tagged:
- RFC4122_UUID:
namespace: {{ mpi_rad_recovery_vendor_name }}
name: {{ mpi_rad_recovery_class_name }}
- suit-integrated-payloads:
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in rad_recovery['config'] or rad_recovery['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %}
+ suit-integrated-payloads:
'#{{ rad_recovery['name'] }}': {{ rad_recovery['binary'] }}
{%- endif %}
diff --git a/config/suit/templates/nrf54h20/default/v1/root_with_binary_nordic_top.yaml.jinja2 b/config/suit/templates/nrf54h20/default/v1/root_with_binary_nordic_top.yaml.jinja2
index 7677b82e229e..abe79fb80a68 100644
--- a/config/suit/templates/nrf54h20/default/v1/root_with_binary_nordic_top.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/default/v1/root_with_binary_nordic_top.yaml.jinja2
@@ -120,7 +120,12 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
+{%- if main_config['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Main DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 0
{%- if radio is defined %}
- suit-directive-override-parameters:
diff --git a/config/suit/templates/nrf54h20/matter/v1/app_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/matter/v1/app_envelope.yaml.jinja2
index dbbfc6d07565..1b259d398326 100644
--- a/config/suit/templates/nrf54h20/matter/v1/app_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/matter/v1/app_envelope.yaml.jinja2
@@ -21,7 +21,7 @@ SUIT_Envelope_Tagged:
- {{ application['dt'].chosen_nodes['zephyr,code-partition'].regs[0].size }}
- - CAND_IMG
- 0
-{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in application['config'] or application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %}
+{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] != '' %}
- - CACHE_POOL
- 1
{%- endif %}
@@ -88,32 +88,6 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
- suit-candidate-verification:
- - suit-directive-set-component-index: 1
- - suit-directive-override-parameters:
-{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
- suit-parameter-uri: '{{ application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}'
-{%- else %}
- suit-parameter-uri: 'file://{{ application['filename'] }}'
-{%- endif %}
- suit-parameter-image-digest:
- suit-digest-algorithm-id: cose-alg-sha-256
- suit-digest-bytes:
- file: {{ application['binary'] }}
- - suit-directive-fetch:
- - suit-send-record-failure
- - suit-directive-try-each:
- - - suit-condition-image-match:
- - suit-send-record-success
- - suit-send-record-failure
- - suit-send-sysinfo-success
- - suit-send-sysinfo-failure
- - - suit-condition-image-match:
- - suit-send-record-success
- - suit-send-record-failure
- - suit-send-sysinfo-success
- - suit-send-sysinfo-failure
-
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in application['config'] or application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %}
suit-payload-fetch:
- suit-directive-set-component-index: 2
@@ -122,7 +96,13 @@ SUIT_Envelope_Tagged:
- suit-directive-fetch:
- suit-send-record-failure
{%- endif %}
+
+{%- if application['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Application DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
{%- if flash_companion is defined %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
@@ -182,6 +162,32 @@ SUIT_Envelope_Tagged:
suit-text:
suit-digest-algorithm-id: cose-alg-sha-256
+ suit-candidate-verification:
+ - suit-directive-set-component-index: 1
+ - suit-directive-override-parameters:
+{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in application['config'] and application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
+ suit-parameter-uri: '{{ application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}'
+{%- else %}
+ suit-parameter-uri: 'file://{{ application['filename'] }}'
+{%- endif %}
+ suit-parameter-image-digest:
+ suit-digest-algorithm-id: cose-alg-sha-256
+ suit-digest-bytes:
+ file: {{ application['binary'] }}
+ - suit-directive-fetch:
+ - suit-send-record-failure
+ - suit-directive-try-each:
+ - - suit-condition-image-match:
+ - suit-send-record-success
+ - suit-send-record-failure
+ - suit-send-sysinfo-success
+ - suit-send-sysinfo-failure
+ - - suit-condition-image-match:
+ - suit-send-record-success
+ - suit-send-record-failure
+ - suit-send-sysinfo-success
+ - suit-send-sysinfo-failure
+
suit-manifest-component-id:
- INSTLD_MFST
- RFC4122_UUID:
diff --git a/config/suit/templates/nrf54h20/matter/v1/rad_envelope.yaml.jinja2 b/config/suit/templates/nrf54h20/matter/v1/rad_envelope.yaml.jinja2
index 0064aa3f9935..dc0c81a7a3f8 100644
--- a/config/suit/templates/nrf54h20/matter/v1/rad_envelope.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/matter/v1/rad_envelope.yaml.jinja2
@@ -26,7 +26,7 @@ SUIT_Envelope_Tagged:
- {{ radio['dt'].chosen_nodes['zephyr,code-partition'].regs[0].size }}
- - CAND_IMG
- 0
-{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in application['config'] or application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %}
+{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' in radio['config'] and radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] != '' %}
- - CACHE_POOL
- 1
{%- endif %}
@@ -79,32 +79,6 @@ SUIT_Envelope_Tagged:
suit-current-version: {{ DEFAULT_VERSION }}
{%- endif %}
- suit-candidate-verification:
- - suit-directive-set-component-index: 1
- - suit-directive-override-parameters:
-{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in radio['config'] and radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
- suit-parameter-uri: '{{ radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}'
-{%- else %}
- suit-parameter-uri: '#{{ radio['name'] }}'
-{%- endif %}
- suit-parameter-image-digest:
- suit-digest-algorithm-id: cose-alg-sha-256
- suit-digest-bytes:
- file: {{ radio['binary'] }}
- - suit-directive-fetch:
- - suit-send-record-failure
- - suit-directive-try-each:
- - - suit-condition-image-match:
- - suit-send-record-success
- - suit-send-record-failure
- - suit-send-sysinfo-success
- - suit-send-sysinfo-failure
- - - suit-condition-image-match:
- - suit-send-record-success
- - suit-send-record-failure
- - suit-send-sysinfo-success
- - suit-send-sysinfo-failure
-
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE' not in radio['config'] or radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE'] == '' %}
suit-payload-fetch:
- suit-directive-set-component-index: 2
@@ -113,7 +87,13 @@ SUIT_Envelope_Tagged:
- suit-directive-fetch:
- suit-send-record-failure
{%- endif %}
+
+{%- if radio['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Radio DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 1
- suit-directive-override-parameters:
{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in radio['config'] and radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
@@ -140,6 +120,33 @@ SUIT_Envelope_Tagged:
- suit-send-sysinfo-failure
suit-text:
suit-digest-algorithm-id: cose-alg-sha-256
+
+ suit-candidate-verification:
+ - suit-directive-set-component-index: 1
+ - suit-directive-override-parameters:
+{%- if 'CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI' in radio['config'] and radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] != '' %}
+ suit-parameter-uri: '{{ radio['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}'
+{%- else %}
+ suit-parameter-uri: '#{{ radio['name'] }}'
+{%- endif %}
+ suit-parameter-image-digest:
+ suit-digest-algorithm-id: cose-alg-sha-256
+ suit-digest-bytes:
+ file: {{ radio['binary'] }}
+ - suit-directive-fetch:
+ - suit-send-record-failure
+ - suit-directive-try-each:
+ - - suit-condition-image-match:
+ - suit-send-record-success
+ - suit-send-record-failure
+ - suit-send-sysinfo-success
+ - suit-send-sysinfo-failure
+ - - suit-condition-image-match:
+ - suit-send-record-success
+ - suit-send-record-failure
+ - suit-send-sysinfo-success
+ - suit-send-sysinfo-failure
+
suit-manifest-component-id:
- INSTLD_MFST
- RFC4122_UUID:
diff --git a/config/suit/templates/nrf54h20/matter/v1/root_with_binary_nordic_top.yaml.jinja2 b/config/suit/templates/nrf54h20/matter/v1/root_with_binary_nordic_top.yaml.jinja2
index 1cc7ca5127d5..ada7e8b29b56 100644
--- a/config/suit/templates/nrf54h20/matter/v1/root_with_binary_nordic_top.yaml.jinja2
+++ b/config/suit/templates/nrf54h20/matter/v1/root_with_binary_nordic_top.yaml.jinja2
@@ -156,7 +156,12 @@ SUIT_Envelope_Tagged:
- suit-send-sysinfo-failure
{%- endif %}
+{%- if main_config['dt'].label2node['suit_storage_partition'].regs[0].size == 24576 %}
+ # Main DTS contains larger SUIT storage - use legacy encoding
+ suit-install-legacy:
+{%- else %}
suit-install:
+{%- endif %}
- suit-directive-set-component-index: 0
{%- if application is defined %}
- suit-directive-override-parameters:
diff --git a/doc/_scripts/software_maturity/software_maturity_features.yaml b/doc/_scripts/software_maturity/software_maturity_features.yaml
index 0a5737cea4eb..ddfe5f7a8751 100644
--- a/doc/_scripts/software_maturity/software_maturity_features.yaml
+++ b/doc/_scripts/software_maturity/software_maturity_features.yaml
@@ -77,7 +77,7 @@ features:
NET_L2_OPENTHREAD && OPENTHREAD_MTD_SED
wifi:
STA Mode:
- rule: WPA_SUPP && WIFI_NRF70
+ rule: WIFI_NM_WPA_SUPPLICANT && WIFI_NRF70
boards_and_shields:
- SHIELD_NRF7002EK
- SHIELD_NRF7002EK_NRF7000
@@ -88,7 +88,7 @@ features:
- BOARD_NRF7002DK_NRF5340_CPUAPP
- BOARD_NRF7002DK_NRF5340_CPUAPP_NRF7001
Scan only (for location accuracy):
- rule: WIFI_NRF70 && !WPA_SUPP
+ rule: WIFI_NRF70 && !WIFI_NM_WPA_SUPPLICANT
boards_and_shields:
- SHIELD_NRF7002EK
- SHIELD_NRF7002EK_NRF7000
diff --git a/doc/_scripts/software_maturity/software_maturity_scanner.py b/doc/_scripts/software_maturity/software_maturity_scanner.py
index 7f08df51d2ba..b11ae15eaf5f 100644
--- a/doc/_scripts/software_maturity/software_maturity_scanner.py
+++ b/doc/_scripts/software_maturity/software_maturity_scanner.py
@@ -59,7 +59,7 @@
Matter over Thread: CHIP && NET_L2_OPENTHREAD
wifi:
STA Mode:
- rule: WPA_SUPP && WIFI_NRF70
+ rule: WIFI_NM_WPA_SUPPLICANT && WIFI_NRF70
boards_and_shields:
- SHIELD_NRF7002EK
- BOARD_NRF7002DK_NRF5340_CPUAPP
diff --git a/doc/_utils/redirects.py b/doc/_utils/redirects.py
index a599b72f1c41..dec13c2fa87a 100644
--- a/doc/_utils/redirects.py
+++ b/doc/_utils/redirects.py
@@ -32,13 +32,15 @@
("ug_nrf7002_gs", "gsg_guides/nrf7002_gs"), # Getting started with nRF7002 DK
("working_with_nrf/nrf70/gs", "gsg_guides/nrf7002_gs"),
("device_guides/working_with_nrf/nrf70/gs", "gsg_guides/nrf7002_gs"),
- ("device_guides/working_with_nrf/nrf53/nrf5340_gs", "gsg_guides/nrf5340_gs"), # Getting started with nRF5340 DK
+ ("device_guides/working_with_nrf/nrf53/nrf5340_gs", "gsg_guides"), # Getting started with nRF5340 DK (removed in v2.8.0)
+ ("gsg_guides/nrf5340_gs", "gsg_guides"),
("ug_thingy53_gs", "gsg_guides/thingy53_gs"), # Getting started with Thingy:53
("working_with_nrf/nrf53/thingy53_gs", "gsg_guides/thingy53_gs"),
("device_guides/working_with_nrf/nrf53/thingy53_gs", "gsg_guides/thingy53_gs"),
- ("ug_nrf52_gs", "gsg_guides/nrf52_gs"), # Getting started with nRF52 Series
- ("working_with_nrf/nrf52/gs", "gsg_guides/nrf52_gs"),
- ("device_guides/working_with_nrf/nrf52/gs", "gsg_guides/nrf52_gs"),
+ ("ug_nrf52_gs", "gsg_guides"), # Getting started with nRF52 Series (removed in v2.8.0)
+ ("working_with_nrf/nrf52/gs", "gsg_guides"),
+ ("device_guides/working_with_nrf/nrf52/gs", "gsg_guides"),
+ ("gsg_guides/nrf52_gs", "gsg_guides"),
("gs_assistant", "installation/install_ncs"), # Installing the nRF Connect SDK
("getting_started", "installation"),
("getting_started/assistant", "installation/install_ncs"),
@@ -201,8 +203,6 @@
("app_dev/device_guides/working_with_nrf/nrf54l/nrf54l15_gs", "gsg_guides"),
("device_guides/working_with_nrf/nrf54l/testing_dfu", "app_dev/device_guides/nrf54l/testing_dfu"), # Testing the DFU solution
("app_dev/device_guides/working_with_nrf/nrf54l/testing_dfu", "app_dev/device_guides/nrf54l/testing_dfu"),
- ("device_guides/working_with_nrf/nrf54l/peripheral_sensor_node_shield", "app_dev/device_guides/nrf54l/peripheral_sensor_node_shield"), # Developing with Peripheral Sensor node shield
- ("app_dev/device_guides/working_with_nrf/nrf54l/peripheral_sensor_node_shield", "app_dev/device_guides/nrf54l/peripheral_sensor_node_shield"),
("device_guides/nrf54h", "app_dev/device_guides/nrf54h"), # Developing with nRF54H Series
("device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs", "app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs"), # Getting started with the nRF54H20 DK
("device_guides/working_with_nrf/nrf54h/ug_nrf54h20_app_samples", "app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_app_samples"), # nRF54H20 applications and samples (orphaned as of 2.7.0)
diff --git a/doc/_zoomin/ncs.tags.yml b/doc/_zoomin/ncs.tags.yml
index 785c4b8246c9..fb420c1337f8 100644
--- a/doc/_zoomin/ncs.tags.yml
+++ b/doc/_zoomin/ncs.tags.yml
@@ -24,12 +24,13 @@ mapping_topics:
- nrf/gsg_guides/thingy91_gsg.html: ["nrf91-series", "thingy91", "nrf9160", "nrf52840", "lte",
"prototyping-platforms"]
- nrf/gsg_guides/nrf7002_gs.html: ["nrf70-series", "nrf7002", "development-kits"]
- - nrf/gsg_guides/nrf5340_gs.html: ["nrf53-series", "nrf5340", "development-kits"]
- nrf/gsg_guides/thingy53_gs.html: ["nrf53-series", "thingy53", "prototyping-platforms"]
- - nrf/gsg_guides/nrf52_gs.html: ["nrf52-series", "development-kits", "nrf52840", "nrf52833",
- "nrf52832", "nrf52820", "nrf52811", "nrf52810", "nrf52805"]
- - nrf/gsg_guides/gsg_other.html: ["nrf9161", "nrf9151", "development-kits", "npm1300", "nrf54h20",
- "nrf54l15", "nrf7002", "evaluation-kits", "pmic"]
+ - nrf/gsg_guides/gsg_other.html: ["nrf52-series", "nrf52840", "nrf52833",
+ "nrf52832", "nrf52820", "nrf52811", "nrf52810", "nrf52805",
+ "nrf53-series", "nrf5340", "thingy53", "nrf9161",
+ "nrf9160", "nrf9151", "thingy91", "development-kits",
+ "npm1300", "nrf54h20", "nrf54l15", "nrf7002", "evaluation-kits",
+ "pmic"]
- nrf/installation.html: ["nrf91-series", "nrf70-series", "nrf54-series", "nrf53-series",
"nrf52-series", "nrf7002", "nrf7001", "nrf7000", "nrf9160", "thingy91",
"nrf9161", "nrf9151", "nrf9131", "nrf54h20", "nrf54l15", "nrf5340",
diff --git a/doc/nrf/app_dev/board_support/board_names.rst b/doc/nrf/app_dev/board_support/board_names.rst
index f376a84fd3d7..dc08a441a7e8 100644
--- a/doc/nrf/app_dev/board_support/board_names.rst
+++ b/doc/nrf/app_dev/board_support/board_names.rst
@@ -90,8 +90,10 @@ Also see the :ref:`zephyr:boards` section in the Zephyr documentation.
| nRF54L15 PDK | PCA10156 | :ref:`nrf54l15pdk ` | ``nrf54l15pdk/nrf54l15/cpuapp`` |
| | | | |
| | | | ``nrf54l15pdk@0.2.1/nrf54l15/cpuapp`` |
++-------------------+------------+-------------------------------------------------------------------+---------------------------------------+
+| nRF54L15 DK | PCA10156 | :ref:`nrf54l15dk ` | ``nrf54l15dk/nrf54l15/cpuapp`` |
| | | | |
-| | | | ``nrf54l15pdk/nrf54l15/cpuapp/ns`` |
+| | | | ``nrf54l15dk/nrf54l15/cpuapp/ns`` |
+-------------------+------------+-------------------------------------------------------------------+---------------------------------------+
| nRF5340 DK | PCA10095 | :ref:`nrf5340dk ` | ``nrf5340dk/nrf5340/cpunet`` |
| | | | |
diff --git a/doc/nrf/app_dev/bootloaders_dfu/index.rst b/doc/nrf/app_dev/bootloaders_dfu/index.rst
index 42478eb1d21c..2b9b73b4f266 100644
--- a/doc/nrf/app_dev/bootloaders_dfu/index.rst
+++ b/doc/nrf/app_dev/bootloaders_dfu/index.rst
@@ -52,3 +52,4 @@ To learn more, refer to the following documentation pages:
mcuboot_nsib/bootloader_mcuboot_nsib
qspi_xip_split_image
dfu_tools_mcumgr_cli
+ mcuboot_image_compression
diff --git a/doc/nrf/app_dev/bootloaders_dfu/mcuboot_image_compression.rst b/doc/nrf/app_dev/bootloaders_dfu/mcuboot_image_compression.rst
new file mode 100644
index 000000000000..4a87348d34a2
--- /dev/null
+++ b/doc/nrf/app_dev/bootloaders_dfu/mcuboot_image_compression.rst
@@ -0,0 +1,87 @@
+.. _mcuboot_image_compression:
+
+MCUboot image compression
+#########################
+
+.. contents::
+ :local:
+ :depth: 2
+
+:ref:`MCUboot ` in the |NCS| optionally supports compressed image updates.
+
+The system includes the following features and limitation:
+
+* Allows slot ``1`` to be approximately 70% the size of slot ``0``.
+* Supports a single-image only.
+ It does not support network core updates for the nRF5340 SoC or :ref:`bootloader` updates.
+* Does not support reverting to previous versions.
+ MCUboot must be configured for upgrade-only mode.
+* Validates the compressed image during the update process before the main image is erased, ensuring the update does not lead to a bricked module due to un-loadable firmware.
+* Does not support image encryption.
+* Uses LZMA2 compression with ARM thumb filter for compressed images.
+* Requires a static :ref:`Partition Manager ` file.
+* Must use :ref:`configuration_system_overview_sysbuild`.
+
+Sample
+******
+
+For a demonstration of this feature, see the :ref:`nrf_compression_mcuboot_compressed_update` sample.
+This sample already implements the configuration requirements mentioned in :ref:`mcuboot_image_compression_setup` below.
+
+.. _mcuboot_image_compression_setup:
+
+Required setup
+**************
+
+You must meet the following configuration requirements for this feature to work.
+
+Static Partition Manager file for MCUboot
+=========================================
+
+The static Partition Manager file should include the following partitions:
+
+ * ``boot_partition`` - Requires a minimum size of 48 KiB for a minimal build without logging.
+ * ``slot1_partition`` - Should be approximately 70% of the size of the slot ``0`` partition for optimal configuration, assuming that image savings will be 30%.
+ The total compression depends on the data within the image.
+
+For more information about the static Partition Manager file, see :ref:`ug_pm_static` in the Partition Manager documentation.
+
+Example of static Partition Manager layout
+------------------------------------------
+
+The following shows an example static Partition Manager layout for image compression:
+
+.. tabs::
+
+ .. group-tab:: nRF52840
+
+ .. literalinclude:: ../../../../tests/subsys/nrf_compress/decompression/mcuboot_update/pm_static_nrf52840dk_nrf52840.yml
+ :language: yaml
+
+ .. group-tab:: nRF5340
+
+ .. literalinclude:: ../../../../tests/subsys/nrf_compress/decompression/mcuboot_update/pm_static_nrf5340dk_nrf5340_cpuapp.yml
+ :language: yaml
+
+ .. group-tab:: nRF54L15
+
+ .. literalinclude:: ../../../../tests/subsys/nrf_compress/decompression/mcuboot_update/pm_static_nrf54l15dk_nrf54l15_cpuapp.yml
+ :language: yaml
+
+Required sysbuild configuration options
+=======================================
+
+The following :ref:`configuration_system_overview_sysbuild` Kconfig options are required to enable support for compressed images:
+
+* :kconfig:option:`SB_CONFIG_BOOTLOADER_MCUBOOT`
+* :kconfig:option:`SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY`
+* :kconfig:option:`SB_CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT`
+
+See :ref:`configuring_kconfig` for different methods of configuring these options.
+You want to have the following configuration in your application:
+
+.. code-block:: cfg
+
+ SB_CONFIG_BOOTLOADER_MCUBOOT=y
+ SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y
+ SB_CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT=y
diff --git a/doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_quick_start.rst b/doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_quick_start.rst
index 43750b832b4f..79f8d153c4c8 100644
--- a/doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_quick_start.rst
+++ b/doc/nrf/app_dev/bootloaders_dfu/mcuboot_nsib/bootloader_quick_start.rst
@@ -148,8 +148,8 @@ The following table is an overview of the currently supported bootloaders:
- Yes
- Yes
- :ref:`Monotonic (HW) `, :ref:`Semantic (SW) `
- - Image swap - single primary
- Dual-slot direct-xip
+ - | Image swap - single primary
+ | Dual-slot direct-xip
.. rst-class:: numbered-step
diff --git a/doc/nrf/app_dev/config_and_build/output_build_files.rst b/doc/nrf/app_dev/config_and_build/output_build_files.rst
index c13c3162de39..bdf014ebe2df 100644
--- a/doc/nrf/app_dev/config_and_build/output_build_files.rst
+++ b/doc/nrf/app_dev/config_and_build/output_build_files.rst
@@ -64,6 +64,22 @@ Which files you are going to use depends on the application configuration and no
| | ``zephyr`` is the value of :kconfig:option:`CONFIG_KERNEL_BIN_NAME`. | |
| | The file is located in the :file:`build//zephyr` directory. | |
+--------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :file:`zephyr.signed.encrypted.bin` | Image update file used to create :file:`dfu_application.zip` for encrypted multi-core DFU updates. | DFU process for single or multi-core board targets |
+| | Can also be used standalone for a single-image DFU. | |
+| | Contains the signed and encrypted version of the application. | |
+| | This file is transferred in the real-life update procedure, as opposed to HEX files | |
+| | that are transferred with nrfjprog when emulating an update procedure. | |
+| | :ref:`Compatible with MCUboot `. | |
+| | ``zephyr`` is the value of :kconfig:option:`CONFIG_KERNEL_BIN_NAME`. | |
+| | The file is located in the :file:`build//zephyr` directory. | |
++--------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
+| :file:`zephyr.signed.encrypted.hex` | HEX file variant of the :file:`.signed.encrypted.bin` file. | Programming single or multi-core board targets |
+| | Can also be used standalone for a single-image DFU. | |
+| | Contains the signed and encrypted version of the application. | |
+| | :ref:`Compatible with MCUboot `. | |
+| | ``zephyr`` is the value of :kconfig:option:`CONFIG_KERNEL_BIN_NAME`. | |
+| | The file is located in the :file:`build//zephyr` directory. | |
++--------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+
| :file:`zephyr.signed.bin` in | Secondary slot variant of the :file:`zephyr.signed.bin` file. | DFU process for single-core board targets. |
| :file:`mcuboot_secondary_app` folder | :ref:`Compatible with MCUboot ` in the :doc:`direct-xip mode `. | |
| | ``zephyr`` is the value of :kconfig:option:`CONFIG_KERNEL_BIN_NAME`. | |
diff --git a/doc/nrf/app_dev/create_application.rst b/doc/nrf/app_dev/create_application.rst
index fc2c00d3cdd0..fcca7084246d 100644
--- a/doc/nrf/app_dev/create_application.rst
+++ b/doc/nrf/app_dev/create_application.rst
@@ -185,7 +185,7 @@ Use the following steps depending on the application placement:
You can now start :ref:`configuring and building ` the application.
- See the `extension documentation `_ for more information about west workspace and workspace applications in the extension.
+ See the `extension documentation `_ for more information about working with workspace applications in the extension.
.. group-tab:: Freestanding application
@@ -213,7 +213,7 @@ Use the following steps depending on the application placement:
.. note::
You can transform your freestanding application into a workspace application at any moment by completing the step 7 under the Workspace application tab.
-See the `extension documentation `_ for more information about the differences between the applications types from the extension's perspective.
+For more information about the differences between the applications types from the extension's perspective, see the `Applications `_ page in the extension documentation.
.. _creating_cmd:
diff --git a/doc/nrf/app_dev/device_guides/fem/21540ek_dev_guide.rst b/doc/nrf/app_dev/device_guides/fem/21540ek_dev_guide.rst
index 5fcd34ce0595..03a71a63a9a7 100644
--- a/doc/nrf/app_dev/device_guides/fem/21540ek_dev_guide.rst
+++ b/doc/nrf/app_dev/device_guides/fem/21540ek_dev_guide.rst
@@ -52,14 +52,20 @@ For example:
.. parsed-literal::
:class: highlight
- west build -b nrf5340dk/nrf5340/cpuapp -- -DSHIELD=nrf21540ek_fwd -Dmultiprotocol_rpmsg_SHIELD=nrf21540ek
+ west build -b nrf5340dk/nrf5340/cpuapp -- -DSHIELD=nrf21540ek_fwd -Dipc_radio_SHIELD=nrf21540ek
-In this command, the *childImageName_* parameter has the ``multiprotocol_rpmsg_`` value and builds a multiprotocol application with support for 802.15.4 and Bluetooth.
-The *childImageName_* parameter can take the following values:
+In this command, the *childImageName_* parameter has the ``ipc_radio_`` value as default and builds the application with support for the combination of 802.15.4 and Bluetooth.
+The ``ipc_radio`` has been used since the build system migration to sysbuild.
+See :ref:`Migrating to sysbuild ` page.
+Setting the correct sysbuild option enables support for 802.15.4 and Bluetooth :ref:`ipc_radio`.
+
+``ipc_radio`` represents all applications with support for the combination of both 802.15.4 and Bluetooth.
+You can configure your application using the following sysbuild configurations:
+
+* ``SB_CONFIG_NETCORE_IPC_RADIO=y`` for applications having support for 802.15.4, but not for Bluetooth.
+* ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for application having support for Bluetooth, but not for 802.15.4.
+* ``SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
-* ``multiprotocol_rpmsg_`` for multiprotocol applications with support for 802.15.4 and Bluetooth
-* ``802154_rpmsg_`` for applications with support for 802.15.4, but without support for Bluetooth
-* ``hci_ipc_`` for application with support for Bluetooth, but without support for 802.15.4
.. note::
On nRF53 devices, ``SPIM0`` and ``UARTE0`` are mutually exclusive AHB bus masters on the network core as described in the `Product Specification `_, Section 6.4.3.1, Table 22.
diff --git a/doc/nrf/app_dev/device_guides/fem/fem_nrf21540_gpio.rst b/doc/nrf/app_dev/device_guides/fem/fem_nrf21540_gpio.rst
index b25954f917e8..d8b8ce7a392d 100644
--- a/doc/nrf/app_dev/device_guides/fem/fem_nrf21540_gpio.rst
+++ b/doc/nrf/app_dev/device_guides/fem/fem_nrf21540_gpio.rst
@@ -51,14 +51,18 @@ To use nRF21540 in GPIO mode, complete the following steps:
The state of the remaining control pins should be set in other ways and according to `nRF21540 Product Specification`_.
-#. On nRF53 devices, you must also apply the same devicetree node mentioned in step 1 to the network core.
- To do so, apply the overlay to the correct network core child image by creating an overlay file named :file:`child_image/*childImageName*.overlay` in your application directory, for example :file:`child_image/multiprotocol_rpmsg.overlay`.
+#. On nRF53 devices, you must also apply the same devicetree node mentioned in **Step 1** to the network core using sysbuild.
+ To apply the overlay to the correct network core child image, create an overlay file named :file:`sysbuild/*childImageName*/boards/nrf5340dk_nrf5340_cpunet.overlay` in your application directory, for example :file:`sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.overlay`.
+ For more information, see the :ref:`Migrating to sysbuild ` page.
- The ``*childImageName*`` string must be one of the following values:
+ The *childImageName* default value is set to ``ipc_radio``:
- * ``multiprotocol_rpmsg`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
- * ``802154_rpmsg`` for applications having support for 802.15.4, but not for Bluetooth.
- * ``hci_ipc`` for application having support for Bluetooth, but not for 802.15.4.
+ ``ipc_radio`` represents all applications with support for the combination of both 802.15.4 and Bluetooth.
+ You can configure your application using the following sysbuild configurations:
+
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` for applications having support for 802.15.4, but not for Bluetooth.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for application having support for Bluetooth, but not for 802.15.4.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
.. note::
This step is not needed when testing with :ref:`direct_test_mode` and :ref:`radio_test` on the nRF53 Series devices.
diff --git a/doc/nrf/app_dev/device_guides/fem/fem_simple_gpio.rst b/doc/nrf/app_dev/device_guides/fem/fem_simple_gpio.rst
index 30cdbcde4f2f..e4691885d9ba 100644
--- a/doc/nrf/app_dev/device_guides/fem/fem_simple_gpio.rst
+++ b/doc/nrf/app_dev/device_guides/fem/fem_simple_gpio.rst
@@ -50,15 +50,19 @@ To use the Simple GPIO implementation of FEM with SKY66112-11, complete the foll
The state of the other control pins should be set according to the SKY66112-11 documentation.
See the official `SKY66112-11 page`_ for more information.
-#. On nRF53 devices, you must also apply the same devicetree node to the network core.
- Create a devicetree overlay file with the same information as you used in Steps 1 to 3.
- To apply the overlay to the correct network core child image, create the file in the :file:`child image` directory of your application directory, and name it :file:`*childImageName*.overlay`, for example :file:`child_image/multiprotocol_rpmsg.overlay`.
- The ``*childImageName*`` string must be one of the following values:
+#. On nRF53 devices, you must also apply the same devicetree node mentioned in **Step 1** to the network core using sysbuild.
+ To apply the overlay to the correct network core child image, create an overlay file named :file:`sysbuild/*childImageName*/boards/nrf5340dk_nrf5340_cpunet.overlay` in your application directory, for example :file:`sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.overlay`.
+ For more information, see the :ref:`Migrating to sysbuild ` page.
- * ``multiprotocol_rpmsg`` for multiprotocol applications with support for 802.15.4 and Bluetooth.
- * ``802154_rpmsg`` for applications with support for 802.15.4, but without support for Bluetooth.
- * ``hci_ipc`` for applications with support for Bluetooth, but without support for 802.15.4.
+ The *childImageName* default value is set to ``ipc_radio``:
+
+ ``ipc_radio`` represents all applications with support for the combination of both 802.15.4 and Bluetooth.
+ You can configure your application using the following sysbuild configurations:
+
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` for applications having support for 802.15.4, but not for Bluetooth.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for application having support for Bluetooth, but not for 802.15.4.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
.. note::
This step is not needed when testing with the :ref:`direct_test_mode` or :ref:`radio_test` samples on nRF53 Series devices.
diff --git a/doc/nrf/app_dev/device_guides/nrf52/features.rst b/doc/nrf/app_dev/device_guides/nrf52/features.rst
index 1cd5be669753..c57cd33a7ef4 100644
--- a/doc/nrf/app_dev/device_guides/nrf52/features.rst
+++ b/doc/nrf/app_dev/device_guides/nrf52/features.rst
@@ -10,10 +10,11 @@ Features of nRF52 Series
The nRF52 Series of System-on-Chip (SoC) devices embed an Arm Cortex-M4 processor with Nordic Semiconductor's 2.4 GHz RF transceivers.
All of the nRF52 Series SoCs have support for Bluetooth® 5 features, in addition to multiprotocol capabilities.
+To get started with the nRF52 Series, download and run the `Quick Start`_ application from `nRF Connect for Desktop`_.
+
For additional information, see the following documentation:
* `nRF52 Series`_ for the technical documentation on the nRF52 Series chips and associated kits.
-* :ref:`ug_nrf52_gs`.
* :ref:`ug_nrf52` for more advanced topics related to the nRF52 Series.
* :ref:`installation` and :ref:`configuration_and_build` documentation to install the |NCS| and learn more about its development environment.
diff --git a/doc/nrf/app_dev/device_guides/nrf52/fota_update.rst b/doc/nrf/app_dev/device_guides/nrf52/fota_update.rst
index e97265db5b71..c838dbb9ca51 100644
--- a/doc/nrf/app_dev/device_guides/nrf52/fota_update.rst
+++ b/doc/nrf/app_dev/device_guides/nrf52/fota_update.rst
@@ -18,6 +18,8 @@ See the :ref:`app_dfu` page for general Device Firmware Update (DFU) information
.. fota_upgrades_intro_end
+.. _ug_nrf52_developing_ble_fota_steps:
+
FOTA over Bluetooth Low Energy
******************************
@@ -125,6 +127,8 @@ To read about the files that are built when the option is enabled, refer to the
.. fota_upgrades_over_ble_mcuboot_direct_xip_information_end
+.. _ug_nrf52_developing_ble_fota_steps_testing:
+
Testing steps
=============
diff --git a/doc/nrf/app_dev/device_guides/nrf53/building_nrf53.rst b/doc/nrf/app_dev/device_guides/nrf53/building_nrf53.rst
index eedba3b33bc6..988b31bbb141 100644
--- a/doc/nrf/app_dev/device_guides/nrf53/building_nrf53.rst
+++ b/doc/nrf/app_dev/device_guides/nrf53/building_nrf53.rst
@@ -51,7 +51,7 @@ Using the command line
======================
To build nRF5340 samples from the command line, use :ref:`west `.
-To program the nRF5340 DK from the command line, use either west (which uses nrfjprog that is part of the `nRF Command Line Tools`_) or :ref:`nRF Util `.
+To program the nRF5340 DK from the command line, use either west (which uses nrfjprog that is part of the `nRF Command Line Tools`_) or :ref:`nRF Util `.
.. note::
Programming the nRF5340 DK from the command line with west requires the `nRF Command Line Tools`_ v10.12.0 or later.
diff --git a/doc/nrf/app_dev/device_guides/nrf53/features_nrf53.rst b/doc/nrf/app_dev/device_guides/nrf53/features_nrf53.rst
index c8c7eea7f1a4..0ffb66726d8b 100644
--- a/doc/nrf/app_dev/device_guides/nrf53/features_nrf53.rst
+++ b/doc/nrf/app_dev/device_guides/nrf53/features_nrf53.rst
@@ -10,11 +10,12 @@ Features of nRF53 Series
The nRF53 Series System-on-Chips (SoC) integrate a high-performance Arm® Cortex®-M33 dual-core processor with a 2.4 GHz RF transceiver, in addition to advanced security features.
All nRF53 Series SoC support Bluetooth® 5.1 and Bluetooth Mesh, in addition to multiprotocol capabilities.
+To get started with the nRF5340 DK, download and run the `Quick Start`_ application from `nRF Connect for Desktop`_.
+
For additional information, refer to the following resources:
* `nRF53 Series`_ for the technical documentation on the nRF53 Series chips and associated kits.
* :ref:`installation` and :ref:`configuration_and_build` documentation to install the |NCS| and learn more about its development environment.
-* :ref:`ug_nrf5340_gs` guide for getting started with the nRF5340 DK.
* :ref:`ug_thingy53_gs` for getting started with the Thingy:53.
Dual-core architecture
diff --git a/doc/nrf/app_dev/device_guides/nrf53/fota_update_nrf5340.rst b/doc/nrf/app_dev/device_guides/nrf53/fota_update_nrf5340.rst
index a2d748073f1f..80a0f7050ffc 100644
--- a/doc/nrf/app_dev/device_guides/nrf53/fota_update_nrf5340.rst
+++ b/doc/nrf/app_dev/device_guides/nrf53/fota_update_nrf5340.rst
@@ -11,6 +11,8 @@ FOTA updates with nRF5340 DK
:start-after: fota_upgrades_intro_start
:end-before: fota_upgrades_intro_end
+.. _ug_nrf53_developing_ble_fota_steps:
+
FOTA over Bluetooth Low Energy
******************************
@@ -28,6 +30,8 @@ Bluetooth buffers configuration introduced by the :kconfig:option:`CONFIG_NCS_SA
:start-after: fota_upgrades_over_ble_additional_information_start
:end-before: fota_upgrades_over_ble_additional_information_end
+.. _ug_nrf53_developing_ble_fota_steps_testing:
+
Testing steps
=============
diff --git a/doc/nrf/app_dev/device_guides/nrf54l/cryptography.rst b/doc/nrf/app_dev/device_guides/nrf54l/cryptography.rst
new file mode 100644
index 000000000000..27ab16e5e9e5
--- /dev/null
+++ b/doc/nrf/app_dev/device_guides/nrf54l/cryptography.rst
@@ -0,0 +1,353 @@
+.. _ug_nrf54l_cryptography:
+
+nRF54L Series cryptography
+##########################
+
+.. contents::
+ :local:
+ :depth: 2
+
+The cryptographic peripherals of the nRF54L Series are supported through a set of standard PSA Crypto APIs, with some additional vendor-specific extensions.
+
+The nRF Security library offers a set of :ref:`nrf_security_drivers`.
+On the nRF54L devices, in addition to the nrf_oberon driver covering the software-based cryptography implementations, the CRACEN driver (nrf_cracen) provides entropy and hardware-accelerated cryptography using the Crypto Accelerator Engine (CRACEN) peripheral.
+The CRACEN PSA driver supports the following:
+
+* Executing cryptographic operations using the CRACEN peripheral.
+* Importing, using, and revoking keys stored in the Key Management Unit (KMU).
+* Pushing symmetric keys directly from the KMU to the CRACEN symmetric engine, without exposing the key material to the CPU.
+* Using isolated keys derived from CRACEN's Isolated Key Generator (IKG) for encryption and signing purposes.
+
+The keys that are stored in the KMU or generated by the IKG are referenced using the built-in keys that are key IDs in the range from ``MBEDTLS_PSA_KEY_ID_BUILTIN_MIN`` to and including ``MBEDTLS_PSA_KEY_ID_BUILTIN_MAX``.
+
+KMU and CRACEN peripherals
+**************************
+
+The nRF54L Series Crypto Accelerator Engine (CRACEN) and the Key Management Unit (KMU) peripherals, along with the CRACEN PSA driver, are central when ensuring that the assets of an nRF54L device are protected.
+While CRACEN is not accessed by the CPU and typically not directly used by the end-users and their applications, the KMU provides operations to import, use, revoke, and/or delete assets.
+Only the KMU is able to push assets to CRACEN's protected RAM and the SEED register.
+
+The KMU can store cryptographic keys and 384-bit random seeds for the IKG in key storage slots.
+The CRACEN PSA driver exposes the KMU operations through standard PSA Crypto API calls, with some vendor-specific extensions.
+The following KMU operations are supported:
+
+* Importing/provisioning keys to KMU slots.
+* Deleting a key from the KMU, allowing the underlying storage location to be reused.
+* Revoking a key from the KMU, preventing reuse of the underlying key slots.
+* Directly pushing symmetric keys to CRACEN's engine for symmetric crypto operations, without exposing the key material to the CPU.
+* Directly pushing a 384-bit seed to CRACEN's IKG to derive isolated keys.
+* Pushing asymmetric keys to CPU RAM before loading them into CRACEN's engine for asymmetric operations.
+
+Additionally, the CRACEN PSA driver supports storing encrypted keys in KMU slots, transparently decrypting them to a temporary RAM location before using them in cryptographic operations.
+
+.. _ug_nrf54l_crypto_kmu_slots:
+
+KMU slots
+=========
+
+The KMU is partitioned into 256 numbered slots, each capable of storing 128 bits of key material, a 32-bit target push address and 32 bits of metadata.
+Storing keys that are larger than 128 bits is supported by using multiple, consecutive slots.
+
+The application can use the KMU slots to store key data for their own purposes.
+Some KMU slots are reserved for current and future |NCS| use cases.
+The following table gives an overview of the KMU slots and their usage:
+
+.. list-table:: List of reserved KMU slots
+ :widths: auto
+ :header-rows: 1
+
+ * - | Reserved KMU slots
+ | (range inclusive)
+ - | |NCS| usage
+ |
+ - | Description
+ |
+ * - 180-182
+ - Reserved
+ - --
+ * - 183-185
+ - IKG seed
+ - 384-bit random seed to generate keys using the CRACEN IKG.
+ * - 186-225
+ - Reserved
+ - --
+ * - 226-227
+ - UROT_PUBKEY_0
+ - | Revokable firmware image key for upgradable bootloader, generation 0.
+ | ED25519 public key.
+ * - 228-229
+ - UROT_PUBKEY_1
+ - | Revokable firmware image key for upgradable bootloader, generation 1.
+ | ED25519 public key.
+ * - 230-231
+ - UROT_PUBKEY_2
+ - | Revokable firmware image key for upgradable bootloader, generation 2.
+ | ED25519 public key.
+ * - 232-241
+ - Reserved
+ - --
+ * - 242-243
+ - BL_PUBKEY_0
+ - | Revokable firmware image key for immutable bootloader, generation 0.
+ | ED25519 public key.
+ * - 244-245
+ - BL_PUBKEY_1
+ - | Revokable firmware image key for immutable bootloader, generation 1.
+ | ED25519 public key.
+ * - 246-247
+ - BL_PUBKEY_2
+ - | Revokable firmware image key for immutable bootloader, generation 2.
+ | ED25519 public key.
+ * - 248-255
+ - Reserved
+ - --
+
+CRACEN Isolated Key Generator
+=============================
+
+CRACEN's Isolated Key Generator (IKG) can derive three keys from a 384-bit seed value.
+
+IKG-generated keys are also called special hardware keys.
+These keys are typically not meant for application use.
+They are not accessible by any CPU, but they can be used for cryptographic operations by CRACEN, provided directly to the cryptographic engine as a hardware signal.
+IKG keys are not retained, and have to be regenerated for every CRACEN power cycle.
+
+The 384-bit seed value is provisioned to the device or generated automatically during the first boot of the device using the CRACEN Random Number Generator (RNG), and then stored in the KMU.
+Before the keys can be generated, the seed is pushed by the KMU to the SEED register, and then validated.
+Generating keys without the valid seed will fail.
+
+IKG keys are also accessed using the standard PSA Crypto APIs, and are referenced by special built-in key IDs.
+
++-----------------+-------------------------------------+---------------------------------------------------+
+| Key type | Key ID | Description |
++=================+=====================================+===================================================+
+| ECC secp256r1 | ``CRACEN_BUILTIN_IDENTITY_KEY_ID`` | Used for signing/verification. |
++-----------------+-------------------------------------+---------------------------------------------------+
+| AES 256-bit | ``CRACEN_BUILTIN_MKEK_ID`` | Used for encryption/decryption or key derivation. |
++-----------------+-------------------------------------+---------------------------------------------------+
+| AES 256-bit | ``CRACEN_BUILTIN_MEXT_ID`` | Used for encryption/decryption or key derivation. |
++-----------------+-------------------------------------+---------------------------------------------------+
+
+The keys are not exportable, except for the public key associated with the asymmetric key.
+
+
+Programming model for referencing keys
+**************************************
+
+The keys which are stored in the KMU can be used by most cryptographic functions and key management functions in the PSA Crypto API (see `PSA Certified Crypto API 1.2.1`_), with a built-in key ID representing a particular KMU slot.
+
+To identify that the KMU is used as a persistent storage backend for a specific ``psa_key_id_t``, you need to create a ``psa_key_attributes_t`` structure and set the required attributes from the list below.
+
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| Attribute (setter function) | Parameters | Description |
++==============================================+=============================================================================+====================================================================================================================================================+
+| ``key_type`` (``psa_set_key_type``) | A supported key type. | Sets the key type and size. |
+| | | |
+| | | See :ref:`ug_nrf54l_crypto_kmu_supported_key_types` for overview of the supported key types for each driver. |
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``key_bits`` (``psa_set_key_bits``) | A supported key size for the key type. | Sets the key type and size. |
+| | | |
+| | | See :ref:`ug_nrf54l_crypto_kmu_supported_key_types` for overview of the supported key types for each driver. |
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``key lifetime`` (``psa_set_key_lifetime``) | ``PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(persistence, location)`` | ``CRACEN_KEY_PERSISTENCE_REVOKABLE`` is a custom persistence mode, which will revoke the key slots when the key is destroyed. |
+| | where persistence is set to one of the following: | |
+| | ``PSA_KEY_PERSISTENCE_DEFAULT``, | ``PSA_KEY_PERSISTENCE_DEFAULT`` should be used by applications that have no specific needs beyond what is met by implementation-specific features. |
+| | ``PSA_KEY_PERSISTENCE_READ_ONLY``, | |
+| | ``CRACEN_KEY_PERSISTENCE_REVOKABLE``, | ``PSA_KEY_PERSISTENCE_READ_ONLY`` is for read-only or write-once keys. |
+| | and location must be ``PSA_KEY_LOCATION_CRACEN_KMU`` | A key with this persistence level cannot be destroyed. |
+| | | Keys that are read-only due to policy restrictions, rather than physical limitations, should not have this persistence level. |
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``key_id`` (``psa_set_key_id``) | ``PSA_KEY_HANDLE_FROM_CRACEN_KMU_SLOT(kmu_usage_scheme, kmu_slot_nr)`` | For correct ``kmu_usage_scheme`` values, see :ref:`ug_nrf54l_crypto_kmu_key_usage_schemes`. |
+| | | |
+| | | For correct ``kmu_slot_nr`` values, see :ref:`ug_nrf54l_crypto_kmu_slots`. |
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``key_usage`` (``psa_set_key_usage_flags``) | Standard PSA Crypto key usage flags | ``PSA_KEY_USAGE_EXPORT`` and ``PSA_KEY_USAGE_COPY`` are not allowed for keys with the usage scheme ``CRACEN_KEY_USAGE_SCHEME_PROTECTED``. |
++----------------------------------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. _ug_nrf54l_crypto_kmu_key_usage_schemes:
+
+KMU key usage schemes
+=====================
+
+To see what key types are supported with Protected, Encrypted and Raw usage schemes, refer to the table under :ref:`ug_nrf54l_crypto_kmu_supported_key_types`.
+
+The following list shows available schemes that determine how the keys are used:
+
++-------------+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| Scheme name | Macro name | Description |
++=============+============================================+======================================================================================================================================+
+| Protected | ``CRACEN_KMU_KEY_USAGE_SCHEME_PROTECTED`` | The keys will be pushed to a RAM only accessible by the CRACEN. |
++-------------+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| Encrypted | ``CRACEN_KMU_KEY_USAGE_SCHEME_ENCRYPTED`` | The keys are encrypted, and are decrypted on-the-fly to a CPU-accessible RAM location before being used by the CRACEN. |
+| | | |
+| | | Encrypted keys require two additional KMU slots to store the authentication nonce and tag. |
++-------------+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| Raw | ``CRACEN_KMU_KEY_USAGE_SCHEME_RAW`` | The keys are stored as plain text and pushed to a CPU-accessible RAM location before being used by the CRACEN. |
++-------------+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+| Seed | ``CRACEN_KMU_KEY_USAGE_SCHEME_SEED`` | The slots will be pushed to CRACEN's SEED registers. |
+| | | |
+| | | This scheme is typically not meant for the application use. |
+| | | |
+| | | It is only used for the platform keys, ``CRACEN_BUILTIN_IDENTITY_KEY_ID``, ``CRACEN_BUILTIN_MKEK_ID`` or ``CRACEN_BUILTIN_MEXT_ID``. |
++-------------+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
+
+.. _ug_nrf54l_crypto_kmu_supported_key_types:
+
+Supported key types
+===================
+
+The following table lists all key types that can be stored in the KMU, indicating which usage schemes (Protected, Encrypted, and Raw) support them and the number of key slots they require.
+
+.. list-table:: Supported key types
+ :widths: auto
+ :header-rows: 1
+
+ * - Key type
+ - PSA key attributes
+ - KMU slots [1]_
+ - Protected
+ - Encrypted
+ - Raw
+ * - AES 128-bit keys
+ - | ``key_type``: ``PSA KEY_TYPE_AES``
+ | ``key_bits``: 128
+ - 1
+ - Yes
+ - Yes
+ - Yes
+ * - AES 192-bit and 256-bit keys
+ - | ``key_type``: ``PSA_KEY_TYPE_AES``
+ | ``key_bits``: 192
+ | ``key_bits``: 256
+ - 2
+ - Yes
+ - Yes
+ - Yes
+ * - ChaCha20-Poly1305
+ - ``key_type``: ``PSA_KEY_TYPE_CHACHA20``
+ - 2
+ - No
+ - Yes
+ - Yes
+ * - ECC secp256r1 key pair
+ - | ``key_type``: ``PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)``
+ | ``key_bits``: 256
+ - 2
+ - No
+ - Yes
+ - Yes
+ * - ECC secp256r1 public key
+ - | ``key_type``: ``PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)``
+ | ``key_bits``: 256
+ - 4
+ - No
+ - Yes
+ - Yes
+ * - Ed25519 key pair
+ - | ``key_type``: ``PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_TWISTED_EDWARDS)``
+ | ``key_bits``: 255
+ - 2
+ - No
+ - Yes
+ - Yes
+ * - ED25519 public key
+ - | ``key_type``: ``PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_TWISTED_EDWARDS)``
+ | ``key bits``: 255
+ - 2
+ - No
+ - Yes
+ - Yes
+.. [1] Keys with the Encrypted usage scheme (``CRACEN_KMU_KEY_USAGE_SCHEME_ENCRYPTED``) will require two additional KMU slots to store the nonce and the authentication tag.
+
+Storing keys in KMU
+===================
+
+Applications can store keys in KMU slots using the standard PSA cryptographic key management operations ``psa_import_key``, ``psa_generate_key`` or ``psa_copy_key``.
+Additionally, the KMU slots can be provisioned using the nRF Util development tool.
+
+.. note::
+ If a power failure occurs during provisioning of a key with persistence ``PSA_KEY_PERSISTENCE_READ_ONLY`` or ``CRACEN_KEY_PERSISTENCE_REVOKABLE``, it might not be possible to recover the key slot.
+ Provisioning of read-only keys should be restricted to controlled environments (production environments).
+
+You might encounter the following KMU-specific error codes when storing keys in KMU:
+
+* ``PSA_ERROR_ALREADY_EXIST``: One of the required key slots has already been provisioned.
+* ``PSA_ERROR_NOT_SUPPORTED``: Unsupported key type.
+
+Removing or revoking keys from KMU
+==================================
+
+Keys are deleted or revoked using the ``psa_destroy_key`` function.
+Calling the ``psa_destroy_key`` function on keys that have the persistence ``CRACEN_KEY_PERSISTENCE_REVOKABLE``, will mark the associated KMU slots as revoked, preventing the slots from being reused for new keys.
+
+
+Using KMU keys
+==============
+
+Keys stored in the KMU can be used in standard PSA cryptographic operations for encryption, decryption, signing a hash or a message, and verifying a hash or a message, given that the corresponding ``PSA_KEY_USAGE_*`` flags are set.
+
+Keys with the usage schemes Protected (``CRACEN_KMU_KEY_USAGE_SCHEME_PROTECTED``) and Seed (``CRACEN_KMU_KEY_USAGE_SCHEME_SEED``) can push data from the slots directly to CRACEN registers that are not accessible by the CPU.
+These usage schemes are supported for pushing symmetric keys used for cipher operations, and for seeds used by the CRACEN IKG.
+
+Keys with the usage scheme Raw (``CRACEN_KMU_KEY_USAGE_SCHEME_RAW``), such as symmetric keys, are temporarily pushed to a RAM location by the CRACEN driver, and then loaded by CRACEN into the asymmetric engine before running operations like sign or verify.
+
+Key slots with the usage scheme Encrypted (``CRACEN_KMU_KEY_USAGE_SCHEME_ENCRYPTED``) also have to be decrypted to a temporary push location in RAM before they are used by CRACEN, which is handled by the CRACEN driver.
+
+When the application is built with TF-M, this temporary push location is protected inside the secure processing environment to avoid exposing the key material to the non-secure application.
+If TF-M is not used, the keys are pushed to a reserved RAM area at location 0x20000000-0x20000064 (``kmu_push_area``).
+
+You might encounter the following KMU-specific error codes when using the KMU keys:
+
+* ``PSA_ERROR_INVALID_HANDLE``: Attempting an operation on an empty KMU slot.
+* ``PSA_ERROR_NOT_PERMITTED``: Attempting an operation on a revoked key.
+* ``PSA_ERROR_HARDWARE_FAILURE``: The key slot has invalid data.
+* ``PSA_ERROR_CORRUPTION_DETECTED``: The key slot has invalid data.
+
+Configuration
+*************
+
+See :ref:`configuring_kconfig` for information on how to set the required configuration options temporarily or permanently.
+
+The CRACEN peripheral does not require any configuration.
+Its operation is ensured by hardware.
+
+The following Kconfig options are used to enable support for KMU:
+
+* :kconfig:option:`CONFIG_NRF_SECURITY`: Enables the nRF Security library
+* :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_C`: Enables the Platform Security Architecture (PSA) cryptography API
+* :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_CRACEN`: Enables the CRACEN driver
+
+The following code block shows how KMU support is enabled:
+
+.. code-block:: console
+
+ CONFIG_NRF_SECURITY=y
+ CONFIG_MBEDTLS_PSA_CRYPTO_C=y
+ CONFIG_PSA_CRYPTO_DRIVER_CRACEN=y
+
+As an example, enabling support for the Encrypted key usage scheme (``CRACEN_KMU_KEY_USAGE_SCHEME_ENCRYPTED``) is done using the following Kconfig options:
+
+* :kconfig:option:`CONFIG_PSA_WANT_KEY_TYPE_AES`
+* :kconfig:option:`CONFIG_PSA_WANT_AES_KEY_SIZE_256`
+* :kconfig:option:`CONFIG_PSA_WANT_ALG_ECB_NO_PADDING`
+* :kconfig:option:`CONFIG_PSA_WANT_ALG_CMAC`
+* :kconfig:option:`CONFIG_PSA_WANT_ALG_SP800_108_COUNTER_CMAC`
+* :kconfig:option:`CONFIG_PSA_WANT_ALG_GCM`
+
+Enabling support for the Encrypted key usage scheme looks as shown in the following code block:
+
+.. code-block:: console
+
+ CONFIG_PSA_WANT_KEY_TYPE_AES=y
+ CONFIG_PSA_WANT_AES_KEY_SIZE_256=y
+ CONFIG_PSA_WANT_ALG_ECB_NO_PADDING=y
+ CONFIG_PSA_WANT_ALG_CMAC=y
+ CONFIG_PSA_WANT_ALG_SP800_108_COUNTER_CMAC=y
+ CONFIG_PSA_WANT_ALG_GCM=y
+
+The configuration is enabling the key type (AES) and the key size (256 bits) supported by the Encrypted usage scheme as explained in the :ref:`ug_nrf54l_crypto_kmu_supported_key_types` section, and in addition enabling the following :ref:`cryptographic features ` supported by the CRACEN driver:
+
+* Cipher mode: AES ECB (Electronic CodeBook) mode, no padding
+* Message Authentication Code (MAC) cipher: cipher-based MAC (CMAC) cipher
+* Key derivation function (KDF) support: SP800-108 CMAC in counter mode
+* Authenticated Encryption with Associated Data (AEAD) cipher: GCM (Galois Counter Mode) cipher
diff --git a/doc/nrf/app_dev/device_guides/nrf54l/index.rst b/doc/nrf/app_dev/device_guides/nrf54l/index.rst
index 8fdcb958b303..52942d28f6ea 100644
--- a/doc/nrf/app_dev/device_guides/nrf54l/index.rst
+++ b/doc/nrf/app_dev/device_guides/nrf54l/index.rst
@@ -4,10 +4,6 @@
Developing with nRF54L Series
#############################
-.. note::
-
- All software for the nRF54L15 SoC is experimental and hardware availability is restricted to the participants in the limited sampling program.
-
.. |nrf_series| replace:: devices of the nRF54L Series
.. include:: /includes/guides_complementary_to_app_dev.txt
@@ -28,10 +24,14 @@ Zephyr and the |NCS| provide support and contain board definitions for developin
- :ref:`Getting started `
- `nRF54L15 System-on-Chip`_
+.. note::
+
+ When building your project with the nRF54L15 DK v0.8.1 (Engineering B silicon), that is marked as PDK, and the nRF54L15 DK v0.9.1 (Engineering B silicon), you must use the ``nrf54l15dk/nrf54l51/cpuapp`` board target.
+
.. toctree::
:maxdepth: 2
:caption: Subpages:
features
+ cryptography
testing_dfu
- peripheral_sensor_node_shield
diff --git a/doc/nrf/app_dev/device_guides/nrf54l/peripheral_sensor_node_shield.rst b/doc/nrf/app_dev/device_guides/nrf54l/peripheral_sensor_node_shield.rst
deleted file mode 100644
index 5b28c12cb1fc..000000000000
--- a/doc/nrf/app_dev/device_guides/nrf54l/peripheral_sensor_node_shield.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-.. _peripheral_sensor_node_shield:
-
-Developing with Peripheral Sensor node shield
-#############################################
-
-.. contents::
- :local:
- :depth: 2
-
-The Peripheral Sensor node shield is an extension for the :ref:`nRF54L15 PDK `.
-It is a testing shield designed for evaluating I2C and SPI protocol drivers.
-It includes the following sensors:
-
-* `ADXL362`_ accelerometer (SPI interface)
-* `BMI270`_ accelerometer and gyroscope (SPI interface)
-* `BME688`_ temperature, pressure, humidity and gas sensor (I2C interface with on-board pull-up resistors 4.7 kOhm).
-
-The shield operates at a supply voltage of 1.8V.
-
-.. figure:: /images/peripheral_sensor_node_shield.png
- :width: 350px
- :align: center
- :alt: Peripheral Sensor node shield
-
- Peripheral Sensor node shield
-
-Pin assignment
-**************
-
-For the exact pin assignment for the nRF54L15 PDK, refer to the following table:
-
-+-------------------------+------------+-----------------+
-| nRF54L15 connector pin | SIGNAL | Shield function |
-+=========================+============+=================+
-| P1.13 | BMI270 CS | Chip Select |
-+-------------------------+------------+-----------------+
-| P2.10 | ADXL362 CS | Chip Select |
-+-------------------------+------------+-----------------+
-| P2.08 | SPI MOSI | Serial Data In |
-+-------------------------+------------+-----------------+
-| P2.09 | SPI MISO | Serial Data Out |
-+-------------------------+------------+-----------------+
-| P2.06 | SPI SCK | Serial Clock |
-+-------------------------+------------+-----------------+
-| P1.14 | GPIO | SPI Interrupt |
-+-------------------------+------------+-----------------+
-| P1.11 | TWI SCL | TWI Clock |
-+-------------------------+------------+-----------------+
-| P1.12 | TWI SDA | TWI Data |
-+-------------------------+------------+-----------------+
-
-.. figure:: /images/peripheral_sensor_node_assy.png
- :width: 350px
- :align: center
- :alt: Peripheral Sensor node assembly
-
- Peripheral Sensor node assembly
-
-.. note::
- The shield must be oriented in a way that allows its silkscreen to read the same way as the PDK.
- The shield must not be rotated.
-
-Building and programming with Peripheral Sensor node shield
-***********************************************************
-
-To build for the Peripheral Sensor node Shield on the compatible :ref:`nRF54L15 PDK `, use the CMake ``SHIELD`` option set to ``pca63565``.
-For more information on CMake options, see the :ref:`cmake_options` documentation section.
-
-Run the following command:
-
-.. code-block:: console
-
- west build -b nrf54l15pdk/nrf54l15/cpuapp -- -DSHIELD=pca63565
-
-If you are using the |nRFVSC|, specify the ``-DSHIELD=pca63565`` argument in the **Extra Cmake arguments** field when `setting up a build configuration `_.
-
-Alternatively, you can add the shield in the project's :file:`CMakeLists.txt` file:
-
-.. code-block:: none
-
- set(SHIELD pca63565)
diff --git a/doc/nrf/app_dev/device_guides/nrf70/index.rst b/doc/nrf/app_dev/device_guides/nrf70/index.rst
index f5c13a9e74b6..50a2ec8bb55e 100644
--- a/doc/nrf/app_dev/device_guides/nrf70/index.rst
+++ b/doc/nrf/app_dev/device_guides/nrf70/index.rst
@@ -35,28 +35,28 @@ Zephyr and the |NCS| provide support for developing networking applications with
- PCA10095
- ``nrf5340dk/nrf5340/cpuapp``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf52840dk_nrf52840`
- nRF7002 EK
- PCA10056
- ``nrf52840dk/nrf52840``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf9151dk_nrf9151`
- nRF7002 EK
- PCA10171
- ``nrf9151dk/nrf9151/ns``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf9161dk_nrf9161`
- nRF7002 EK
- PCA10153
- ``nrf9161dk/nrf9161/ns``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf9160dk_nrf9160`
- nRF7002 EK
diff --git a/doc/nrf/app_dev/device_guides/nrf91/index.rst b/doc/nrf/app_dev/device_guides/nrf91/index.rst
index d16016ed71f8..1cba5ee4feac 100644
--- a/doc/nrf/app_dev/device_guides/nrf91/index.rst
+++ b/doc/nrf/app_dev/device_guides/nrf91/index.rst
@@ -25,7 +25,7 @@ Zephyr and the |NCS| provide support for developing cellular applications using
- PCA10153
- ``nrf9161dk/nrf9161``, ``nrf9161dk/nrf9161/ns``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
- | `nRF9161 DK product page`_
| `nRF9161 System in Package (SiP) `_
@@ -41,7 +41,7 @@ Zephyr and the |NCS| provide support for developing cellular applications using
- PCA10171
- ``nrf9151dk/nrf9151``, ``nrf9151dk/nrf9151/ns``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
- | `nRF9151 DK product page`_
| `nRF9151 System in Package (SiP) `_
diff --git a/doc/nrf/app_dev/device_guides/nrf91/nrf91_snippet.rst b/doc/nrf/app_dev/device_guides/nrf91/nrf91_snippet.rst
index b1297818fdca..05b5d51af7f8 100644
--- a/doc/nrf/app_dev/device_guides/nrf91/nrf91_snippet.rst
+++ b/doc/nrf/app_dev/device_guides/nrf91/nrf91_snippet.rst
@@ -22,6 +22,12 @@ On nRF91 Series devices, you can enable the following functionalities using snip
* - :ref:`nrf91_modem_trace_uart_snippet`
- ``nrf91-modem-trace-uart``
- :ref:`All nRF91 Series board targets `
+ * - :ref:`nrf91_modem_trace_rtt_snippet`
+ - ``nrf91-modem-trace-rtt``
+ - :ref:`All nRF91 Series board targets `
+ * - :ref:`nrf91_modem_trace_ram_snippet`
+ - ``nrf91-modem-trace-ram``
+ - :ref:`All nRF91 Series board targets `
* - :ref:`tfm_enable_share_uart`
- ``tfm-enable-share-uart``
- :ref:`All nRF91 Series board targets `
@@ -41,6 +47,21 @@ To enable modem traces with the flash backend, use the following command pattern
west build --board *board_target* -- -D_SNIPPET="nrf91-modem-trace-ext-flash"
+.. _nrf91_modem_trace_ram_snippet:
+
+nRF91 modem traces with RAM backend using snippets
+****************************************************
+
+The ``nrf91-modem-trace-ram`` snippet enables modem tracing and configures it to store modem traces to a dedicated partition on the RAM.
+To change the partition size, the project needs to configure the :kconfig:option:`CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_RAM_LENGTH` Kconfig option.
+
+To enable modem traces with the RAM backend, use the following command pattern, where *board_target* corresponds to your board target and `` to your application image name:
+
+.. parsed-literal::
+ :class: highlight
+
+ west build --board *board_target* -- -D_SNIPPET="nrf91-modem-trace-ram"
+
.. _nrf91_modem_trace_uart_snippet:
nRF91 modem tracing with UART backend using snippets
@@ -83,6 +104,20 @@ This can be done in one of the following ways:
See :ref:`cmake_options` for more details.
+.. _nrf91_modem_trace_rtt_snippet:
+
+nRF91 modem traces with RTT backend using snippets
+**************************************************
+
+The ``nrf91-modem-trace-rtt`` snippet enables the :kconfig:option:`CONFIG_NRF_MODEM_LIB_TRACE` Kconfig option and chooses the RTT trace backend with the necessary Kconfig options.
+
+To enable modem traces with the RTT backend, use the following command pattern, where *board_target* corresponds to your board target and `` to your application image name:
+
+.. parsed-literal::
+ :class: highlight
+
+ west build --board *board_target* -- -D_SNIPPET="nrf91-modem-trace-rtt"
+
.. _tfm_enable_share_uart:
Shared UART for application and TF-M logging
diff --git a/doc/nrf/app_dev/device_guides/pmic/npm1300.rst b/doc/nrf/app_dev/device_guides/pmic/npm1300.rst
index 96cb6cc8a83c..0ce6837aae32 100644
--- a/doc/nrf/app_dev/device_guides/pmic/npm1300.rst
+++ b/doc/nrf/app_dev/device_guides/pmic/npm1300.rst
@@ -64,21 +64,21 @@ The following boards in the `Zephyr`_ open source project and in the |NCS| are c
- PCA10095
- ``nrf5340dk/nrf5340/cpuapp``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf52840dk_nrf52840`
- nPM1300 EK
- PCA10056
- ``nrf52840dk/nrf52840``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
* - :ref:`zephyr:nrf52dk_nrf52832`
- nPM1300 EK
- PCA10040
- ``nrf52dk/nrf52832``
- | `Product Specification `_
- | :ref:`Getting started `
+ | `Quick Start`_
| `User Guide `_
PMIC samples and libraries
diff --git a/doc/nrf/app_dev/device_guides/wifi_coex.rst b/doc/nrf/app_dev/device_guides/wifi_coex.rst
index aab911596361..ab53de495e5a 100644
--- a/doc/nrf/app_dev/device_guides/wifi_coex.rst
+++ b/doc/nrf/app_dev/device_guides/wifi_coex.rst
@@ -128,14 +128,17 @@ To enable Wi-Fi coexistence on the nRF70 Series device, complete the following s
The first element ``&gpio0`` indicates the GPIO port (``port 0`` has been selected in the example shown).
The second element is the pin number on that port.
-#. On the nRF5340, apply the same devicetree node mentioned in Step 1 to the network core.
- Apply the overlay to the correct network-core child image by creating an overlay file named :file:`child_image/*childImageName*.overlay` in your application directory, for example :file:`child_image/multiprotocol_rpmsg.overlay`.
+#. On the nRF5340, you must also apply the same devicetree node mentioned in step 1 to the network core using sysbuild build system. For more information, see the :ref:`Migrating to sysbuild ` page.
+ To do so, apply the overlay to the correct network core child image by creating an overlay file named :file:`sysbuild/*childImageName*/boards/nrf5340dk_nrf5340_cpunet.overlay.overlay` in your application directory, for example :file:`sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.overlay`.
- The ``*childImageName*`` string must assume one of the following values:
+ The ``*childImageName*`` default value is set to ``ipc_radio`` :ref:`ipc_radio`.
- * ``multiprotocol_rpmsg`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
- * ``802154_rpmsg`` for applications having support for 802.15.4, but not for Bluetooth.
- * ``hci_ipc`` for application having support for Bluetooth, but not for 802.15.4.
+ ``ipc_radio`` represents all applications with support for the combination of both 802.15.4 and Bluetooth.
+ You can configure your application using the following sysbuild configurations:
+
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` for applications having support for 802.15.4, but not for Bluetooth.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for application having support for Bluetooth, but not for 802.15.4.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
#. Enable the following Kconfig options:
@@ -206,14 +209,18 @@ To enable the generic three-wire coexistence, do the following:
The first element ``&gpio0`` indicates the GPIO port (``port 0`` has been selected in the example shown).
The second element is the pin number on that port.
-#. On the nRF5340, apply the same devicetree node mentioned in Step 1 to the network core.
- Apply the overlay to the correct network-core child image by creating an overlay file named :file:`child_image/*childImageName*.overlay` in your application directory, for example :file:`child_image/multiprotocol_rpmsg.overlay`.
+#. On nRF53 devices, you must also apply the same devicetree node mentioned in **Step 1** to the network core using sysbuild.
+ To apply the overlay to the correct network core child image, create an overlay file named :file:`sysbuild/*childImageName*/boards/nrf5340dk_nrf5340_cpunet.overlay` in your application directory, for example :file:`sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.overlay`.
+ For more information, see the :ref:`Migrating to sysbuild ` page.
+
+ The *childImageName* default value is set to ``ipc_radio``:
- The ``*childImageName*`` string must assume one of the following values:
+ ``ipc_radio`` represents all applications with support for the combination of both 802.15.4 and Bluetooth.
+ You can configure your application using the following sysbuild configurations:
- * ``multiprotocol_rpmsg`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
- * ``802154_rpmsg`` for applications having support for 802.15.4, but not for Bluetooth.
- * ``hci_ipc`` for application having support for Bluetooth, but not for 802.15.4.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` for applications having support for 802.15.4, but not for Bluetooth.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for application having support for Bluetooth, but not for 802.15.4.
+ * ``SB_CONFIG_NETCORE_IPC_RADIO=y`` and ``SB_CONFIG_NETCORE_IPC_RADIO_BT_HCI_IPC=y`` for multiprotocol applications having support for both 802.15.4 and Bluetooth.
#. Enable the following Kconfig options:
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_boot_path.png b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_boot_path.png
new file mode 100644
index 000000000000..de3ef05a619e
Binary files /dev/null and b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_boot_path.png differ
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_manifest_topology.png b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_manifest_topology.png
new file mode 100644
index 000000000000..367a3be73c0b
Binary files /dev/null and b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/images/nrf54h20_suit_recovery_manifest_topology.png differ
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture.rst
index c1579082e492..29614e5cb5d2 100644
--- a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture.rst
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture.rst
@@ -23,3 +23,4 @@ The following pages briefly describe topics like the responsibilities of the cor
ug_nrf54h20_architecture_lifecycle
ug_nrf54h20_architecture_pm
ug_nrf54h20_architecture_clockman
+ ug_nrf54h20_architecture_reset
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture_reset.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture_reset.rst
new file mode 100644
index 000000000000..b930eb04861b
--- /dev/null
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_architecture_reset.rst
@@ -0,0 +1,85 @@
+.. _ug_nrf54h20_architecture_reset:
+
+nRF54H20 reset behavior
+#######################
+
+.. contents::
+ :local:
+ :depth: 2
+
+The reset behavior of the nRF54H20 SoC depends on the core that triggers the reset:
+
++--------------------------+--------------------------------------------------------------+
+| CPU Triggering Reset | Reset Behavior |
++==========================+==============================================================+
+| Secure Domain | Resets the entire SoC |
++--------------------------+--------------------------------------------------------------+
+| System Controller | Resets the entire SoC |
++--------------------------+--------------------------------------------------------------+
+| Application domain | - Resets all peripherals and VPRs owned by the Application |
+| | domain |
+| | - Resets the Radio domain |
+| | - Resets all peripherals and VPRs owned by the Radio domain |
++--------------------------+--------------------------------------------------------------+
+| Radio domain | - Resets all peripherals and VPRs owned by the Radio domain |
+| | - Resets the Application domain |
+| | - Resets all peripherals and VPRs owned by the Application |
+| | domain |
++--------------------------+--------------------------------------------------------------+
+
+nRF Util allows for different types of reset behavior on the various cores of the nRF54H20 SoC, based on the current lifecycle state of the device.
+
+Reset types in LCS EMPTY
+------------------------
+
+The following is the reset behavior when the LCS of the nRF54H20 SoC is in the ``EMPTY`` state:
+
+.. list-table:: Reset behavior based on LCS ``EMPTY``
+ :header-rows: 1
+
+ * - Reset kind in LCS ``EMPTY``
+ - Reset behavior
+ * - ``RESET_SYSTEM``
+ - Mapped to the ``SYS_RESET_REQUEST`` bit as described in the ARM specification for the *Application Interrupt and Register Controller*.
+ This reset triggers a reset of the Secure Domain, which subsequently resets the entire system.
+ It is available only to the Secure Domain.
+ * - ``RESET_HARD``
+ - Initiates a reset using the CTRL-AP through the On-Board Debugger (OBD).
+ The register used is ``RESET`` (address offset: ``0x00``).
+ * - ``RESET_PIN``
+ - J-Link toggles the **RESET** pin via OBD.
+
+Reset types in LCS ROT or DEPLOYED
+-----------------------------------
+
+The following is the reset behavior when the LCS of the nRF54H20 SoC is either in the ``ROT`` or ``DEPLOYED`` state:
+
+.. list-table:: Reset behavior based on LCS ``ROT`` or ``DEPLOYED``
+ :header-rows: 1
+
+ * - Reset kind in LCS ``ROT`` or ``DEPLOYED``
+ - Reset behavior
+ * - ``RESET_SYSTEM``
+ - In the Secure Domain, this reset is mapped to the ``SYS_RESET_REQUEST`` bit, as described in the ARM specification for the *Application Interrupt and Register Controller*.
+ This reset triggers a reset of the Secure Domain, which subsequently resets the entire system.
+
+ In the local domains, this reset is available only if the other domains have a valid configuration in the ``CPUCONF`` register and their access port is unprotected.
+ The PC tool uses the CTRL-AP mailbox to send a local domain reset request to the Secure Domain Firmware (SDFW).
+ * - ``RESET_HARD``
+ - Initiates a reset using the CTRL-AP through the On-Board Debugger (OBD).
+ The register used is ``RESET`` (address offset: ``0x00``).
+ * - ``RESET_PIN``
+ - J-Link toggles the ``RESET`` pin via OBD.
+
+Reset your device using nRF Util
+================================
+
+To trigger a specific reset type on your nRF54H20 SoC-based device, use the ``nrfutil device reset`` command::
+
+ nrfutil device reset --serial-number --reset-kind
+
+For a detailed list of commands for each reset type, run the following::
+
+ nrfutil device reset --help
+
+For more information on ``nrfutil device reset``, see `nRF Util documentation pages `_.
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_custom_pcb.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_custom_pcb.rst
index 6fcfce643902..c0afcb1428fe 100644
--- a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_custom_pcb.rst
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_custom_pcb.rst
@@ -22,7 +22,7 @@ We highly recommend using the PCB layouts and component values provided by Nordi
* For optimal performance, the output impedance of the **P6** and **P7** ports should match the PCB and external device pin impedance.
* Use one of the following power supply options:
- * VDDH higher than 2.2V
+ * VDDH higher than 2.05V.
* VDDH shorted to VDD at 1.8V
Prepare the configuration files for your custom board in the |NCS|
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs.rst
index 6b0955f6292c..d29da9935141 100644
--- a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs.rst
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_gs.rst
@@ -34,7 +34,7 @@ On your computer, one of the following operating systems:
:start-after: os_table_start
:end-before: os_table_end
-See :ref:`supported_OS` for more information about the tier definitions.
+See :ref:`supported_OS` for more information.
|supported OS|
@@ -59,11 +59,11 @@ You also need the following:
* From the Command Prompt::
- JLink_Windows_V794e_x86_64.exe -InstUSBDriver=1
+ JLink_Windows_V794i_x86_64.exe -InstUSBDriver=1
* From PowerShell::
- .\JLink_Windows_V794e_x86_64.exe -InstUSBDriver=1
+ .\JLink_Windows_V794i_x86_64.exe -InstUSBDriver=1
#. In the :guilabel:`Choose optional components` window, select :guilabel:`update existing installation`.
#. Add the J-Link executable to the system path on Linux and MacOS, or to the environment variables on Windows, to run it from anywhere on the system.
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_dfu.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_dfu.rst
index 1e5c6b15036f..1279eeec1f28 100644
--- a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_dfu.rst
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_dfu.rst
@@ -27,7 +27,9 @@ For a list of available SUIT samples, see the :ref:`suit_samples` page.
ug_nrf54h20_suit_customize_qsg.rst
ug_nrf54h20_suit_customize_dfu.rst
ug_nrf54h20_suit_fetch
+ ug_nrf54h20_suit_push
ug_nrf54h20_suit_external_memory
ug_nrf54h20_suit_components
ug_nrf54h20_suit_hierarchical_manifests
ug_nrf54h20_suit_soc_binaries
+ ug_nrf54h20_suit_recovery.rst
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_external_memory.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_external_memory.rst
index 1420c6b26142..76255941e5e0 100644
--- a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_external_memory.rst
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_external_memory.rst
@@ -12,8 +12,8 @@ However, the application domain can implement an IPC service, which allows the S
This guide explains how to prepare the application domain firmware and the SUIT envelope to perform SUIT firmware upgrade using external memory.
.. note::
- The prerequisite to this guide is the :ref:`ug_nrf54h20_suit_fetch` user guide, as this guide assumes that the application uses the fetch model to obtain the candidate images.
- See the :ref:`ug_nrf54h20_suit_fetch` for more details on how to migrate from push to fetch model.
+ To use external memory with SUIT, you can either use the push model-based or the fetch model-based firmware upgrade.
+ See :ref:`ug_nrf54h20_suit_push` for details about the push model and :ref:`ug_nrf54h20_suit_fetch` for details on how to migrate from the push to fetch model.
The following terms are used in this guide:
@@ -25,12 +25,10 @@ The following terms are used in this guide:
Overview of external memory in SUIT firmware updates
****************************************************
-To use external memory with SUIT, the fetch model-based firmware upgrade is required.
The SUIT envelope must always be stored in the non-volatile memory in the MCU.
The SUIT manifests stored in the envelope contain instructions that the device must perform to fetch other required payloads.
To store payloads in the external memory, a Device Firmware Update (DFU) cache partition must be defined in the external memory's devicetree node.
-In the SUIT manifest, you can define a component representing the cache partition in the external memory.
-Within the ``suit-payload-fetch`` sequence, you can then store fetched payload(s) into a ``CACHE_POOL`` component.
+The push model-based update and the fetch model-based update differ in the way the cache partition is filled with the images.
When the Secure Domain processes the ``suit-install`` sequence, issuing ``suit-directive-fetch`` on any non-integrated payload will instruct the Secure Domain firmware to search for a given URI in all cache partitions in the system.
However, when such a cache partition is located in the external memory, the Secure Domain is unable to access the data directly.
@@ -43,13 +41,54 @@ The companion image consists of two main parts:
* IPC service exposed towards the Secure Domain
When the companion image is booted and a directive that accesses the data on the external memory is issued, such as the ``suit-directive-fetch`` or ``suit-directive-copy`` directives, the Secure Domain firmware uses the IPC service provided by the companion image to access the contents of the external memory.
-Beyond the booting of the companion image, the update process does not differ from regular fetch model-based update.
+Apart from booting the companion image, the update process does not differ from regular push model-based or fetch model-based updates.
+
+Difference between push and fetch models
+========================================
+
+Push model
+----------
+
+In the push model, the cache partition contents are created on the building machine and pushed to the device without modifications.
+The images are extracted to the cache partition files using the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE` Kconfig option.
+
+No additional sequences are required in the SUIT manifest.
+
+For more details, see :ref:`ug_nrf54h20_suit_push`.
+
+Fetch model
+-----------
+
+In the fetch model, the SUIT processor runs on the application core.
+
+In the SUIT manifest, you can define a component that represents the cache partition in the external memory.
+Within the ``suit-payload-fetch`` sequence, you can then store fetched payloads into a ``CACHE_POOL`` component.
+The device then pulls the images from external sources and manages their storage in the cache partitions.
+
+For more details, see :ref:`ug_nrf54h20_suit_fetch`.
Enabling external flash support in SUIT DFU
*******************************************
-The :ref:`nrf54h_suit_sample` sample contains a premade configuration enabling the external memory in SUIT DFU.
-To enable the external memory, you must add the ``-DFILE_SUFFIX="extflash"`` argument to the build, or complete the following steps:
+The :ref:`nrf54h_suit_sample` sample contains several example configurations that enable the external memory for SUIT DFU.
+
+The configurations using the push model are the following:
+
+* ``sample.suit.smp_transfer.cache_push.extflash``
+* ``sample.suit.smp_transfer.cache_push.extflash.bt``
+
+The configurations using the fetch model are following:
+
+* ``sample.suit.smp_transfer.full_processing.extflash``
+* ``sample.suit.smp_transfer.full_processing.extflash.bt``
+
+You can find these configurations defined in the :file:`samples/suit/smp_transfer/sample.yaml` file.
+This file specifies which options need to be enabled.
+
+Alternatively, you can follow the following steps to manually enable external memory in SUIT DFU.
+
+Common steps for both push and fetch models
+===========================================
1. Turn on the external flash chip on the nRF54H20 DK using the `nRF Connect Board Configurator`_ app within `nRF Connect for Desktop`_ .
@@ -59,8 +98,6 @@ To enable the external memory, you must add the ``-DFILE_SUFFIX="extflash"`` arg
#. Enable the ``SB_CONFIG_SUIT_BUILD_FLASH_COMPANION`` sysbuild Kconfig option, which enables the build of the reference companion image.
See the :ref:`suit_flash_companion` user guide for instructions on how to configure the companion image using sysbuild.
-#. Enable the :kconfig:option:`CONFIG_SUIT_STREAM_SOURCE_FLASH` Kconfig option, which enables SUIT processor on the application core to read and parse DFU cache partitions.
-
#. Define a new DFU cache partition in the external memory in the DTS file:
.. code-block:: devicetree
@@ -86,18 +123,7 @@ To enable the external memory, you must add the ``-DFILE_SUFFIX="extflash"`` arg
#. Modify the application manifest file :file:`app_envelope.yaml.jinja2` by completing the following steps:
- a. Modify the ``CACHE_POOL`` identifier in the SUIT manifest:
-
- .. code-block:: yaml
-
- suit-components:
- ...
- - - CACHE_POOL
- - 1
-
- The ``CACHE_POOL`` identifier must match the identifier of the cache partition defined in the DTS file.
-
- #. Append the ``MEM`` type component that represents the companion image in the same SUIT manifest file:
+ a. Append the ``MEM`` type component that represents the companion image in the same SUIT manifest file:
.. code-block:: yaml
@@ -111,7 +137,7 @@ To enable the external memory, you must add the ``-DFILE_SUFFIX="extflash"`` arg
In this example, the component index is ``3``.
In the following steps, the companion image component is selected with ``suit-directive-set-component-index: 3``.
- #. Modify the ``suit-install`` sequence to boot the companion image before accessing the candidate images, which are stored in the external memory:
+ #. Modify the ``suit-install`` sequence in the application manifest file (:file:`app_envelope.yaml.jinja2`) to boot the companion image before accessing the candidate images stored in the external memory:
.. code-block:: yaml
@@ -122,12 +148,63 @@ To enable the external memory, you must add the ``-DFILE_SUFFIX="extflash"`` arg
The companion image can be optionally upgraded and have its integrity checked.
-#. |open_terminal_window_with_environment|
+Steps specific for the push model
+=================================
+
+1. Enable the :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_PUSH_TO_CACHE` option to allow the application core to modify cache partitions.
+
+#. Enable the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE` Kconfig option for every image that needs to be updated from external memory.
+
+#. Modify the manifest files for all domains by completing the following steps:
+
+ a. Ensure that the URI used by the ``suit-payload-fetch`` sequence to fetch a given image matches the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI` Kconfig option.
+
+ #. Ensure that the envelope integrates the specified image within the envelope integrated payloads section.
+ This is ensured by default if you use the provided SUIT envelope templates.
+
+Steps specific for the fetch model
+==================================
+
+1. Enable the :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_FULL` Kconfig option to allow the application core to process SUIT manifests.
+
+#. Enable the :kconfig:option:`CONFIG_SUIT_STREAM_SOURCE_FLASH` Kconfig option, which allows the SUIT processor on the application core to read and parse DFU cache partitions.
+
+#. Modify the application manifest file :file:`app_envelope.yaml.jinja2` by completing the following steps:
+
+ a. Modify the ``CACHE_POOL`` identifier in the SUIT manifest:
+
+ .. code-block:: yaml
+
+ suit-components:
+ ...
+ - - CACHE_POOL
+ - 1
+
+ The ``CACHE_POOL`` identifier must match the identifier of the cache partition defined in the DTS file.
+
+ #. Add the ``suit-payload-fetch`` sequence:
+
+ .. code-block:: yaml
+
+ suit-payload-fetch:
+ - suit-directive-set-component-index: 2
+ - suit-directive-override-parameters:
+ suit-parameter-uri: 'file://{{ app['binary'] }}'
+ - suit-directive-fetch:
+ - suit-send-record-failure
+
+ This snippet assumes that ``CACHE_POOL`` is the third component on the manifest's components list (so its component index is 2)
+
+Testing the application with external flash support
+===================================================
+
+1. |open_terminal_window_with_environment|
+
#. Build and flash the application by completing the following commands:
.. code-block:: console
- west build -b nrf54h20dk/nrf54h20/cpuapp
+ west build ./ -b nrf54h20dk/nrf54h20/cpuapp -T
west flash
The build system will automatically use :ref:`configuration_system_overview_sysbuild` and generate a :file:`build/zephyr/dfu_suit.zip` archive, which contains the SUIT envelope and candidate images.
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_push.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_push.rst
new file mode 100644
index 000000000000..4ccbc9f4993a
--- /dev/null
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_push.rst
@@ -0,0 +1,108 @@
+.. _ug_nrf54h20_suit_push:
+
+How to push SUIT payloads to multiple partitions
+################################################
+
+.. contents::
+ :local:
+ :depth: 2
+
+In the Software Updates for Internet of Things (SUIT), you can push certain payloads separately from the SUIT envelope.
+The envelope can find them in the device and use them as part of the firmware upgrade process.
+
+In Nordic Semiconductor's implementation, this functionality is provided by a mechanism called *DFU cache partitions*.
+
+This guide explains how DFU cache partitions work, and how to configure the build system and SUIT manifests to use them for pushing detached payloads.
+
+
+Reasons to push images separately from the SUIT envelope
+********************************************************
+
+Pushing images separately from the SUIT envelope can be useful in the following scenarios:
+
+* Pushing parts of an image to external memory.
+* Storing portions of the update package in non-contiguous memory areas, separated by other data.
+* Reducing the amount of data that needs to be resent after a communication failure, allowing the update to continue.
+* Sending different parts of the image through multiple communication channels.
+
+DFU Cache Partitions
+********************
+
+The payloads pushed to the device must be placed in so called “DFU cache partitions”, numbered 0..n.
+The DFU cache partitions hold data using a CBOR map format, where the keys are URI strings and the values are binary images.
+
+When the Secure Domain processes the manifest and encounters a ``suit-directive-fetch`` directive it first checks if a given URI is present in its ``suit-integrated-payloads`` section.
+If it is not, it goes through all the DFU cache partitions defined in the device.
+If the given URI is found as a map key, the binary data stored in the value field corresponding to that URI is fetched.
+
+The DFU cache partition 0 is always present in the device.
+It takes all of the remaining space from the ``dfu_partition`` that is not occupied by the envelope.
+This partition has a limitation:
+it can only be used after storing the SUIT envelope.
+
+The DFU cache partitions from ``1`` to ``n`` are defined in the devicetree, by using the ``dfu_cache_partition_x`` node name, where x is the partition number.
+The partitions can be placed both in the internal MRAM as well as in the external flash.
+
+Extracting images
+*****************
+
+The :ref:`nrf54h_suit_sample` sample uses the SMP protocol for uploading new envelopes and is by default configured to use the push model for firmware upgrades.
+To reconfigure the sample to allow for pushing images into DFU cache partitions, complete the following steps:
+
+1. Enable the :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_PUSH_TO_CACHE` Kconfig option.
+ This enables the writing to the DFU cache partitions.
+ Alternatively, you can enable the :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_FULL` option to enable the SUIT envelope processing in the application firmware.
+ This will enable a superset of options enabled by :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_PUSH_TO_CACHE`, but will occupy more space in both MRAM and RAM memories.
+
+#. If you intend to use any other cache partition than 0, add the DFU cache partition in the appropriate memory area in the device tree overlay:
+
+ .. code-block:: dts
+
+ dfu_cache_partition_N: partition@a000 {
+ reg = <0xa000 DT_SIZE_K(1024)>;
+ };
+
+ Replace ``N`` with the partition number, ``a000`` with the proper offset inside the memory area, and ``1024`` with the proper size of the cache partition.
+
+ For example, you could add the cache partition 1 with the size of 1024 kilobytes in the external flash at an offset of 0 by adding:
+
+ .. code-block:: dts
+
+ &mx25uw63 {
+ status = "okay";
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ dfu_cache_partition_1: partition@0 {
+ reg = <0x0 DT_SIZE_K(1024)>;
+ };
+ };
+ };
+
+#. For each image that you want to push separately to the device, do the following:
+
+ * Enable the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE` Kconfig option.
+ * Optionally, modify :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_PARTITION` to select the partition where the image will be pushed (default is partition 1).
+ * Optionally, modify the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI` to modify the URI used as key for the given image in the DFU cache.
+
+#. Ensure that the URI used by the ``suit-payload-fetch`` sequence to fetch a given image matches the :kconfig:option:`CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI` Kconfig option.
+ This is done by default when using the manifest templates provided by Nordic Semiconductor.
+ For the application image URI, you can do that as follows (assuming the target name ``application`` for the image):
+
+ .. code-block:: yaml
+
+ - suit-directive-override-parameters:
+ suit-parameter-uri: '{{ application['config']['CONFIG_SUIT_DFU_CACHE_EXTRACT_IMAGE_URI'] }}'
+ - suit-directive-fetch:
+ - suit-send-record-failure
+
+#. Ensure that the envelope does not integrate the given image inside the envelope integrated payloads section.
+ This is ensured by default when using the provided default SUIT envelope templates.
+
+
+Pushing the images to device
+****************************
+
+See the :ref:`SUIT SMP Sample documentation ` for an example of how to push an image to a device.
diff --git a/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_recovery.rst b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_recovery.rst
new file mode 100644
index 000000000000..0df8acd51bee
--- /dev/null
+++ b/doc/nrf/app_dev/device_guides/working_with_nrf/nrf54h/ug_nrf54h20_suit_recovery.rst
@@ -0,0 +1,238 @@
+.. _ug_nrf54h20_suit_recovery:
+
+Configuring and programming the SUIT manufacturer application recovery firmware
+###############################################################################
+
+.. contents::
+ :local:
+ :depth: 2
+
+During the device lifetime, the device can encounter various issues that lead to boot failure.
+In such cases, the device must have a mechanism to recover from the failure and continue operating.
+
+In SUIT, this requirement is addressed by running a specially prepared recovery firmware.
+While the recovery firmware requires some additional space on the device, it is a highly recommended feature for all devices utilizing SUIT.
+
+This document describes scenarios in which an nRF54H20 device using SUIT can enter recovery mode, as well as the recovery process.
+
+Entering recovery mode
+**********************
+
+When booting the device, the Secure Domain verifies the currently installed manifests and firmware images.
+If the verification fails, the device enters recovery mode.
+The reasons for validation failure can include, but are not limited to, the following:
+
+* An invalid manifest signature.
+* A mismatch between the digest of the installed firmware image and the digest in the manifest.
+* The manifest attempting to perform unauthorized operations.
+
+These issues can occur in the following scenarios:
+
+* Tampering by an attacker.
+* Bitflips in the MRAM memory caused by radiation or other external conditions.
+* Hardware failures in advanced cases where an in-place update is performed, resulting in a partially overwritten firmware image.
+* An incorrectly constructed manifest, leading to a successful update but a failure during boot.
+
+.. caution::
+ The last case must never occur in a production environment, but it is possible during development.
+ The manufacturer must always ensure that the manifest is correctly constructed and that all images managed by SUIT are compatible with each other after the update.
+ If any bugs are overlooked during the development phase, this could result in inconsistencies in the firmware.
+
+Recovery Mode and Recovery Manifests
+*************************************************
+
+The recovery manifests form a separate hierarchy from the normal manifests.
+In this hierarchy, the application recovery (``APP_RECOVERY``) manifest is responsible for managing both the application core image and other manifests, such as the radio recovery manifest.
+
+The following image shows the recovery manifest topology for the nRF54H20 SoC:
+
+.. figure:: images/nrf54h20_suit_recovery_manifest_topology.png
+ :alt: Recovery manifest topology for the nRF54H20 SoC
+
+If a failure during a boot process occurred, the Secure Domain sets the recovery flag and reboots the device.
+Upon each boot the Secure Domain checks if the recovery flag is set.
+If it is set, the device enters recovery mode.
+If it isn't booting proceeds normally by running the root manifest.
+
+After entering the recovery mode it is verified if MPI configuration for the APP_RECOVERY is present.
+If it is, the APP_RECOVERY manifest is processed.
+It no MPI configuration is found the Secure Domain performs an attempt to process the normal manufacturer root manifest.
+This is needed, as the device might enter recovery mode if it is empty.
+The recovery flag is not cleared after flashing the firmware, but the device should proceed as if it would boot normally.
+
+This flow is shown in the following diagram:
+
+.. figure:: images/nrf54h20_suit_recovery_boot_path .png
+ :alt: Booting in recovery mode
+
+The role of the recovery application is to perform an update of the main application firmware, which does not differ from the normal SUIT update process.
+As soon as the update finishes successfully, the recovery flag is cleared and the device proceeds with normal operation.
+
+.. note::
+ The recovery application itself can only be updated from the main application - not when running the recovery application.
+
+.. _ug_nrf54h20_suit_recovery_default_fw:
+
+Using the default recovery firmware
+***********************************
+
+Nordic provides a default recovery firmware that can be used in the recovery process.
+This firmware uses Bluetooth LE and SMP as a transport.
+It is optimized for memory usage, currently using around 164 kB of MRAM (72 kB of application core and 92 kB radio core).
+
+.. caution::
+ The default recovery firmware does not support :ref:`updating from external flash memory `.
+ This also means that the recovery firmware is not compatible with a main application that uses external flash for updates.
+
+To use the firmware:
+
+1. Create :file:`recovery.overlay` and :file:`recovery_hci_ipc.ovelay` files in the main application's :ref:`configuration_system_overview_sysbuild` directory.
+ These files must define the ``cpuapp_recovery_partition`` and ``cpurad_recovery_partition`` nodes respectively.
+ These partitions specify where the images for the recovery firmware are stored and cannot overlap with the main application partitions.
+ For reference, see the files in the :ref:`SUIT DFU on the nRF54H20 SoC ` sample located in :file:`samples/suit/smp_transfer`.
+
+#. Set the :kconfig:option:`SB_CONFIG_SUIT_BUILD_RECOVERY` sysbuild configuration option in the main application.
+ This will cause the recovery firmware to be built automatically as part of the main application build.
+
+#. :ref:`Program the main application firmware to the device `.
+This will automatically program both the main application and the recovery firmware to the device.
+
+#. To update the recovery firmware perform an update in the same way as described in :ref:`nrf54h_suit_sample`, however using the recovery firmware envelope.
+ The envelopes needed for the update are located in the build directory of the main application, by default found in :file:`build/DFU/app_recovery.suit` and :file:`build/DFU/rad_recovery.suit`.
+
+Further information about the default recovery firmware can be found in :ref:`suit_recovery`.
+The code for the default recovery firmware can be found in the :file:`samples/suit/recovery` directory.
+
+.. _ug_nrf54h20_suit_recovery_update_fw:
+
+Updating the recovery firmware
+******************************
+
+To update the recovery firmware you can either use:
+
+* The APP_RECOVERY envelope, found in :file:`/build/DFU/app_recovery.suit`
+* The zip file, found in :file:`/build/zephyr/dfu_suit_recovery.zip``
+
+These can be used to update the recovery application the same as :file:`root.suit` or :file:`dfu_suit.zip` are used to update the main application - see :ref:`nrf54h_suit_sample` as an example.
+
+.. note::
+ The recovery application can only be updated from the main application - not when running the recovery application itself.
+
+.. _ug_nrf54h20_suit_recovery_create_images:
+
+Creating custom recovery images
+*******************************
+
+To turn an application into a recovery application, the following steps have to be performed:
+
+1. For each of the images defined by the custom recovery application, ensure the following configuration is present:
+
+ * :kconfig:option:`CONFIG_SUIT_RECOVERY` set to ``y``
+ * :kconfig:option:`CONFIG_SUIT_MPI_GENERATE` set to ``n``
+ * :kconfig:option:`CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE` set to ``n``
+ * :kconfig:option:`CONFIG_NRF_REGTOOL_GENERATE_UICR` set to ``n``
+ * :kconfig:option:`CONFIG_NRF_REGTOOL_GENERATE_BICR` set to ``n``
+
+ To do that you can simply paste the following code snippet into your configuration files:
+
+ .. code-block:: cfg
+
+ CONFIG_SUIT_RECOVERY=y
+ CONFIG_SUIT_MPI_GENERATE=n
+ CONFIG_SUIT_ENVELOPE_OUTPUT_MPI_MERGE=n
+ CONFIG_NRF_REGTOOL_GENERATE_UICR=n
+ CONFIG_NRF_REGTOOL_GENERATE_BICR=n
+
+#. Create the overlay files to be used by the recovery application.
+ In this guide it is assumed that for the application core they are placed in the custom recovery application directory in the :file:`boards/nrf54h20dk_nrf54h20_cpuapp.overlay` file.
+
+ The application core recovery image overlay should contain the following code:
+
+ .. code-block:: dts
+
+ / {
+ chosen {
+ zephyr,code-partition = &cpuapp_recovery_partition;
+ nrf,tz-secure-image = &cpuapp_recovery_partition;
+ };
+ };
+
+ &cpusec_cpuapp_ipc {
+ status = "okay";
+ };
+
+ &cpusec_bellboard {
+ status = "okay";
+ };
+
+ Optionally, if using the radio core recovery image, the radio core recovery image overlay should contain the following code:
+
+ .. code-block:: dts
+
+ / {
+ chosen {
+ zephyr,code-partition = &cpurad_recovery_partition;
+ nrf,tz-secure-image = &cpurad_recovery_partition;
+ };
+ };
+
+#. Add :file:`sysbuild.cmake` to the custom recovery application directory.
+ In this file add the following code:
+
+ .. code-block:: cmake
+
+ add_overlay_dts(recovery ${CMAKE_CURRENT_LIST_DIR}/boards/nrf54h20dk_nrf54h20_cpuapp.overlay)
+
+ This will ensure that when building from the main application directory the overlay file is attached to and not overwritten by the configuration coming from the main application.
+
+#. If you want to add additional images to the recovery image, you can add it with code similar to the one from the default recovery firmware image:
+
+ .. code-block:: cmake
+
+ ExternalZephyrProject_Add(
+ APPLICATION recovery_hci_ipc
+ SOURCE_DIR "${ZEPHYR_BASE}/samples/bluetooth/hci_ipc"
+ BOARD ${BOARD}/${SB_CONFIG_SOC}/${SB_CONFIG_NETCORE_REMOTE_BOARD_TARGET_CPUCLUSTER}
+ BOARD_REVISION ${BOARD_REVISION}
+ )
+
+ add_overlay_config(recovery_hci_ipc ${CMAKE_CURRENT_LIST_DIR}/sysbuild/hci_ipc.conf)
+ add_overlay_dts(recovery_hci_ipc ${CMAKE_CURRENT_LIST_DIR}/sysbuild/hci_ipc.overlay)
+
+ Replace recovery_hci_ipc, hci_ipc and ``SOURCE_DIR`` with the appropriate values for your application.
+
+
+#. Optionally - you can modify the recovery manifest templates.
+ The manifest template defined by the ``CONFIG_SUIT_ENVELOPE_TEMPLATE_FILENAME`` is first searched for in :file:`suit/` in the main application directory.
+ If it is not found, :file:`suit/` in the recovery app is checked.
+ If the manifest template is still not found, the default template directory in NCS is checked (:file:`config/suit/templates`).
+
+#. Extend the ``SUIT_RECOVERY_APPLICATION`` choice with an option for attaching the custom recovery application.
+ Then, make the ``SB_CONFIG_SUIT_RECOVERY_APPLICATION_PATH`` point to the custom application path.
+ This is done by adding the following code to a sysbuild Kconfig file visible by the build system - this can be the :file:`Kconfig.sysbuild` file in the main application directory:
+
+ .. code-block:: kconfig
+
+ if SUIT_BUILD_RECOVERY
+
+ choice SUIT_RECOVERY_APPLICATION
+ prompt "Select SUIT recovery application"
+
+ config SUIT_RECOVERY_APPLICATION_CUSTOM
+ bool "Use the custom recovery application"
+
+ endchoice
+
+ config SUIT_RECOVERY_APPLICATION_PATH
+ string
+ default "" if SUIT_RECOVERY_APPLICATION_CUSTOM
+
+ endif # SUIT_BUILD_RECOVERY
+
+.. note::
+ ``SUIT_RECOVERY_APPLICATION_CUSTOM`` can be changed to any name that is appropriate for the given application.
+
+.. note::
+ The value of ``SUIT_RECOVERY_APPLICATION_PATH`` can contain variables like ``${ZEPHYR_NRF_MODULE_DIR}``
+
+#. When building the main application, set ``SB_CONFIG_SUIT_RECOVERY_APPLICATION_CUSTOM`` (or the Kconfig option name if a different one was chosen) to ``y``.
diff --git a/doc/nrf/gsg_guides.rst b/doc/nrf/gsg_guides.rst
index 1d872bfcd770..a9273b0acb60 100644
--- a/doc/nrf/gsg_guides.rst
+++ b/doc/nrf/gsg_guides.rst
@@ -1,24 +1,52 @@
.. _gsg_guides:
+.. _ug_nrf52_gs:
+.. _ug_nrf5340_gs:
-Getting started guides
-######################
+Quick Start
+###########
-Use the guides in this section to familiarize yourself with the |NCS| tools and components for some of the devices supported by the SDK.
+.. quick_start_table_start
-.. important::
- For the full list of devices supported in the |NCS|, see the :ref:`board support pages `.
-
-These guides do not require installing the |NCS|.
-They provide a guided experience using Nordic Semiconductor tools and precompiled binaries.
+Use the `Quick Start`_ app, available from `nRF Connect for Desktop`_, to familiarize yourself with the |NCS| tools and components for some of the devices supported by the |NCS|.
+The application uses Nordic Semiconductor tools and precompiled binaries and does not require installing the |NCS|.
-This is not a comprehensive section that includes all of the available getting started guides for Nordic Semiconductor devices.
-
-.. note::
- * To get started with the nRF91x1 DKs and the nRF54L15 PDK, complete the steps in the `Quick Start`_ app, available from `nRF Connect for Desktop`_.
- * To get started with the nRF54H20 DK, the installation of the |NCS| is required.
- See :ref:`ug_nrf54h20_gs`.
- * To get started with the nPM1300 EK, see the `Get started `_ section of the nPM1300 EK product page.
- * To get started with the nRF7002 EB, see the `Get started `_ section of the nRF7002 EB product page.
+.. important::
+ The following table does not list all devices supported in the |NCS|.
+ For the full list, see the :ref:`board support pages `.
+
++----------------------+----------------------------------------------------------------+--------------------------------+
+| Device | Getting started method | Device user guide |
++======================+================================================================+================================+
+| nRF9161 DK | | `nRF9161 DK Hardware`_ |
++----------------------+ +--------------------------------+
+| nRF9160 DK | | `nRF9160 DK Hardware`_ |
++----------------------+ +--------------------------------+
+| nRF9151 DK | | `nRF9151 DK Hardware`_ |
++----------------------+ +--------------------------------+
+| nRF54L15 DK | `Quick Start`_ app | *Not yet available* |
++----------------------+ +--------------------------------+
+| nRF5340 DK | | `nRF5340 DK User Guide`_ |
++----------------------+ +--------------------------------+
+| nRF52840 DK | | `nRF52840 DK User Guide`_ |
++----------------------+ +--------------------------------+
+| nRF52833 DK | | `nRF52833 DK User Guide`_ |
++----------------------+ +--------------------------------+
+| nRF52 DK | | `nRF52 DK User Guide`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| nRF54H20 DK | :ref:`ug_nrf54h20_gs` - *Quick Start support coming soon* | *Not yet available* |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| nRF7002 DK | :ref:`ug_nrf7002_gs` | `nRF7002 DK Hardware`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| nRF7002 EB | `Get started `_ on the product page | `nRF7002 EB User Guide`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| Thingy:91 | :ref:`ug_thingy91_gsg` | `Nordic Thingy:91 User Guide`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| Thingy:53 | :ref:`ug_thingy53_gs` | `Nordic Thingy:53 Hardware`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+| nPM1300 EK | `Get started `_ on the product page | `nPM1300 EK User Guide`_ |
++----------------------+----------------------------------------------------------------+--------------------------------+
+
+.. quick_start_table_end
.. toctree::
:maxdepth: 1
@@ -27,7 +55,5 @@ This is not a comprehensive section that includes all of the available getting s
gsg_guides/nrf9160_gs
gsg_guides/thingy91_gsg
gsg_guides/nrf7002_gs
- gsg_guides/nrf5340_gs
gsg_guides/thingy53_gs
- gsg_guides/nrf52_gs
gsg_guides/gsg_other
diff --git a/doc/nrf/gsg_guides/gsg_other.rst b/doc/nrf/gsg_guides/gsg_other.rst
index 2ce87e1615ee..facf8463b16e 100644
--- a/doc/nrf/gsg_guides/gsg_other.rst
+++ b/doc/nrf/gsg_guides/gsg_other.rst
@@ -1,11 +1,9 @@
.. _gsg_other:
+
Getting started with other DKs
##############################
-Use the following guides to familiarize yourself with the |NCS| tools and components for the following devices supported by the SDK:
-
- * To get started with the nRF91x1 DKs and the nRF54L15 PDK, complete the steps in the `Quick Start`_ app, available from `nRF Connect for Desktop`_.
- * To get started with the nRF54H20 DK, see :ref:`ug_nrf54h20_gs`.
- * To get started with the nPM1300 EK, see the `Get started `_ section of the nPM1300 EK product page.
- * To get started with the nRF7002 EB, see the `Get started `_ section of the nRF7002 EB product page.
+.. include:: ../gsg_guides.rst
+ :start-after: quick_start_table_start
+ :end-before: quick_start_table_end
diff --git a/doc/nrf/gsg_guides/images/nrf52_connect_client_ios.png b/doc/nrf/gsg_guides/images/nrf52_connect_client_ios.png
deleted file mode 100644
index 4c597a489b62..000000000000
Binary files a/doc/nrf/gsg_guides/images/nrf52_connect_client_ios.png and /dev/null differ
diff --git a/doc/nrf/gsg_guides/images/nrf52_connect_log.png b/doc/nrf/gsg_guides/images/nrf52_connect_log.png
deleted file mode 100644
index c7c16f9a2c10..000000000000
Binary files a/doc/nrf/gsg_guides/images/nrf52_connect_log.png and /dev/null differ
diff --git a/doc/nrf/gsg_guides/images/nrf52_connect_log_ios.png b/doc/nrf/gsg_guides/images/nrf52_connect_log_ios.png
deleted file mode 100644
index c22cca22228a..000000000000
Binary files a/doc/nrf/gsg_guides/images/nrf52_connect_log_ios.png and /dev/null differ
diff --git a/doc/nrf/gsg_guides/images/nrf52_connect_write_ios.png b/doc/nrf/gsg_guides/images/nrf52_connect_write_ios.png
deleted file mode 100644
index 67f804c421d0..000000000000
Binary files a/doc/nrf/gsg_guides/images/nrf52_connect_write_ios.png and /dev/null differ
diff --git a/doc/nrf/gsg_guides/images/nrf52_enable_cccds.png b/doc/nrf/gsg_guides/images/nrf52_enable_cccds.png
deleted file mode 100644
index edcd9525c93b..000000000000
Binary files a/doc/nrf/gsg_guides/images/nrf52_enable_cccds.png and /dev/null differ
diff --git a/doc/nrf/gsg_guides/nrf52_gs.rst b/doc/nrf/gsg_guides/nrf52_gs.rst
deleted file mode 100644
index a15ddfe035e6..000000000000
--- a/doc/nrf/gsg_guides/nrf52_gs.rst
+++ /dev/null
@@ -1,236 +0,0 @@
-.. _ug_nrf52_gs:
-
-Getting started with nRF52 Series
-#################################
-
-.. contents::
- :local:
- :depth: 2
-
-This guide lets you evaluate the |NCS|'s support for nRF52 Series :term:`Development Kit (DK)` without the need of installing the SDK.
-It tells you how to install the :ref:`peripheral_uart` sample and perform a quick test of your DK.
-
-If you want to go through an online training course to familiarize yourself with Bluetooth Low Energy and the development of Bluetooth LE applications, enroll in the `Bluetooth LE Fundamentals course`_ in the `Nordic Developer Academy`_.
-
-.. _nrf52_gs_requirements:
-
-Minimum requirements
-********************
-
-Make sure you have all the required hardware and that your computer and mobile device both have one of the supported operating systems.
-
-Hardware
-========
-
-* One of the following nRF52 Series development kits:
-
- * nRF52840 DK
- * nRF52833 DK
- * nRF52 DK
-
-* Micro-USB 2.0 cable
-
-Software
-========
-
-On your computer, one of the following operating systems:
-
-* Microsoft Windows
-* macOS
-* Ubuntu Linux
-
-|Supported OS|
-
-On your mobile device, one of the following operating systems:
-
-* Android
-* iOS
-
-.. _nrf52_gs_installing_software:
-
-Installing the required software
-********************************
-
-On your computer, install `nRF Connect for Desktop`_.
-After installing and starting the application, install the Programmer app.
-
-You must also install a terminal emulator, such as `nRF Connect Serial Terminal`_, the nRF Terminal (part of the `nRF Connect for Visual Studio Code`_ extension), or PuTTY.
-nRF Connect Serial Terminal is the recommended method for :ref:`nrf52_gs_connecting`.
-
-On your mobile device, install the `nRF Connect for Mobile`_ application from the corresponding application store.
-
-.. _nrf52_gs_installing_sample:
-.. _nrf52_gs_installing_application:
-
-Installing the sample
-*********************
-
-You must program and run a precompiled version of the :ref:`peripheral_uart` sample on your development kit to test the functions.
-
-Download the precompiled version of the sample for your DK from the corresponding download page:
-
-* `nRF52840 DK Downloads`_
-* `nRF52833 DK Downloads`_
-* `nRF52 DK Downloads`_
-
-After downloading the zip archive, extract it to a folder of your choice.
-The archive contains the HEX file used to program the sample to your DK.
-
-.. |DK| replace:: nRF52 Series DK
-
-.. program_dk_sample_start
-
-To program the precompiled sample to your development kit, complete the following steps:
-
-1. Open the Programmer app.
-#. Connect the |DK| to the computer with a micro-USB cable and turn on the DK.
-
- **LED1** starts blinking.
-
-#. Click **SELECT DEVICE** and select the DK from the drop-down list.
-
- .. figure:: images/programmer_select_device1.png
- :alt: Programmer - Select Device
-
- Programmer - Select Device
-
- The drop-down text changes to the type of the selected device, with its SEGGER ID below the name.
- The **Device Memory Layout** section also changes its name to the device name, and indicates that the device is connected.
- If the **Auto read memory** option is selected in the **DEVICE** section of the side panel, the memory layout will update.
- If it is not selected and you wish to see the memory layout, click :guilabel:`Read` in the **DEVICE** section of the side panel.
-
-#. Click :guilabel:`Add file` in the **FILE** section, and select **Browse**.
-#. Navigate to where you extracted the HEX file and select it.
-#. Click the :guilabel:`Erase & write` button in the **DEVICE** section to program the DK.
-
- Do not unplug or turn off the DK during this process.
-
-.. note::
- If you experience any problems during the process, press ``Ctrl+R`` (``command+R`` on macOS) to restart the Programmer app, and try again.
-
-.. program_dk_sample_end
-
-After you have programmed the sample to the DK, you can connect to it using a terminal emulator and test the functions.
-
-.. _nrf52_gs_connecting:
-
-Connecting to the sample
-************************
-
-.. uart_dk_connect_start
-
-You can connect to the sample on the |DK| with a terminal emulator on your computer using :term:`Universal Asynchronous Receiver/Transmitter (UART)`.
-This allows you to see the logging information the sample outputs as well as to enter console inputs.
-
-You can use an external UART to USB bridge.
-UART communication through the UART to USB CDC ACM bridge is referred to as CDC-UART.
-This is different from communication through the Nordic UART Service (NUS) over Bluetooth® Low Energy (LE).
-
-If you have problems connecting to the sample, restart the DK and start over.
-
-To connect using CDC-UART, complete the steps listed on the :ref:`test_and_optimize` page for the chosen terminal emulator.
-
-.. uart_dk_connect_end
-
-Once the connection has been established, continue to :ref:`nrf52_gs_testing`.
-
-.. _nrf52_gs_testing:
-
-Testing the sample
-******************
-
-You can test the :ref:`peripheral_uart` sample on your DK using the `nRF Connect for Mobile`_ application.
-The test requires that you have :ref:`connected to the sample ` and have the connected terminal emulator open.
-
-.. testing_dk_start
-
-To perform tests, complete the following steps:
-
-.. tabs::
-
- .. group-tab:: Android
-
- 1. Make sure the |DK| is connected to the computer with a micro-USB cable and has been turned on (**LED1** is blinking).
- #. Open the nRF Connect for Mobile application on your Android device.
- #. In nRF Connect for Mobile, tap :guilabel:`Scan`.
- #. Find the DK in the list, select it and tap :guilabel:`Connect`.
-
- The default device name for the Peripheral UART sample is **Nordic_UART_Service**.
-
- #. When connected, tap the three-dot menu below the device name, and select **Enable CCCDs**.
-
- This example communicates over Bluetooth Low Energy using the Nordic UART Service (NUS).
-
- .. figure:: images/nrf52_enable_cccds.png
- :alt: nRF Connect for Mobile - Enable services option
-
- nRF Connect for Mobile - Enable services option
-
- #. Tap the three-dot menu next to **Disconnect** and select **Show log**.
- #. On your computer, in the terminal emulator connected to the sample through CDC-UART, type ``hello`` and send it to the DK.
-
- The text is sent through the |DK| to your mobile device over a Bluetooth LE link.
- The device displays the text in the nRF Connect for Mobile log:
-
- .. figure:: images/nrf52_connect_log.png
- :alt: nRF Connect for Mobile - Text shown in the log
-
- nRF Connect for Mobile - Text shown in the log
-
- .. group-tab:: iOS
-
- 1. Make sure the |DK| is connected to the computer with a micro-USB cable and has been turned on (**LED1** is blinking).
- #. Open the nRF Connect for Mobile application on your iOS device.
- #. If the application does not automatically start scanning, tap the **Play** icon in the upper right corner.
- #. Find the DK in the list and tap the corresponding :guilabel:`Connect` button.
- The default device name for the Peripheral UART sample is **Nordic_UART_Service**.
-
- This opens a new window with information on the device.
-
- #. In the new window, select the **Client** tab and scroll to the bottom so you can see the **Client Characteristic Configuration** entry.
-
- .. figure:: images/nrf52_connect_client_ios.png
- :alt: nRF Connect for Mobile - Client tab
-
- nRF Connect for Mobile - Client tab
-
- #. Tap the up arrow button under **Client Characteristic Configuration** to write a value to the sample.
-
- The **Write Value** window opens.
-
- #. In this window, select the **Bool** tab and set the toggle to **True**.
-
- This enables messages sent to the DK to show up in nRF Connect for Mobile.
-
- .. figure:: images/nrf52_connect_write_ios.png
- :alt: nRF Connect for Mobile - Write Value window
-
- nRF Connect for Mobile - Write Value window
-
- #. Tap **Write** to write the command to the DK.
-
- The **Write Value** window closes.
-
- #. Select the **Log** tab.
- #. On your computer, in the terminal emulator connected to the sample through CDC-UART, type ``hello`` and send it to the DK.
-
- The text is sent through the |DK| to your mobile device over a Bluetooth LE link.
- The device displays the text in the nRF Connect for Mobile log:
-
- .. figure:: images/nrf52_connect_log_ios.png
- :alt: nRF Connect for Mobile - Text shown in the log
-
- nRF Connect for Mobile - Text shown in the log
-
-.. testing_dk_end
-
-If you have a dongle or a second Nordic Semiconductor DK, you can test the sample :ref:`using a computer ` instead of using this process.
-
-Next steps
-**********
-
-You have now completed getting started with the nRF52 Series DK.
-See the following links for where to go next:
-
-* :ref:`installation` and :ref:`configuration_and_build` documentation to install the |NCS| and learn more about its development environment.
-* :ref:`ug_nrf52` documentation for more advanced topics related to the nRF52 Series.
diff --git a/doc/nrf/gsg_guides/nrf5340_gs.rst b/doc/nrf/gsg_guides/nrf5340_gs.rst
deleted file mode 100644
index fb34aa9a3856..000000000000
--- a/doc/nrf/gsg_guides/nrf5340_gs.rst
+++ /dev/null
@@ -1,106 +0,0 @@
-.. _ug_nrf5340_gs:
-
-Getting started with nRF5340 DK
-###############################
-
-.. contents::
- :local:
- :depth: 2
-
-This guide lets you evaluate the |NCS|'s support for nRF5340 :term:`Development Kit (DK)` without the need of installing the SDK.
-It tells you how to install the :ref:`peripheral_uart` sample and perform a quick test of your DK.
-
-If you want to go through an online training course to familiarize yourself with Bluetooth Low Energy and the development of Bluetooth LE applications, enroll in the `Bluetooth LE Fundamentals course`_ in the `Nordic Developer Academy`_.
-
-.. _nrf5340_gs_requirements:
-
-Minimum requirements
-********************
-
-Make sure you have all the required hardware and that your computer has one of the supported operating systems.
-
-Hardware
-========
-
-* nRF5340 DK
-* Micro-USB 2.0 cable
-
-Software
-========
-
-On your computer, one of the following operating systems:
-
-* Microsoft Windows
-* macOS
-* Ubuntu Linux
-
-|Supported OS|
-
-On your mobile device:
-
-* Android
-* iOS
-
-.. _nrf5340_gs_installing_software:
-
-Installing the required software
-********************************
-
-On your computer, install `nRF Connect for Desktop`_.
-After installing and starting the application, install the Programmer app.
-
-You must also install a terminal emulator, such as `nRF Connect Serial Terminal`_, the nRF Terminal (part of the `nRF Connect for Visual Studio Code`_ extension), or PuTTY.
-nRF Connect Serial Terminal is the recommended method for :ref:`nrf5340_gs_connecting`.
-
-On your mobile device, install the `nRF Connect for Mobile`_ application from the corresponding application store.
-
-.. _nrf5340_gs_programming_sample:
-
-Programming the sample
-**********************
-
-You must program and run a precompiled version of the :ref:`peripheral_uart` sample on your development kit to test the functions.
-Download the precompiled version of the sample from the `nRF5340 DK Downloads`_ page.
-
-After downloading the zip archive, extract it to a folder of your choice.
-The archive contains the HEX file used to program the sample to your DK.
-
-.. |DK| replace:: nRF5340 DK
-
-.. include:: /gsg_guides/nrf52_gs.rst
- :start-after: program_dk_sample_start
- :end-before: program_dk_sample_end
-
-After you have programmed the sample to the DK, you can connect to it using a terminal emulator and test the functions.
-
-.. _nrf5340_gs_connecting:
-
-Connecting to the sample
-************************
-
-.. include:: /gsg_guides/nrf52_gs.rst
- :start-after: uart_dk_connect_start
- :end-before: uart_dk_connect_end
-
-Once the connection has been established, continue to :ref:`nrf5340_gs_testing`.
-
-.. _nrf5340_gs_testing:
-
-Testing the sample
-******************
-
-You can test the :ref:`peripheral_uart` sample on your |DK| using the `nRF Connect for Mobile`_ application.
-The test requires that you have :ref:`connected to the sample ` and have the connected terminal emulator open.
-
-.. include:: /gsg_guides/nrf52_gs.rst
- :start-after: testing_dk_start
- :end-before: testing_dk_end
-
-Next steps
-**********
-
-You have now completed getting started with the nRF5340 DK.
-See the following links for where to go next:
-
-* :ref:`installation` and :ref:`configuration_and_build` documentation to install the |NCS| and learn more about its development environment.
-* :ref:`ug_nrf5340` documentation for more advanced topics related to the nRF5340 DK.
diff --git a/doc/nrf/images/peripheral_sensor_node_assy.png b/doc/nrf/images/peripheral_sensor_node_assy.png
deleted file mode 100644
index 94e1f0ab3ea2..000000000000
Binary files a/doc/nrf/images/peripheral_sensor_node_assy.png and /dev/null differ
diff --git a/doc/nrf/images/peripheral_sensor_node_shield.png b/doc/nrf/images/peripheral_sensor_node_shield.png
deleted file mode 100644
index c773d338c8b2..000000000000
Binary files a/doc/nrf/images/peripheral_sensor_node_shield.png and /dev/null differ
diff --git a/doc/nrf/includes/sample_board_rows.txt b/doc/nrf/includes/sample_board_rows.txt
index 363622fbbbf0..5b0c3bc1a28e 100644
--- a/doc/nrf/includes/sample_board_rows.txt
+++ b/doc/nrf/includes/sample_board_rows.txt
@@ -226,14 +226,14 @@
| :ref:`nRF54L15 PDK ` | PCA10156 | :ref:`nrf54l15pdk ` | ``nrf54l15pdk/nrf54l15/cpuapp`` |
-.. nrf54l15pdk_nrf54l15_cpuapp_ns
-
-| :ref:`nRF54L15 PDK ` | PCA10156 | :ref:`nrf54l15pdk ` | ``nrf54l15pdk/nrf54l15/cpuapp/ns`` |
-
.. nrf54l15pdk@0.3.0_nrf54l15_cpuapp
| :ref:`nRF54L15 PDK ` | PCA10156 | :ref:`nrf54l15pdk ` | ``nrf54l15pdk@0.3.0/nrf54l15/cpuapp`` |
.. nrf54l15dk_nrf54l15_cpuapp
-| nRF54L15 DK | PCA10156 | :ref:`nrf54l15dk ` | ``nrf54l15dk/nrf54l15/cpuapp`` |
+| :ref:`nRF54L15 DK ` | PCA10156 | :ref:`nrf54l15dk ` | ``nrf54l15dk/nrf54l15/cpuapp`` |
+
+.. nrf54l15dk_nrf54l15_cpuapp_ns
+
+| :ref:`nRF54L15 DK ` | PCA10156 | :ref:`nrf54l15dk ` | ``nrf54l15dk/nrf54l15/cpuapp/ns`` |
diff --git a/doc/nrf/includes/sample_fem_support.txt b/doc/nrf/includes/sample_fem_support.txt
index 877a56a961a7..f7319bf245c8 100644
--- a/doc/nrf/includes/sample_fem_support.txt
+++ b/doc/nrf/includes/sample_fem_support.txt
@@ -1,20 +1,20 @@
You can add support for the nRF21540 front-end module to this sample by using one of the following options, depending on your hardware:
* Build the sample for one board that contains the nRF21540 FEM, such as :ref:`nrf21540dk/nrf52840 `.
-* Manually create a devicetree overlay file that describes how FEM is connected to the nRF5 SoC in your device.
- See :ref:`zephyr:set-devicetree-overlays` for different ways of adding the overlay file.
-* Provide nRF21540 FEM capabilities by using a :ref:`shield `, for example the :ref:`ug_radio_fem_nrf21540ek` shield that is available in the |NCS|.
- In this case, build the project for a board connected to the shield you are using with an appropriate variable included in the build command, for example ``SHIELD=nrf21540ek``.
+* Manually create a devicetree overlay file that describes how the nRF21540 FEM is connected to the SoC.
+ See :ref:`configuring_devicetree` for different ways of adding the overlay file.
+* Provide nRF21540 FEM capabilities by using a :ref:`shield `, for example the :ref:`nRF21540 EK ` shield that is available in the |NCS|.
+ In this case, build the project for a board connected to the shield you are using with an appropriate variable included in the build command, for example ``-DSHIELD=nrf21540ek``.
This variable instructs the build system to append the appropriate devicetree overlay file.
.. tabs::
.. group-tab:: nRF Connect for VS Code
- To build the sample in the nRF Connect for VS Code IDE for an nRF52840 DK with the nRF21540 EK attached, add the shield variable in the build configuration's :guilabel:`Extra CMake arguments` and rebuild the build configuration.
+ To build the sample in the |nRFVSC| for an nRF52840 DK with the nRF21540 EK attached, add the shield variable in the build configuration's :guilabel:`Extra CMake arguments` and rebuild the build configuration.
For example: ``-DSHIELD=nrf21540ek``.
- See `nRF Connect for VS Code extension pack `_ documentation for more information.
+ See `How to work with build configurations`_ in the |nRFVSC| documentation for more information.
.. group-tab:: Command line
@@ -24,7 +24,7 @@ You can add support for the nRF21540 front-end module to this sample by using on
west build -b nrf52840dk/nrf52840 -- -DSHIELD=nrf21540ek
- See :ref:`Programming nRF21540 EK ` for information about how to program when you are using a board with a network core, for example nRF5340 DK.
+ See :ref:`Programming nRF21540 EK ` for information about how to program when you are using a board with a network core, for example the nRF5340 DK.
Each of these options adds the description of the nRF21540 FEM to the devicetree.
See :ref:`ug_radio_fem` for more information about FEM in the |NCS|.
diff --git a/doc/nrf/installation/install_ncs.rst b/doc/nrf/installation/install_ncs.rst
index df80b2de93f6..c5238fb4f1c6 100644
--- a/doc/nrf/installation/install_ncs.rst
+++ b/doc/nrf/installation/install_ncs.rst
@@ -9,7 +9,7 @@ Installing the |NCS|
:local:
:depth: 2
-There are different ways to install the |NCS|, depending on your preferred development environment and the :ref:`toolchain management tool `:
+There are different ways to install the |NCS|, depending on your preferred development environment:
* Using |VSC| and the |nRFVSC| (recommended)
* Using command line and nRF Util
@@ -25,14 +25,12 @@ This includes everything that is required by Zephyr's :ref:`zephyr:getting_start
Update operating system
***********************
-Before you start setting up the toolchain, install available updates for your operating system.
+Before you start setting up the toolchain, install available updates for your :ref:`operating system ` to make sure it supports the |NCS| firmware.
.. include:: ./recommended_versions.rst
:start-after: os_table_start
:end-before: os_table_end
-See :ref:`supported_OS` for more information about the tier definitions.
-
.. _installing_vsc:
.. rst-class:: numbered-step
@@ -40,37 +38,45 @@ See :ref:`supported_OS` for more information about the tier definitions.
Install prerequisites
*********************
-Depending on your preferred development environment, install the following required tools:
+Depending on your preferred development environment, install the following required tools.
+
.. tabs::
.. group-tab:: nRF Connect for Visual Studio Code
- * The latest version of the :ref:`requirements_clt` package.
- Download it from the `nRF Command Line Tools`_ page.
- * The |jlink_ver| of :ref:`SEGGER J-Link `.
- Download it from the `J-Link Software and Documentation Pack`_ page.
- * The latest version of |VSC| for your operating system from the `Visual Studio Code download page`_.
- * In |VSC|, the latest version of the `nRF Connect for VS Code Extension Pack`_.
- * Linux users: `nrf-udev`_ module with udev rules required to access USB ports on Nordic Semiconductor devices and program the firmware.
+ * All operating systems:
+
+ * The latest version of the :ref:`requirements_clt` package.
+ Check :ref:`operating system versions that support this tool ` and download the installer from the `nRF Command Line Tools`_ page.
+ * The |jlink_ver_vsc| of :ref:`SEGGER J-Link `.
+ Download it from the `J-Link Software and Documentation Pack`_ page.
+ * The latest version of |VSC| for your operating system from the `Visual Studio Code download page`_.
+ * In |VSC|, the latest version of the `nRF Connect for VS Code Extension Pack`_.
+
+ * Additionally for Linux users: the `nrf-udev`_ module with udev rules required to access USB ports on Nordic Semiconductor devices and program the firmware.
.. group-tab:: Command line
- * The latest version of `nRF Util development tool`_, a unified command line utility for Nordic products.
+ * All operating systems:
+
+ * The latest version of nRF Util, a unified command-line utility for Nordic Semiconductor products.
+ Check :ref:`operating system versions that support this tool ` and download the installer from the `nRF Util development tool`_ page.
- .. note::
- After downloading the nRF Util executable, move it to a directory that is in the system :envvar:`PATH`.
- On macOS and Linux, the downloaded file also needs to be given execute permission by typing `chmod +x nrfutil` or by checking the checkbox in the file properties.
+ .. note::
+ After downloading the nRF Util executable, move it to a directory that is in the system :envvar:`PATH`.
+ On macOS and Linux, the downloaded file also needs to be given execute permission by typing `chmod +x nrfutil` or by checking the checkbox in the file properties.
- * The latest version of the :ref:`requirements_clt` package.
- Download it from the `nRF Command Line Tools`_ page.
+ * The latest version of the :ref:`requirements_clt` package.
+ Check :ref:`operating system versions that support this tool ` and download the installer from the `nRF Command Line Tools`_ page.
- .. note::
- After downloading and installing the tools, add nrfjprog to the system :envvar:`PATH` in the environment variables.
+ .. note::
+ After downloading and installing the tools, add nrfjprog to the system :envvar:`PATH` in the environment variables.
- * The latest version of :ref:`SEGGER J-Link `.
- Download it from the `J-Link Software and Documentation Pack`_ page.
- * Linux users: `nrf-udev`_ module with udev rules required to access USB ports on Nordic Semiconductor devices and program the firmware.
+ * The |jlink_ver| of :ref:`SEGGER J-Link `.
+ Download it from the `J-Link Software and Documentation Pack`_ page.
+
+ * Additionally for Linux users: the `nrf-udev`_ module with udev rules required to access USB ports on Nordic Semiconductor devices and program the firmware.
.. _gs_installing_toolchain:
.. _gs_installing_tools:
@@ -83,7 +89,8 @@ Install the |NCS| toolchain
The |NCS| :term:`toolchain` includes the Zephyr SDK and then adds tools and modules required to build |NCS| samples and applications on top of it.
These include the :ref:`required tools `, the :ref:`Python dependencies `, and the :ref:`GN tool ` for creating :ref:`ug_matter` applications.
-When you first install the |NCS|, it is recommended to install the latest released versions of the SDK and the toolchain.
+.. note::
+ When you first install the |NCS|, it is recommended to install the latest released, stable versions of the SDK and the toolchain.
Depending on your preferred development environment, complete the following steps:
@@ -186,7 +193,7 @@ Simply put, you can work with the following versions of the |NCS|:
- `sdk-nrf`_ repository
.. note::
- Unless you are familiar with the :ref:`development process `, you should always work with a specific release of the |NCS|.
+ Unless you are familiar with the :ref:`development process `, you should always work with a specific, stable release of the |NCS|.
For more information about the repository and development model, see the :ref:`dm_code_base` page.
@@ -611,21 +618,21 @@ To install the |NCS| system-wide, complete the following steps:
Installation with Toolchain Manager
***********************************
-.. note::
+Toolchain Manager is a SDK and toolchain installer for the |NCS|.
+It is available from `nRF Connect for Desktop`_, a cross-platform tool that provides different development applications for the |NCS| and Nordic Semiconductor products.
+Both Toolchain Manager and nRF Connect for Desktop are available for Windows, Linux, and macOS.
- The Toolchain Manager installation is recommended only when using the nRF54H20 DK with the |NCS| v2.7.0.
- When using any other DK, the Toolchain Manager installation is recommended for the |NCS| v1.9.x and earlier versions.
+.. note::
+ |toolchain_management_ncs_versions|
.. toggle::
- Toolchain Manager is a tool available from `nRF Connect for Desktop`_, a cross-platform tool that provides different applications that simplify installing the |NCS|.
- Both the tool and the application are available for Windows, Linux, and macOS.
-
To install the toolchain and the SDK using the Toolchain Manager app, complete the following steps:
1. Install Toolchain Manager:
- a. `Download nRF Connect for Desktop`_ for your operating system.
+ a. Check :ref:`operating system versions that support this tool `.
+ #. `Download nRF Connect for Desktop`_ for your operating system.
#. Install and run the tool on your machine.
#. In the **APPS** section, click :guilabel:`Install` next to Toolchain Manager.
diff --git a/doc/nrf/installation/recommended_versions.rst b/doc/nrf/installation/recommended_versions.rst
index 1a94b9f27de8..f8e192e492c0 100644
--- a/doc/nrf/installation/recommended_versions.rst
+++ b/doc/nrf/installation/recommended_versions.rst
@@ -14,83 +14,35 @@ All of these requirements are installed when you :ref:`install the nRF Connect S
.. _gs_supported_OS:
.. _supported_OS:
-Supported operating systems
-***************************
+Supported operating systems (firmware)
+**************************************
The |NCS| supports Microsoft Windows, Linux, and macOS for development.
-The following table shows the operating system versions that support the |NCS| tools:
+
+The following table lists the support levels for the |NCS| firmware.
+For OS support for additional software tools from Nordic Semiconductor, see :ref:`the table at the bottom of the page `.
.. os_table_start
.. list-table::
- :header-rows: 1
-
- * - Operating System
- - x86
- - x64
- - ARM64
- * - `Windows 11`_
- - Tier 3
- - Tier 3
- - Not supported
- * - `Windows 10`_
- - Tier 3
- - Tier 1
- - Not supported
- * - `Linux - Ubuntu 22.04 LTS`_
- - Not supported
- - Tier 1
- - Not supported
- * - `Linux - Ubuntu 20.04 LTS`_
- - Not supported
- - Tier 2
- - Not supported
- * - `macOS 14`_
- - Not applicable
- - Tier 3
- - Tier 3
- * - `macOS 13`_
- - Not applicable
- - Tier 1
- - Tier 1
- * - `macOS 12`_
- - Not applicable
- - Tier 3
- - Tier 3
- * - `macOS 11`_
- - Not applicable
- - Tier 2
- - Tier 2
- * - `macOS 10.15`_
- - Not applicable
- - Tier 3
- - Not supported
+ :header-rows: 1
+
+ * - Operating System
+ - x64
+ - ARM64
+ * - `Windows 10`_
+ - Built and tested with :ref:`Twister `.
+ - Not supported.
+ * - `Linux - Ubuntu 22.04 LTS`_
+ - Built and tested with :ref:`Twister `. Comprehensive testing with Nordic Semiconductor hardware.
+ - Not supported.
+ * - `macOS 14`_
+ - Built and tested with :ref:`Twister `.
+ - Only toolchain provided.
.. os_table_end
-Tier definitions
- The table uses several tier definitions to categorize the level of operating system support:
-
- .. toggle:: Support levels
-
- Tier 1
- The |NCS| tools will always work.
- The automated build and automated testing ensure that the |NCS| tools build and successfully complete tests after each change.
-
- Tier 2
- The |NCS| tools will always build.
- The automated build ensures that the |NCS| tools build successfully after each change.
- There is no guarantee that a build will work because the automation tests do not always run.
-
- Tier 3
- The |NCS| tools are supported by design, but are not built or tested after each change.
- Therefore, the application may or may not work.
-
- Not supported
- The |NCS| tools do not work, but it may be supported in the future.
-
- Not applicable
- The specified architecture is not supported for the respective operating system.
+For building, Twister uses definitions in :file:`sample.yml` for the default configuration for the given sample or application.
Zephyr features only available on Linux
There are some Zephyr features that are currently only available on Linux, including:
@@ -325,17 +277,6 @@ They can all be installed using the ``doc/requirements.txt`` file using ``pip``.
* - west
- :ncs-tool-version:`WEST_VERSION`
-.. _requirements_clt:
-
-nRF Command Line Tools
-**********************
-
-`nRF Command Line Tools`_ is a package of tools used for development, programming, and debugging of Nordic Semiconductor's nRF51, nRF52, nRF53, nRF54H, and nRF91 Series devices.
-Among others, this package includes the nrfjprog executable and library, which the west command uses by default to program the development kits.
-For more information on nrfjprog, see `Programming SoCs with nrfjprog`_.
-
-It is recommended to use the latest version of the package when you :ref:`installing_vsc`.
-
.. _requirements_jlink:
J-Link Software and Documentation Pack
@@ -347,13 +288,95 @@ Among others, this package includes the J-Link RTT Viewer, which can be used for
It is recommended to use the |jlink_ver| of the package when you :ref:`installing_vsc`.
.. _toolchain_management_tools:
+.. _additional_nordic_sw_tools:
-|NCS| toolchain management tools
-********************************
+Additional software tools
+*************************
-Nordic Semiconductor provides proprietary |NCS| toolchain management tools that streamline the process of installing the |NCS| and its toolchain.
+Nordic Semiconductor provides proprietary tools for working with Nordic Semiconductor devices, as well as different |NCS| toolchain management tools that streamline the process of installing the |NCS| and its toolchain.
Depending on your development environment, you need to install only some of them when you :ref:`installing_vsc`.
+.. _additional_nordic_sw_tools_os_support:
+
+Supported operating systems (proprietary tools)
+===============================================
+
+The following table shows the operating system versions that support the additional software tools from Nordic Semiconductor.
+For firmware OS support, see :ref:`the table at the top of the page `.
+
+.. list-table::
+ :header-rows: 1
+
+ * - Operating System
+ - x86
+ - x64
+ - ARM64
+ * - `Windows 11`_
+ - Tier 3
+ - Tier 3
+ - Not supported
+ * - `Windows 10`_
+ - Tier 3
+ - Tier 1
+ - Not supported
+ * - `Linux - Ubuntu 24.04 LTS`_
+ - Not supported
+ - Tier 2
+ - Not supported
+ * - `Linux - Ubuntu 22.04 LTS`_
+ - Not supported
+ - Tier 1
+ - Not supported
+ * - `Linux - Ubuntu 20.04 LTS`_
+ - Not supported
+ - Tier 2
+ - Not supported
+ * - `macOS 15`_
+ - n/a
+ - Tier 3
+ - Tier 3
+ * - `macOS 14`_
+ - n/a
+ - Tier 3
+ - Tier 3
+ * - `macOS 13`_
+ - n/a
+ - Tier 1
+ - Tier 1
+
+Tier definitions
+ .. toggle:: Support levels
+
+ Tier 1
+ The toolchain management tools will always work.
+ The automated build and automated testing ensure that the |NCS| tools build and successfully complete tests after each change.
+
+ Tier 2
+ The toolchain management tools will always build.
+ The automated build ensures that the |NCS| tools build successfully after each change.
+ There is no guarantee that a build will work because the automation tests do not always run.
+
+ Tier 3
+ The toolchain management tools are supported by design, but are not built or tested after each change.
+ Therefore, the application may or may not work.
+
+ Not supported
+ The toolchain management tools do not work, but it may be supported in the future.
+
+ Not applicable
+ The specified architecture is not supported for the respective operating system.
+
+.. _requirements_clt:
+
+nRF Command Line Tools
+======================
+
+`nRF Command Line Tools`_ is a package of tools used for development, programming, and debugging of Nordic Semiconductor's nRF51, nRF52, nRF53, nRF54H, and nRF91 Series devices.
+Among others, this package includes the nrfjprog executable and library, which the west command uses by default to program the development kits.
+For more information on nrfjprog, see `Programming SoCs with nrfjprog`_.
+
+It is recommended to use the latest version of the package when you :ref:`installing_vsc`.
+
|nRFVSC|
========
@@ -379,8 +402,19 @@ nRF Util
The `nRF Util development tool`_ is a unified command line utility for Nordic products.
Its functionality is provided through installable and upgradeable commands that are served on a central package registry on the Internet.
-The utility follows its own release cycle.
+The utility follows its own release cycle and has its own `operating system requirements `_.
Use the latest available release for development.
nRF Util provides |NCS| toolchain packages for each |NCS| release through the ``toolchain-manager`` command.
See the :ref:`install_ncs` page for information about how to use this command.
+
+.. _requirements_ncd:
+
+nRF Connect for Desktop's Toolchain Manager
+===========================================
+
+`nRF Connect for Desktop`_ is a cross-platform tool that provides different applications that simplify working the |NCS| and Nordic Semiconductor products.
+One of those tools is the :ref:`Toolchain Manager `, which allows you to install the toolchain and the SDK.
+
+.. note::
+ |toolchain_management_ncs_versions|
diff --git a/doc/nrf/libraries/dfu/dfu_multi_image.rst b/doc/nrf/libraries/dfu/dfu_multi_image.rst
index 5cc2d3d79c28..90aa56751061 100644
--- a/doc/nrf/libraries/dfu/dfu_multi_image.rst
+++ b/doc/nrf/libraries/dfu/dfu_multi_image.rst
@@ -26,17 +26,51 @@ To configure the maximum number of images that the DFU multi-image library is ab
To enable building the DFU multi-image package that contains commonly used update images, such as the application core firmware, the network core firmware, or MCUboot images, set the ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_BUILD`` Kconfig option.
The following options control which images are included:
-+-------------------------------------------------------------------+---------------------------------------+
-| Kconfig | Description |
-+===================================================================+=======================================+
-| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_APP`` | Include application update. |
-+-------------------------------------------------------------------+---------------------------------------+
-| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_NET`` | Include network core image update. |
-+-------------------------------------------------------------------+---------------------------------------+
-| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_MCUBOOT`` | Include MCUboot update. |
-+-------------------------------------------------------------------+---------------------------------------+
-| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_WIFI_FW_PATCH`` | Include nRF700x WiFi firmware patches.|
-+-------------------------------------------------------------------+---------------------------------------+
++-------------------------------------------------------------------+----------------------------------------+
+| Kconfig | Description |
++===================================================================+========================================+
+| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_APP`` | Include application update. |
++-------------------------------------------------------------------+----------------------------------------+
+| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_NET`` | Include network core image update. |
++-------------------------------------------------------------------+----------------------------------------+
+| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_MCUBOOT`` | Include MCUboot update. |
++-------------------------------------------------------------------+----------------------------------------+
+| ``SB_CONFIG_DFU_MULTI_IMAGE_PACKAGE_WIFI_FW_PATCH`` | Include nRF700x Wi-Fi firmware patches.|
++-------------------------------------------------------------------+----------------------------------------+
+| ``SB_CONFIG_SUIT_MULTI_IMAGE_PACKAGE_BUILD`` | Include SUIT envelope and cache images.|
++-------------------------------------------------------------------+----------------------------------------+
+
+.. _lib_dfu_multi_image_suit_multi_image_package:
+
+SUIT multi-image package
+========================
+
+The DFU multi-image library supports building a SUIT multi-image package that includes a SUIT envelope and cache images.
+The SUIT envelope is always included in the package as image 0, while SUIT cache images are included as subsequent images starting from the image 2.
+
+The SUIT multi-image processing requires the SUIT system to support cache processing.
+To enable it, set one of the following Kconfig options to ``y``:
+
+* :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_FULL`
+* :kconfig:option:`SUIT_DFU_CANDIDATE_PROCESSING_PUSH_TO_CACHE`
+
+The build system merges all application images into a single :file:`dfu_cache_partition_1.bin` partition file and places its content into the multi-image image 2.
+This allows all application images to be stored in a single DFU multi-image, as they will be processed by SUIT.
+
+The :kconfig:option:`SB_CONFIG_SUIT_MULTI_IMAGE_PACKAGE_BUILD` Kconfig option enables building the SUIT multi-image package.
+As a result, the multi-image package will contain:
+
+* Image 0:
+ - SUIT envelope that contains manifests only.
+
+* Image 2:
+ - Application core image.
+ - Radio core image, if applicable.
+ - Additional images, if applicable.
+
+You can add more data to be processed by SUIT to the following images starting from image 3.
+This operation will require an additional binary file and the proper :file:`dfu_cache_partition_X` definition in a devicetree configuration file, where ``X`` is the image number minus 1.
+So for the image 3, you would need :file:`dfu_cache_partition_2`.
Dependencies
************
diff --git a/doc/nrf/libraries/dfu/dfu_target.rst b/doc/nrf/libraries/dfu/dfu_target.rst
index dad684e2dcfc..3500445e2fb1 100644
--- a/doc/nrf/libraries/dfu/dfu_target.rst
+++ b/doc/nrf/libraries/dfu/dfu_target.rst
@@ -48,6 +48,7 @@ The DFU target library supports the following types of firmware upgrades:
* MCUboot-style upgrades
* Modem delta upgrades
* Full modem firmware upgrades
+* SUIT-style upgrades
MCUboot-style upgrades
----------------------
@@ -103,6 +104,69 @@ This DFU target downloads the serialized modem firmware to an external flash mem
Once the modem firmware has been downloaded, the application should use :ref:`lib_fmfu_fdev` to write the firmware to the modem.
The DFU target library does not perform the upgrade and calling the :c:func:`dfu_target_schedule_update` function has no effect.
+.. _lib_dfu_target_suit_style_update:
+
+SUIT-style upgrades
+-------------------
+
+SUIT-style firmware upgrades can be used for :ref:`ug_nrf54h20_suit_dfu`.
+Depending on the image number and the used SUIT system configuration, this type of DFU writes the data provided to the :c:func:`dfu_target_write` function into the following partitions:
+
+* Image 0: ``dfu_partition``
+* Image 1: ``dfu_cache_partition_0`` - always located just after the ``dfu_partition`` partition.
+* Image 2..n: ``dfu_cache_partition_n`` - located in internal or external memory.
+
+Before calling the :c:func:`dfu_target_init` and :c:func:`dfu_target_write` functions, the application must call the :c:func:`dfu_target_suit_set_buf` function to allocate the buffer used during the firmware update process.
+The buffer size must be at least the size of the largest chunk that will be downloaded at a single time.
+The buffer will be used for processing all images, so there is no need to allocate a new buffer for each image.
+
+You can upgrade your device in several ways depending on your SUIT system configuration:
+
+.. tabs::
+
+ .. tab:: SUIT single image processing
+
+ SUIT minimal processing is used for devices that do not have a cache partition.
+ To enable it, set the :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_MINIMAL` Kconfig option to ``y``.
+
+ In this approach, the SUIT envelope contains the manifests and the firmware image.
+ The SUIT envelope is stored in the ``dfu_partition`` partition.
+ After that, the ``dfu_cache_partition_0`` partition will be created automatically just after the ``dfu_partition`` partition and will contain the firmware.
+
+ .. tab:: SUIT cache processing
+
+ The SUIT cache processing requires one of the following SUIT system configurations set to ``y``:
+
+ * :kconfig:option:`CONFIG_SUIT_DFU_CANDIDATE_PROCESSING_FULL`
+ * :kconfig:option:`SUIT_DFU_CANDIDATE_PROCESSING_PUSH_TO_CACHE`
+
+ With one of these options set, the DFU target SUIT library can process the SUIT envelope and cache images.
+ In this approach, the SUIT envelope contains the manifests only, while the firmware is stored in the cache images.
+
+ You can disable cache processing by setting the :kconfig:option:`DFU_TARGET_SUIT_CACHE_PROCESSING` Kconfig option to ``n``.
+
+ When this approach is used, the SUIT manifests will be stored in the ``dfu_partition`` partition.
+ The firmware will be stored in the ``dfu_cache_partition_1`` partition.
+ This approach can be used for devices that have defined the ``dfu_cache_partition_1`` partition in the internal or external flash memory.
+ The :ref:`lib_dfu_multi_image_suit_multi_image_package` uses this approach for multi-image updates.
+
+ To read more about SUIT cache processing, see the :ref:`ug_nrf54h20_suit_external_memory` guide.
+
+Make sure the application calls the :c:func:`dfu_target_init` function for image 0 first and then downloads the SUIT envelope.
+When the single image data transfer is completed, the application using the DFU target library must call the :c:func:`dfu_target_done` function for each subsequent image.
+After that, the application can call the :c:func:`dfu_target_init` function for another image index.
+
+When all image data transfers are completed, the application using the DFU target library must do the following:
+
+1. Call the :c:func:`dfu_target_schedule_update` function to inform SUIT that the manifests can be processed.
+2. Automatically reboot the device by calling :c:func:`dfu_target_suit_reboot` with a defined delay.
+ You can set the delay before rebooting the device by configuring the :kconfig:option:`CONFIG_DFU_TARGET_SUIT_REBOOT_DELAY` Kconfig option.
+ Alternatively, you can skip this step and reboot the device manually.
+
+.. note::
+ The application must schedule the upgrade of all images at once using the :c:func:`dfu_target_schedule_update` function.
+ During this operation, the manifests stored in the ``dfu_partition`` partition will be processed.
+
Configuration
*************
diff --git a/doc/nrf/libraries/modem/lte_lc.rst b/doc/nrf/libraries/modem/lte_lc.rst
index b821dc1fdc29..5ed1420bf1c0 100644
--- a/doc/nrf/libraries/modem/lte_lc.rst
+++ b/doc/nrf/libraries/modem/lte_lc.rst
@@ -184,40 +184,6 @@ To enable modem sleep and TAU pre-warning notifications, enable the following op
For additional configurations related to these features, see the API documentation.
-Functional mode changes callback
-================================
-
-The library allows the application to define compile-time callbacks to receive the modem's functional mode changes.
-These callbacks allow any part of the application to perform certain operations when the modem enters or re-enters a certain functional mode using the library :c:func:`lte_lc_func_mode_set` API.
-For example, one kind of operation that the application or a library may need to perform and repeat, whenever the modem enters a certain functional mode is the subscription to AT notifications.
-The application can set up a callback for modem`s functional mode changes using the :c:macro:`LTE_LC_ON_CFUN` macro.
-
-.. important::
- When the :c:macro:`LTE_LC_ON_CFUN` macro is used, the application must not call :c:func:`nrf_modem_at_cfun_handler_set` as that will override the handler set by the modem library integration layer.
-
-.. note::
- The CFUN callback is not supported with :c:func:`nrf_modem_at_cmd_async`.
-
-The following code snippet shows how to use the :c:macro:`LTE_LC_ON_CFUN` macro:
-
-.. code-block:: c
-
- /* Define a callback */
- LTE_LC_ON_CFUN(cfun_hook, on_cfun, NULL);
-
- /* Callback implementation */
- static void on_cfun(enum lte_lc_func_mode mode, void *context)
- {
- printk("Functional mode changed to %d\n", mode);
- }
-
- int main(void)
- {
- /* Change functional mode using the LTE link control API */
- lte_lc_func_mode_set(LTE_LC_FUNC_MODE_NORMAL);
- return 0;
- }
-
Dependencies
************
diff --git a/doc/nrf/libraries/modem/modem_key_mgmt.rst b/doc/nrf/libraries/modem/modem_key_mgmt.rst
index 2e950dde45cf..2dd53abcbdd2 100644
--- a/doc/nrf/libraries/modem/modem_key_mgmt.rst
+++ b/doc/nrf/libraries/modem/modem_key_mgmt.rst
@@ -67,11 +67,12 @@ The following code snippet shows how to write a CA chain certificate to the mode
.. code-block:: c
int err;
+ nrf_sec_tag_t sec_tag = 42;
static const char cert[] = {
#include "YourCert.pem.inc"
};
- err = modem_key_mgmt_write(, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, sizeof(cert));
+ err = modem_key_mgmt_write(sec_tag, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, sizeof(cert));
if (err) {
printk("Failed to provision certificate, err %d\n", err);
}
@@ -81,9 +82,10 @@ The following code snippet shows how to check if a CA chain certificate exists i
.. code-block:: c
int err;
+ nrf_sec_tag_t sec_tag = 42;
bool exists;
- err = modem_key_mgmt_exists(, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, &exists);
+ err = modem_key_mgmt_exists(sec_tag, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, &exists);
if (err) {
printk("Failed to check if credential exists\n");
return;
@@ -100,11 +102,12 @@ The following code snippet shows how to check if the CA chain certificate stored
.. code-block:: c
int mismatch;
+ nrf_sec_tag_t sec_tag = 42;
static const char cert[] = {
#include "YourCert.pem.inc"
};
- mismatch = modem_key_mgmt_cmp(, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, sizeof(cert));
+ mismatch = modem_key_mgmt_cmp(sec_tag, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, sizeof(cert));
if (mismatch) {
printk("Certificate mismatch\n");
} else {
@@ -116,12 +119,13 @@ The following code snippet shows how to read a CA chain certificate stored in th
.. code-block:: c
int err;
+ nrf_sec_tag_t sec_tag = 42;
char cert[CERT_SIZE];
size_t len;
len = sizeof(cert);
- err = modem_key_mgmt_read(, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, &len);
+ err = modem_key_mgmt_read(sec_tag, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN, cert, &len);
if (err) {
printk("Failed to read certificate\n");
}
@@ -131,12 +135,25 @@ The following code snippet shows how to delete a CA chain certificate stored in
.. code-block:: c
int err;
+ nrf_sec_tag_t sec_tag = 42;
- err = modem_key_mgmt_delete(, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN);
+ err = modem_key_mgmt_delete(sec_tag, MODEM_KEY_MGMT_CRED_TYPE_CA_CHAIN);
if (err) {
printk("Failed to delete existing certificate, err %d\n", err);
}
+The following code snippet shows how to delete all credentials associated with a security tag in the modem:
+
+.. code-block:: c
+
+ int err;
+ nrf_sec_tag_t sec_tag = 42;
+
+ err = modem_key_mgmt_clear(sec_tag);
+ if (err) {
+ printk("Failed to clear credentials on sectag, err %d\n", err);
+ }
+
API documentation
*****************
diff --git a/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_trace.rst b/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_trace.rst
index 3cb8c0ebcee9..75327e7a4df6 100644
--- a/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_trace.rst
+++ b/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_trace.rst
@@ -7,14 +7,17 @@ Modem trace module
:local:
:depth: 2
-To enable the tracing functionality, enable the :kconfig:option:`CONFIG_NRF_MODEM_LIB_TRACE` Kconfig in your project configuration.
The module is implemented in :file:`nrf/lib/nrf_modem_lib/nrf_modem_lib_trace.c` and consists of a thread that initializes, deinitializes, and forwards modem traces to a backend.
The trace backend can be selected in one of the following ways:
* Adding the ``nrf91-modem-trace-uart`` snippet to send modem traces over UART.
See :ref:`nrf91_modem_trace_uart_snippet` for more details.
-* Enabling the :kconfig:option:`CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_RTT` Kconfig option to send modem traces over SEGGER RTT.
-* Enabling the :kconfig:option:`CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_FLASH` Kconfig option to write modem traces to external flash.
+* Adding the ``nrf91-modem-trace-rtt`` snippet to send modem traces over RTT.
+ See :ref:`nrf91_modem_trace_rtt_snippet` for more details.
+* Adding the ``nrf91-modem-trace-ext-flash`` snippet to store modem traces in external flash.
+ See :ref:`nrf91_modem_trace_ext_flash_snippet` for more details.
+* Adding the ``nrf91-modem-trace-ram`` snippet to store modem traces in RAM.
+ See :ref:`nrf91_modem_trace_ram_snippet` for more details.
To reduce the amount of trace data sent from the modem, a different trace level can be selected.
Complete the following steps to configure the modem trace level at compile time:
diff --git a/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_wrapper.rst b/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_wrapper.rst
index 1331ebcc9ab9..eda3866a08d1 100644
--- a/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_wrapper.rst
+++ b/doc/nrf/libraries/modem/nrf_modem_lib/nrf_modem_lib_wrapper.rst
@@ -40,7 +40,7 @@ The result of the initialization and the callback context are provided to these
The callback can be used to perform modem and library configurations that require the modem to be turned on in offline mode.
The callback cannot be used to change the modem's functional mode.
Calls to :c:func:`lte_lc_connect` and ``CFUN`` AT calls are not allowed, and must be done after :c:func:`nrf_modem_lib_init` has returned.
- If a library needs to perform operations after the link is up, it can use the :ref:`lte_lc_readme` and subscribe to a :c:macro:`LTE_LC_ON_CFUN` callback.
+ If a library needs to perform operations after the link is up, it can use the :c:macro:`NRF_MODEM_LIB_ON_CFUN` callback.
Callbacks for the macro :c:macro:`NRF_MODEM_LIB_ON_INIT` must have the signature ``void callback_name(int ret, void *ctx)``, where ``ret`` is the result of the initialization and ``ctx`` is the context passed to the macro.
The callbacks registered using the :c:macro:`NRF_MODEM_LIB_ON_SHUTDOWN` macro are executed before the library is shut down.
diff --git a/doc/nrf/libraries/modem/uicc_lwm2m.rst b/doc/nrf/libraries/modem/uicc_lwm2m.rst
new file mode 100644
index 000000000000..0056c4f7ae4a
--- /dev/null
+++ b/doc/nrf/libraries/modem/uicc_lwm2m.rst
@@ -0,0 +1,28 @@
+.. _lib_uicc_lwm2m:
+
+UICC LwM2M
+##########
+
+.. contents::
+ :local:
+ :depth: 2
+
+The UICC LwM2M library provides functionality to read LwM2M bootstrap configuration from SIM.
+
+Configuration
+*************
+
+To enable the UICC LwM2M library, configure the :kconfig:option:`CONFIG_UICC_LWM2M` Kconfig option.
+
+Dependencies
+************
+
+The UICC LwM2M library requires the :ref:`nrfxlib:nrf_modem` library to use AT commands.
+
+API documentation
+*****************
+
+| Header file: :file:`include/modem/uicc_lwm2m.h`
+| Source file: :file:`lib/uicc_lwm2m/uicc_lwm2m.c`
+
+.. doxygengroup:: uicc_lwm2m
diff --git a/doc/nrf/libraries/networking/nrf_cloud.rst b/doc/nrf/libraries/networking/nrf_cloud.rst
index bfeb2e07a101..a308c68daee3 100644
--- a/doc/nrf/libraries/networking/nrf_cloud.rst
+++ b/doc/nrf/libraries/networking/nrf_cloud.rst
@@ -154,6 +154,7 @@ Firmware over-the-air (FOTA) updates
The nRF Cloud library supports FOTA updates for your nRF91 Series device.
The :kconfig:option:`CONFIG_NRF_CLOUD_FOTA` Kconfig option is enabled by default when :kconfig:option:`CONFIG_NRF_CLOUD_MQTT` is set.
This enables FOTA functionality in the application.
+FOTA support for applications using CoAP or REST is enabled with the :kconfig:option:`CONFIG_NRF_CLOUD_FOTA_POLL` Kconfig option.
nRF Cloud FOTA enables the following additional features and libraries:
@@ -181,6 +182,7 @@ Following are the supported FOTA types:
Consider the power and network costs before deploying full modem FOTA updates.
* ``"MODEM"`` - :ref:`Delta modem FOTA ` applies incremental changes between specific versions of the modem firmware.
Delta modem updates are much smaller in size and do not require external memory.
+* ``"SMP"`` - Updates an auxiliary device's firmware using the :ref:`Simple Management Protocol `.
For example, a device that supports all the FOTA types writes the following data into the device shadow:
diff --git a/doc/nrf/libraries/others/date_time.rst b/doc/nrf/libraries/others/date_time.rst
index 51351395cbb9..456715cd6de9 100644
--- a/doc/nrf/libraries/others/date_time.rst
+++ b/doc/nrf/libraries/others/date_time.rst
@@ -57,6 +57,14 @@ See the API documentation for more information on these functions.
If an application has time-dependent operations immediately after connecting to the LTE network, it should wait for a confirmation indicating that time has been updated.
If the :kconfig:option:`CONFIG_DATE_TIME_AUTO_UPDATE` option is not set, the first date-time update cycle (after boot) does not occur until the time set by the :kconfig:option:`CONFIG_DATE_TIME_UPDATE_INTERVAL_SECONDS` option has elapsed.
+.. note::
+
+ Exceptions to the regular date-time update interval set by the :kconfig:option:`CONFIG_DATE_TIME_UPDATE_INTERVAL_SECONDS` Kconfig option occur when
+ the :c:func:`date_time_update_async` function is called and a new date-time update is triggered and scheduled.
+ Either retry or regular update interval is used depending on the outcome of the date-time update procedure.
+ Date-time update from modem through an ``AT%XTIME`` notification,
+ or from the client through the :c:func:`date_time_set` function does not disturb the regular update interval.
+
Configuration
*************
diff --git a/doc/nrf/libraries/others/images/nrf_compression_image.png b/doc/nrf/libraries/others/images/nrf_compression_image.png
new file mode 100644
index 000000000000..7e088942cbfb
Binary files /dev/null and b/doc/nrf/libraries/others/images/nrf_compression_image.png differ
diff --git a/doc/nrf/libraries/others/nrf_compression.rst b/doc/nrf/libraries/others/nrf_compression.rst
new file mode 100644
index 000000000000..08349ceac2a3
--- /dev/null
+++ b/doc/nrf/libraries/others/nrf_compression.rst
@@ -0,0 +1,184 @@
+.. _nrf_compression:
+
+nRF Compression
+###############
+
+.. contents::
+ :local:
+ :depth: 2
+
+The nRF Compression library in the |NCS| provides a streamlined API for data compression and decompression on devices.
+
+.. _nrf_compression_config:
+
+Configuration
+*************
+
+You can enable different compression types by configuring the appropriate Kconfig options.
+See :ref:`configuring_kconfig` for information about the different ways you can set Kconfig options in the |NCS|.
+
+To enable this library, set the :kconfig:option:`CONFIG_NRF_COMPRESS` Kconfig option.
+For decompression, set the :kconfig:option:`CONFIG_NRF_COMPRESS_DECOMPRESSION` Kconfig option.
+
+.. note::
+ The compression functionality is not currently supported.
+
+.. _nrf_compression_config_compression_types:
+
+Compression types configuration
+===============================
+
+You can use the available compression types by enabling their respective Kconfig options:
+
+.. list-table::
+ :header-rows: 1
+
+ * - Name
+ - Kconfig options
+ - Implementation details
+ * - LZMA version 1
+ - :kconfig:option:`CONFIG_NRF_COMPRESS_LZMA` and :kconfig:option:`CONFIG_NRF_COMPRESS_LZMA_VERSION_LZMA1`
+ - | Exclusive: cannot be enabled with LZMA version 2.
+ | Fixed probability size of 14272 bytes.
+ | Fixed dictionary size of 128 KiB.
+ * - LZMA version 2
+ - :kconfig:option:`CONFIG_NRF_COMPRESS_LZMA` and :kconfig:option:`CONFIG_NRF_COMPRESS_LZMA_VERSION_LZMA2`
+ - | Exclusive: cannot be enabled with LZMA version 1.
+ | Fixed probability size of 14272 bytes.
+ | Fixed dictionary size of 128 KiB.
+ * - ARM thumb filter
+ - :kconfig:option:`NRF_COMPRESS_ARM_THUMB`
+ - ---
+
+Memory allocation configuration options
+=======================================
+
+Compression and decompression can use a significant amount of memory.
+To manage this, use the following Kconfig options to choose between static and dynamic (malloc) allocations from the system heap:
+
+:kconfig:option:`CONFIG_NRF_COMPRESS_MEMORY_TYPE_STATIC`
+ This is the default option that uses static buffers, ensuring their availability but preventing other uses of the memory.
+
+:kconfig:option:`CONFIG_NRF_COMPRESS_MEMORY_TYPE_MALLOC`
+ The option uses dynamic memory allocation, requiring the heap to have sufficient contiguous free memory for buffer allocation upon initializing the compression type.
+ This allows other parts of the application to utilize the memory when the compression system is not in use.
+
+Other configuration options
+===========================
+
+:kconfig:option:`CONFIG_NRF_COMPRESS_CHUNK_SIZE`
+ This option specifies the chunk size, which is the maximum amount of data that can be input to a compression library.
+ It determines the size of buffers that are statically or dynamically allocated, unless the compression type has a different memory allocation due to how it works.
+
+:kconfig:option:`CONFIG_NRF_COMPRESS_CLEANUP`
+ This option enables memory buffer cleanup upon calling the :c:func:`nrf_compress_deinit_func_t` function.
+ It is performed to prevent possible leakage of sensitive data.
+ If data security is not a concern, this option can be disabled to reduce flash usage.
+
+Samples using the library
+*************************
+
+The :ref:`nrf_compression_mcuboot_compressed_update` sample uses this library.
+
+Application integration
+***********************
+
+The following sections describe how to integrate the nRF Compression library in your application.
+
+Implementing a compression type
+===============================
+
+You can implement custom compression types by using a shim over the compression source files.
+
+.. note::
+
+ Currently, due to the large memory requirements when compressing, the subsystem only supports data decompression.
+
+.. note::
+
+ The function definitions include ``inst`` as the first argument, which is reserved for future use.
+ It should be set to ``NULL`` when initializing the compression library.
+
+Initialization and deinitialization
+===================================
+
+The following initialization and deinitialization functions are necessary for managing the lifecycle of the compression library within your application or module:
+
+* :c:func:`nrf_compress_init_func_t` - The ``init`` function is used when an application or module initiates the use of the compression library.
+ It sets up the required buffers and reset all internal variables to their default values.
+* :c:func:`nrf_compress_deinit_func_t` - The ``deinit`` function is used for cleaning up and releasing the buffers.
+ If the :kconfig:option:`CONFIG_NRF_COMPRESS_CLEANUP` Kconfig option is enabled, it also ensures that all buffers are cleared prior to releasing them to prevent any possible data leakage.
+
+Reset
+=====
+
+The :c:func:`nrf_compress_reset_func_t` function is used to reset the compression library if it is partially used.
+It resets the internal variables and buffers without performing deinitialization, which allows the compression library to be reused with a new file.
+
+Decompression
+=============
+
+There are two functions for decompression:
+
+* :c:type:`nrf_compress_decompress_bytes_needed_t` - This function determines the ideal amount of data to supply for decompression.
+ It typically matches the value of the :kconfig:option:`CONFIG_NRF_COMPRESS_CHUNK_SIZE` Kconfig option, unless limited by a header or the final amount of data required is predetermined.
+* :c:func:`nrf_compress_decompress_func_t` - This function processes input data and, if decompressed output data is available, returns a buffer containing that data along with its size.
+ Not all input data may be consumed when this function is called.
+ The compression library might require complete blocks and might not process the final block if it is incomplete, especially if multiple blocks are provided.
+ In such cases, the ``offset`` value will be updated to reflect the amount of data that was read from the input buffer
+ The application or module must monitor the amount of data it intends to decompress.
+ It will set the ``last_part`` value to true when submitting the final segment of the data stream for decompression.
+ This is crucial as some compression libraries require this information.
+
+Defining compression type
+=========================
+
+Once the code is developed, the library must be defined in an iterable section using the :c:macro:`NRF_COMPRESS_IMPLEMENTATION_DEFINE` macro, located in the header file :file:`include/nrf_compress/implementation.h`.
+There are following requirements depending on the library's capabilities:
+
+* If a library only supports compression, the compression function must be defined, and two decompression functions must be set to ``NULL``.
+* If a library only supports decompression, the two decompression functions must be defined, and the compression function must be set to ``NULL``.
+* If a library supports both compression and decompression, all three functions must be defined.
+
+All other functions are always mandatory and must always be defined.
+Additionally, you must define a unique ID for the compression library.
+It should be globally available, allowing applications or modules use it.
+
+Integrating the compression subsystem
+=====================================
+
+To decompress data using the nRF Compression library, complete the following steps:
+
+1. Use the :c:func:`nrf_compress_implementation_find` function with the ID of the desired compression type.
+ If it returns ``NULL``, the compression type is not supported.
+#. Check the ``init``, ``deinit`` and ``reset`` core function pointers.
+ If any return ``NULL``, there is an implementation issue with the compression type.
+#. For decompression support, check the :c:type:`nrf_compress_decompress_bytes_needed_t` and :c:func:`nrf_compress_decompress_func_t` function pointers.
+ If either is ``NULL``, there is an implementation issue with the compression type.
+#. Call the :c:func:`nrf_compress_init_func_t` function to set up the compression library.
+ If a non-zero error is returned, the library cannot be initialized, possibly due to insufficient memory or other issues.
+#. Call the :c:type:`nrf_compress_decompress_bytes_needed_t` function to determine how many bytes of data should be specified for decompression.
+ If a non-zero error is returned, there is an issue with the compression library.
+#. Call the :c:func:`nrf_compress_decompress_func_t` function with the requested amount of data (or the maximum available, if less is available).
+ In case there is no more data to process, set the ``last_part`` value to true, otherwise set it to false.
+ If a non-zero error is returned, the provided data might be invalid.
+#. Ensure that if the ``offset`` updated value is not equal to the size of the input data provided, the next call to :c:func:`nrf_compress_decompress_func_t` function includes the unused bytes from the buffer at its start.
+#. Verify if the ``output_size`` value is greater than ``0``.
+ In such a case, the specified amount of data is available in the ``output`` buffer and you should copy it or move it to its intended destination.
+#. Repeat the process of calling the :c:type:`nrf_compress_decompress_bytes_needed_t` function followed by :c:func:`nrf_compress_decompress_func_t` until all the data has been processed.
+#. Call the :c:func:`nrf_compress_deinit_func_t` function to clean up the compression library.
+
+See the following figure for the overview of the decompression flow:
+
+.. figure:: images/nrf_compression_image.png
+ :alt: nRF Compression library decompression flowchart
+
+ nRF Compression library decompression flowchart
+
+API documentation
+*****************
+
+| Header file: :file:`include/nrf_compress/implementation.h`
+| Source files: :file:`subsys/nrf_compress/src/`
+
+.. doxygengroup:: compression_decompression_subsystem
diff --git a/doc/nrf/libraries/security/identity_key.rst b/doc/nrf/libraries/security/identity_key.rst
index b38f08d95a5f..cd6b944fdb57 100644
--- a/doc/nrf/libraries/security/identity_key.rst
+++ b/doc/nrf/libraries/security/identity_key.rst
@@ -11,7 +11,7 @@ The identity key library manages an asymmetric key used for identity services on
It's used to provision identity keys and can only be used by a Zephyr image in Secure Processing Environment (SPE).
It is not supported from images for Non-Secure Processing Environment (NSPE), from a Trusted Firmware-M image, or from MCUboot.
-The identity key is equivalent to the Initial Attestation Key (IAK), as described in the ARM Platform Security Model 1.1, when Trusted Firmware-M (TF-M) is enabled.
+The identity key is equivalent to the Initial Attestation Key (IAK), as described in the `ARM Platform Security Model 1.1`_, when Trusted Firmware-M (TF-M) is enabled.
TF-M has access to the identity key using internal APIs and does not need to use this library.
Functionality
diff --git a/doc/nrf/links.txt b/doc/nrf/links.txt
index 08b0e185af1f..da00faf28954 100644
--- a/doc/nrf/links.txt
+++ b/doc/nrf/links.txt
@@ -213,6 +213,8 @@
.. _`Memfault WebBluetooth Client`: https://memfault.github.io/web-ble-example/
.. _`PSA Cryptography API 1.0.1`: https://armmbed.github.io/mbed-crypto/1.0.1/html/index.html
+.. _`PSA Certified Crypto API 1.2.1`: https://arm-software.github.io/psa-api/crypto/1.2/
+.. _`PSA Certified Crypto API 1.2 PAKE Extension Final 1`: https://arm-software.github.io/psa-api/crypto/1.2/ext-pake/
.. _`PSA functions for key management`: https://arm-software.github.io/psa-api/crypto/1.1/api/keys/management.html
.. _`Memfault WebBluetooth Client`: https://memfault.github.io/web-ble-example/
@@ -598,7 +600,6 @@
.. _`nRF Connect Serial Terminal`: https://docs.nordicsemi.com/bundle/nrf-connect-serial-terminal/page/index.html
.. _`Connecting using Serial Terminal`: https://docs.nordicsemi.com/bundle/nrf-connect-serial-terminal/page/connecting.html
.. _`Serial Terminal configuration`: https://docs.nordicsemi.com/bundle/nrf-connect-serial-terminal/page/configuration.html
-.. _`nRF Sniffer for Bluetooth LE`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-ble-sniffer/guides/overview.html
.. _`nRF Connect Bluetooth Low Energy`: https://docs.nordicsemi.com/bundle/nrf-connect-ble/page/index.html
.. _`Cellular Monitor`: https://docs.nordicsemi.com/bundle/nrf-connect-cellularmonitor/page/index.html
.. _`nPM PowerUP`: https://docs.nordicsemi.com/bundle/nrf-connect-npm/page/index.html
@@ -613,8 +614,6 @@
.. _`Programming the nRF52840 Dongle`:
.. _`Programming a Development Kit`: https://docs.nordicsemi.com/bundle/nrf-connect-programmer/page/programming_dk.html
-.. _`nRF Sniffer for Bluetooth LE`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-ble-sniffer/guides/overview.html
-
.. _`nRF Thread Topology Monitor`: https://docs.nordicsemi.com/bundle/ug_nrf_ttm/page/UG/nrf_ttm/ttm_introduction.html
.. _`nRF Sniffer for 802.15.4`: https://docs.nordicsemi.com/bundle/ug_sniffer_802154/page/UG/sniffer_802154/intro_802154.html
.. _`Configuring Wireshark for Zigbee`: https://docs.nordicsemi.com/bundle/ug_sniffer_802154/page/UG/sniffer_802154/configuring_sniffer_802154_zigbee.html
@@ -810,6 +809,8 @@
.. _`Toolchain Manager command`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-toolchain-manager/nrfutil-toolchain-manager_0.14.1.html#available-subcommands
.. _`Recovering the device`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/programming_recovery.html
.. _`nrfutil-trace`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-trace/CHANGELOG.html
+.. _`nRF Sniffer for Bluetooth LE`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-ble-sniffer/guides/overview.html
+.. _`Device command overview`: https://docs.nordicsemi.com/bundle/nrfutil/page/nrfutil-device/guides/programming.html
.. _`anomaly 19`: https://docs.nordicsemi.com/bundle/errata_nRF5340_EngA/page/ERR/nRF5340/EngineeringA/latest/anomaly_340_19.html
@@ -1397,16 +1398,15 @@
.. ### Source: ubuntu.com
+.. _`Linux - Ubuntu 24.04 LTS`: https://releases.ubuntu.com/24.04/
.. _`Linux - Ubuntu 22.04 LTS`: https://releases.ubuntu.com/22.04/
.. _`Linux - Ubuntu 20.04 LTS`: https://releases.ubuntu.com/20.04/
.. ### Source: apple.com
+.. _`macOS 15`: https://www.apple.com/macos/macos-sequoia/
.. _`macOS 14`: https://www.apple.com/macos/sonoma/
.. _`macOS 13`: https://www.apple.com/macos/ventura/
-.. _`macOS 12`: https://www.apple.com/macos/monterey/
-.. _`macOS 11`: https://support.apple.com/en-us/HT211896
-.. _`macOS 10.15`: https://support.apple.com/en-us/HT210642
.. _`Apple Notification Center Service Specification`: https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Introduction/Introduction.html
.. _`Apple Media Service Reference`: https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/AppleMediaService_Reference/Introduction/Introduction.html
@@ -1419,6 +1419,7 @@
.. _`GNU Arm Embedded Toolchain`: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
.. _`IDAU`: https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
.. _`ARM CoreSight`: https://developer.arm.com/documentation/100536/0302
+.. _`ARM Platform Security Model 1.1`: https://developer.arm.com/documentation/den0128/0101b/
.. ### Source: etsi.org
@@ -1690,10 +1691,9 @@
.. _`curl`: https://curl.se/
-.. _`nRF54H20 firmware bundle`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.5.0.zip
-.. _`nRF54H20 firmware bundle v0.3.3`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.3.3.zip
-.. _`nRF54H20 firmware bundle v0.5.0`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.5.0.zip
-.. _`nRF54H20 firmware bundle v0.6.2`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.6.2.zip
+.. _`nRF54H20 SoC Binaries v0.3.3`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.3.3.zip
+.. _`nRF54H20 SoC Binaries v0.5.0`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.5.0.zip
+.. _`nRF54H20 SoC Binaries v0.6.2`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.6.2.zip
.. _`nRF54H20 SoC binaries v0.6.5`: https://files.nordicsemi.com/artifactory/SDSC/external/nrf54h20_soc_binaries_v0.6.5.zip
.. _`BICR binary file`: https://files.nordicsemi.com/artifactory/SDSC/external/bicr_ext_loadcap.hex
diff --git a/doc/nrf/protocols/matter/end_product/bootloader.rst b/doc/nrf/protocols/matter/end_product/bootloader.rst
index 93d5ee39b1df..edc24066e9ad 100644
--- a/doc/nrf/protocols/matter/end_product/bootloader.rst
+++ b/doc/nrf/protocols/matter/end_product/bootloader.rst
@@ -66,9 +66,19 @@ The nRF Connect platform in Matter uses Zephyr's :ref:`zephyr:settings_api` API
This requires that you define the ``settings_storage`` partition in the flash.
The recommended minimum size of the partition is 32 kB, but you can reserve even more space if your application uses the storage extensively.
-The Zephyr settings storage is implemented by the Zephyr NVS (Non-Volatile Storage) module.
-The NVS uses multiple sectors of 4 kB each and it has to use the appropriate number of sectors to cover all settings partition area.
-To configure the number of sectors used by the NVS, set the :kconfig:option:`CONFIG_SETTINGS_NVS_SECTOR_COUNT` Kconfig option to the desired value.
+The Zephyr settings storage is implemented by the :ref:`Zephyr NVS (Non-Volatile Storage) ` or :ref:`ZMS (Zephyr Memory Storage) ` backends.
+You can select either backend, and the selection affects several factors, such as the operational performance or memory lifetime.
+To achieve the optimal experience, it is recommended to use:
+
+* NVS backend for the flash-based nRF52 and nRF53 SoC families.
+* ZMS backend for the RRAM- and MRAM-based nRF54 SoC families.
+
+The settings backend uses multiple sectors of 4 kB each, and it must use the appropriate number of sectors to cover the entire settings partition area.
+To configure the number of sectors used by the backend, set the corresponding Kconfig option to the desired value:
+
+* :kconfig:option:`CONFIG_SETTINGS_NVS_SECTOR_COUNT` for the NVS
+* :kconfig:option:`CONFIG_SETTINGS_ZMS_SECTOR_COUNT` for the ZMS
+
For example, to cover a settings partition of 32 kB in size, you require 8 sectors.
As you can see in :ref:`ug_matter_hw_requirements_layouts`, Matter samples in the |NCS| reserve exactly 32 kB for the ``settings_storage`` partition.
diff --git a/doc/nrf/protocols/matter/end_product/security.rst b/doc/nrf/protocols/matter/end_product/security.rst
index bb8d0a81dcce..fffb990d79fe 100644
--- a/doc/nrf/protocols/matter/end_product/security.rst
+++ b/doc/nrf/protocols/matter/end_product/security.rst
@@ -120,11 +120,13 @@ This is a reference configuration that can be modified in the production firmwar
- Trusted Firmware-M (TF-M)
.. [1] The CryptoCell backend is used in parallel with the Oberon backend.
- It is only used to implement Random Nuber Generation (RNG), and the AED keys derivation driver (only for Thread networking).
- For all other cryptographic operations, the Oberon backend is used.
+ By default, the CryptoCell backend is used only for Random Number Generation (RNG) and the AEAD key derivation driver.
+ To enable the CryptoCell backend for additional operations, set the :kconfig:option:`CONFIG_PSA_CRYPTO_DRIVER_CC3XX` Kconfig option to true.
-.. [2] When the CRACEN driver is used in parallel with the Oberon driver, you need to disable specific CRACEN cryptographic operations to use the Oberon ones.
- This is because the CRACEN driver has priority when both are enabled.
+.. [2] The CRACEN backend is used in parallel with the Oberon backend.
+ The CRACEN backend is used by default for any supported cryptographic operations.
+ For all other operations not supported by CRACEN, the Oberon backend is used.
+ To use the Oberon backend for specific cryptographic operations supported by both drivers, disable those operations in the CRACEN driver, as it takes priority when both are enabled.
See the :ref:`nrf_security_drivers` documentation for more information.
Securing production devices
diff --git a/doc/nrf/protocols/matter/getting_started/advanced_kconfigs.rst b/doc/nrf/protocols/matter/getting_started/advanced_kconfigs.rst
index b6c957e7ed36..02511ce1a18c 100644
--- a/doc/nrf/protocols/matter/getting_started/advanced_kconfigs.rst
+++ b/doc/nrf/protocols/matter/getting_started/advanced_kconfigs.rst
@@ -98,7 +98,7 @@ See :doc:`matter:nrfconnect_examples_cli` in the Matter documentation for the li
Matter Settings shell commands
------------------------------
-You can enable the Matter Settings shell commands to monitor the current usage of the Zephyr Settings NVS.
+You can enable the Matter Settings shell commands to monitor the current usage of the Zephyr Settings using :ref:`NVS (Non-Volatile Storage) ` or :ref:`ZMS (Zephyr Memory Storage) ` backends.
These commands are useful for verifying that the ``settings`` partition has the proper size and meets the application requirements.
To enable the Matter Settings shell module, set the :kconfig:option:`CONFIG_NCS_SAMPLE_MATTER_SETTINGS_SHELL` Kconfig option to ``y``.
@@ -111,10 +111,6 @@ You can use the following shell commands:
* ``matter_settings current`` - Get the size of the current settings usage.
* ``matter_settings free`` - Get the size of the current free settings space.
-.. note::
-
- The Matter Settings shell module is available only for the NVS Zephyr Settings backend.
-
.. _ug_matter_configuring_device_identification:
Matter device identification
@@ -183,15 +179,15 @@ To enable one of the reactions to the last fabric removal, set the corresponding
* :kconfig:option:`CONFIG_CHIP_LAST_FABRIC_REMOVED_ERASE_AND_REBOOT` - Remove all saved network credentials and reboot the device.
This option is selected by default.
- When the :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_NVS` Kconfig option is also set to ``y``, the device will also remove all non-volatile data stored on the device, including application-specific entries.
+ When the :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_SETTINGS` Kconfig option is also set to ``y``, the device will also remove all non-volatile data stored on the device, including application-specific entries.
This means the device is restored to the factory settings.
To create a delay between the chosen reaction and the last fabric being removed, set the :kconfig:option:`CONFIG_CHIP_LAST_FABRIC_REMOVED_ACTION_DELAY` Kconfig option to a specific time in milliseconds.
By default this Kconfig option is set to 1 second.
.. note::
- The :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_NVS` Kconfig option is set to ``y`` by default.
- To disable removing application-specific non-volatile data when the :kconfig:option:`CONFIG_CHIP_LAST_FABRIC_REMOVED_ERASE_AND_REBOOT` Kconfig option is selected, set the :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_NVS` Kconfig option to ``n``.
+ The :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_SETTINGS` Kconfig option is set to ``y`` by default.
+ To disable removing application-specific non-volatile data when the :kconfig:option:`CONFIG_CHIP_LAST_FABRIC_REMOVED_ERASE_AND_REBOOT` Kconfig option is selected, set the :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_SETTINGS` Kconfig option to ``n``.
.. _ug_matter_configuring_read_client:
diff --git a/doc/nrf/protocols/thread/overview/memory_tables/nrf52840.txt b/doc/nrf/protocols/thread/overview/memory_tables/nrf52840.txt
index 29a53cf28cad..bd6c9988bc5d 100644
--- a/doc/nrf/protocols/thread/overview/memory_tables/nrf52840.txt
+++ b/doc/nrf/protocols/thread/overview/memory_tables/nrf52840.txt
@@ -7,19 +7,19 @@
+-----------------------------+----------+-------+-------+
| | master | FTD | MTD |
+=============================+==========+=======+=======+
- | ROM OT stack + App [kB] | 455 | 360 | 306 |
+ | ROM OT stack + App [kB] | 443 | 358 | 303 |
+-----------------------------+----------+-------+-------+
| ROM Bluetooth LE stack [kB] | 0 | 0 | 0 |
+-----------------------------+----------+-------+-------+
| Persistent storage [kB] | 32 | 32 | 32 |
+-----------------------------+----------+-------+-------+
- | Free ROM [kB] | 537 | 632 | 686 |
+ | Free ROM [kB] | 549 | 634 | 689 |
+-----------------------------+----------+-------+-------+
- | RAM OT stack + App [kB] | 101 | 93 | 83 |
+ | RAM OT stack + App [kB] | 102 | 93 | 83 |
+-----------------------------+----------+-------+-------+
| RAM Bluetooth LE stack [kB] | 0 | 0 | 0 |
+-----------------------------+----------+-------+-------+
- | Free RAM [kB] | 155 | 163 | 173 |
+ | Free RAM [kB] | 154 | 163 | 173 |
+-----------------------------+----------+-------+-------+
@@ -30,17 +30,17 @@
+-----------------------------+----------+-------+-------+
| | master | FTD | MTD |
+=============================+==========+=======+=======+
- | ROM OT stack + App [kB] | 455 | 360 | 306 |
+ | ROM OT stack + App [kB] | 443 | 358 | 303 |
+-----------------------------+----------+-------+-------+
- | ROM Bluetooth LE stack [kB] | 76 | 77 | 76 |
+ | ROM Bluetooth LE stack [kB] | 75 | 75 | 76 |
+-----------------------------+----------+-------+-------+
| Persistent storage [kB] | 32 | 32 | 32 |
+-----------------------------+----------+-------+-------+
- | Free ROM [kB] | 461 | 555 | 610 |
+ | Free ROM [kB] | 474 | 559 | 613 |
+-----------------------------+----------+-------+-------+
- | RAM OT stack + App [kB] | 101 | 93 | 83 |
+ | RAM OT stack + App [kB] | 102 | 93 | 83 |
+-----------------------------+----------+-------+-------+
- | RAM Bluetooth LE stack [kB] | 12 | 12 | 12 |
+ | RAM Bluetooth LE stack [kB] | 12 | 13 | 13 |
+-----------------------------+----------+-------+-------+
- | Free RAM [kB] | 143 | 151 | 161 |
+ | Free RAM [kB] | 142 | 150 | 160 |
+-----------------------------+----------+-------+-------+
diff --git a/doc/nrf/protocols/thread/overview/memory_tables/nrf5340.txt b/doc/nrf/protocols/thread/overview/memory_tables/nrf5340.txt
index ea87ff2b12ed..0331a3c0daf6 100644
--- a/doc/nrf/protocols/thread/overview/memory_tables/nrf5340.txt
+++ b/doc/nrf/protocols/thread/overview/memory_tables/nrf5340.txt
@@ -7,19 +7,19 @@
+-----------------------------+-------+-------+
| | FTD | MTD |
+=============================+=======+=======+
- | ROM OT stack + App [kB] | 330 | 276 |
+ | ROM OT stack + App [kB] | 329 | 275 |
+-----------------------------+-------+-------+
| ROM Bluetooth LE stack [kB] | 0 | 0 |
+-----------------------------+-------+-------+
| Persistent storage [kB] | 32 | 32 |
+-----------------------------+-------+-------+
- | Free ROM [kB] | 662 | 716 |
+ | Free ROM [kB] | 663 | 717 |
+-----------------------------+-------+-------+
- | RAM OT stack + App [kB] | 100 | 90 |
+ | RAM OT stack + App [kB] | 101 | 90 |
+-----------------------------+-------+-------+
| RAM Bluetooth LE stack [kB] | 0 | 0 |
+-----------------------------+-------+-------+
- | Free RAM [kB] | 412 | 422 |
+ | Free RAM [kB] | 411 | 422 |
+-----------------------------+-------+-------+
@@ -30,17 +30,17 @@
+-----------------------------+-------+-------+
| | FTD | MTD |
+=============================+=======+=======+
- | ROM OT stack + App [kB] | 330 | 276 |
+ | ROM OT stack + App [kB] | 329 | 275 |
+-----------------------------+-------+-------+
- | ROM Bluetooth LE stack [kB] | 31 | 30 |
+ | ROM Bluetooth LE stack [kB] | 30 | 30 |
+-----------------------------+-------+-------+
| Persistent storage [kB] | 32 | 32 |
+-----------------------------+-------+-------+
- | Free ROM [kB] | 631 | 686 |
+ | Free ROM [kB] | 633 | 687 |
+-----------------------------+-------+-------+
- | RAM OT stack + App [kB] | 100 | 90 |
+ | RAM OT stack + App [kB] | 101 | 90 |
+-----------------------------+-------+-------+
- | RAM Bluetooth LE stack [kB] | 14 | 14 |
+ | RAM Bluetooth LE stack [kB] | 13 | 14 |
+-----------------------------+-------+-------+
| Free RAM [kB] | 398 | 408 |
+-----------------------------+-------+-------+
diff --git a/doc/nrf/protocols/thread/overview/memory_tables/nrf54l15.txt b/doc/nrf/protocols/thread/overview/memory_tables/nrf54l15.txt
index 1d1fd295b64c..566f7ee16bb2 100644
--- a/doc/nrf/protocols/thread/overview/memory_tables/nrf54l15.txt
+++ b/doc/nrf/protocols/thread/overview/memory_tables/nrf54l15.txt
@@ -7,19 +7,19 @@
+-----------------------------+----------+-------+-------+
| | master | FTD | MTD |
+=============================+==========+=======+=======+
- | ROM OT stack + App [kB] | 461 | 364 | 310 |
+ | ROM OT stack + App [kB] | 453 | 366 | 313 |
+-----------------------------+----------+-------+-------+
| ROM Bluetooth LE stack [kB] | 0 | 0 | 0 |
+-----------------------------+----------+-------+-------+
| Persistent storage [kB] | 32 | 32 | 32 |
+-----------------------------+----------+-------+-------+
- | Free ROM [kB] | 1031 | 1128 | 1182 |
+ | Free ROM [kB] | 1039 | 1126 | 1179 |
+-----------------------------+----------+-------+-------+
- | RAM OT stack + App [kB] | 98 | 92 | 82 |
+ | RAM OT stack + App [kB] | 104 | 97 | 87 |
+-----------------------------+----------+-------+-------+
| RAM Bluetooth LE stack [kB] | 0 | 0 | 0 |
+-----------------------------+----------+-------+-------+
- | Free RAM [kB] | 158 | 164 | 174 |
+ | Free RAM [kB] | 152 | 159 | 169 |
+-----------------------------+----------+-------+-------+
@@ -30,17 +30,17 @@
+-----------------------------+----------+-------+-------+
| | master | FTD | MTD |
+=============================+==========+=======+=======+
- | ROM OT stack + App [kB] | 461 | 364 | 310 |
+ | ROM OT stack + App [kB] | 453 | 366 | 313 |
+-----------------------------+----------+-------+-------+
- | ROM Bluetooth LE stack [kB] | 93 | 93 | 93 |
+ | ROM Bluetooth LE stack [kB] | 91 | 91 | 91 |
+-----------------------------+----------+-------+-------+
| Persistent storage [kB] | 32 | 32 | 32 |
+-----------------------------+----------+-------+-------+
- | Free ROM [kB] | 938 | 1035 | 1089 |
+ | Free ROM [kB] | 948 | 1035 | 1088 |
+-----------------------------+----------+-------+-------+
- | RAM OT stack + App [kB] | 98 | 92 | 82 |
+ | RAM OT stack + App [kB] | 104 | 97 | 87 |
+-----------------------------+----------+-------+-------+
- | RAM Bluetooth LE stack [kB] | 13 | 13 | 13 |
+ | RAM Bluetooth LE stack [kB] | 14 | 14 | 14 |
+-----------------------------+----------+-------+-------+
- | Free RAM [kB] | 145 | 151 | 161 |
+ | Free RAM [kB] | 138 | 145 | 155 |
+-----------------------------+----------+-------+-------+
diff --git a/doc/nrf/protocols/wifi/station_mode/images/nRF70_ug_twt_wake_interval.svg b/doc/nrf/protocols/wifi/station_mode/images/nRF70_ug_twt_wake_interval.svg
index 5ecb7f4059bf..8179364482a9 100644
--- a/doc/nrf/protocols/wifi/station_mode/images/nRF70_ug_twt_wake_interval.svg
+++ b/doc/nrf/protocols/wifi/station_mode/images/nRF70_ug_twt_wake_interval.svg
@@ -57,50 +57,49 @@
Dynamic connector.20
-
+
Sheet.20
- TWT Wake Duration/Service Period
+ TWT Wake Interval/Service Period
-
-
- TWT Wake Duration/Service Period
-
+
+
+ TWT Wake Interval/Service Period
+
Nordic Blue.24
Sleep
Sleep
-
+
Nordic Blue.29
Active
Active
-
+
Nordic Blue.30
Sleep
Sleep
-
+
Dynamic connector.31
-
+
Dynamic connector.34
-
+
Sheet.36
- TWT Wake Interval
+ TWT Interval
- TWT Wake Interval
+ TWT Interval
diff --git a/doc/nrf/releases_and_maturity/abi_compatibility.rst b/doc/nrf/releases_and_maturity/abi_compatibility.rst
index b08de2eaad74..420cf9df5798 100644
--- a/doc/nrf/releases_and_maturity/abi_compatibility.rst
+++ b/doc/nrf/releases_and_maturity/abi_compatibility.rst
@@ -18,10 +18,10 @@ When ABI compatibility is maintained, binaries of one component can interface co
For example, adding a new function to a library is typically an ABI-compatible change, as existing binaries remain functional.
However, changes that affect data structure layouts, such as altering field order or size, break ABI compatibility as they change the memory layout expected by existing binaries.
-ABI Compatibility Matrix for the nrf54h20_soc_binary bundle
-===========================================================
+ABI Compatibility Matrix for the nRF54H20 SoC Binaries
+======================================================
-The following table illustrates ABI compatibility between different versions of the nRF54H20 SoC binaries bundle and the |NCS|:
+The following table illustrates ABI compatibility between different versions of the nRF54H20 SoC binaries and the |NCS|:
.. list-table::
:header-rows: 1
@@ -29,13 +29,13 @@ The following table illustrates ABI compatibility between different versions of
* - |NCS| versions
- Compatible nRF54H20 SoC binaries version
* - |NCS| v2.7.99-cs2
- - nrf54h20_soc_binaries v0.6.5
+ - `nRF54H20 SoC Binaries v0.6.5`_
* - |NCS| v2.7.99-cs1
- - nrf54h20_soc_binaries v0.6.2
+ - `nRF54H20 SoC Binaries v0.6.2`_
* - |NCS| v2.7.0
- - nrf54h20_soc_binaries v0.5.0
+ - `nRF54H20 SoC Binaries v0.5.0`_
* - |NCS| v2.6.99-cs2
- - nrf54h20_soc_binaries v0.3.3
+ - `nRF54H20 SoC Binaries v0.3.3`_
ABI compatibility ensures that the Secure Domain and System Controller firmware binaries do not need to be recompiled each time the Application, Radio binaries, or both are recompiled, as long as they are based on a compatible NCS version.
Additionally, maintaining ABI compatibility allows the nRF54H20 SoC binaries components to work together without recompilation when updating to newer |NCS| versions.
diff --git a/doc/nrf/releases_and_maturity/known_issues.rst b/doc/nrf/releases_and_maturity/known_issues.rst
index 8fda6e8dd6ce..a50e6e7929b4 100644
--- a/doc/nrf/releases_and_maturity/known_issues.rst
+++ b/doc/nrf/releases_and_maturity/known_issues.rst
@@ -144,7 +144,14 @@ KRKNWK-14299: NRPA MAC address cannot be set in Zephyr
Bluetooth LE
============
-The issues in this section are related to :ref:`ug_ble_controller`.
+.. rst-class:: v2-7-0 v2-6-2 v2-6-1 v2-6-0 v2-5-3 v2-5-2 v2-4-4 v2-4-3
+
+DRGN-23231: The Bluetooth subsystem may sometimes deadlock when a Bluetooth link is lost during data transfer
+ When this happens, the disconnected event is never delivered to the application.
+ The issue occurs when the :kconfig:option:`CONFIG_BT_HCI_ACL_FLOW_CONTROL` Kconfig option is enabled.
+ This option is enabled by default on the nRF5340 DK.
+
+ **Affected platforms:** nRF5340
.. rst-class:: v2-7-0
@@ -268,6 +275,13 @@ DRGN-21390: The `disconnected` callback might not get called on nRF5340
**Workaround:** Either disable host flow control (:kconfig:option:`CONFIG_BT_HCI_ACL_FLOW_CONTROL`) or cherry-pick commits from the upstream: `Zephyr PR #65272 `_.
+.. rst-class:: v2-7-0 v2-6-2 v2-6-1 v2-6-0 v2-5-3 v2-5-2 v2-5-1 v2-5-0 v2-4-4 v2-4-3 v2-4-2 v2-4-1 v2-4-0 v2-3-0 v2-2-0 v2-1-4 v2-1-3 v2-1-2 v2-1-1 v2-1-0 v2-0-2 v2-0-1 v2-0-0 v1-9-1 v1-9-0 v1-8-0 v1-7-1
+
+DRGN-23518: ACL reassembly may deadlock
+ This can happen if the value of :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` Kconfig option is less than or equal to the value of :kconfig:option:`CONFIG_BT_MAX_CONN`.
+
+ **Workaround:** Ensure that the value of :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` is greater than the value of :kconfig:option:`CONFIG_BT_MAX_CONN`.
+
Bluetooth Mesh
==============
@@ -380,6 +394,15 @@ Matter
The issues in this section are related to the :ref:`ug_matter` protocol.
+.. rst-class:: v2-7-0 v2-6-2 v2-6-1 v2-6-0 v2-5-3 v2-5-2 v2-5-1 v2-5-0 v2-4-4 v2-4-3 v2-4-2 v2-4-1 v2-4-0
+
+KRKNWK-19524: Reliability issues with multicast message delivery for certain Access Points.
+ Certain Access Points require Wi-Fi devices to send Multicast Listener Discovery version 2 (MLDv2) Report messages for multicast packets to be properly delivered to a given address.
+ Matter over Wi-Fi devices only subscribed to multicast addresses within the internal IPv6 stack, without notifying the Access Points, leading to reliability issues with multicast message delivery.
+
+ **Workaround:** To ensure reliable multicast communication, use the :c:func:`net_ipv6_mld_join` and :c:func:`net_ipv6_mld_leave` functions to explicitly subscribe or unsubscribe to multicast addresses.
+ For reference, see the commit with the fix in the ``sdk-connectedhomeip`` repository (commit hash: ``TBD``).
+
.. rst-class:: v2-7-0
KRKNWK-19443: The device commissioning window can be opened for longer than 900 seconds, which violates the Matter specification.
@@ -1052,6 +1075,13 @@ Zigbee
The issues in this section are related to the :ref:`ug_zigbee` protocol.
+.. rst-class:: v2-7-0
+
+KRKNWK-19263: FOTA DFU on the nRF5340 DK fails due to an invalid update image
+ Performing FOTA DFU throws an error during an attempt to install the new image.
+
+ **Workaround:** Manually cherry-pick and apply the commit with the fix from ``main`` (commit hash: ``cc5ae95668566b47b9f6bfccb99b3796de8cb076``).
+
.. rst-class:: v2-6-2 v2-6-1 v2-6-0 v2-5-3 v2-5-2 v2-5-1 v2-5-0 v2-4-4 v2-4-3 v2-4-2 v2-4-1 v2-4-0 v2-3-0 v2-2-0 v2-1-4 v2-1-3 v2-1-2 v2-1-1 v2-1-0 v2-0-2 v2-0-1 v2-0-0 v1-9-2 v1-9-1 v1-9-0
NCSISB-1204: Corrupted ZBOSS NVRAM causes an infinite boot loop
diff --git a/doc/nrf/releases_and_maturity/migration/2.4.99-cs3_to_2.6.99-cs2/migration_guide_2.4.99-cs3_to_2.6.99-cs2_environment.rst b/doc/nrf/releases_and_maturity/migration/2.4.99-cs3_to_2.6.99-cs2/migration_guide_2.4.99-cs3_to_2.6.99-cs2_environment.rst
index b0a9ca02b9d4..49bf2e572dda 100644
--- a/doc/nrf/releases_and_maturity/migration/2.4.99-cs3_to_2.6.99-cs2/migration_guide_2.4.99-cs3_to_2.6.99-cs2_environment.rst
+++ b/doc/nrf/releases_and_maturity/migration/2.4.99-cs3_to_2.6.99-cs2/migration_guide_2.4.99-cs3_to_2.6.99-cs2_environment.rst
@@ -16,7 +16,7 @@ The main development environment changes introduced by 2.6.99-cs2 for the nRF54H
* nRF Util has now replaced nRF Command Line Tools.
The bootstrap script will now install and update nRF Util.
* SDFW and SCFW are now provided as precompiled binaries.
- The Secure Domain Firmware (SDFW) and System Controller Firmware (SCFW) are no longer built from the source during the application build process, but they must be provisioned as binaries from the provided firmware bundle before the DK can be used.
+ The Secure Domain Firmware (SDFW) and System Controller Firmware (SCFW) are no longer built from the source during the application build process, but they must be provisioned as binaries from the provided SoC binaries before the DK can be used.
See the details in the `nRF54H20 DK bring-up`_ section below.
* The nRF54H20 SoC lifecycle state must now be set to Root of Trust (RoT).
See the details in the `Transitioning the nRF54H20 SoC to RoT`_ section.
@@ -272,9 +272,9 @@ Programming the SDFW and SCFW
=============================
After programming the BICR, the nRF54H20 SoC requires the provisioning of a bundle ( :file:`nrf54h20_soc_binaries_v0.3.3.zip`) containing the precompiled firmware for the Secure Domain and System Controller.
-To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the firmware bundle to the nRF54H20 DK, do the following:
+To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the SoC binaries to the nRF54H20 DK, do the following:
-1. Download the `nRF54H20 firmware bundle`_.
+1. Download the `nRF54H20 SoC binaries v0.3.3`_.
#. Move the :file:`ZIP` bundle to a folder of your choice, then run nRF Util to program the binaries using the following command::
nrfutil device x-provision-nrf54h --firmware --serial-number
@@ -284,7 +284,7 @@ To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the Sys
Updating the FICR
=================
-After programming the SDFW and SCFW from the firmware bundle, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
+After programming the SDFW and SCFW from the SoC binaries, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
To update the FICR, you must run a J-Link script:
1. Get the Jlink script that updates the FICR::
diff --git a/doc/nrf/releases_and_maturity/migration/migration_guide_2.8.rst b/doc/nrf/releases_and_maturity/migration/migration_guide_2.8.rst
index 7da38d1fdce5..650522d09faa 100644
--- a/doc/nrf/releases_and_maturity/migration/migration_guide_2.8.rst
+++ b/doc/nrf/releases_and_maturity/migration/migration_guide_2.8.rst
@@ -134,6 +134,7 @@ LTE link control library
* Replace the use of the :c:func:`lte_lc_deinit` function with the :c:func:`lte_lc_power_off` function.
* Replace the use of the :c:func:`lte_lc_init_and_connect` function with the :c:func:`lte_lc_connect` function.
* Replace the use of the :c:func:`lte_lc_init_and_connect_async` function with the :c:func:`lte_lc_connect_async` function.
+ * Replace the use of the :c:macro:`LTE_LC_ON_CFUN` macro with the :c:macro:`NRF_MODEM_LIB_ON_CFUN` macro.
* Remove the use of the ``CONFIG_LTE_NETWORK_USE_FALLBACK`` Kconfig option.
Use the :kconfig:option:`CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT` or :kconfig:option:`CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT_GPS` Kconfig option instead.
In addition, you can control the priority between LTE-M and NB-IoT using the :kconfig:option:`CONFIG_LTE_MODE_PREFERENCE` Kconfig option.
@@ -145,22 +146,24 @@ AT command parser
* The :c:func:`at_parser_cmd_type_get` has been renamed to :c:func:`at_parser_at_cmd_type_get`.
-nRF Security
-------------
+nRF Cloud
+---------
.. toggle::
- * The ``CONFIG_CRACEN_LOAD_KMU_SEED`` Kconfig option was renamed to :kconfig:option:`CONFIG_CRACEN_IKG_SEED_LOAD`.
-
-.. _migration_2.8_recommended:
+ * The :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DOWNLOADS` Kconfig option has been enabled by default for nRF Cloud CoAP projects using the :kconfig:option:`CONFIG_NRF_CLOUD_FOTA_POLL` or :kconfig:option:`CONFIG_NRF_CLOUD_PGPS` Kconfig option.
+ Set the :kconfig:option:`CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE` Kconfig option to at least ``80`` for P-GPS and ``192`` for FOTA.
nRF Security
------------
.. toggle::
- * The ``CONFIG_MBEDTLS_CIPHER_MODE_CFB`` and ``CONFIG_MBEDTLS_CIPHER_MODE_OFB`` Kconfig options have been removed.
- Use other cipher modes instead.
+ * The ``CONFIG_CRACEN_LOAD_KMU_SEED`` Kconfig option was renamed to :kconfig:option:`CONFIG_CRACEN_IKG_SEED_LOAD`.
+ * The ``CONFIG_MBEDTLS_CIPHER_MODE_CFB`` and ``CONFIG_MBEDTLS_CIPHER_MODE_OFB`` Kconfig options have been removed.
+ Use other cipher modes instead.
+
+.. _migration_2.8_recommended:
Recommended changes
*******************
@@ -376,6 +379,72 @@ AT command parser
*/
at_parser_cmd_type_get(&at_parser, &type);
+LTE link control library
+------------------------
+
+.. toggle::
+
+ * For applications using :ref:`lte_lc_readme`:
+
+ * Replace the use of the :c:func:`lte_lc_factory_reset` function with the following:
+
+ * If the :c:enumerator:`LTE_LC_FACTORY_RESET_ALL` value is used with the :c:func:`lte_lc_factory_reset` function:
+
+ .. code-block:: C
+
+ #include
+
+ err = nrf_modem_at_printf("AT%%XFACTORYRESET=0");
+
+ * If the :c:enumerator:`LTE_LC_FACTORY_RESET_USER` value is used with the :c:func:`lte_lc_factory_reset` function:
+
+ .. code-block:: C
+
+ #include
+
+ err = nrf_modem_at_printf("AT%%XFACTORYRESET=1");
+
+ * Replace the use of the :c:func:`lte_lc_reduced_mobility_get` function with the following:
+
+ .. code-block:: C
+
+ #include
+
+ uint16_t mode;
+
+ ret = nrf_modem_at_scanf("AT%REDMOB?", "%%REDMOB: %hu", &mode);
+ if (ret != 1) {
+ /* Handle failure. */
+ } else {
+ /* Handle success. */
+ }
+
+ * Replace the use of the :c:func:`lte_lc_reduced_mobility_set` function with the following:
+
+ * If the :c:enumerator:`LTE_LC_REDUCED_MOBILITY_DEFAULT` value is used with the :c:func:`lte_lc_reduced_mobility_set` function:
+
+ .. code-block:: C
+
+ #include
+
+ err = nrf_modem_at_printf("AT%%REDMOB=0");
+
+ * If the :c:enumerator:`LTE_LC_REDUCED_MOBILITY_NORDIC` value is used with the :c:func:`lte_lc_reduced_mobility_set` function:
+
+ .. code-block:: C
+
+ #include
+
+ err = nrf_modem_at_printf("AT%%REDMOB=1");
+
+ * If the :c:enumerator:`LTE_LC_REDUCED_MOBILITY_DISABLED` value is used with the :c:func:`lte_lc_reduced_mobility_set` function:
+
+ .. code-block:: C
+
+ #include
+
+ err = nrf_modem_at_printf("AT%%REDMOB=2");
+
Snippets
========
diff --git a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7.rst b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7.rst
index 76b759273996..faeeff027ef1 100644
--- a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7.rst
+++ b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7.rst
@@ -29,9 +29,8 @@ See the following documents, based on the version you are migrating from.
nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2_7_environment
nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2.7_application
-.. toctree::
- :maxdepth: 1
- :caption: Other relevant migration documents
- migration_hwmv2
- migration_sysbuild
+Consult also the following pages about *Hardware model v2* and *Sysbuild*:
+
+* :ref:`hwmv1_to_v2_migration`
+* :ref:`child_parent_to_sysbuild_migration`
diff --git a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs1.rst b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs1.rst
index ff22d0bb91cc..615f6086bf7c 100644
--- a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs1.rst
+++ b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs1.rst
@@ -47,14 +47,14 @@ nRF54H20 BICR
nrfutil device program --options chip_erase_mode=ERASE_NONE --firmware --core Application --serial-number
SDFW and SCFW firmwares
- The *nRF54H20 firmware bundle* has been updated to version 0.6.2.
+ The *nRF54H20 SoC binaries* have been updated to version 0.6.2.
.. caution::
- Before proceeding with the firmware bundle update, you must first update the BICR as described in the previous chapter.
+ Before proceeding with the SoC binaries update, you must first update the BICR as described in the previous chapter.
- To update the firmware bundle of your development kit while in Root of Trust, do the following:
+ To update the SoC binaries of your development kit while in Root of Trust, do the following:
- 1. Download the `nRF54H20 firmware bundle v0.6.2`_.
+ 1. Download the `nRF54H20 SoC binaries v0.6.2`_.
.. note::
On MacOS, ensure that the ZIP file is not unpacked automatically upon download.
diff --git a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs2.rst b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs2.rst
index 03f0db45c37e..fdc471bc30c7 100644
--- a/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs2.rst
+++ b/doc/nrf/releases_and_maturity/migration/migration_guide_nRF54H20_cs_to_2_7_99-cs2.rst
@@ -62,7 +62,7 @@ SDFW and SCFW firmwares
The *nRF54H20 SoC binaries* bundle has been updated to version 0.6.5.
.. caution::
- If migrating from |NCS| v2.7.0, before proceeding with the firmware bundle update, you must first update the BICR as described in the previous chapter.
+ If migrating from |NCS| v2.7.0, before proceeding with the SoC binaries update, you must first update the BICR as described in the previous chapter.
To update the SoC binaries bundle of your development kit while in Root of Trust, do the following:
diff --git a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.4.99-cs3_to_2.7_application.rst b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.4.99-cs3_to_2.7_application.rst
index 3921f49180ab..af72d0beeca0 100644
--- a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.4.99-cs3_to_2.7_application.rst
+++ b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.4.99-cs3_to_2.7_application.rst
@@ -31,10 +31,10 @@ DTS changes
The layout of DTS files and the names of DTS nodes related to the updated board names have been updated, which also affects overlay files from applications and samples.
If your application required a specific custom board, you must update the custom board files to match the changes done to the nRF54H20 SoC DTS files.
-SDFW and SCFW firmware bundle
+nRF54H20 SoC binaries
The Secure Domain Firmware (SDFW) and System Controller Firmware (SCFW) are no longer built from the source during the application build process.
- They are provided as a firmware bundle (v0.5.0) and provisioned to the nRF54H20 during the bring-up steps.
- The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new firmware bundle.
+ They are provided as a SoC binaries bundle (v0.5.0) and provisioned to the nRF54H20 during the bring-up steps.
+ The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new SoC binaries.
For additional details, see :ref:`transition_cs3_to_2_7_env_bringup`.
nRF Util is now the main command line backend utility.
diff --git a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2.7_application.rst b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2.7_application.rst
index 89a2c4ec0749..61a8934855ce 100644
--- a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2.7_application.rst
+++ b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2.7_application.rst
@@ -28,10 +28,10 @@ Hardware Model v2
A new hardware model was recently introduced in the |NCS|.
For more information, see :ref:`hwmv1_to_v2_migration`.
-SDFW and SCFW firmware bundle
- A new version (v0.5.0) of the SDFW and SCFW firmware bundle was released.
+nRF54H20 SoC binaries
+ A new version (v0.5.0) of the nRF54H20 SoC binaries was released.
This is the only version compatible with the |NCS| v2.7.0.
- The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new firmware bundle.
+ The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new SoC binaries.
DTS changes
The layout of DTS files and the names of DTS nodes related to the updated board names have been updated, which also affects overlay files from applications and samples.
diff --git a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2_7_environment.rst b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2_7_environment.rst
index 8bb949de0779..babb48d150ab 100644
--- a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2_7_environment.rst
+++ b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/migration_guide_2.6.99-cs2_to_2_7_environment.rst
@@ -18,10 +18,10 @@ The following is a summary of the most important ones:
Updated |NCS| toolchain
The |NCS| toolchain has been updated.
-SDFW and SCFW firmware bundle
- A new version (v0.5.0) of the SDFW and SCFW firmware bundle was released.
+SDFW and SCFW SoC binaries
+ A new version (v0.5.0) of the nRF54H20 SoC binaries bundle was released.
This is the only version compatible with the |NCS| v2.7.0.
- The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new firmware bundle.
+ The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new SoC binaries.
Minimum requirements
********************
@@ -45,7 +45,7 @@ On your computer, one of the following operating systems:
:start-after: os_table_start
:end-before: os_table_end
-See :ref:`supported_OS` for more information about the tier definitions.
+See :ref:`supported_OS` for more information.
|supported OS|
@@ -155,7 +155,7 @@ Verify the LCS of the device
The current nRF54H20 DK is delivered with its lifecycle state (LCS) set to ``EMPTY``.
To correctly operate, its lifecycle state must be transitioned to Root of Trust (``RoT``) through the bring-up steps.
-To be compatible with |NCS| v2.7.0, the SDFW and SCFW firmware bundle programmed on the nRF54H20 DK during through the bring-up steps must be v0.5.0.
+To be compatible with |NCS| v2.7.0, the nRF54H20 SoC binaries programmed on the nRF54H20 DK during through the bring-up steps must be v0.5.0.
.. note::
The forward transition to LCS ``RoT`` is permanent.
@@ -187,11 +187,11 @@ The output will look similar to the following::
If the lifecycle state (``psa_lifecycle``) shown is not ``RoT`` (``LIFECYCLE_EMPTY (0x1000)`` means the LCS is set to ``EMPTY``) you can follow the bring-up steps in the next chapter.
If the lifecycle state (``psa_lifecycle``) shown is ``RoT`` (``LIFECYCLE_ROT (0x2000)``), the device is in Root of Trust:
-* If your nRF54H20 DK was already programmed with the SDFW and SCFW firmware bundle version 0.5.0, you can jump to the :ref:`migration_cs2_to_2_7_env_nextsteps` chapter.
-* If your current nRF54H20 DK was programmed with a firmware bundle version 0.3.x:
+* If your nRF54H20 DK was already programmed with the nRF54H20 SoC binaries version 0.5.0, you can jump to the :ref:`migration_cs2_to_2_7_env_nextsteps` chapter.
+* If your current nRF54H20 DK was programmed with the SoC binaries version 0.3.x:
* Use a different nRF54H20 DK with LCS ``EMPTY`` and continue to the nRF54H20 bring-up.
- * Use a different nRF54H20 DK with LCS ``RoT`` and already programmed with the firmware bundle version 0.5.0.
+ * Use a different nRF54H20 DK with LCS ``RoT`` and already programmed with the SoC binaries version 0.5.0.
nRF54H20 DK bring-up
********************
@@ -231,9 +231,9 @@ Provisioning the SDFW and SCFW
==============================
After programming the BICR, the nRF54H20 SoC requires the provisioning of a bundle ( :file:`nrf54h20_soc_binaries_v0.5.0.zip`) containing the precompiled firmware for the Secure Domain and System Controller.
-To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the firmware bundle to the nRF54H20 DK, do the following:
+To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the SoC binaries to the nRF54H20 DK, do the following:
-1. Download the `nRF54H20 firmware bundle v0.5.0`_.
+1. Download the `nRF54H20 SoC binaries v0.5.0`_.
.. note::
On MacOS, ensure that the ZIP file is not unpacked automatically upon download.
@@ -251,7 +251,7 @@ Updating the FICR
This step is required only if your nRF54H20 DK is version PCA10175 v0.7.2 or v0.8.0 ES3.3.
Jump to the next step if your DK is version ES4, meaning v0.8.0 with no ES markings.
-After programming the SDFW and SCFW from the firmware bundle, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
+After programming the SDFW and SCFW from the SoC binaries, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
To update the FICR, you must run a J-Link script:
1. Get the Jlink script that updates the FICR::
diff --git a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/transition_guide_2.4.99-cs3_to_2.7_environment.rst b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/transition_guide_2.4.99-cs3_to_2.7_environment.rst
index cd142644ac5f..341c8d45f6be 100644
--- a/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/transition_guide_2.4.99-cs3_to_2.7_environment.rst
+++ b/doc/nrf/releases_and_maturity/migration/nRF54H20_migration_2.7/transition_guide_2.4.99-cs3_to_2.7_environment.rst
@@ -14,8 +14,8 @@ The main development environment changes introduced by v2.7.0 for the nRF54H20 D
* The |NCS| toolchain has been updated.
* nRF Util is now used by the build system.
* The Secure Domain Firmware (SDFW) and System Controller Firmware (SCFW) are no longer built from the source during the application build process.
- They are provided as a firmware bundle (v0.5.0) and provisioned to the nRF54H20 during the bring-up steps.
- The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new firmware bundle.
+ They are provided as a SoC binaries bundle (v0.5.0) and provisioned to the nRF54H20 during the bring-up steps.
+ The nRF54H20 DK must be in lifecycle state ``EMPTY`` to be provisioned with the new SoC binaries.
For additional details, see :ref:`transition_cs3_to_2_7_env_bringup`.
See the details in the `nRF54H20 DK bring-up`_ section below.
* To correctly operate the nRF54H20 DK, its lifecycle state must be set to ``RoT`` after the bring-up.
@@ -45,7 +45,7 @@ On your computer, one of the following operating systems:
:start-after: os_table_start
:end-before: os_table_end
-See :ref:`supported_OS` for more information about the tier definitions.
+See :ref:`supported_OS` for more information.
|supported OS|
@@ -236,9 +236,9 @@ Programming the SDFW and SCFW
=============================
After programming the BICR, the nRF54H20 SoC requires the provisioning of a bundle ( :file:`nrf54h20_soc_binaries_v0.5.0.zip`) containing the precompiled firmware for the Secure Domain and System Controller.
-To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the firmware bundle to the nRF54H20 DK, do the following:
+To program the Secure Domain Firmware (SDFW, also known as ``urot``) and the System Controller Firmware (SCFW) from the SoC binaries to the nRF54H20 DK, do the following:
-1. Download the `nRF54H20 firmware bundle v0.5.0`_.
+1. Download the `nRF54H20 SoC binaries v0.5.0`_.
.. note::
On MacOS, ensure that the ZIP file is not unpacked automatically upon download.
@@ -258,7 +258,7 @@ Updating the FICR
This step is required only if your nRF54H20 DK is version PCA10175 v0.7.2 or v0.8.0 ES3.3.
Jump to the next step if your DK is version ES4, meaning v0.8.0 with no ES markings.
-After programming the SDFW and SCFW from the firmware bundle, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
+After programming the SDFW and SCFW from the SoC binaries, you must update the Factory Information Configuration Registers (FICR) to correctly configure some trims of the nRF54H20 SoC.
To update the FICR, you must run a J-Link script:
1. Get the J-Link script that updates the FICR::
diff --git a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst
index e1bb0c2d452f..8efa09f9b1a5 100644
--- a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst
+++ b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst
@@ -30,11 +30,18 @@ Changelog
The following sections provide detailed lists of changes by component.
-IDE, and tool support
-=====================
+IDE, OS, and tool support
+=========================
* Added explicit mention of the :ref:`requirements_jlink` being required in the :ref:`installing_vsc` section of the installation page.
-* Updated the required `SEGGER J-Link`_ version to v7.94i.
+* Updated:
+
+ * The required `SEGGER J-Link`_ version to v7.94i.
+ * The :ref:`supported_OS` table on the :ref:`gs_recommended_versions` page:
+
+ * Linux 24.04 and macOS 15 have been added to the list.
+ * macOS 10.15, macOS 11, macOS 12 have been removed from the list.
+ * Tier descriptions have been updated.
Board support
=============
@@ -53,6 +60,13 @@ Build and configuration system
* Added the ``SB_CONFIG_MCUBOOT_NRF53_MULTI_IMAGE_UPDATE`` sysbuild Kconfig option that enables updating the network core on the nRF5340 SoC from external flash.
+* Removed the non-working support for configuring the NSIB signing key through the environmental or command line variable (``SB_SIGNING_KEY_FILE``) along with child image.
+
+ .. note::
+ This feature has never been functional.
+ To configure the signing key, use any available Kconfig method.
+
+
Bootloaders and DFU
===================
@@ -71,7 +85,10 @@ See also the `MCUboot`_ section.
Developing with nRF91 Series
============================
-|no_changes_yet_note|
+* Added:
+
+ * The :ref:`nRF91 modem tracing with RTT backend snippet ` to enable modem tracing using the RTT trace backend.
+ * The :ref:`nRF91 modem tracing with RAM backend snippet ` to enable modem tracing using the RAM trace backend.
Developing with nRF70 Series
============================
@@ -83,9 +100,10 @@ Working with nRF54H Series
|no_changes_yet_note|
-Working with nRF54L Series
-==========================
+Developing with nRF54L Series
+=============================
+* Added the :ref:`ug_nrf54l_cryptography` page, providing more information about the cryptographic peripherals of the nRF54L Series devices, the programming model for referencing keys, and the configuration.
* Updated the name and the structure of the section, with :ref:`ug_nrf54l` as the landing page.
* Removed the Getting started with the nRF54L15 PDK page, and instead included the information about the `Quick Start`_ app support.
@@ -112,7 +130,14 @@ Developing with PMICs
Security
========
-* The :kconfig:option:`CONFIG_CRACEN_IKG_SEED_KMU_SLOT` Kconfig option was added to allow customization of the KMU slot used to store CRACEN's Internal Key Generator (IKG) seed.
+Added:
+
+* The :kconfig:option:`CONFIG_CRACEN_IKG_SEED_KMU_SLOT` Kconfig option to allow customization of the KMU slot used to store CRACEN's Internal Key Generator (IKG) seed. The default IKG seed slot is now 183 (previously 0).
+* TF-M support to the :ref:`zephyr:nrf54l15dk_nrf54l15` (board target ``nrf54l15dk/nrf54l15/cpuapp/ns``).
+
+Removed:
+
+* TF-M support from the :ref:`zephyr:nrf54l15pdk_nrf54l15` (board target ``nrf54l15pdk/nrf54l15/cpuapp/ns``).
Protocols
=========
@@ -128,6 +153,10 @@ Amazon Sidewalk
Bluetooth® LE
-------------
+* Fixed an issue where the Bluetooth subsystem deadlocked when a Bluetooth link was lost during data transfer.
+ In this scenario, the disconnected event was never delivered to the application.
+ The issue only occurred when the :kconfig:option:`CONFIG_BT_HCI_ACL_FLOW_CONTROL` Kconfig option was enabled.
+ This option is enabled by default on the nRF5340 DK.
* The correct SoftDevice Controller library :kconfig:option:`CONFIG_BT_LL_SOFTDEVICE_MULTIROLE` will now be selected automatically when using coexistence based on :kconfig:option:`CONFIG_MPSL_CX` for nRF52-series devices.
* Added the APIs :c:func:`bt_hci_err_to_str` and :c:func:`bt_security_err_to_str` to allow printing error codes as strings.
Each API returns string representations of the error codes when the corresponding Kconfig option, :kconfig:option:`CONFIG_BT_HCI_ERR_TO_STR` or :kconfig:option:`CONFIG_BT_SECURITY_ERR_TO_STR`, is enabled.
@@ -177,8 +206,13 @@ Matter
* The :ref:`ug_matter_device_memory_profiling` section to the :ref:`ug_matter_device_optimizing_memory` page.
The section contains useful commands for measuring memory and troubleshooting tips.
+ * The ZMS file subsystem to all devices that contain RRAM, such as the nRF54L Series devices.
-* Changed the default Trusted Storage AEAD key to Hardware Unique Key (HUK) for supported nRF54L Series devices.
+* Changed:
+
+ * The default Trusted Storage AEAD key to Hardware Unique Key (HUK) for supported nRF54L Series devices.
+ * Renamed the ``CONFIG_CHIP_FACTORY_RESET_ERASE_NVS`` Kconfig option to :kconfig:option:`CONFIG_CHIP_FACTORY_RESET_ERASE_SETTINGS`.
+ The new Kconfig option now works for both NVS and ZMS file system backends.
Matter fork
+++++++++++
@@ -225,7 +259,7 @@ Machine learning
Asset Tracker v2
----------------
-|no_changes_yet_note|
+* Added a note that the :ref:`asset_tracker_v2` application is in the maintenance mode and recommended to use the :ref:`nrf_cloud_multi_service` sample instead.
Connectivity Bridge
-------------------
@@ -278,6 +312,9 @@ nRF Desktop
* Manifest semantic version information to the firmware information response in :ref:`nrf_desktop_dfu` when the module is used for SUIT DFU and the SDFW supports semantic versioning (requires v0.6.2 and higher).
* A missing DTS node compatible with ``zephyr,hid-device`` to the nRF52840 DK in the MCUboot QSPI configuration.
This ensures support for HID over USB when the USB next stack is selected.
+ * The USB next stack (:ref:`CONFIG_DESKTOP_USB_STACK_NEXT `) implies partial erase feature of the nRF SoC flash driver (:kconfig:option:`CONFIG_SOC_FLASH_NRF_PARTIAL_ERASE`).
+ This is done to improve stability of the USB next stack.
+ The partial erase feature works around device errors that might be reported by Windows USB host in Device Manager if USB cable is connected while erasing secondary image slot in the background.
* Updated:
@@ -290,7 +327,9 @@ nRF Desktop
Removed the ``CONFIG_DESKTOP_HWINFO_BLE_ADDRESS_FICR_POSTFIX`` Kconfig option as a postfix constant is no longer needed for the Zephyr native driver.
The driver uses ``BLE.ADDR``, ``BLE.IR``, and ``BLE.ER`` fields of the Factory Information Configuration Registers (FICR) to provide 8 bytes of unique hardware ID.
* The :ref:`nrf_desktop_dfu_mcumgr` to recognize the MCUmgr custom group ID (:kconfig:option:`CONFIG_MGMT_GROUP_ID_SUIT`) from the SUITFU subsystem (:kconfig:option:`CONFIG_MGMT_SUITFU`) as a DFU-related command group.
-
+ * All build configurations with the DFU over MCUmgr support to require encryption for operations on the Bluetooth GATT SMP service (see the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_ENCRYPT` Kconfig option).
+ The Bluetooth pairing procedure of the unpaired Bluetooth peers must now be performed before the DFU operation.
+ * The :ref:`nrf_desktop_dfu_mcumgr` to enable the MCUmgr handler that is used to report the bootloader information (see the :kconfig:option:`CONFIG_MCUMGR_GRP_OS_BOOTLOADER_INFO` Kconfig option).
nRF Machine Learning (Edge Impulse)
-----------------------------------
@@ -305,6 +344,7 @@ Serial LTE modem
* DTLS support for the ``#XUDPSVR`` and ``#XSSOCKET`` (UDP server sockets) AT commands when the :file:`overlay-native_tls.conf` configuration file is used.
* The :kconfig:option:`CONFIG_SLM_PPP_FALLBACK_MTU` Kconfig option that is used to control the MTU used by PPP when the cellular link MTU is not returned by the modem in response to the ``AT+CGCONTRDP=0`` AT command.
* Handler for new nRF Cloud event type ``NRF_CLOUD_EVT_RX_DATA_DISCON``.
+ * Support for socket option ``AT_SO_IPV6_DELAYED_ADDR_REFRESH``.
* Removed:
@@ -355,6 +395,28 @@ Bluetooth samples
* Fixed an issue where the HCI LE Set Extended Advertising Enable command was called with a NULL pointer.
+* Added support for the :ref:`zephyr:nrf54l15dk_nrf54l15` board in the following samples:
+
+ * :ref:`central_bas`
+ * :ref:`bluetooth_central_hr_coded`
+ * :ref:`multiple_adv_sets`
+ * :ref:`peripheral_bms`
+ * :ref:`peripheral_cgms`
+ * :ref:`peripheral_cts_client`
+ * :ref:`peripheral_gatt_dm`
+ * :ref:`peripheral_hr_coded`
+ * :ref:`peripheral_mds`
+ * :ref:`peripheral_nfc_pairing`
+ * :ref:`power_profiling`
+ * :ref:`peripheral_rscs`
+ * :ref:`shell_bt_nus`
+ * :ref:`ble_throughput`
+
+* :ref:`peripheral_mds` sample:
+
+ * Fixed an issue where device ID was incorrectly set during system initialization because MAC address was not available at that time.
+ The device ID is now set to ``ncs-ble-testdevice`` by default using the :kconfig:option:`CONFIG_MEMFAULT_NCS_DEVICE_ID` Kconfig option.
+
Bluetooth Fast Pair samples
---------------------------
@@ -396,9 +458,16 @@ Bluetooth Mesh samples
* :ref:`ble_mesh_dfu_target`
* :ref:`ble_mesh_dfu_distributor`
+* :ref:`bluetooth_ble_peripheral_lbs_coex` sample:
+
+ * Updated the usage of the :c:macro:`BT_LE_ADV_CONN` macro.
+ See the Bluetooth Host section in Zephyr's :ref:`zephyr:migration_3.7`.
+
Cellular samples
----------------
+* Added the :ref:`uicc_lwm2m_sample` sample.
+
* :ref:`fmfu_smp_svr_sample` sample:
* Removed the unused :ref:`at_cmd_parser_readme` library.
@@ -422,6 +491,7 @@ Cellular samples
* Board support files to enable Wi-Fi scanning for the Thingy:91 X.
* The :kconfig:option:`CONFIG_SEND_ONLINE_ALERT` Kconfig option to enable calling the :c:func:`nrf_cloud_alert` function on startup.
* Logging of the `reset reason code `_.
+ * The :kconfig:option:`CONFIG_POST_PROVISIONING_INTERVAL_M` Kconfig option to reduce the provisioning connection interval once the device successfully connects.
* Updated:
@@ -429,6 +499,9 @@ Cellular samples
* Handling of JITP association to improve speed and reliability.
* Renamed the :file:`overlay_nrf7002ek_wifi_no_lte.conf` overlay to :file:`overlay_nrf700x_wifi_mqtt_no_lte.conf`.
* Renamed the :file:`overlay_nrf7002ek_wifi_coap_no_lte.conf` overlay to :file:`overlay_nrf700x_wifi_coap_no_lte.conf`.
+ * The value of the :kconfig:option:`CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE` Kconfig option in the :file:`overlay_coap.conf` file.
+ A larger value is required now that the :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DOWNLOADS` Kconfig option is enabled.
+ * Handling of credentials check to disable network if not using the provisioning service.
* Fixed an issue where the accepted shadow was not marked as received because the config section did not yet exist in the shadow.
* Removed redundant logging now done by the :ref:`lib_nrf_cloud` library.
@@ -441,16 +514,25 @@ Cellular samples
* The :kconfig:option:`CONFIG_SEND_ONLINE_ALERT` Kconfig option to enable calling the :c:func:`nrf_cloud_alert` function on startup.
* Logging of the `reset reason code `_.
+ * Updated:
+
+ * Credentials check to also see if AWS root CA cert is likely present.
+ * Credentials check failure to disable network if not using the provisioning service.
+
* Removed redundant logging now done by the :ref:`lib_nrf_cloud` library.
* :ref:`nrf_cloud_rest_cell_pos_sample` sample:
* Removed redundant logging now done by the :ref:`lib_nrf_cloud` library.
+* :ref:`smp_svr` sample:
+
+ * Added sysbuild configuration files.
+
Cryptography samples
--------------------
-|no_changes_yet_note|
+* Added support for the ``nrf54l15dk/nrf54l15/cpuapp/ns`` board target, replacing ``nrf54l15pdk/nrf54l15/cpuapp/ns``.
Debug samples
-------------
@@ -502,7 +584,7 @@ Matter samples
* Added :ref:`Matter Lock schedule snippet `, and updated the documentation to use the snippet.
* Enabled the :ref:`ug_thread_build_report` generation in all samples.
-* Removed support for the nRF54L15 PDK in all samples, except for the ``*/ns`` :ref:`variant `.
+* Removed support for the nRF54L15 PDK in all samples.
Networking samples
------------------
@@ -550,7 +632,9 @@ Peripheral samples
PMIC samples
------------
-* Added support for the :ref:`zephyr:nrf54l15pdk_nrf54l15` to the PMIC samples.
+* Added:
+
+ * Support for the :ref:`zephyr:nrf54l15dk_nrf54l15` and :ref:`zephyr:nrf54h20dk_nrf54h20` to the PMIC samples.
* :ref:`npm1300_fuel_gauge` sample:
@@ -574,7 +658,7 @@ SUIT samples
Trusted Firmware-M (TF-M) samples
---------------------------------
-|no_changes_yet_note|
+* Replaced support for the ``nrf54l15pdk/nrf54l15/cpuapp/ns`` board target with ``nrf54l15dk/nrf54l15/cpuapp/ns``.
Thread samples
--------------
@@ -591,6 +675,7 @@ Zigbee samples
* :ref:`zigbee_light_switch_sample` sample:
* Added the option to configure transmission power.
+ * Fixed the FOTA configuration for the nRF5340 DK.
Wi-Fi samples
-------------
@@ -687,12 +772,18 @@ Common Application Framework
Debug libraries
---------------
-|no_changes_yet_note|
+* :ref:`mod_memfault` library:
+
+ * Added location metrics, including GNSS, cellular, and Wi-Fi specific metrics.
+ The metrics are enabled with the :kconfig:option:`CONFIG_MEMFAULT_NCS_LOCATION_METRICS` Kconfig option.
DFU libraries
-------------
-|no_changes_yet_note|
+* :ref:`lib_dfu_target` library:
+
+ * Updated the DFU Target SUIT implementation to the newest version of the SUIT.
+ * Added SUIT cache processing to the DFU Target SUIT library, as described in the :ref:`lib_dfu_target_suit_style_update` section.
Gazell libraries
----------------
@@ -708,6 +799,8 @@ Modem libraries
The :ref:`at_parser_readme` is a library that parses AT command responses, notifications, and events.
Compared to the deprecated :ref:`at_cmd_parser_readme` library, it does not allocate memory dynamically and has a smaller footprint.
For more information on how to transition from the :ref:`at_cmd_parser_readme` library to the :ref:`at_parser_readme` library, see the :ref:`migration guide `.
+ * The :ref:`lib_uicc_lwm2m` library.
+ This library reads the LwM2M bootstrap configuration from SIM.
* :ref:`at_cmd_parser_readme` library:
@@ -737,14 +830,23 @@ Modem libraries
Use the :kconfig:option:`CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT` or :kconfig:option:`CONFIG_LTE_NETWORK_MODE_LTE_M_NBIOT_GPS` Kconfig option instead.
In addition, you can control the priority between LTE-M and NB-IoT using the :kconfig:option:`CONFIG_LTE_MODE_PREFERENCE` Kconfig option.
- * Added:
+ * Deprecated the :c:macro:`LTE_LC_ON_CFUN` macro.
+ Use the :c:macro:`NRF_MODEM_LIB_ON_CFUN` macro instead.
- * A new :c:enum:`LTE_LC_EVT_RAI_UPDATE` event that is enabled with the :kconfig:option:`CONFIG_LTE_RAI_REQ` Kconfig option.
+ * Added a new :c:enumerator:`LTE_LC_EVT_RAI_UPDATE` event that is enabled with the :kconfig:option:`CONFIG_LTE_RAI_REQ` Kconfig option.
* Updated:
* To use the :ref:`at_parser_readme` library instead of the :ref:`at_cmd_parser_readme` library.
* The :c:func:`lte_lc_neighbor_cell_measurement` function to return an error for invalid GCI count.
+ * The :c:func:`lte_lc_factory_reset` function has been deprecated.
+ Use the ``AT%XFACTORYRESET`` AT command instead.
+ Refer to the :ref:`migration guide ` for more details.
+ * The :c:enum:`lte_lc_factory_reset_type` type has been deprecated.
+ * The :c:func:`lte_lc_reduced_mobility_get` and :c:func:`lte_lc_reduced_mobility_set` functions have been deprecated.
+ Refer to the :ref:`migration guide ` for more details.
+ * The :c:enum:`lte_lc_reduced_mobility_mode` type has been deprecated.
+ Refer to the :ref:`migration guide ` for more details.
* :ref:`lib_location` library:
@@ -778,14 +880,34 @@ Modem libraries
* :ref:`nrf_modem_lib_readme`:
- * Updated the RTT trace backend to allocate the RTT channel at boot, instead of when the modem is activated.
+ * Added support for socket option ``SO_IPV6_DELAYED_ADDR_REFRESH``.
+
+ * Updated:
+
+ * The RTT trace backend to allocate the RTT channel at boot, instead of when the modem is activated.
+ * The flash trace backend to solve concurrency issues when reading traces while writing, and when reinitializing the application (warm start).
+ * Renamed the nRF91 socket offload layer from ``nrf91_sockets`` to ``nrf9x_sockets`` to reflect that the offload layer is not exclusive to the nRF91 Series SiPs.
+ * The :ref:`modem_trace_module` to let the trace thread sleep when the modem trace level is set to :c:enumerator:`NRF_MODEM_LIB_TRACE_LEVEL_OFF` using the :c:func:`nrf_modem_lib_trace_level_set` function, and the trace backend returns ``-ENOSPC``.
+ The trace thread wakes up when another trace level is set.
+ * The RTT trace backend to return ``-ENOSPC`` when the RTT buffer is full.
+ This allows the trace thread to sleep to save power.
+
+
* Rename the nRF91 socket offload layer from ``nrf91_sockets`` to ``nrf9x_sockets`` to reflect that the offload layer is not exclusive to the nRF91 Series SiPs.
- * Removed support for deprecated RAI socket options ``SO_RAI_LAST``, ``SO_RAI_NO_DATA``, ``SO_RAI_ONE_RESP``, ``SO_RAI_ONGOING``, and ``SO_RAI_WAIT_MORE``.
+
+ * Removed:
+
+ * Support for deprecated RAI socket options ``SO_RAI_LAST``, ``SO_RAI_NO_DATA``, ``SO_RAI_ONE_RESP``, ``SO_RAI_ONGOING``, and ``SO_RAI_WAIT_MORE``.
+ * The mutex in the :c:func:`nrf9x_socket_offload_getaddrinfo` function after updating the :c:func:`nrf_getaddrinfo` function to handle concurrent requests.
* :ref:`modem_info_readme` library:
* Fixed a potential issue with scanf in the :c:func:`modem_info_get_current_band` function, which could lead to memory corruption.
+* :ref:`modem_key_mgmt` library:
+
+ * Added the :c:func:`modem_key_mgmt_clear` function to delete all credentials associated with a security tag.
+
* :ref:`pdn_readme` library:
* Added the event ``PDN_EVENT_CTX_DESTROYED`` to indicate when a PDP context is destroyed.
@@ -805,6 +927,10 @@ Modem libraries
* Added the :kconfig:option:`CONFIG_AT_SHELL_UNESCAPE_LF` Kconfig option to enable reception of multiline AT commands.
* Updated the :c:func:`at_shell` function to replace ``\n`` with ```` if :kconfig:option:`CONFIG_AT_SHELL_UNESCAPE_LF` is enabled.
+* :ref:`modem_key_mgmt` library:
+
+ * Updated the :c:func:`modem_key_mgmt_read()` function to return the actual size buffer required to read the certificate if the size provided is too small.
+
Multiprotocol Service Layer libraries
-------------------------------------
@@ -841,6 +967,8 @@ Libraries for networking
* The :kconfig:option:`CONFIG_NRF_CLOUD_VERBOSE_DETAILS` Kconfig option to print all details instead of only the device ID.
* Experimental support for shadow transform requests over MQTT using the :c:func:`nrf_cloud_shadow_transform_request` function.
This functionality is enabled by the :kconfig:option:`CONFIG_NRF_CLOUD_MQTT_SHADOW_TRANSFORMS` Kconfig option.
+ * The :kconfig:option:`CONFIG_NRF_CLOUD_COMBINED_CA_CERT_SIZE_THRESHOLD` and :kconfig:option:`CONFIG_NRF_CLOUD_COAP_CA_CERT_SIZE_THRESHOLD` Kconfig options to compare with the current root CA certificate size.
+ * The functions :c:func:`nrf_cloud_sec_tag_coap_jwt_set` and :c:func:`nrf_cloud_sec_tag_coap_jwt_get` to set and get the sec tag used for nRF Cloud CoAP JWT signing.
* Updated:
@@ -851,6 +979,8 @@ Libraries for networking
* To use nRF Cloud's custom MQTT topics instead of the default AWS topics.
* MQTT and CoAP transports to use a single unified DNS lookup mechanism that supports IPv4 and IPv6, fallback to IPv4, and handling of multiple addresses returned by :c:func:`getaddrinfo`.
* The log module in the :file:`nrf_cloud_fota_common.c` file from ``NRF_CLOUD`` to ``NRF_CLOUD_FOTA``.
+ * The :c:func:`nrf_cloud_credentials_configured_check` function to retrieve the size of the root CA, and compare it to thresholds to decide whether the CoAP, AWS, or both root CA certs are present.
+ Use this information to log helpful information and decide whether the root CA certificates are compatible with the configured connection type.
* Deprecated:
@@ -860,7 +990,10 @@ Libraries for networking
Support for statically configured nRF Cloud IP Addresses will soon be removed.
Leave :kconfig:option:`CONFIG_NRF_CLOUD_STATIC_IPV4` disabled to instead use automatic DNS lookup.
- * Fixed an issue in the :c:func:`nrf_cloud_send` function that prevented data in the provided :c:struct:`nrf_cloud_obj` structure from being sent to the bulk and bin topics.
+ * Fixed:
+
+ * An issue in the :c:func:`nrf_cloud_send` function that prevented data in the provided :c:struct:`nrf_cloud_obj` structure from being sent to the bulk and bin topics.
+ * An issue where the modem was not shut down from bootloader mode before attempting to initialize in normal mode after an unsuccessful update.
* :ref:`lib_nrf_cloud_coap` library:
@@ -873,6 +1006,12 @@ Libraries for networking
* To use a shorter resource string for the ``d2c/bulk`` resource.
* The function :c:func:`nrf_cloud_coap_shadow_get` to return ``-E2BIG`` if the received shadow data was truncated because the provided buffer was not big enough.
+ * The :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DOWNLOADS` Kconfig option to be enabled by default if either the :kconfig:option:`CONFIG_NRF_CLOUD_FOTA_POLL` or :kconfig:option:`CONFIG_NRF_CLOUD_PGPS` Kconfig option is enabled.
+
+ * Removed the experimental status (:kconfig:option:`CONFIG_EXPERIMENTAL`) from the :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DOWNLOADS` Kconfig option.
+
+ * Added the :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DISCONNECT_ON_FAILED_REQUEST` Kconfig option to disconnect the CoAP client on a failed request.
+ * Added the :kconfig:option:`CONFIG_NRF_CLOUD_COAP_JWT_SEC_TAG` Kconfig option to allow for a separate sec tag to be used for nRF Cloud CoAP JWT signing.
* :ref:`lib_lwm2m_client_utils` library:
@@ -889,13 +1028,14 @@ Libraries for networking
* Fixed the missing log source when passing a direct log call to the nRF Cloud logging backend.
This caused the log parser to incorrectly use the first declared log source with direct logs when using dictionary mode.
+ * Updated to use INF log level when the cloud side changes the log level.
+
* :ref:`lib_nrf_cloud_fota` library:
* Added:
* FOTA status callback.
- * The :kconfig:option:`CONFIG_NRF_CLOUD_COAP_DISCONNECT_ON_FAILED_REQUEST` Kconfig option to disconnect the CoAP client on a failed request.
- * The :kconfig:option:`CONFIG_NRF_CLOUD_FOTA_SMP` Kconfig option to enable experimental support for SMP FOTA using MQTT.
+ * The :kconfig:option:`CONFIG_NRF_CLOUD_FOTA_SMP` Kconfig option to enable experimental support for SMP FOTA.
* Updated:
@@ -903,9 +1043,18 @@ Libraries for networking
The range of the option is now from 128 to 1900 bytes, and the default value is 1700 bytes.
* The function :c:func:`nrf_cloud_fota_poll_process` to be used asynchrounously if a callback to handle errors is provided.
+* :ref:`lib_mqtt_helper` library:
+
+ * Updated the :kconfig:option:`CONFIG_MQTT_HELPER_PROVISION_CERTIFICATES` Kconfig option to depend on :kconfig:option:`CONFIG_TLS_CREDENTIALS` instead of specific boards.
+
* :ref:`lib_nrf_provisioning` library:
* Added support for the ``SO_KEEPOPEN`` socket option to keep the socket open even during PDN disconnect and reconnect.
+ * Updated the check interval logging to use INF to improve customer experience.
+
+* :ref:`lib_nrf_cloud_alert` library:
+
+ * Updated to use INF log level when cloud side changes the alert enable flag.
Libraries for NFC
-----------------
@@ -1067,9 +1216,9 @@ Documentation
* Added:
* The :ref:`ug_app_dev` section, which includes pages from the :ref:`configuration_and_build` section and from the removed Device configuration guides section.
- * The :ref:`peripheral_sensor_node_shield` page.
* The :ref:`dfu_tools_mcumgr_cli` page after it was removed from the Zephyr repository.
* The :ref:`ug_nrf54h20_suit_soc_binaries` page.
+ * The :ref:`ug_nrf54h20_suit_push` page documentating the SUIT push model-based update process.
* Restructured the :ref:`app_bootloaders` documentation and combined the DFU and bootloader articles.
Additionally, created a new bootloader :ref:`bootloader_quick_start`.
@@ -1081,6 +1230,8 @@ Documentation
* The Device configuration guides section and moved its contents to :ref:`ug_app_dev`.
* The Advanced building procedures page and moved its contents to the :ref:`building` page.
* nRF70 Series support is upstreamed to Zephyr, hence the documentation is removed from the |NCS|.
+ * The standalone pages for getting started with nRF52 Series and with the nRF5340 DK.
+ These pages have been replaced by the `Quick Start`_ app, which now supports the nRF52 Series devices and the nRF5340 DK.
* Updated:
diff --git a/doc/nrf/samples/other.rst b/doc/nrf/samples/other.rst
index d7e4ba380729..c4f4e3936503 100644
--- a/doc/nrf/samples/other.rst
+++ b/doc/nrf/samples/other.rst
@@ -12,4 +12,5 @@ Other samples
../../../samples/ipc/*/README
../../../samples/mpsl/*/README
../../../samples/benchmarks/*/README
+ ../../../samples/nrf_compress/*/README
../../../tests/benchmarks/multicore/*/README
diff --git a/doc/nrf/samples/wifi_zephyr.rst b/doc/nrf/samples/wifi_zephyr.rst
index 1cdd1cda5af0..e994b665cbe1 100644
--- a/doc/nrf/samples/wifi_zephyr.rst
+++ b/doc/nrf/samples/wifi_zephyr.rst
@@ -10,15 +10,12 @@ Wi-Fi: Zephyr networking samples
In addition to |NCS| samples, it is possible to run selected networking samples with Wi-Fi®, provided and maintained as part of the upstream Zephyr project.
The following list specifies samples that are currently supported with the Wi-Fi driver:
-* :zephyr:code-sample:`dhcpv4-client`
* :zephyr:code-sample:`dns-resolve`
* :zephyr:code-sample:`ipv4-autoconf`
* :zephyr:code-sample:`mdns-responder`
* :zephyr:code-sample:`mqtt-publisher`
* :zephyr:code-sample:`mqtt-sn-publisher`
-* :zephyr:code-sample:`coap-client`
* :zephyr:code-sample:`coap-server`
-* :zephyr:code-sample:`sockets-echo`
* :zephyr:code-sample:`async-sockets-echo`
* :zephyr:code-sample:`sockets-echo-client`
* :zephyr:code-sample:`sockets-echo-server`
@@ -27,42 +24,26 @@ The following list specifies samples that are currently supported with the Wi-Fi
* :zephyr:code-sample:`syslog-net`
* :zephyr:code-sample:`telnet-console`
-Configuration
-*************
-
-|config|
-
-Before you build a sample, you must configure the following Wi-Fi credentials in the :file:`overlay-nrf700x.conf` file:
-
-* :kconfig:option:`CONFIG_WIFI_CREDENTIALS_STATIC_SSID` - Network name (SSID)
-* :kconfig:option:`CONFIG_WIFI_CREDENTIALS_STATIC_PASSWORD` - Password
-* :kconfig:option:`CONFIG_WIFI_CREDENTIALS_STATIC_TYPE` - Security type (Optional)
-
-.. note::
- You can also use ``menuconfig`` to configure Wi-Fi credentials.
-
-See :ref:`zephyr:menuconfig` in the Zephyr documentation for instructions on how to run ``menuconfig``.
-
Building and running
********************
To build the sample with |VSC|, follow the steps listed on the `How to build an application`_ page in the |nRFVSC| documentation.
See :ref:`building` for other building scenarios, :ref:`programming` for programming steps, and :ref:`testing` for general information about testing and debugging in the |NCS|.
-An overlay file, ``overlay-nrf700x.conf`` is provided to all Zephyr samples, which configures the sample to run with the Wi-Fi driver.
+A :ref:`Wi-Fi snippet ` configuration is provided to all Zephyr samples, which configures the sample to run with the Wi-Fi driver.
To build Zephyr samples for the nRF7002 DK, use the ``nrf7002dk/nrf5340/cpuapp`` board target.
The following is an example of the CLI command:
.. code-block:: console
- west build -b nrf7002dk/nrf5340/cpuapp -- -DEXTRA_CONF_FILE=overlay-nrf700x.conf
+ west build -b nrf7002dk/nrf5340/cpuapp -S wifi-ipv4
To build for the nRF7002 EK with nRF5340 DK, use the ``nrf5340dk/nrf5340/cpuapp`` board target with the ``SHIELD`` CMake option set to ``nrf7002ek``.
The following is an example of the CLI command:
.. code-block:: console
- west build -b nrf5340dk/nrf5340/cpuapp -- -DSHIELD=nrf7002ek -DEXTRA_CONF_FILE=overlay-nrf700x.conf
+ west build -b nrf5340dk/nrf5340/cpuapp -S wifi-ipv4 -- -DSHIELD=nrf7002ek -DSB_CONFIG_WIFI_NRF70=y
-For additional details about running a sample, refer to the respective sample in Zephyr’s Samples and Demos documentation.
+For additional details about running a sample, refer to the respective sample in Zephyr’s :ref:`Samples and Demos documentation `.
diff --git a/doc/nrf/security/tfm.rst b/doc/nrf/security/tfm.rst
index 3342a40e49ef..e9185546ef61 100644
--- a/doc/nrf/security/tfm.rst
+++ b/doc/nrf/security/tfm.rst
@@ -126,6 +126,22 @@ By using the :kconfig:option:`CONFIG_TFM_SECURE_UART0`. the TF-M UART instance b
When the TF-M and application use the same UART, the TF-M will disable logging after it has booted and it will only re-enable it again to log a fatal error.
+Provisioning
+************
+
+For the devices that need provisioning, TF-M implements the following Platform Root of Trust (PRoT) Security Lifecycle states that conform to the `ARM Platform Security Model 1.1`_:
+
+* Device Assembly and Test
+* PRoT Provisioning
+* Secured
+
+The device starts in the **Device Assembly and Test** state.
+The :ref:`provisioning_image` sample shows how to move the device from the **Device Assembly and Test** state to the **PRoT Provisioning** state, and how to provision the device with hardware unique keys (HUKs) and an identity key.
+
+To move the device from the **PRoT Provisioning** state to the **Secured** state, set the :kconfig:option:`CONFIG_TFM_NRF_PROVISIONING` Kconfig option for your application.
+In the first boot, TF-M will ensure that the keys are stored in the Key Management Unit (KMU) and move the device to the **Secured** state.
+The :ref:`tfm_psa_template` sample shows how to achieve this.
+
.. _ug_tfm_manual_VCOM_connection:
Manual connection to Virtual COM ports on the nRF5340 DK
diff --git a/doc/nrf/shortcuts.txt b/doc/nrf/shortcuts.txt
index eca25b503067..ffbf3d599994 100644
--- a/doc/nrf/shortcuts.txt
+++ b/doc/nrf/shortcuts.txt
@@ -7,6 +7,7 @@
.. |release_number_tt| replace:: ``2.7.0``
.. |jlink_ver| replace:: v7.94i
+.. |jlink_ver_vsc| replace:: v7.94i
.. ### Config shortcuts
@@ -207,7 +208,8 @@
The NFCT driver is part of the nrfx driver package.
For more information about this driver, see the NFCT driver page in the `nrfx`_ repository.
-.. |Supported OS| replace:: The operating system versions that support the |NCS| tools are listed in the :ref:`supported_OS` section.
+.. |Supported OS| replace:: The operating system versions that support the |NCS| firmware are listed in the :ref:`supported_OS` section.
+ Some additional tools for working with Nordic Semiconductor devices might have :ref:`different OS requirements `.
.. |no_changes_yet_note| replace:: No changes since the latest |NCS| release.
@@ -239,3 +241,9 @@
.. |nrf54_buttons_leds_numbering| replace:: The nRF54 DKs use a different numbering pattern for LED and buttons.
See the User interface section for full overview.
+
+.. |ATv2_maintenance_note| replace:: The Asset Tracker v2 application is in maintenance mode.
+ For new projects, it is recommended to use the :ref:`nrf_cloud_multi_service` sample instead.
+
+.. |toolchain_management_ncs_versions| replace:: The Toolchain Manager installation is recommended only when using the nRF54H20 DK with the |NCS| v2.7.0.
+ When using any other DK, the Toolchain Manager installation is recommended for the |NCS| v1.9.x and earlier versions.
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 8c2452d9e5c4..58998b09c493 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -2,16 +2,16 @@
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
menuconfig GPIO_NRFE
- bool "Emulated GPIO"
+ bool "Software Defined GPIO"
default y
- depends on DT_HAS_NORDIC_NRF_EGPIO_ENABLED
+ depends on DT_HAS_NORDIC_NRFE_GPIO_ENABLED
select IPC_SERVICE
select MBOX
help
- Use emulated GPIO driver.
+ Use Software Defined GPIO driver.
config GPIO_NRFE_INIT_PRIORITY
- int "Emulated GPIO init priority"
+ int "Software Defined GPIO init priority"
depends on GPIO_NRFE
default 48
help
diff --git a/drivers/gpio/gpio_nrfe.c b/drivers/gpio/gpio_nrfe.c
index fd443b5ca7d0..fcaa4cb4bc49 100644
--- a/drivers/gpio/gpio_nrfe.c
+++ b/drivers/gpio/gpio_nrfe.c
@@ -4,7 +4,7 @@
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
-#define DT_DRV_COMPAT nordic_nrf_egpio
+#define DT_DRV_COMPAT nordic_nrfe_gpio
#include
#include
diff --git a/dts/bindings/gpio/nordic,nrf-egpio.yaml b/dts/bindings/gpio/nordic,nrfe-gpio.yaml
similarity index 84%
rename from dts/bindings/gpio/nordic,nrf-egpio.yaml
rename to dts/bindings/gpio/nordic,nrfe-gpio.yaml
index d221eb0dafa6..899d77d8f08a 100644
--- a/dts/bindings/gpio/nordic,nrf-egpio.yaml
+++ b/dts/bindings/gpio/nordic,nrfe-gpio.yaml
@@ -1,8 +1,8 @@
# Copyright (c) 2024 Nordic Semiconductor
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
-description: Emulated GPIO node
+description: Software defined GPIO node
-compatible: "nordic,nrf-egpio"
+compatible: "nordic,nrfe-gpio"
include: [gpio-controller.yaml, base.yaml]
diff --git a/include/dfu/dfu_target_suit.h b/include/dfu/dfu_target_suit.h
index 2c53bcae17e9..b3584a250ce8 100644
--- a/include/dfu/dfu_target_suit.h
+++ b/include/dfu/dfu_target_suit.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023 Nordic Semiconductor ASA
+ * Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
@@ -29,23 +29,23 @@ extern "C" {
int dfu_target_suit_set_buf(uint8_t *buf, size_t len);
/**
- * @brief See if data in buf indicates SUIT style upgrade.
+ * @brief Initialize the DFU target for the specific image and perform the necessary steps to
+ * receive the firmware.
*
- * Not implemented as it does not currently have any use cases.
- * Currently always returns -ENOSYS.
- *
- * @retval -ENOSYS
- */
-bool dfu_target_suit_identify(const void *const buf);
-
-/**
- * @brief Initialize dfu target, perform steps necessary to receive firmware.
+ * If you call this function, you must call dfu_target_suit_done() to finalize the firmware upgrade
+ * before initializing any other images.
*
* @param[in] file_size Size of the current file being downloaded.
- * @param[in] img_num Image pair index.
+ * @param[in] img_num Image index.
* @param[in] cb Callback for signaling events(unused).
*
- * @retval 0 If successful, negative errno otherwise.
+ * @return 0 If successful.
+ * @return -ENODEV errno code if the buffer has not been initialized.
+ * @return -ENXIO errno code if the partition dedicated for provided image is not found.
+ * @return -ENOMEM errno code if the buffer is not large enough.
+ * @return -EFAULT errno code if flash device assigned to the image is not available on the device.
+ * @return -EBUSY errno code if the any image is already initialized and stream flash is in use.
+ * @return other negative errno code if the initialization failed.
*/
int dfu_target_suit_init(size_t file_size, int img_num, dfu_target_callback_t cb);
@@ -54,7 +54,7 @@ int dfu_target_suit_init(size_t file_size, int img_num, dfu_target_callback_t cb
*
* @param[out] offset Returns the offset of the firmware upgrade.
*
- * @return 0 if success, otherwise negative value if unable to get the offset
+ * @retval 0 If success. Otherwise, a negative value if unable to get the offset.
*/
int dfu_target_suit_offset_get(size_t *offset);
@@ -64,7 +64,9 @@ int dfu_target_suit_offset_get(size_t *offset);
* @param[in] buf Pointer to data that should be written.
* @param[in] len Length of data to write.
*
- * @return 0 on success, negative errno otherwise.
+ * @return 0 If successful.
+ * @return -EFAULT errno code if the stream flash has not been initialized for any dfu image.
+ * @return other negative errno code if the initialization failed.
*/
int dfu_target_suit_write(const void *const buf, size_t len);
@@ -73,21 +75,24 @@ int dfu_target_suit_write(const void *const buf, size_t len);
* @param[in] successful Indicate whether the firmware was successfully recived.
*
- * @return 0 on success, negative errno otherwise.
+ * @retval 0 on success, negative errno otherwise.
*/
int dfu_target_suit_done(bool successful);
/**
- * @brief Schedule update and reset the device.
+ * @brief Schedule an update.
+ *
+ * This call processes SUIT envelope and requests images update.
*
- * This call requests images update and immediately starts it
- * by resetting the device.
+ * Firmware update will start after the device reboot.
+ * You can reboot device, for example, by calling dfu_target_suit_reboot().
*
* @param[in] img_num Given image pair index or -1 for all
* of image pair indexes.
*
- * @return 0 for a successful request or a negative error
- * code identicating reason of failure.
+ * @retval 0 Successful request.
+ * @retval negative_errno_code Negative error
+ * code indicating the reason of failure.
**/
int dfu_target_suit_schedule_update(int img_num);
@@ -96,10 +101,21 @@ int dfu_target_suit_schedule_update(int img_num);
*
* Cancels any ongoing updates.
*
- * @return 0 on success, negative errno otherwise.
+ * @retval negative_errno_code Negative error
+ * code indicating the reason of failure.
*/
int dfu_target_suit_reset(void);
+/**
+ * @brief Reboot the device and apply the new image.
+ *
+ * The reboot can be delayed by setting the
+ * CONFIG_DFU_TARGET_REBOOT_RESET_DELAY_MS Kconfig option value to the desired delay value.
+ *
+ * @retval negative_errno_code Negative error
+ * code indicating the reason of failure.
+ */
+int dfu_target_suit_reboot(void);
#ifdef __cplusplus
}
diff --git a/include/esb.h b/include/esb.h
index bb490a008f12..af762abed9e5 100644
--- a/include/esb.h
+++ b/include/esb.h
@@ -126,6 +126,11 @@ enum esb_bitrate {
/** 4 Mb radio mode. */
ESB_BITRATE_4MBPS = NRF_RADIO_MODE_NRF_4MBIT_H_0_5,
#endif /* defined(RADIO_MODE_MODE_Nrf_4Mbit0_5) */
+
+#if defined(RADIO_MODE_MODE_Nrf_4Mbit_0BT6)
+ /** 4 Mb radio mode. */
+ ESB_BITRATE_4MBPS = RADIO_MODE_MODE_Nrf_4Mbit_0BT6,
+#endif /* defined(RADIO_MODE_MODE_Nrf_4Mbit_0BT6) */
};
/** @brief Enhanced ShockBurst CRC modes. */
diff --git a/include/flash_map_pm.h b/include/flash_map_pm.h
index 4232f646ccff..baa5cfdb7476 100644
--- a/include/flash_map_pm.h
+++ b/include/flash_map_pm.h
@@ -29,7 +29,8 @@
#define image_scratch mcuboot_scratch
#define image_scratch mcuboot_scratch
-#if (CONFIG_SETTINGS_FCB || CONFIG_SETTINGS_NVS || defined(PM_SETTINGS_STORAGE_ID))
+#if (CONFIG_SETTINGS_FCB || CONFIG_SETTINGS_NVS || defined(PM_SETTINGS_STORAGE_ID) ||\
+ CONFIG_SETTINGS_ZMS)
#define storage settings_storage
#define storage_partition settings_storage
#elif CONFIG_FILE_SYSTEM_LITTLEFS
@@ -38,6 +39,9 @@
#elif CONFIG_NVS
#define storage nvs_storage
#define storage_partition nvs_storage
+#elif CONFIG_ZMS
+#define storage zms_storage
+#define storage_partition zms_storage
#endif
#define PM_ID(label) PM_##label##_ID
diff --git a/include/modem/lte_lc.h b/include/modem/lte_lc.h
index 094119026a77..abb42a32db97 100644
--- a/include/modem/lte_lc.h
+++ b/include/modem/lte_lc.h
@@ -652,7 +652,10 @@ enum lte_lc_ce_level {
LTE_LC_CE_LEVEL_UNKNOWN = UINT8_MAX,
};
-/** Reduced mobility mode. */
+/** Reduced mobility mode.
+ *
+ * @deprecated since v2.8.0.
+ */
enum lte_lc_reduced_mobility_mode {
/** Functionality according to the 3GPP relaxed monitoring feature. */
LTE_LC_REDUCED_MOBILITY_DEFAULT = 0,
@@ -742,7 +745,11 @@ enum lte_lc_modem_evt {
LTE_LC_MODEM_EVT_CE_LEVEL_3,
};
-/** Type of factory reset to perform. */
+/**
+ * Type of factory reset to perform.
+ *
+ * @deprecated since v2.8.0.
+ */
enum lte_lc_factory_reset_type {
/** Reset all modem data to factory settings. */
LTE_LC_FACTORY_RESET_ALL = 0,
@@ -1186,6 +1193,8 @@ struct lte_lc_cfun_cb {
* @param name Callback name.
* @param _callback Callback function.
* @param _context User-defined context.
+ *
+ * @deprecated since v2.8.0, use @ref NRF_MODEM_LIB_ON_CFUN instead.
*/
#define LTE_LC_ON_CFUN(name, _callback, _context) \
static void _callback(enum lte_lc_func_mode, void *ctx); \
@@ -1763,6 +1772,8 @@ int lte_lc_periodic_search_request(void);
* @retval 0 if a mode was found and written to the provided pointer.
* @retval -EINVAL if input parameter was @c NULL.
* @retval -EFAULT if an AT command failed.
+ *
+ * @deprecated since v2.8.0.
*/
int lte_lc_reduced_mobility_get(enum lte_lc_reduced_mobility_mode *mode);
@@ -1775,6 +1786,8 @@ int lte_lc_reduced_mobility_get(enum lte_lc_reduced_mobility_mode *mode);
*
* @retval 0 if the new reduced mobility mode was accepted by the modem.
* @retval -EFAULT if an AT command failed.
+ *
+ * @deprecated since v2.8.0.
*/
int lte_lc_reduced_mobility_set(enum lte_lc_reduced_mobility_mode mode);
@@ -1789,6 +1802,8 @@ int lte_lc_reduced_mobility_set(enum lte_lc_reduced_mobility_mode mode);
*
* @retval 0 if factory reset was performed successfully.
* @retval -EFAULT if an AT command failed.
+ *
+ * @deprecated since v2.8.0.
*/
int lte_lc_factory_reset(enum lte_lc_factory_reset_type type);
diff --git a/include/modem/modem_jwt.h b/include/modem/modem_jwt.h
index 9f604fb6be2f..178a70795800 100644
--- a/include/modem/modem_jwt.h
+++ b/include/modem/modem_jwt.h
@@ -74,8 +74,8 @@ struct jwt_data {
* Subject and audience fields may be NULL in which case those fields are left out
* from generated JWT token.
*
- * If sec_tag value is given as zero, JWT is signed with Nordic's own keys that
- * already exist in the modem.
+ * If sec_tag value is given as zero, JWT is signed with the device's identity key that
+ * already exists in the modem.
*
* @param[in,out] jwt Pointer to struct containing JWT parameters and result.
*
@@ -87,6 +87,9 @@ int modem_jwt_generate(struct jwt_data *const jwt);
/**
* @brief Gets the device and/or modem firmware UUID from the modem
* and returns it as a NULL terminated string in the supplied struct(s).
+ * The device UUID can be used as a device identifier for cloud services and
+ * for secure device management using the nRF Cloud Identity Service.
+ * The modem firmware UUID represents the installed modem firmware version.
*
* Uses internally @ref modem_jwt_generate and parses JWT token for "iss"
* "jti" fields which contains given UUID values.
diff --git a/include/modem/modem_key_mgmt.h b/include/modem/modem_key_mgmt.h
index 952123c49ba2..3f79df015d6f 100644
--- a/include/modem/modem_key_mgmt.h
+++ b/include/modem/modem_key_mgmt.h
@@ -79,6 +79,22 @@ int modem_key_mgmt_write(nrf_sec_tag_t sec_tag,
int modem_key_mgmt_delete(nrf_sec_tag_t sec_tag,
enum modem_key_mgmt_cred_type cred_type);
+/**
+ * @brief Delete all credentials for a given sectag from persistent storage.
+ *
+ * @note If used when the LTE link is active, the function will return
+ * an error and the credentials will not be deleted.
+ *
+ * @param[in] sec_tag The security tag of the credential to delete.
+ *
+ * @retval 0 On success.
+ * @retval -ENOBUFS Internal buffer is too small.
+ * @retval -EACCES Access to credential not allowed.
+ * @retval -EPERM Not permitted when the LTE link is active.
+ * @retval -ECANCELED Canceled because voltage is low (power off warning).
+ */
+int modem_key_mgmt_clear(nrf_sec_tag_t sec_tag);
+
/**
* @brief Read a credential from persistent storage.
*
@@ -90,7 +106,8 @@ int modem_key_mgmt_delete(nrf_sec_tag_t sec_tag,
*
* @retval 0 On success.
* @retval -ENOBUFS Internal buffer is too small.
- * @retval -ENOMEM Credential does not fit in @p buf.
+ * @retval -ENOMEM Credential does not fit in @p buf. Check *len for
+ * required size.
* @retval -ENOENT No credential associated with the given
* @p sec_tag and @p cred_type.
* @retval -EACCES Access to credential not allowed.
diff --git a/include/modem/nrf_modem_lib.h b/include/modem/nrf_modem_lib.h
index 936034431f08..9127a0310695 100644
--- a/include/modem/nrf_modem_lib.h
+++ b/include/modem/nrf_modem_lib.h
@@ -166,8 +166,7 @@ struct nrf_modem_lib_at_cfun_cb {
* configurations that require the modem to be turned on in offline mode. It cannot be used to
* change the modem functional mode. Calls to @c lte_lc_connect and CFUN AT calls are not
* allowed, and must be done after @c nrf_modem_lib_init has returned. If a library needs to
- * perform operations after the link is up, it can use the link controller and subscribe to a
- * @c LTE_LC_ON_CFUN callback.
+ * perform operations after the link is up, it can subscribe to a @c NRF_MODEM_LIB_ON_CFUN callback.
*
* @param name Callback name
* @param _callback Callback function name
diff --git a/include/modem/trace_backend.h b/include/modem/trace_backend.h
index fc6c7e9a99f8..f3c42fe705c1 100644
--- a/include/modem/trace_backend.h
+++ b/include/modem/trace_backend.h
@@ -58,6 +58,9 @@ struct nrf_modem_lib_trace_backend {
* -ENOSPC if no space is available and the backend has to be cleared before
* tracing can continue. For some trace backends, space is also cleared
* when performing the read operation.
+ * -ENOSR if no space is available and the backend has aborted the write. If
+ * modem trace level is off, the trace thread will suspend itself until
+ * modem traces are enabled. Else, the thread wil re-attempt the write.
* -EAGAIN if no data were written due to e.g. flow control and the operation
* should be retried.
*/
diff --git a/include/modem/uicc_lwm2m.h b/include/modem/uicc_lwm2m.h
new file mode 100644
index 000000000000..0cbe39bfd5f1
--- /dev/null
+++ b/include/modem/uicc_lwm2m.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2024 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+ */
+
+#ifndef UICC_LWM2M_H_
+#define UICC_LWM2M_H_
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file uicc_lwm2m.h
+ *
+ * @defgroup uicc_lwm2m UICC LwM2M
+ *
+ * @{
+ *
+ * @brief Public APIs of the UICC LwM2M library.
+ */
+
+/** UICC record max size is 256 bytes. The buffer size needed for the AT response is
+ * (256 * 2) + 4 bytes for SW + 1 byte for NUL. Using 516 bytes is adequate to read
+ * a full UICC record.
+ */
+#define UICC_RECORD_BUFFER_MAX ((256 * 2) + 4 + 1)
+
+/**
+ * @brief Read UICC LwM2M bootstrap record.
+ *
+ * @param[inout] buffer Buffer to store UICC LwM2M bootstrap record. This buffer is also
+ * used internally by the function reading the AT response, so it must
+ * be twice the size of expected LwM2M content + 4 bytes for UICC SW.
+ * @param[in] buffer_size Total size of buffer.
+ *
+ * @return Length of UICC LwM2M bootstrap record, -errno on error.
+ */
+int uicc_lwm2m_bootstrap_read(uint8_t *buffer, int buffer_size);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* UICC_LWM2M_H_ */
diff --git a/include/net/nrf_cloud.h b/include/net/nrf_cloud.h
index 383f3931772a..ee9949c9821b 100644
--- a/include/net/nrf_cloud.h
+++ b/include/net/nrf_cloud.h
@@ -451,7 +451,12 @@ struct nrf_cloud_svc_info_fota {
uint8_t _rsvd:3;
};
-/** @brief DEPRECATED - No longer used by nRF Cloud */
+/** @brief DEPRECATED - No longer used by nRF Cloud
+ * The device data cards on the nRF Cloud portal automatically appear when the device
+ * sends messages with the proper schema:
+ * https://github.com/nRFCloud/application-protocols/tree/v1/schemas/deviceToCloud
+ * Custom cards are generated for appIds that are not present in the schema.
+ */
struct nrf_cloud_svc_info_ui {
/* Items with UI support on nRF Cloud */
/** Temperature */
@@ -517,7 +522,9 @@ struct nrf_cloud_svc_info {
/** Specify FOTA components to enable, set to NULL to remove the FOTA entry */
struct nrf_cloud_svc_info_fota *fota;
- /** DEPRECATED - nRF Cloud no longer requires the device to set UI values in the shadow */
+ /** DEPRECATED - nRF Cloud no longer requires the device to set UI values in the shadow.
+ * See @ref nrf_cloud_svc_info_ui for more information.
+ */
struct nrf_cloud_svc_info_ui *ui;
};
@@ -575,9 +582,12 @@ struct nrf_cloud_gnss_pvt {
struct nrf_cloud_credentials_status {
/* Configured sec_tag for nRF Cloud */
uint32_t sec_tag;
+ size_t ca_size;
/* Flags to indicate if the specified credentials exist */
uint8_t ca:1;
+ uint8_t ca_coap:1;
+ uint8_t ca_aws:1;
uint8_t client_cert:1;
uint8_t prv_key:1;
};
@@ -632,10 +642,11 @@ struct nrf_cloud_ctrl_data {
* If false, alerts will be suppressed.
*/
bool alerts_enabled;
- /** If 0, the nrf_cloud library logging backend will be disabled.
- * If values from 1 to 4, this level and any lower levels will
- * be sent to the cloud. Level 1 is most urgent (LOG_ERR),
- * level 4 least (LOG_DBG).
+ /** If 0: None - the nrf_cloud library logging backend is disabled.
+ * 4: LOG_DBG (least urgent) and all levels below are sent to the cloud.
+ * 3: LOG_INF and all levels below are sent to the cloud.
+ * 2: LOG_WRN and all levels below are sent to the cloud.
+ * 1: only LOG_ERR (most urgent) is sent to the cloud.
*/
int log_level;
};
@@ -1124,6 +1135,20 @@ bool nrf_cloud_fota_is_type_enabled(const enum nrf_cloud_fota_type type);
*/
int nrf_cloud_fota_job_start(void);
+/**
+ * @brief Initialize the SMP client.
+ * Called automatically if @kconfig{CONFIG_NRF_CLOUD_FOTA} or
+ * @kconfig{CONFIG_NRF_CLOUD_FOTA_POLL} is enabled.
+ *
+ * @param smp_reset_cb Callback of type @ref dfu_target_reset_cb_t for resetting the SMP device to
+ * enter MCUboot recovery mode.
+ *
+ * @retval 0 SMP client successfully initialized.
+ * @retval -ENOTSUP Error; @kconfig{CONFIG_NRF_CLOUD_FOTA_SMP} is not enabled.
+ * @return A negative value indicates an error.
+ */
+int nrf_cloud_fota_smp_client_init(const void *smp_reset_cb);
+
/**
* @brief Install a downloaded SMP FOTA job.
* Called automatically if @kconfig{CONFIG_NRF_CLOUD_FOTA} is enabled (MQTT FOTA).
@@ -1171,11 +1196,14 @@ int nrf_cloud_credentials_check(struct nrf_cloud_credentials_status *const cs);
/**
* @brief Check if the credentials required for connecting to nRF Cloud exist.
* The application's configuration is used to determine which credentials
- * are required.
+ * are required. Check the size of the root CA certificates installed
+ * and return an error code if the size of the root CA certificate(s) is not
+ * appropriate for the configured transport type.
*
* @retval 0 Required credentials exist.
* @retval -EIO Error checking if credentials exists.
* @retval -ENOTSUP Required credentials do not exist.
+ * @retval -ENOPROTOOPT Size of root CA is not appropriate for the configured transport type.
* @return A negative value indicates an error.
*/
int nrf_cloud_credentials_configured_check(void);
@@ -1188,6 +1216,10 @@ int nrf_cloud_credentials_configured_check(void);
* @note This API only needs to be called if the default configured sec tag value is no
* longer applicable. This function does not perform any management of the
* device's connection to nRF Cloud.
+ * For CoAP, changing this value will change the sec tag used for the DTLS connection only.
+ * Use @ref nrf_cloud_sec_tag_coap_jwt_set to set the sec tag used for JWT signing.
+ * For normal operation, the DTLS and JWT sec tags should be the same. They should only
+ * differ for debugging purposes (network traffic decryption).
*
* @param sec_tag The sec tag.
*
@@ -1201,6 +1233,31 @@ void nrf_cloud_sec_tag_set(const sec_tag_t sec_tag);
*/
sec_tag_t nrf_cloud_sec_tag_get(void);
+/**
+ * @brief Set the sec tag containing the private key used to sign CoAP JWTs for nRF Cloud
+ * authentication.
+ * The default sec tag value is @kconfig{CONFIG_NRF_CLOUD_COAP_JWT_SEC_TAG}.
+ *
+ * @note This API requires @kconfig{CONFIG_NRF_CLOUD_COAP} to be enabled.
+ * This API only needs to be called if the default configured sec tag value is no
+ * longer applicable. This function does not perform any management of the
+ * device's authentication status with nRF Cloud.
+ *
+ * @param sec_tag The sec tag.
+ *
+ */
+void nrf_cloud_sec_tag_coap_jwt_set(const sec_tag_t sec_tag);
+
+/**
+ * @brief Get the sec tag containing the private key used to sign CoAP JWTs for nRF Cloud
+ * authentication.
+ *
+ * @note This API requires @kconfig{CONFIG_NRF_CLOUD_COAP} to be enabled.
+ *
+ * @return The sec tag.
+ */
+sec_tag_t nrf_cloud_sec_tag_coap_jwt_get(void);
+
/** @} */
#ifdef __cplusplus
diff --git a/include/net/nrf_cloud_coap.h b/include/net/nrf_cloud_coap.h
index e7f7df0704da..e25c6b26c30c 100644
--- a/include/net/nrf_cloud_coap.h
+++ b/include/net/nrf_cloud_coap.h
@@ -61,6 +61,11 @@ int nrf_cloud_coap_init(void);
/**
* @brief Connect to and obtain authorization to access the nRF Cloud CoAP server.
+ * The full DTLS handshake is performed, and on success, a connection ID (CID) is
+ * obtained. The CID allows the connection to be paused with @ref nrf_cloud_coap_pause and resumed
+ * with @ref nrf_cloud_coap_resume without redoing the full handshake.
+ * Use @ref nrf_cloud_coap_keepopen_is_supported to check if network conditions allow the pause and
+ * resume actions.
*
* This function must return 0 indicating success so that the other functions below,
* other than nrf_cloud_coap_disconnect(), will not immediately return an error when called.
@@ -269,7 +274,7 @@ int nrf_cloud_coap_location_get(struct nrf_cloud_rest_location_request const *co
struct nrf_cloud_location_result *const result);
/**
- * @brief Request current nRF Cloud FOTA job info for the specified device.
+ * @brief Request current nRF Cloud FOTA job info for the device.
*
* @param[out] job Parsed job info. If no job exists, type will
* be set to invalid. If a job exists, user must call
@@ -310,7 +315,10 @@ int nrf_cloud_coap_fota_job_update(const char *const job_id,
const enum nrf_cloud_fota_status status, const char * const details);
/**
- * @brief Query the device's delta or desired shadow section.
+ * @brief Query the device's delta or desired shadow section. The delta section indicates
+ * differences between the desired and reported sections. Clear the delta by aligning the
+ * desired and reported sections using @ref nrf_cloud_coap_shadow_desired_update or
+ * @ref nrf_cloud_coap_shadow_state_update, respectively.
*
* @param[in,out] buf Pointer to memory in which to receive the delta.
* @param[in,out] buf_len Size of buffer, will be set to the incoming length.
@@ -364,7 +372,8 @@ int nrf_cloud_coap_shadow_state_update(const char * const shadow_json);
int nrf_cloud_coap_shadow_desired_update(const char * const shadow_json);
/**
- * @brief Update the device status in the shadow's reported state section.
+ * @brief Update the device's reported shadow section with information about the device, network,
+ * modem, SIM card, and FOTA capabilities.
*
* @param[in] dev_status Device status to be encoded.
*
@@ -378,7 +387,8 @@ int nrf_cloud_coap_shadow_device_status_update(const struct nrf_cloud_device_sta
*const dev_status);
/**
- * @brief Update the device's "serviceInfo" in the shadow.
+ * @brief Update the device's "serviceInfo" section in the shadow. This section informs nRF Cloud
+ * of the device's FOTA capabilities.
*
* @param[in] svc_inf Service info items to be updated in the shadow.
*
diff --git a/include/net/nrf_cloud_fota_poll.h b/include/net/nrf_cloud_fota_poll.h
index 29e34566cff1..fcd6944af1d8 100644
--- a/include/net/nrf_cloud_fota_poll.h
+++ b/include/net/nrf_cloud_fota_poll.h
@@ -79,6 +79,12 @@ struct nrf_cloud_fota_poll_ctx {
* If the function is not provided, @ref nrf_cloud_fota_poll_process will be blocking.
*/
nrf_cloud_fota_poll_handler_t status_fn;
+
+ /** Callback of type @ref dfu_target_reset_cb_t for resetting the SMP device to enter
+ * MCUboot recovery mode.
+ * Used if @kconfig{CONFIG_NRF_CLOUD_FOTA_SMP} is enabled.
+ */
+ void *smp_reset_cb;
};
/**
diff --git a/include/net/nrf_cloud_location.h b/include/net/nrf_cloud_location.h
index 9b9dfccb8cc7..9ff1af4cd850 100644
--- a/include/net/nrf_cloud_location.h
+++ b/include/net/nrf_cloud_location.h
@@ -95,7 +95,9 @@ struct nrf_cloud_location_result {
/** @brief Location request config */
struct nrf_cloud_location_config {
- /** If true, nRF Cloud will send the location to the device. */
+ /** If true, nRF Cloud will send the location to the device.
+ * The location info is always stored in nRF Cloud, regardless of this flag's value.
+ */
bool do_reply;
/** If true, uncertainty of result will be 95%, otherwise 68%. */
bool hi_conf;
diff --git a/include/nrf_compress/implementation.h b/include/nrf_compress/implementation.h
index f895e3c8fab1..3749b2006738 100644
--- a/include/nrf_compress/implementation.h
+++ b/include/nrf_compress/implementation.h
@@ -29,23 +29,90 @@ extern "C" {
#endif
/**
- * @cond INTERNAL_HIDDEN
+ * @typedef nrf_compress_init_func_t
+ * @brief Initialize compression implementation.
*
- * For internal use only, skip these in public documentation.
+ * @param[in] inst Reserved for future use, must be NULL.
+ *
+ * @retval 0 Success.
+ * @retval -errno Negative errno code on other failure.
+ */
+typedef int (*nrf_compress_init_func_t)(void *inst);
+
+/**
+ * @typedef nrf_compress_deinit_func_t
+ * @brief De-initialize compression implementation.
+ *
+ * @param[in] inst Reserved for future use, must be NULL.
+ *
+ * @retval 0 Success.
+ * @retval -errno Negative errno code on other failure.
*/
+typedef int (*nrf_compress_deinit_func_t)(void *inst);
-typedef int (*nrf_compress_init_deinit_func_t)(void *inst);
+/**
+ * @typedef nrf_compress_reset_func_t
+ * @brief Reset compression state function. Used to abort current compression or
+ * decompression task before starting a new one.
+ *
+ * @param[in] inst Reserved for future use, must be NULL.
+ *
+ * @retval 0 Success.
+ * @retval -errno Negative errno code on other failure.
+ */
typedef int (*nrf_compress_reset_func_t)(void *inst);
-/** Compression support is not implemented, placeholder for future use */
+
+/**
+ * @typedef nrf_compress_compress_func_t
+ * @brief Placeholder function for future use, do not use.
+ *
+ * @param[in] inst Reserved for future use, must be NULL.
+ *
+ * @retval 0 Success.
+ * @retval -errno Negative errno code on other failure.
+ */
typedef int (*nrf_compress_compress_func_t)(void *inst);
+
+/**
+ * @brief Return chunk size of data to provide to next call of
+ * #nrf_compress_decompress_func_t function. This is the ideal amount of data
+ * that should be provided to the next function call. Less data than this may
+ * be provided if more is not available (for example, end of data or data is
+ * is being streamed).
+ *
+ * @param[in] inst Reserved for future use, must be NULL.
+ *
+ * @retval Positive value Success indicating chunk size.
+ * @retval -errno Negative errno code on other failure.
+ */
typedef size_t (*nrf_compress_decompress_bytes_needed_t)(void *inst);
-typedef int (*nrf_compress_decompress_func_t)(void *inst, const uint8_t *input, size_t input_size,
- bool last_part, uint32_t *offset, uint8_t **output,
- size_t *output_size);
/**
- * @endcond
+ * @brief Decompress portion of compressed data. This function will need to
+ * be called one or more times with compressed data to decompress it
+ * into its natural form.
+ *
+ * @param[in] inst Reserved for future use, must be NULL.
+ * @param[in] input Input data buffer, containing the compressed data.
+ * @param[in] input_size Size of the input data buffer.
+ * @param[in] last_part Last part of compressed data. This should be set to true if this is
+ * the final part of the input data.
+ * @param[out] offset Input data offset pointer. This will be updated with the amount of
+ * bytes used from the input buffer. If this is not the last
+ * decompression call, then the next call to this function should be
+ * offset the input data buffer by this amount of bytes.
+ * @param[out] output Output data buffer pointer to pointer. This will be set to the
+ * compression's output buffer when decompressed data is available to
+ * be used or copied.
+ * @param[out] output_size Size of data in output data buffer pointer. Data should only be
+ * read when the value in this pointer is greater than 0.
+ *
+ * @retval 0 Success.
+ * @retval -errno Negative errno code on other failure.
*/
+typedef int (*nrf_compress_decompress_func_t)(void *inst, const uint8_t *input, size_t input_size,
+ bool last_part, uint32_t *offset, uint8_t **output,
+ size_t *output_size);
/** @brief Supported compression types */
enum nrf_compress_types {
@@ -55,111 +122,49 @@ enum nrf_compress_types {
/** ARM thumb filter */
NRF_COMPRESS_TYPE_ARM_THUMB,
- NRF_COMPRESS_TYPE_COUNT
+ /** Marks end/count of nRF supported filters */
+ NRF_COMPRESS_TYPE_COUNT,
+
+ /** Start of freely usable IDs with custom out-of-tree implementations */
+ NRF_COMPRESS_TYPE_USER_CUSTOM_START = 32768
};
struct nrf_compress_implementation {
- /** ID of implementation (nrf_compress_types) */
+ /** @brief ID of implementation #nrf_compress_types. */
const uint16_t id;
- /**
- * @brief Initialize compression implementation.
- *
- * @param[in] inst Reserved for future use, must be NULL.
- *
- * @retval 0 Success.
- * @retval -errno Negative errno code on other failure.
- */
- const nrf_compress_init_deinit_func_t init;
-
- /**
- * @brief Deinitialize compression implementation.
- *
- * @param[in] inst Reserved for future use, must be NULL.
- *
- * @retval 0 Success.
- * @retval -errno Negative errno code on other failure.
- */
- const nrf_compress_init_deinit_func_t deinit;
-
- /**
- * @brief Reset compression state function. Used to abort current compression
- * or decompression task before starting a new one.
- *
- * @param[in] inst Reserved for future use, must be NULL.
- *
- * @retval 0 Success.
- * @retval -errno Negative errno code on other failure.
- */
+ const nrf_compress_init_func_t init;
+ const nrf_compress_deinit_func_t deinit;
const nrf_compress_reset_func_t reset;
#if defined(CONFIG_NRF_COMPRESS_COMPRESSION) || defined(__DOXYGEN__)
- /** @brief Placeholder function for future use, do not use. */
const nrf_compress_compress_func_t compress;
#endif
#if defined(CONFIG_NRF_COMPRESS_DECOMPRESSION) || defined(__DOXYGEN__)
- /**
- * @brief Return chunk size of data to provide to next call of
- * nrf_compress_decompress_func_t function. This is the ideal amount
- * of data that should be provided to the next function call. Less
- * data than this may be provided if more is not available (for
- * example, end of data or data is being streamed).
- *
- * @param[in] inst Reserved for future use, must be NULL.
- *
- * @retval Positive value Success indicating chunk size.
- * @retval -errno Negative errno code on other failure.
- */
const nrf_compress_decompress_bytes_needed_t decompress_bytes_needed;
-
- /**
- * @brief Decompress portion of compressed data. This function will
- * need to be called one or more times with compressed data to
- * decompress it into its natural form.
- *
- * @param[in] inst Reserved for future use, must be NULL.
- * @param[in] input Input data buffer, containing the compressed data.
- * @param[in] input_size Size of the input data buffer.
- * @param[in] last_part Last part of compressed data. This should be set to true if
- * this is the final part of the input data.
- * @param[out] offset Input data offset pointer. This will be updated with the
- * amount of bytes used from the input buffer. If this is not
- * the last decompression call, then the next call to this
- * function should offset the input data buffer by this
- * amount of bytes.
- * @param[out] output Output data buffer pointer to pointer. This will be set to
- * the compression's output buffer when decompressed data is
- * available to be used or copied.
- * @ param[out] output_size Size of data in output data buffer pointer. Data should
- * only be read when the value in this pointer is greater than
- * 0.
- *
- * @retval 0 Success.
- * @retval -errno Negative errno code on other failure.
- */
const nrf_compress_decompress_func_t decompress;
#endif
};
/**
- * @brief Define a compression implementation.
- *
- * This adds a new entry to the iterable section linker list of compression implementations.
+ * @brief Define a compression implementation.
+ * This adds a new entry to the iterable section linker list
+ * of compression implementations.
*
* @param name Name of the compression type.
- * @param _id ID of the compression type (nrf_compress_types).
- * @param _init Initialization function (nrf_compress_init_deinit_func_t).
+ * @param _id ID of the compression type #nrf_compress_types.
+ * @param _init Initialization function #nrf_compress_init_func_t.
* @param _deinit Deinitialization function
- * (nrf_compress_init_deinit_func_t).
- * @param _reset Reset function (nrf_compress_reset_func_t).
+ * #nrf_compress_deinit_func_t.
+ * @param _reset Reset function #nrf_compress_reset_func_t.
* @param _compress Compress function or NULL if no compression support
- * (nrf_compress_compress_func_t).
+ * #nrf_compress_compress_func_t.
* @param _decompress_bytes_needed Decompression bytes needed function or NULL if no
* decompression support
- * (nrf_compress_decompress_bytes_needed_t).
+ * #nrf_compress_decompress_bytes_needed_t.
* @param _decompress Decompression function or NULL if no decompression support
- * (nrf_compress_decompress_func_t).
+ * #nrf_compress_decompress_func_t.
*/
#define NRF_COMPRESS_IMPLEMENTATION_DEFINE(name, _id, _init, _deinit, _reset, _compress, \
_decompress_bytes_needed, _decompress) \
@@ -176,10 +181,11 @@ struct nrf_compress_implementation {
.decompress = _decompress, \
), ()) \
}
+
/**
* @brief Find a compression implementation.
*
- * @param[in] id Type of compression (nrf_compress_types).
+ * @param[in] id Type of compression #nrf_compress_types.
*
* @retval non-NULL Success.
* @retval NULL Compression type not found/supported.
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 203f79c4369e..b74915671bec 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -50,3 +50,4 @@ add_subdirectory_ifdef(CONFIG_DATA_FIFO data_fifo)
add_subdirectory_ifdef(CONFIG_FEM_AL_LIB fem_al)
add_subdirectory_ifdef(CONFIG_SAMPLE_RATE_CONVERTER sample_rate_converter)
add_subdirectory_ifdef(CONFIG_NCS_BOOT_BANNER boot_banner)
+add_subdirectory_ifdef(CONFIG_UICC_LWM2M uicc_lwm2m)
diff --git a/lib/Kconfig b/lib/Kconfig
index b55ce44a052c..bb2f65d2f077 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -51,5 +51,6 @@ rsource "data_fifo/Kconfig"
rsource "fem_al/Kconfig"
rsource "sample_rate_converter/Kconfig"
rsource "boot_banner/Kconfig"
+rsource "uicc_lwm2m/Kconfig"
endmenu
diff --git a/lib/date_time/date_time_core.c b/lib/date_time/date_time_core.c
index 0953e6e062b5..dbcbcfdba44d 100644
--- a/lib/date_time/date_time_core.c
+++ b/lib/date_time/date_time_core.c
@@ -59,11 +59,18 @@ static void date_time_core_notify_event(enum date_time_evt_type time_source)
if (app_evt_handler != NULL) {
app_evt_handler(&evt);
+ } else {
+ LOG_DBG("No date-time event handler registered");
}
}
static int date_time_core_schedule_work(int interval)
{
+ if (!IS_ENABLED(CONFIG_DATE_TIME_MODEM) && !IS_ENABLED(CONFIG_DATE_TIME_NTP)) {
+ LOG_DBG("Skipping requested date time update, modem and NTP are disabled");
+ return -ENOTSUP;
+ }
+
/* If a scheduled update is blocking reschedules, exit.
* Otherwise set the reschedule_blocked flag to true, then proceed with the reschedule.
*/
@@ -104,10 +111,11 @@ static void date_time_core_schedule_retry(void)
return;
}
- if (date_time_core_schedule_work(CONFIG_DATE_TIME_RETRY_INTERVAL_SECONDS) == 0) {
- LOG_DBG("Date time update retry in: %d seconds",
- CONFIG_DATE_TIME_RETRY_INTERVAL_SECONDS);
- }
+ /* Scheduling new update cannot fail because we are never doing retries
+ * if we have fresh enough time
+ */
+ date_time_core_schedule_work(CONFIG_DATE_TIME_RETRY_INTERVAL_SECONDS);
+ LOG_DBG("Date time update retry in: %d seconds", CONFIG_DATE_TIME_RETRY_INTERVAL_SECONDS);
}
static void date_time_update_work_fn(struct k_work *work)
@@ -169,6 +177,8 @@ void date_time_lte_ind_handler(const struct lte_lc_evt *const evt)
case LTE_LC_NW_REG_REGISTERED_HOME:
case LTE_LC_NW_REG_REGISTERED_ROAMING:
if (!date_time_is_valid()) {
+ LOG_DBG("Date time update scheduled in 1 second "
+ "due to LTE registration");
k_work_reschedule_for_queue(
&date_time_work_q,
&date_time_update_work,
@@ -241,6 +251,8 @@ int date_time_core_now_local(int64_t *local_time_ms)
int date_time_core_update_async(date_time_evt_handler_t evt_handler)
{
+ LOG_DBG("Requesting date-time update asynchronously");
+
if (evt_handler) {
app_evt_handler = evt_handler;
} else if (app_evt_handler == NULL) {
diff --git a/lib/date_time/date_time_modem.c b/lib/date_time/date_time_modem.c
index 17fb8fb1b8d8..23c63eafd0a8 100644
--- a/lib/date_time/date_time_modem.c
+++ b/lib/date_time/date_time_modem.c
@@ -22,6 +22,9 @@ LOG_MODULE_DECLARE(date_time, CONFIG_DATE_TIME_LOG_LEVEL);
extern struct k_work_q date_time_work_q;
+#define MODEM_CFUN_NORMAL 1
+#define MODEM_CFUN_ACTIVATE_LTE 21
+
#if defined(CONFIG_DATE_TIME_AUTO_UPDATE)
/* AT monitor for %XTIME notifications */
AT_MONITOR(xtime, "%XTIME", date_time_at_xtime_handler);
@@ -73,7 +76,7 @@ int date_time_modem_get(int64_t *date_time_ms, int *date_time_tz)
/* Want to match 6 or 7 args */
if (rc != 6 && rc != 7) {
LOG_WRN("Did not get time from cellular network (error: %d). "
- "This is normal as some cellular networks don't provide it or "
+ "This may be normal as some cellular networks don't provide it or "
"time may not be available yet.", rc);
return -ENODATA;
}
@@ -122,9 +125,6 @@ static void date_time_at_xtime_handler(const char *notif)
int err;
int tz;
- if (notif == NULL) {
- return;
- }
modem_valid_network_time = true;
/* Check if current time is valid */
@@ -160,7 +160,8 @@ static void date_time_at_xtime_handler(const char *notif)
time_buf_len = hex2bin(time_str_start, 14, time_buf, sizeof(time_buf));
if (time_buf_len < sizeof(time_buf)) {
- LOG_ERR("%%XTIME notification decoding failed (ret=%d): %s", time_buf_len, notif);
+ LOG_ERR("Time value decoding failed from %%XTIME notification (ret=%d): %s",
+ time_buf_len, notif);
return;
}
@@ -171,6 +172,12 @@ static void date_time_at_xtime_handler(const char *notif)
date_time.tm_min = semioctet_to_dec(time_buf[4]);
date_time.tm_sec = semioctet_to_dec(time_buf[5]);
+ /* 3GPP TS 23.040 Section 9.2.3.11 says about the time zone as follows:
+ * The Time Zone indicates the difference, expressed in quarters of an hour,
+ * between the local time and GMT. In the first of the two semi octets,
+ * the first bit (bit 3 of the seventh octet of the TP Service Centre Time Stamp field)
+ * represents the algebraic sign of this difference (0: positive, 1: negative).
+ */
tz = semioctet_to_dec(time_buf[6] & 0xF7);
if (time_buf[6] & 0x08) {
tz = -tz;
@@ -235,13 +242,17 @@ void date_time_modem_xtime_subscribe_work_fn(struct k_work *work_item)
}
}
+#if defined(CONFIG_UNITY)
+void date_time_modem_on_cfun(int mode, void *ctx)
+#else
NRF_MODEM_LIB_ON_CFUN(date_time_cfun_hook, date_time_modem_on_cfun, NULL);
static void date_time_modem_on_cfun(int mode, void *ctx)
+#endif
{
ARG_UNUSED(ctx);
- if (mode == LTE_LC_FUNC_MODE_NORMAL || mode == LTE_LC_FUNC_MODE_ACTIVATE_LTE) {
+ if (mode == MODEM_CFUN_NORMAL || mode == MODEM_CFUN_ACTIVATE_LTE) {
k_work_submit_to_queue(&date_time_work_q, &date_time_modem_xtime_subscribe_work);
}
}
diff --git a/lib/edge_impulse/CMakeLists.txt b/lib/edge_impulse/CMakeLists.txt
index dcc4c0752d4b..5b69061aa620 100644
--- a/lib/edge_impulse/CMakeLists.txt
+++ b/lib/edge_impulse/CMakeLists.txt
@@ -59,8 +59,8 @@ include(ExternalProject)
ExternalProject_Add(edge_impulse_project
URL ${EI_URI_LIST}
HTTP_HEADER "Accept: application/zip"
- DOWNLOAD_EXTRACT_TIMESTAMP True
${EI_API_KEY_HEADER}
+ DOWNLOAD_EXTRACT_TIMESTAMP True
PREFIX ${EDGE_IMPULSE_DIR}
SOURCE_DIR ${EDGE_IMPULSE_SOURCE_DIR}
BINARY_DIR ${EDGE_IMPULSE_BINARY_DIR}
diff --git a/lib/gcf_sms/gcf_sms.c b/lib/gcf_sms/gcf_sms.c
index 404a8a9f4a7f..9435987960e2 100644
--- a/lib/gcf_sms/gcf_sms.c
+++ b/lib/gcf_sms/gcf_sms.c
@@ -192,7 +192,7 @@ int gcf_sms_filter_callback(char *buf, size_t len, char *at_cmd)
/* AT command is filtered. */
err = (*callback)(buf_remaining, len_remaining, msg);
} else {
- err = nrf_modem_at_cmd(buf_remaining, len_remaining, msg);
+ err = nrf_modem_at_cmd(buf_remaining, len_remaining, "%s", msg);
}
if (err != 0) {
@@ -370,7 +370,7 @@ static int at_cmd_callback_cmss(char *buf, size_t len, char *at_cmd)
}
/* Send AT+CMGS command to modem. */
- err = nrf_modem_at_cmd(buf, len, "AT+CMGS=%d\r%s\x1a\0",
+ err = nrf_modem_at_cmd(buf, len, "AT+CMGS=%d\r%s\x1a",
sms_buffers[sms_buffer_index].pdu_size,
sms_buffers[sms_buffer_index].data);
if (err) {
@@ -393,7 +393,7 @@ static int at_cmd_callback_cmms(char *buf, size_t len, char *at_cmd)
int err;
/* Send to modem without buffer. */
- err = nrf_modem_at_printf(at_cmd);
+ err = nrf_modem_at_printf("%s", at_cmd);
if (err) {
if (err > 0) {
LOG_ERR("%s failed, error_type: %d, error_value: %d", at_cmd,
diff --git a/lib/hw_unique_key/CMakeLists.txt b/lib/hw_unique_key/CMakeLists.txt
index 18de28e677bb..fc629496ff82 100644
--- a/lib/hw_unique_key/CMakeLists.txt
+++ b/lib/hw_unique_key/CMakeLists.txt
@@ -7,15 +7,15 @@
zephyr_library()
if (CONFIG_CRACEN_HW_PRESENT)
- zephyr_library_sources(hw_unique_key_cracen.c)
+ zephyr_library_sources(hw_unique_key_cracen_kmu.c)
else()
- zephyr_library_sources(hw_unique_key.c)
+ zephyr_library_sources(hw_unique_key_cc3xx.c)
if (DEFINED CONFIG_HAS_HW_NRF_ACL)
- zephyr_library_sources(hw_unique_key_acl.c)
+ zephyr_library_sources(hw_unique_key_cc3xx_acl.c)
else()
- zephyr_library_sources(hw_unique_key_kmu.c)
+ zephyr_library_sources(hw_unique_key_cc3xx_kmu.c)
endif()
- ncs_add_partition_manager_config(pm.yml.huk)
+ ncs_add_partition_manager_config(pm.yml.huk_cc3xx)
endif()
diff --git a/lib/hw_unique_key/hw_unique_key.c b/lib/hw_unique_key/hw_unique_key_cc3xx.c
similarity index 100%
rename from lib/hw_unique_key/hw_unique_key.c
rename to lib/hw_unique_key/hw_unique_key_cc3xx.c
diff --git a/lib/hw_unique_key/hw_unique_key_acl.c b/lib/hw_unique_key/hw_unique_key_cc3xx_acl.c
similarity index 100%
rename from lib/hw_unique_key/hw_unique_key_acl.c
rename to lib/hw_unique_key/hw_unique_key_cc3xx_acl.c
diff --git a/lib/hw_unique_key/hw_unique_key_kmu.c b/lib/hw_unique_key/hw_unique_key_cc3xx_kmu.c
similarity index 100%
rename from lib/hw_unique_key/hw_unique_key_kmu.c
rename to lib/hw_unique_key/hw_unique_key_cc3xx_kmu.c
diff --git a/lib/hw_unique_key/hw_unique_key_cracen.c b/lib/hw_unique_key/hw_unique_key_cracen_kmu.c
similarity index 100%
rename from lib/hw_unique_key/hw_unique_key_cracen.c
rename to lib/hw_unique_key/hw_unique_key_cracen_kmu.c
diff --git a/lib/hw_unique_key/pm.yml.huk b/lib/hw_unique_key/pm.yml.huk_cc3xx
similarity index 100%
rename from lib/hw_unique_key/pm.yml.huk
rename to lib/hw_unique_key/pm.yml.huk_cc3xx
diff --git a/lib/modem_attest_token/modem_attest_token.c b/lib/modem_attest_token/modem_attest_token.c
index 0082133d9be9..6a2bdb3b3143 100644
--- a/lib/modem_attest_token/modem_attest_token.c
+++ b/lib/modem_attest_token/modem_attest_token.c
@@ -43,7 +43,7 @@ int modem_attest_token_get(struct nrf_attestation_token *const token)
/* Execute AT command to get attestation token */
ret = nrf_modem_at_scanf(AT_ATTEST_CMD,
- "%%ATTESTTOKEN: \"%127[^.].%127[^\"]\"", &attest, &cose);
+ "%%ATTESTTOKEN: \"%127[^.].%127[^\"]\"", attest, cose);
if (ret != 2) {
return -EBADMSG;
}
diff --git a/lib/modem_info/CMakeLists.txt b/lib/modem_info/CMakeLists.txt
index d3bcbc891388..4971dcd32179 100644
--- a/lib/modem_info/CMakeLists.txt
+++ b/lib/modem_info/CMakeLists.txt
@@ -8,30 +8,6 @@ zephyr_library()
zephyr_library_sources(modem_info.c)
zephyr_library_sources(modem_info_params.c)
-find_package(Git QUIET)
-if(NOT APP_VERSION AND GIT_FOUND)
- execute_process(
- COMMAND ${GIT_EXECUTABLE} describe --abbrev=12
- WORKING_DIRECTORY ${ZEPHYR_NRF_MODULE_DIR}
- OUTPUT_VARIABLE APP_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE
- ERROR_STRIP_TRAILING_WHITESPACE
- ERROR_VARIABLE stderr
- RESULT_VARIABLE return_code
- )
- if(return_code)
- message(STATUS "git describe failed: ${stderr}; ${KERNEL_VERSION_STRING} will be used instead")
- elseif(CMAKE_VERBOSE_MAKEFILE)
- message(STATUS "git describe stderr: ${stderr}")
- endif()
-endif()
-
-if(APP_VERSION)
- zephyr_compile_definitions(
- APP_VERSION=${APP_VERSION}
- )
-endif()
-
if(NOT PROJECT_NAME)
zephyr_compile_definitions(
PROJECT_NAME=${CMAKE_PROJECT_NAME}
diff --git a/lib/modem_info/modem_info_params.c b/lib/modem_info/modem_info_params.c
index 2cbd1cee9a62..d0797d232255 100644
--- a/lib/modem_info/modem_info_params.c
+++ b/lib/modem_info/modem_info_params.c
@@ -8,6 +8,8 @@
#include
#include
#include
+#include
+#include
#include
LOG_MODULE_REGISTER(modem_info_params);
@@ -42,7 +44,7 @@ int modem_info_params_init(struct modem_param_info *modem)
modem->device.battery.type = MODEM_INFO_BATTERY;
modem->device.imei.type = MODEM_INFO_IMEI;
modem->device.board = CONFIG_BOARD;
- modem->device.app_version = STRINGIFY(APP_VERSION);
+ modem->device.app_version = NCS_VERSION_STRING "-" NCS_COMMIT_STRING;
#ifdef PROJECT_NAME
modem->device.app_name = STRINGIFY(PROJECT_NAME);
diff --git a/lib/modem_key_mgmt/modem_key_mgmt.c b/lib/modem_key_mgmt/modem_key_mgmt.c
index 3c6c06107260..28af79e12ccc 100644
--- a/lib/modem_key_mgmt/modem_key_mgmt.c
+++ b/lib/modem_key_mgmt/modem_key_mgmt.c
@@ -179,6 +179,7 @@ int modem_key_mgmt_read(nrf_sec_tag_t sec_tag,
}
if (end - begin > *len) {
+ *len = end - begin; /* Let caller know how large their buffer should be. */
err = -ENOMEM;
goto end;
}
@@ -272,6 +273,41 @@ int modem_key_mgmt_delete(nrf_sec_tag_t sec_tag,
return 0;
}
+int modem_key_mgmt_clear(nrf_sec_tag_t sec_tag)
+{
+ int err;
+ bool cmee_was_enabled;
+ char *token;
+ uint32_t tag, type;
+
+ cmee_enable(&cmee_was_enabled);
+
+ err = nrf_modem_at_cmd(scratch_buf, sizeof(scratch_buf), "AT%%CMNG=1, %d", sec_tag);
+ if (err) {
+ return translate_error(err);
+ }
+
+ token = strtok(scratch_buf, "\n");
+
+ while (token != NULL) {
+ err = sscanf(token, "%%CMNG: %u,%u,\"", &tag, &type);
+ if (tag == sec_tag) {
+ err = nrf_modem_at_printf("AT%%CMNG=3,%u,%u", sec_tag, type);
+ }
+ token = strtok(NULL, "\n");
+ }
+
+ if (!cmee_was_enabled) {
+ cmee_disable();
+ }
+
+ if (err) {
+ return translate_error(err);
+ }
+
+ return 0;
+}
+
int modem_key_mgmt_exists(nrf_sec_tag_t sec_tag,
enum modem_key_mgmt_cred_type cred_type,
bool *exists)
diff --git a/lib/nrf_modem_lib/CMakeLists.txt b/lib/nrf_modem_lib/CMakeLists.txt
index 20318cd4ca14..217cec7f6eca 100644
--- a/lib/nrf_modem_lib/CMakeLists.txt
+++ b/lib/nrf_modem_lib/CMakeLists.txt
@@ -7,6 +7,7 @@
zephyr_library()
zephyr_library_sources(nrf_modem_lib.c)
zephyr_library_sources(nrf_modem_os.c)
+zephyr_library_sources_ifdef(CONFIG_SOC_SERIES_NRF92X nrf_modem_os_rpc.c)
zephyr_library_sources_ifdef(CONFIG_NRF_MODEM_LIB_CFUN_HOOKS cfun_hooks.c)
zephyr_library_sources_ifdef(CONFIG_NRF_MODEM_LIB_MEM_DIAG diag.c)
zephyr_library_sources_ifdef(CONFIG_NET_SOCKETS nrf9x_sockets.c)
diff --git a/lib/nrf_modem_lib/Kconfig b/lib/nrf_modem_lib/Kconfig
index c8fe1d183508..c7098f138a04 100644
--- a/lib/nrf_modem_lib/Kconfig
+++ b/lib/nrf_modem_lib/Kconfig
@@ -5,8 +5,8 @@
menuconfig NRF_MODEM_LIB
bool "Modem library"
- depends on SOC_SERIES_NRF91X
- depends on TRUSTED_EXECUTION_NONSECURE
+ depends on (SOC_SERIES_NRF91X && TRUSTED_EXECUTION_NONSECURE) || SOC_NRF9280_CPUAPP
+ select EXPERIMENTAL if SOC_NRF9280_CPUAPP
select NRF_MODEM
imply NET_SOCKETS_OFFLOAD
imply NET_SOCKETS_POSIX_NAMES if !POSIX_API
diff --git a/lib/nrf_modem_lib/Kconfig.modemlib b/lib/nrf_modem_lib/Kconfig.modemlib
index 7fd74700a40c..720fc66af6ef 100644
--- a/lib/nrf_modem_lib/Kconfig.modemlib
+++ b/lib/nrf_modem_lib/Kconfig.modemlib
@@ -10,6 +10,12 @@ config HEAP_MEM_POOL_SIZE
int
default 512
+# Redefine this symbol as Zephyr defines this as y by
+# default, but the offloading layer does not support it.
+config COAP_CLIENT_TRUNCATE_MSGS
+ bool
+ default n if NRF_MODEM_LIB
+
menu "Memory configuration"
config NRF_MODEM_LIB_HEAP_SIZE
@@ -28,6 +34,8 @@ config NRF_MODEM_LIB_SHMEM_CTRL_SIZE
This is a constant for a given library build, and is exported
by the library via NRF_MODEM_SHMEM_CTRL_SIZE.
+if SOC_SERIES_NRF91X || UNITY
+
config NRF_MODEM_LIB_SHMEM_TX_SIZE
int "TX region size"
range 1024 32768
@@ -61,6 +69,20 @@ config NRF_MODEM_LIB_SHMEM_TRACE_SIZE
help
Size of the shared memory region used to receive modem traces.
+endif # SOC_SERIES_NRF91X || UNITY
+
+if SOC_SERIES_NRF92X
+
+config NRF_MODEM_LIB_TRANSPORT_MBOX
+ bool
+ default y
+ select MBOX
+ select IPC_SERVICE
+ select IPC_SERVICE_ICMSG
+ select IPC_SERVICE_ICMSG_SHMEM_ACCESS_SYNC
+
+endif # SOC_SERIES_NRF92X
+
config NRF_MODEM_LIB_SENDMSG_BUF_SIZE
int "Size of the sendmsg intermediate buffer"
default 128
@@ -102,6 +124,7 @@ endmenu # Memory config
menuconfig NRF_MODEM_LIB_TRACE
bool "Tracing"
+ depends on SOC_SERIES_NRF91X || UNITY
help
When enabled, a portion of RAM (called Trace region) will be shared with the modem to receive modem's trace data.
The size of the Trace region is defined by the NRF_MODEM_LIB_SHMEM_TRACE_SIZE option.
diff --git a/lib/nrf_modem_lib/nrf9x_sockets.c b/lib/nrf_modem_lib/nrf9x_sockets.c
index 663d56bd2d49..a593b22222f0 100644
--- a/lib/nrf_modem_lib/nrf9x_sockets.c
+++ b/lib/nrf_modem_lib/nrf9x_sockets.c
@@ -241,6 +241,9 @@ static int z_to_nrf_optname(int z_in_level, int z_in_optname,
case SO_IPV6_ECHO_REPLY:
*nrf_out_optname = NRF_SO_IPV6_ECHO_REPLY;
break;
+ case SO_IPV6_DELAYED_ADDR_REFRESH:
+ *nrf_out_optname = NRF_SO_IPV6_DELAYED_ADDR_REFRESH;
+ break;
default:
retval = -1;
break;
@@ -760,7 +763,6 @@ static int nrf9x_socket_offload_getaddrinfo(const char *node,
struct nrf_addrinfo nrf_hints;
struct nrf_addrinfo *nrf_res = NULL;
struct nrf_addrinfo *nrf_hints_ptr = NULL;
- static K_MUTEX_DEFINE(getaddrinfo_lock);
memset(&nrf_hints, 0, sizeof(struct nrf_addrinfo));
@@ -769,11 +771,10 @@ static int nrf9x_socket_offload_getaddrinfo(const char *node,
nrf_hints_ptr = &nrf_hints;
}
- k_mutex_lock(&getaddrinfo_lock, K_FOREVER);
int retval = nrf_getaddrinfo(node, service, nrf_hints_ptr, &nrf_res);
if (retval != 0) {
- goto error;
+ return retval;
}
struct nrf_addrinfo *next_nrf_res = nrf_res;
@@ -817,8 +818,6 @@ static int nrf9x_socket_offload_getaddrinfo(const char *node,
}
nrf_freeaddrinfo(nrf_res);
-error:
- k_mutex_unlock(&getaddrinfo_lock);
return retval;
}
diff --git a/lib/nrf_modem_lib/nrf_modem_lib.c b/lib/nrf_modem_lib/nrf_modem_lib.c
index db3f0d735044..a07d60c24983 100644
--- a/lib/nrf_modem_lib/nrf_modem_lib.c
+++ b/lib/nrf_modem_lib/nrf_modem_lib.c
@@ -4,16 +4,26 @@
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
-#include
+#include
#include
#include
#include
#include
#include
-#include
#include
-#include
+
+#include
+LOG_MODULE_DECLARE(nrf_modem, CONFIG_NRF_MODEM_LIB_LOG_LEVEL);
+
+#define AT_CFUN_READ "AT+CFUN?"
+#define AT_CFUN0_VAL 0
+#define AT_CFUN4_VAL 4
+
+static void nrf_modem_lib_dfu_handler(uint32_t dfu_res);
+
+#ifdef CONFIG_SOC_SERIES_NRF91X
#include
+#include
#include
#ifndef CONFIG_TRUSTED_EXECUTION_NONSECURE
@@ -21,23 +31,15 @@
Are you building for the correct board ?
#endif /* CONFIG_TRUSTED_EXECUTION_NONSECURE */
-LOG_MODULE_DECLARE(nrf_modem, CONFIG_NRF_MODEM_LIB_LOG_LEVEL);
-
/* Interrupt used for communication with the network layer. */
#define NRF_MODEM_IPC_IRQ DT_IRQ_BY_IDX(DT_NODELABEL(ipc), 0, irq)
BUILD_ASSERT(IPC_IRQn == NRF_MODEM_IPC_IRQ, "NRF_MODEM_IPC_IRQ mismatch");
-#define AT_CFUN_READ "AT+CFUN?"
-#define AT_CFUN0_VAL 0
-#define AT_CFUN4_VAL 4
-
/* The heap implementation in `nrf_modem_os.c` require some overhead
* to allow allocating up to `NRF_MODEM_LIB_SHMEM_TX_SIZE` bytes.
*/
#define NRF_MODEM_LIB_SHMEM_TX_HEAP_OVERHEAD_SIZE 128
-static void nrf_modem_lib_dfu_handler(uint32_t dfu_res);
-
static const struct nrf_modem_init_params init_params = {
.ipc_irq_prio = CONFIG_NRF_MODEM_LIB_IPC_IRQ_PRIO,
.shmem.ctrl = {
@@ -69,6 +71,27 @@ static const struct nrf_modem_bootloader_init_params bootloader_init_params = {
.shmem.size = PM_NRF_MODEM_LIB_SRAM_SIZE,
.fault_handler = nrf_modem_fault_handler
};
+#endif /* CONFIG_SOC_SERIES_NRF91X */
+
+#ifdef CONFIG_SOC_SERIES_NRF92X
+
+static const struct nrf_modem_init_params init_params = {
+ .shmem.ctrl = {
+ .base = DT_REG_ADDR(DT_NODELABEL(cpuapp_cpucell_ipc_shm)),
+ .size = CONFIG_NRF_MODEM_LIB_SHMEM_CTRL_SIZE,
+ },
+ .shmem.tx = {
+ .base = DT_REG_ADDR(DT_NODELABEL(cpuapp_cpucell_ipc_shm_heap)),
+ .size = DT_REG_SIZE(DT_NODELABEL(cpuapp_cpucell_ipc_shm_heap)),
+ },
+ .shmem.rx = {
+ .base = DT_REG_ADDR(DT_NODELABEL(cpucell_cpuapp_ipc_shm_heap)),
+ .size = DT_REG_SIZE(DT_NODELABEL(cpucell_cpuapp_ipc_shm_heap)),
+ },
+ .fault_handler = nrf_modem_fault_handler,
+ .dfu_handler = nrf_modem_lib_dfu_handler,
+};
+#endif /* CONFIG_SOC_SERIES_NRF92X */
#if CONFIG_NRF_MODEM_LIB_TRACE
extern void nrf_modem_lib_trace_init(void);
@@ -129,11 +152,13 @@ int nrf_modem_lib_init(void)
{
int err;
+#ifdef CONFIG_SOC_SERIES_NRF91X
/* Setup the network IRQ used by the Modem library.
* Note: No call to irq_enable() here, that is done through nrf_modem_init().
*/
IRQ_CONNECT(NRF_MODEM_IPC_IRQ, CONFIG_NRF_MODEM_LIB_IPC_IRQ_PRIO,
nrfx_isr, nrfx_ipc_irq_handler, 0);
+#endif /* CONFIG_SOC_SERIES_NRF91X */
err = nrf_modem_init(&init_params);
if (err) {
@@ -161,7 +186,11 @@ int nrf_modem_lib_init(void)
int nrf_modem_lib_bootloader_init(void)
{
+#ifdef CONFIG_SOC_SERIES_NRF91X
return nrf_modem_bootloader_init(&bootloader_init_params);
+#else
+ return -ENOSYS;
+#endif
}
int nrf_modem_lib_shutdown(void)
diff --git a/lib/nrf_modem_lib/nrf_modem_lib_trace.c b/lib/nrf_modem_lib/nrf_modem_lib_trace.c
index 81c5f807a0ec..e631eed26083 100644
--- a/lib/nrf_modem_lib/nrf_modem_lib_trace.c
+++ b/lib/nrf_modem_lib/nrf_modem_lib_trace.c
@@ -21,6 +21,7 @@ LOG_MODULE_REGISTER(nrf_modem_lib_trace, CONFIG_NRF_MODEM_LIB_LOG_LEVEL);
K_SEM_DEFINE(trace_sem, 0, 1);
K_SEM_DEFINE(trace_clear_sem, 0, 1);
K_SEM_DEFINE(trace_done_sem, 1, 1);
+K_SEM_DEFINE(modem_trace_level_sem, 1, 1);
extern struct nrf_modem_lib_trace_backend trace_backend;
static bool has_space = true;
@@ -234,13 +235,11 @@ int nrf_modem_lib_trace_processing_done_wait(k_timeout_t timeout)
static int trace_fragment_write(struct nrf_modem_trace_data *frag)
{
int ret;
- size_t remaining = frag->len;
- while (remaining) {
+ while (frag->len) {
PERF_START();
- ret = trace_backend.write((void *)((uint8_t *)frag->data + frag->len - remaining),
- remaining);
+ ret = trace_backend.write(frag->data, frag->len);
PERF_END(ret);
@@ -266,7 +265,9 @@ static int trace_fragment_write(struct nrf_modem_trace_data *frag)
return ret;
}
- remaining -= ret;
+ /* Alter trace fragment to contain what is not written */
+ frag->data = (void *)((uint8_t *)frag->data + ret);
+ frag->len -= ret;
}
return 0;
@@ -320,7 +321,6 @@ void trace_thread_handler(void)
break;
case -ENOSPC:
nrf_modem_lib_trace_callback(NRF_MODEM_LIB_TRACE_EVT_FULL);
-
if (!trace_backend.clear) {
goto deinit;
}
@@ -331,6 +331,26 @@ void trace_thread_handler(void)
/* Try the same fragment again */
i--;
continue;
+
+ case -ENOSR:
+ if (k_sem_take(&modem_trace_level_sem, K_NO_WAIT) != 0) {
+ /** If modem trace level is off, we wait for modem
+ * trace level semaphore, indicating modem traces
+ * are enabled. This is always available unless
+ * nrf_modem_lib_trace_level_set() is called with
+ * level 0 (off).
+ */
+ k_sem_give(&trace_done_sem);
+ k_sem_take(&modem_trace_level_sem, K_FOREVER);
+ k_sem_take(&trace_done_sem, K_FOREVER);
+ }
+
+ k_sem_give(&modem_trace_level_sem);
+
+ /* Try the same fragment again */
+ i--;
+ continue;
+
default:
/* Irrecoverable error */
goto deinit;
@@ -441,8 +461,10 @@ int nrf_modem_lib_trace_level_set(enum nrf_modem_lib_trace_level trace_level)
if (tl) {
err = nrf_modem_at_printf("AT%%XMODEMTRACE=1,%d", tl);
+ k_sem_give(&modem_trace_level_sem);
} else {
err = nrf_modem_at_printf("AT%%XMODEMTRACE=0");
+ k_sem_take(&modem_trace_level_sem, K_NO_WAIT);
}
if (err) {
@@ -473,6 +495,9 @@ int nrf_modem_lib_trace_read(uint8_t *buf, size_t len)
read = trace_backend.read(buf, len);
if (read > 0) {
UPDATE_TRACE_BYTES_READ(read);
+ /* Traces are read, we can attempt to write more. */
+ has_space = true;
+ k_sem_give(&trace_clear_sem);
}
return read;
diff --git a/lib/nrf_modem_lib/nrf_modem_os.c b/lib/nrf_modem_lib/nrf_modem_os.c
index fc1ce239f17d..7c76cc750f39 100644
--- a/lib/nrf_modem_lib/nrf_modem_os.c
+++ b/lib/nrf_modem_lib/nrf_modem_os.c
@@ -12,14 +12,23 @@
#include
#include
#include
-#include
+
#include
+LOG_MODULE_REGISTER(nrf_modem, CONFIG_NRF_MODEM_LIB_LOG_LEVEL);
+
+#if CONFIG_SOC_SERIES_NRF91X
+#include
+#define SHMEM_TX_HEAP_ADDR (PM_NRF_MODEM_LIB_TX_ADDRESS)
+#define SHMEM_TX_HEAP_SIZE (CONFIG_NRF_MODEM_LIB_SHMEM_TX_SIZE)
+#elif CONFIG_SOC_SERIES_NRF92X
+#define SHMEM_TX_HEAP_ADDR (DT_REG_ADDR(DT_NODELABEL(cpuapp_cpucell_ipc_shm_heap)))
+#define SHMEM_TX_HEAP_SIZE (DT_REG_SIZE(DT_NODELABEL(cpuapp_cpucell_ipc_shm_heap)))
+#endif
+
#define UNUSED_FLAGS 0
#define THREAD_MONITOR_ENTRIES 10
-LOG_MODULE_REGISTER(nrf_modem, CONFIG_NRF_MODEM_LIB_LOG_LEVEL);
-
struct sleeping_thread {
sys_snode_t node;
struct k_sem sem;
@@ -375,7 +384,14 @@ void nrf_modem_os_free(void *mem)
void *nrf_modem_os_shm_tx_alloc(size_t bytes)
{
extern uint32_t nrf_modem_lib_shmem_failed_allocs;
+
+#if (CONFIG_SOC_SERIES_NRF92X && CONFIG_DCACHE)
+ /* Allocate cache line aligned memory. */
+ void * const addr = k_heap_aligned_alloc(&nrf_modem_lib_shmem_heap, CONFIG_DCACHE_LINE_SIZE,
+ ROUND_UP(bytes, CONFIG_DCACHE_LINE_SIZE), K_NO_WAIT);
+#else
void * const addr = k_heap_alloc(&nrf_modem_lib_shmem_heap, bytes, K_NO_WAIT);
+#endif
if (IS_ENABLED(CONFIG_NRF_MODEM_LIB_MEM_DIAG_ALLOC) && !addr) {
nrf_modem_lib_shmem_failed_allocs++;
@@ -487,8 +503,7 @@ void nrf_modem_os_init(void)
{
/* Initialize heaps */
k_heap_init(&nrf_modem_lib_heap, library_heap_buf, sizeof(library_heap_buf));
- k_heap_init(&nrf_modem_lib_shmem_heap, (void *)PM_NRF_MODEM_LIB_TX_ADDRESS,
- CONFIG_NRF_MODEM_LIB_SHMEM_TX_SIZE);
+ k_heap_init(&nrf_modem_lib_shmem_heap, (void *)SHMEM_TX_HEAP_ADDR, SHMEM_TX_HEAP_SIZE);
}
void nrf_modem_os_shutdown(void)
diff --git a/lib/nrf_modem_lib/nrf_modem_os_rpc.c b/lib/nrf_modem_lib/nrf_modem_os_rpc.c
new file mode 100644
index 000000000000..e6a1bb1740d2
--- /dev/null
+++ b/lib/nrf_modem_lib/nrf_modem_os_rpc.c
@@ -0,0 +1,269 @@
+/*
+ * Copyright (c) 2024 Nordic Semiconductor ASA
+ *
+ * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define DCACHE_LINE_SIZE 0
+
+/** Structure to hold pbuf configuration and data. */
+struct nrf_modem_pbuf {
+ struct pbuf_cfg pb_cfg;
+ struct pbuf pb;
+};
+
+/**
+ * Structure nrf_modem_os_rpc was only declared in nrf_modem_os_rpc.h.
+ * Define the members of the struct here. Populating it with the required IPC data.
+ */
+struct nrf_modem_os_rpc {
+ /** ICMsg internal data. */
+ struct icmsg_data_t data;
+ /** ICMsg configuration. */
+ struct icmsg_config_t conf;
+ /** ICMsg callbacks to nrf_modem. */
+ struct ipc_service_cb cb;
+ /** TX pbuf. */
+ struct nrf_modem_pbuf tx;
+ /** RX pbuf. */
+ struct nrf_modem_pbuf rx;
+};
+
+/**
+ * Structure nrf_modem_os_rpc_signal was only declared in nrf_modem_os_rpc.h.
+ * Define the members of the struct here. Populating it with the required mbox data.
+ */
+struct nrf_modem_os_rpc_signal {
+ /** MBOX instance data. */
+ struct mbox_dt_spec mbox;
+ /** Callback to nrf_modem. */
+ nrf_modem_os_rpc_signal_cb_t recv;
+ /** Private context data usable by nrf_modem. */
+ void *priv;
+};
+
+/**
+ * Macro to initialize an instance of struct nrf_modem_os_rpc.
+ *
+ * @param _inst RPC instance to be initialized.
+ * @param _dcache_line_size cache line size in bytes.
+ *
+ * @return Initializer list for initializing the instance.
+ */
+#define NRF_MODEM_OS_RPC_INIT(_inst, _dcache_line_size) \
+ { \
+ .data.tx_pb = &(_inst).tx.pb, \
+ .data.rx_pb = &(_inst).rx.pb, \
+ .tx.pb.cfg = &(_inst).tx.pb_cfg, \
+ .rx.pb.cfg = &(_inst).rx.pb_cfg, \
+ .tx.pb_cfg.dcache_alignment = (_dcache_line_size), \
+ .rx.pb_cfg.dcache_alignment = (_dcache_line_size), \
+ }
+
+/**
+ * Define and initialize the RPC instances used by nrf_modem.
+ * These are declared extern in nrf_modem_os_rpc.h.
+ */
+struct nrf_modem_os_rpc inst_ctrl = NRF_MODEM_OS_RPC_INIT(inst_ctrl, DCACHE_LINE_SIZE);
+struct nrf_modem_os_rpc inst_data = NRF_MODEM_OS_RPC_INIT(inst_data, DCACHE_LINE_SIZE);
+
+/**
+ * Define and initialize the signaling instances used by nrf_modem.
+ * These are declared extern in nrf_modem_os_rpc.h.
+ */
+struct nrf_modem_os_rpc_signal inst_app_fault;
+struct nrf_modem_os_rpc_signal inst_modem_fault;
+struct nrf_modem_os_rpc_signal inst_modem_sysoff;
+
+uintptr_t nrf_modem_os_rpc_sigdev_app_get(void)
+{
+ const struct device *app_bellboard = DEVICE_DT_GET(DT_NODELABEL(cpuapp_bellboard));
+
+ return (uintptr_t)app_bellboard;
+}
+
+uintptr_t nrf_modem_os_rpc_sigdev_modem_get(void)
+{
+ const struct device *modem_bellboard = DEVICE_DT_GET(DT_NODELABEL(cpucell_bellboard));
+
+ return (uintptr_t)modem_bellboard;
+}
+
+static inline void pbuf_configure(struct pbuf_cfg *pb_cfg, uintptr_t mem_addr, size_t size)
+{
+ const uint32_t wr_idx_offset = MAX(pb_cfg->dcache_alignment, _PBUF_IDX_SIZE);
+
+ pb_cfg->rd_idx_loc = (uint32_t *)(mem_addr);
+ pb_cfg->wr_idx_loc = (uint32_t *)(mem_addr + wr_idx_offset);
+ pb_cfg->len = (uint32_t)((uint32_t)size - wr_idx_offset - _PBUF_IDX_SIZE);
+ pb_cfg->data_loc = (uint8_t *)(mem_addr + wr_idx_offset + _PBUF_IDX_SIZE);
+}
+
+int nrf_modem_os_rpc_open(struct nrf_modem_os_rpc *instance,
+ const struct nrf_modem_os_rpc_config *config)
+{
+ if (instance == NULL || config == NULL) {
+ return -NRF_EINVAL;
+ }
+
+ pbuf_configure(&instance->tx.pb_cfg, config->tx.addr, config->tx.size);
+ pbuf_configure(&instance->rx.pb_cfg, config->rx.addr, config->rx.size);
+
+ instance->conf.mbox_tx.dev = (struct device *)config->tx.sigdev;
+ instance->conf.mbox_rx.dev = (struct device *)config->rx.sigdev;
+ instance->conf.mbox_tx.channel_id = config->tx.ch;
+ instance->conf.mbox_rx.channel_id = config->rx.ch;
+
+ instance->cb.bound = config->cb.bound;
+ instance->cb.received = config->cb.received;
+
+ return icmsg_open(&instance->conf, &instance->data, &instance->cb, config->cb.priv);
+}
+
+int nrf_modem_os_rpc_send(struct nrf_modem_os_rpc *instance, const void *msg, size_t len)
+{
+ int ret;
+
+ ret = icmsg_send(&instance->conf, &instance->data, msg, len);
+ if (ret < 0) {
+ switch (ret) {
+ case -EBUSY:
+ case -EINVAL:
+ return -NRF_EBUSY;
+ case -ENOBUFS:
+ case -ENOMEM:
+ return -NRF_ENOMEM;
+ default:
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+int nrf_modem_os_rpc_close(struct nrf_modem_os_rpc *instance)
+{
+ return icmsg_close(&instance->conf, &instance->data);
+}
+
+int nrf_modem_os_rpc_rx_suspend(struct nrf_modem_os_rpc *instance)
+{
+ return mbox_set_enabled_dt(&instance->conf.mbox_rx, false);
+}
+
+int nrf_modem_os_rpc_rx_resume(struct nrf_modem_os_rpc *instance)
+{
+ return mbox_set_enabled_dt(&instance->conf.mbox_rx, true);
+}
+
+static void mbox_common_callback(const struct device *dev, mbox_channel_id_t ch, void *ctx,
+ struct mbox_msg *data)
+{
+ struct nrf_modem_os_rpc_signal *inst = (struct nrf_modem_os_rpc_signal *)ctx;
+
+ ARG_UNUSED(dev);
+ ARG_UNUSED(data);
+
+ if (inst->recv != NULL) {
+ inst->recv(ch, inst->priv);
+ }
+}
+
+int nrf_modem_os_rpc_signal_init(struct nrf_modem_os_rpc_signal *instance,
+ struct nrf_modem_os_rpc_signal_config *conf)
+{
+ int err;
+
+ instance->mbox.dev = (struct device *)conf->sigdev;
+ instance->mbox.channel_id = (mbox_channel_id_t)conf->ch;
+ instance->priv = conf->priv;
+ instance->recv = conf->recv;
+
+ if (instance->recv == NULL) {
+ return 0;
+ }
+
+ err = mbox_register_callback_dt(&instance->mbox, mbox_common_callback, (void *)instance);
+ if (err) {
+ goto errout;
+ }
+
+ err = mbox_set_enabled_dt(&instance->mbox, true);
+ if (err) {
+ goto errout;
+ }
+
+ return 0;
+
+errout:
+ instance->recv = NULL;
+ return err;
+}
+
+int nrf_modem_os_rpc_signal_send(struct nrf_modem_os_rpc_signal *instance)
+{
+ if (instance->recv != NULL) {
+ return -ENOSYS;
+ }
+
+ return mbox_send_dt(&instance->mbox, NULL);
+}
+
+int nrf_modem_os_rpc_signal_deinit(struct nrf_modem_os_rpc_signal *instance)
+{
+ if (instance->recv == NULL) {
+ return 0;
+ }
+
+ return mbox_set_enabled_dt(&instance->mbox, false);
+}
+
+int nrf_modem_os_rpc_cache_data_flush(void *addr, size_t size)
+{
+#if CONFIG_DCACHE
+ /* Separate heaps are used for data payloads to and from the modem.
+ * Cache flush is only used on the tx heap. Therefore, cache coherency is
+ * maintained even when start address and size are not aligned with cache lines.
+ */
+ addr = (void *)ROUND_DOWN((uint32_t)addr, CONFIG_DCACHE_LINE_SIZE);
+ size = ROUND_UP(size, CONFIG_DCACHE_LINE_SIZE);
+
+ return sys_cache_data_flush_range(addr, size);
+#else
+ ARG_UNUSED(addr);
+ ARG_UNUSED(size);
+ return 0;
+#endif
+}
+
+int nrf_modem_os_rpc_cache_data_invalidate(void *addr, size_t size)
+{
+#if CONFIG_DCACHE
+ /* Separate heaps are used for data payloads to and from the modem.
+ * Cache invalidation is only used on the rx heap. Therefore, cache coherency is
+ * maintained even when start address and size are not aligned with cache lines.
+ */
+ addr = (void *)ROUND_DOWN((uint32_t)addr, CONFIG_DCACHE_LINE_SIZE);
+ size = ROUND_UP(size, CONFIG_DCACHE_LINE_SIZE);
+
+ return sys_cache_data_invd_range(addr, size);
+#else
+ ARG_UNUSED(addr);
+ ARG_UNUSED(size);
+ return 0;
+#endif
+}
diff --git a/lib/nrf_modem_lib/sanity.c b/lib/nrf_modem_lib/sanity.c
index 64f6feaa13ae..226e36f5516c 100644
--- a/lib/nrf_modem_lib/sanity.c
+++ b/lib/nrf_modem_lib/sanity.c
@@ -6,7 +6,9 @@
#include
#include