Skip to content

modules: openthread: New OpenThread radio implementation for nRF #22847

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ArekBalysNordic
Copy link
Contributor

Implemented the new OpenThread radio implementation for the nRF Connect platform.
The new radio implementation is based on the nRF IEEE802.15.4 radio driver and does not use Zephyr's IEEE802.15.4 shim layer.
In this solution, the Zephyr's networking L2 layer is disabled, and radio packets are passed directly to the nRF radio.

Prepared a build environment to support building OpenThread without Zephyr's L2 and IEEE802.15.4 shim layers.
To use the new radio implementation, the CONFIG_NET_L2_OPENTHREAD Kconfig must be set to n.

Note: Documentation will be updated in the following PR.

@ArekBalysNordic ArekBalysNordic requested a review from a team June 17, 2025 13:47
@ArekBalysNordic ArekBalysNordic requested review from a team as code owners June 17, 2025 13:47
@github-actions github-actions bot added the changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. label Jun 17, 2025
@NordicBuilder
Copy link
Contributor

NordicBuilder commented Jun 17, 2025

CI Information

To view the history of this post, clich the 'edited' button above
Build number: 6

Inputs:

Sources:

sdk-nrf: PR head: 889062b104e3ff52652bd7a1d792004d2c09503b

more details

sdk-nrf:

PR head: 889062b104e3ff52652bd7a1d792004d2c09503b
merge base: e0ace55eb2087b1503080c5901f1629f8ffcb965
target head (main): 04d8afacc9c8732fc844de88fddff932302debaf
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
List of changed files detected by CI (6)
modules
│  ├── openthread
│  │  ├── Kconfig
│  │  ├── Kconfig.features.nrf
│  │  ├── Kconfig.nrf5
│  │  ├── platform
│  │  │  ├── CMakeLists.txt
│  │  │  │ radio_nrf5.c
subsys
│  ├── net
│  │  ├── openthread
│  │  │  │ Kconfig.defconfig

Outputs:

Toolchain

Version: 4aa3467a6d
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:4aa3467a6d_776d264d2e

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

  • ◻️ Toolchain - Skipped: existing toolchain is used
  • ✅ Build twister
    • sdk-nrf test count: 9
  • ✅ Integration tests
    • ✅ test-fw-nrfconnect-chip
    • ✅ test-fw-nrfconnect-thread-main
Disabled integration tests
    • test-fw-nrfconnect-nrf_lrcs_mosh
    • test-fw-nrfconnect-nrf_lrcs_positioning
    • desktop52_verification
    • doc-internal
    • test-fw-nrfconnect-apps
    • test-fw-nrfconnect-ble_mesh
    • test-fw-nrfconnect-ble_samples
    • test-fw-nrfconnect-boot
    • test-fw-nrfconnect-fem
    • test-fw-nrfconnect-nfc
    • test-fw-nrfconnect-nrf-iot_cloud
    • test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • test-fw-nrfconnect-nrf-iot_lwm2m
    • test-fw-nrfconnect-nrf-iot_samples
    • test-fw-nrfconnect-nrf-iot_serial_lte_modem
    • 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-low-level
    • test-sdk-audio
    • test-sdk-find-my
    • test-sdk-mcuboot
    • test-sdk-pmic-samples
    • test-sdk-wifi
    • test-secdom-samples-public

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

@ArekBalysNordic ArekBalysNordic force-pushed the openthread_nrf_radio branch 3 times, most recently from d97beed to d0672ca Compare June 17, 2025 14:15
Copy link

You can find the documentation preview for this PR here.


config NRF5_DELAY_TRX_ACC
int "Clock accuracy for delayed operations"
default 50 if BOARD_NRF52840DONGLE_NRF52840 || BOARD_NRF54L15DK || BOARD_NRF54LM20PDK
Copy link
Contributor

Choose a reason for hiding this comment

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

Does this value really apply to BOARD_NRF54L15DK?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, because it is related to the external XTAL oscillator, which serves as a source for GRTC on the nRF54L15 DK. I'm checking whether the same oscillator is used on the nRF54LM20 DK.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ok, seems both 54L15 DK and 54LM20 DK use 20 ppm now, so I will remove them.

Copy link
Contributor

Choose a reason for hiding this comment

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

We should also update OPENTHREAD_PLATFORM_CSL_UNCERT for nRF54L15. See KRKNWK-18121.

Copy link
Contributor

Choose a reason for hiding this comment

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

there is already CONFIG_CLOCK_CONTROL_NRF_ACCURACY_PPM why can't that be used instead of having essentially a duplicate Kconfig where uses have to update multiple of the same thing and keep them in sync manually?

Implemented the new OpenThread radio implementation for the
nRF Connect platform.
The new radio implementation is based on the nRF IEEE802.15.4 radio
driver and does not use Zephyr's IEEE802.15.4 shim layer.
In this solution, the Zephyr's networking L2 layer is disabled, and
radio packets are passed directly to the nRF radio.

Prepared a build environment to support building OpenThread without
Zephyr's L2 and IEEE802.15.4 shim layers.

To use the new radio implementation, the CONFIG_NET_L2_OPENTHREAD
Kconfig must be set to `n`.

Signed-off-by: Adrian Gielniewski <adrian.gielniewski@nordicsemi.no>
Signed-off-by: Arkadiusz Balys <arkadiusz.balys@nordicsemi.no>
Comment on lines +70 to +73
config NRF5_DELAY_TRX_ACC
int "Clock accuracy for delayed operations"
default 50 if BOARD_NRF52840DONGLE_NRF52840
default 20
Copy link
Contributor

Choose a reason for hiding this comment

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

rather than introducing a new disjoint Kconfig that has the same purpose as an existing Kconfig, just use the existing Kconfig CONFIG_CLOCK_CONTROL_NRF_ACCURACY_PPM e.g. CONFIG_CLOCK_CONTROL_NRF_K32SRC_50PPM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants