Skip to content

doc: Update nRF Cloud documentation for Wi-Fi targets - #32257

Open
simonduq wants to merge 5 commits into
nrfconnect:mainfrom
simonduq:nrfc_docs
Open

simonduq wants to merge 5 commits into
nrfconnect:mainfrom
simonduq:nrfc_docs

Conversation

@simonduq

@simonduq simonduq commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

This PR updates a few things on the nRF Cloud lib and wifi/nrf_cloud sample:

  • wifi/nrf_cloud readme: Align with NCS sample template
  • wifi/nrf_cloud readme: Align with net samples
  • wifi/nrf_cloud readme: Add troubleshooting, sample output, testing sections
  • New doc/nrf/libraries/networking/nrf_cloud_preconnect_provisioning.rst: Centralize provisioning and onboarding, point to nRF Cloud utils docs
  • wifi/nrf_cloud readme: Add details on Memfault opration
  • wifi/nrf_cloud readme: Update outdates content and condense existing content
  • nRF Cloud lib: document provisioning on modem-less devices

Depends on:
nRFCloud/utils#102

Tickets:

@simonduq
simonduq requested review from a team as code owners October 26, 2026 13:45
@simonduq
simonduq requested review from b-gent and divipillai and a balanced review from Copilot October 26, 2026 13:45
@NordicBuilder NordicBuilder added doc-required PR must not be merged without tech writer approval. changelog labels Oct 26, 2026
@NordicBuilder
NordicBuilder requested review from a team October 26, 2026 13:45
@NordicBuilder

NordicBuilder commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

CI Information

To view the history of this post, click the 'edited' button above
Build number: 14

Inputs:

Sources:

sdk-nrf: PR head: 61c426e5373200ba2aece39ae550f473fce37749

more details

sdk-nrf:

PR head: 61c426e5373200ba2aece39ae550f473fce37749
merge base: 9404cac90f7f515911e778faea4668cd05e7d4ca
target head (main): b338f2f8548027612c6a94f9379f39d41cf55c37
Diff

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
ci-run-draft Run CI on draft pull requests
List of changed files detected by CI (8)
doc
│  ├── nrf
│  │  ├── external_comp
│  │  │  ├── memfault.rst
│  │  │  │ nrf_cloud.rst
│  │  ├── libraries
│  │  │  ├── networking
│  │  │  │  ├── nrf_cloud.rst
│  │  │  │  ├── nrf_cloud_credentials_keygen.rst
│  │  │  │  │ nrf_cloud_preconnect_provisioning.rst
│  │  ├── links.txt
│  │  ├── releases_and_maturity
│  │  │  ├── releases
│  │  │  │  │ release-notes-changelog.rst
samples
│  ├── wifi
│  │  ├── nrf_cloud
│  │  │  │ README.rst

Outputs:

Toolchain

Version:
Build docker image:

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ◻️ Toolchain
  • ◻️ Build twister
  • ◻️ Integration tests
Disabled integration tests
    • doxygen-review
    • test-fw-nrfconnect-nrf_lrcs_mosh
    • test-fw-nrfconnect-nrf_lrcs_positioning
    • test_ble_nrf_config
    • test-fw-nrfconnect-apps
    • test-fw-nrfconnect-ble_mesh
    • test-fw-nrfconnect-ble_samples
    • test-fw-nrfconnect-fem
    • test-fw-nrfconnect-nfc
    • test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • test-fw-nrfconnect-nrf-iot_lwm2m
    • test-fw-nrfconnect-nrf-iot_samples
    • test-fw-nrfconnect-nrf-iot_thingy91
    • test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • test-fw-nrfconnect-nrf_crypto
    • test-fw-nrfconnect-ps-main
    • test-fw-nrfconnect-rpc
    • test-fw-nrfconnect-rs
    • test-fw-nrfconnect-tfm
    • test-fw-nrfconnect-thread-main
    • test-low-level
    • test-sdk-audio
    • test-sdk-dfu
    • test-sdk-find-my
    • test-sdk-mcuboot
    • test-sdk-wifi

Note: This message is automatically posted and updated by the CI

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The hard-coded CoAP setup can fail authorization, and metric and target-specific testing guidance needs correction.

4 open issues
What changed in this PR

This documentation update clarifies how Wi-Fi devices connect to nRF Cloud, with reorganized provisioning instructions and expanded Memfault guidance.

Changes:

  • Restructures the Wi-Fi sample README and adds testing, troubleshooting, and sample output.
  • Documents provisioning methods for devices without a Nordic cellular modem.
  • Expands Memfault monitoring and FOTA instructions, with supporting links and release notes.
File Description
samples/​wifi/​nrf_cloud/​README.rst Reorganizes setup and adds monitoring, testing, and troubleshooting guidance.
doc/​nrf/​releases_and_maturity/​releases/​release-notes-changelog.rst Records the sample documentation update.
doc/​nrf/​links.txt Adds provisioning and Memfault documentation links.
doc/​nrf/​libraries/​networking/​nrf_cloud.rst Documents modem-less and hard-coded credential provisioning.
doc/​nrf/​external_comp/​nrf_cloud.rst Simplifies provisioning guidance and links modem-less instructions.
doc/​nrf/​external_comp/​memfault.rst Adds the Wi-Fi sample to Memfault integration examples.

Review effort: Balanced

Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread doc/nrf/external_comp/nrf_cloud.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
@simonduq
simonduq force-pushed the nrfc_docs branch 2 times, most recently from 2563777 to 545f696 Compare October 27, 2026 08:20
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved
Comment thread samples/wifi/nrf_cloud/README.rst Resolved

@PavelVPV PavelVPV left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I did the first round of review. My main concern are (explained in the comments):

  • I think Preconnect provisioning should be moved into its own page
  • self-signed CA certs should be part of that page
  • provisioning credentials generated on the host should be part of that page.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow the instructions in the README section for single or bulk onboarding

Which README section? I know it was not introduce in this PR, but I am trying to read the whole section and can't understand it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed


On devices without a Nordic cellular modem, such as nRF71 Series and nRF70 Series Wi-Fi devices, the credentials are stored using the :ref:`TLS credentials <zephyr:sockets_tls_credentials_subsys>` subsystem (:kconfig:option:`CONFIG_NRF_CLOUD_CREDENTIALS_MGMT_TLS_CRED`).
These devices have no modem UUID or IMEI, so the device ID comes from another source (see :ref:`configuration_device_id`).
Pass the device ID that the firmware uses to nRF Cloud Utils with the ``--id-str`` option.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence comes out of nowhere. To which exact nRF Cloud Util I should pass this?

* On-device key generation (recommended) - The device generates its private key and CSR using the :ref:`lib_nrf_cloud_credentials_keygen` library, and the ``device_credentials_installer`` script installs the signed device certificate.
The private key never leaves the device.
See :ref:`lib_nrf_cloud_credentials_keygen_onboarding`.
* Host-generated key - The ``device_credentials_installer`` script generates the private key and device certificate on the host and installs them through the :ref:`TLS Credentials Shell <zephyr:tls_credentials_shell>`.

@PavelVPV PavelVPV Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the "Host-generated key" option is now gone from the sample and was not moved into this page.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is wrong, I forgot to remove it. The option is in sample readme, but I think it should be moved to the common page.

Comment on lines +97 to +99
See `nRF Cloud Utils: Devices without a modem <nRF Cloud Utils devices without a modem_>`_ for the script options.
All methods produce an :file:`onboard.csv` file that you onboard with the ``nrf_cloud_onboard`` script, or upload on the **Bulk Onboard** page of the legacy nRF Cloud app.
Both require your legacy nRF Cloud API key, see `nRF Cloud Utils requirements`_.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph a bit hard to read:

  • for the script options - for which script? nRF Cloud Utils has many scripts... nrf_cloud_onboard was introduced in the text after "the script".
  • "All methods produce ..." -> "onboard with ..., or ..." -> "Both require ...": What is "Both" ? methods? methods for onboarding or methods for provisioning? The latter has 3 options, so both doesn't work here. But it is also a bit hard to match this "Both" with onboarding methods.

Optional proposal:

All three provisioning methods create an :file:`onboard.csv` file.

To onboard the device to nRF Cloud, use one of the following options:
* Run the ``nrf_cloud_onboard`` script with the :file:`onboard.csv` file. See `nRF Cloud Utils: Devices without a modem <nRF Cloud Utils devices without a modem_>`_ for the script options.
* Upload the :file:`onboard.csv` file on the **Bulk Onboard** page of the legacy nRF Cloud app.

Both onboarding options require your legacy nRF Cloud API key.
See `nRF Cloud Utils requirements`_.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, reworded

Comment on lines +112 to +113
The credentials are included from the header file set by the :kconfig:option:`CONFIG_NRF_CLOUD_CERTIFICATES_FILE` Kconfig option.
The default header, :file:`subsys/net/lib/nrf_cloud/common/include/nrf_cloud-certs.h`, includes the :file:`ca-cert.pem`, :file:`client-cert.pem`, and :file:`private-key.pem` files from the include path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess the step about creating your own certificates is missing:

Creating a self-signed CA certificate for device certificate signing
====================================================================
Before a device can connect to nRF Cloud, it must have device credentials.
You need to sign these credentials yourself using a CA certificate you create.
This is referred to as your self-signed CA certificate.
To create your self-signed CA certificate:
1. :ref:`Install the nRF Cloud Utils <wifi_nrf_cloud_install_nrf_utils>`.
#. Use the nRF Cloud Utils :file:`create_ca_cert` script to generate the certificate:
.. code-block:: console
create_ca_cert -c US -f self_
Remember to set ``-c`` to your two-letter country code.
See the `Create CA Cert <nRF Cloud Utils Create CA Cert_>`_ section in the nRF Cloud Utils documentation for more details.
You should now have the following three files:
* :file:`self_<self_cert_serial>_ca.pem`
* :file:`self_<self_cert_serial>_prv.pem`
* :file:`self_<self_cert_serial>_pub.pem`
Where ``<self_cert_serial>`` is your self-signed CA certificate's serial number in hex.
These three files are your self-signed CA certificate and private/public keypair.
You will use them to sign device credentials.
If you were directed here as part of other instructions, proceed to the next step of those instructions.
.. note::
You only need to generate these three files once.
You can use them to sign as many device credentials as you need.
.. _wifi_nrf_cloud_create_device_cred_locally:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not, the comment is wrong, but it should be moved to a commnon page.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep will be moving it

Comment thread samples/wifi/nrf_cloud/README.rst Outdated
Comment on lines +90 to +92
The application thread (:file:`src/application.c`) logs the reset reason at startup, then performs the following operations:

It performs the following major tasks:

* Establishes periodic position tracking (which the :ref:`lib_location` library performs).
* Periodically samples temperature data (using the :file:`src/temperature.c` file).
* Constructs timestamped sensor sample and location `device messages <nRF Cloud Device Messages_>`_.
* Sends sensor sample and location device messages to the :ref:`wifi_nrf_cloud_device_message_queue`.

.. note::
Periodic location tracking is handled by the :ref:`lib_location` library once it has been requested, whereas temperature samples are individually requested by the Main Application Loop.
* Starts periodic location tracking with the :ref:`lib_location` library.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A nit. The location tracking start is done outside of the while-loop. But temperature sampling is inside the loop. Would it make sense to put in single sentense logging the reset reasn and location tracking start, and keep temp sampling and sending samples in a list saying that these operations are done in a loop?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


Temperature sensing
===================
-------------------

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph is gone now:

For temperature readings to be visible in the nRF Cloud portal, they must be marked as enabled in the `Device Shadow <nRF Cloud Device Shadows_>`_ (handled in :file:`src/cloud_connection.c`).

But wasn't it useful?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same, deprecated

/** @brief DEPRECATED - No longer used by nRF Cloud

For location readings to be visible in the nRF Cloud portal, they must be marked as enabled in the `Device Shadow <nRF Cloud Device Shadows_>`_ (handled in :file:`src/cloud_connection.c`).

The device scans MAC addresses of nearby Wi-Fi access points and submits them to nRF Cloud to obtain a location estimate.
The sample periodically scans nearby Wi-Fi access points and sends their MAC addresses to nRF Cloud for a location estimate (:file:`src/location_tracking.c`).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph is gone now:

For location readings to be visible in the nRF Cloud portal, they must be marked as enabled in the `Device Shadow <nRF Cloud Device Shadows_>`_ (handled in :file:`src/cloud_connection.c`).

But wasn't it usefull?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is deprecated

/** @brief DEPRECATED - No longer used by nRF Cloud

Now the portal renders anything that's present in the message

Comment thread samples/wifi/nrf_cloud/README.rst Outdated
.. note::
You only need to perform one of the above methods.
Select the one that best matches your needs, then build and run the sample with the required build configuration.
Prerequisites

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this whole thing belongs to provisioning section, it is not sample specific. Everyone who onboards devices to their account need their certificate.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep agree will be moving it

@simonduq
simonduq requested a review from peknis October 30, 2026 12:51
Restructure the README to follow the sample documentation template,
in line with the other networking samples: add Testing, Sample output,
and Troubleshooting sections.

Signed-off-by: Simon Duquennoy <simon.duquennoy@nordicsemi.no>
@simonduq
simonduq force-pushed the nrfc_docs branch 3 times, most recently from da3e84a to cd14ef6 Compare October 30, 2026 17:42
@simonduq
simonduq requested a review from PavelVPV October 30, 2026 17:45
Add new page describing provisioning and onboarding for devices
without a modem, such as Wi-Fi devices. Link it from the
wifi/nrf_cloud sample and from the nRF Cloud library page.

Signed-off-by: Simon Duquennoy <simon.duquennoy@nordicsemi.no>
Document the data the sample reports to Memfault by default, how it
reaches Memfault through nRF Cloud CoAP, and how to view it on the
Memfault dashboard. List the sample in the Memfault integration page.

Signed-off-by: Simon Duquennoy <simon.duquennoy@nordicsemi.no>
nNRF7120dk is now tested. Remove note that states otherwise.

Signed-off-by: Simon Duquennoy <simon.duquennoy@nordicsemi.no>
Condense the design and configuration sections, and fix content that no
longer matches the code: the sample does not send location messages nor
update the shadow on startup, and the temperature log format changed.

Signed-off-by: Simon Duquennoy <simon.duquennoy@nordicsemi.no>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog doc-required PR must not be merged without tech writer approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants