Hey everyone,
I've been trying to get the Bluetooth Mesh DFU Target sample working on my nRF5340 DK and running into some issues. I've read through the
docs.nordicsemi.com/.../dfu_over_bt_mesh.html documentation and followed the sample README in the "target" sample project, but I noticed the sample only lists support for nRF52840 and nRF54L15 devices. I figured the nRF5340 should work since it's commonly used for mesh applications.
The problem:
When the device boots up, I'm getting these errors:
[00:00:00.115,173] <wrn> bt_hci_core: opcode 0x2036 status 0x01
[00:00:00.115,203] <err> bt_mesh_pb_adv: Failed enabling advertiser
[00:00:00.115,905] <wrn> bt_hci_core: opcode 0x2036 status 0x01
[00:00:00.115,905] <err> bt_mesh_pb_gatt: Failed enabling advertiser
The HCI command 0x2036 (LE Set Extended Advertising Enable) is failing with status 0x01 (Unknown HCI Command), I believe this means the network core BLE controller
doesn't support extended advertising even though the application is configured to use it.
The issue:
The nRF5340 has a dual-core architecture (application core + network core). The application core was configured to use extended advertising, but the network
core's BLE controller wasn't configured to support it. On the nRF52840 (single-core), this isn't an issue, but on the nRF5340 you need to explicitly configure
both cores.
The solution:
I needed to create a network core configuration file to enable extended advertising support. Here's what worked:
1. Create the file structure:
target/
├── sysbuild/
│ └── ipc_radio/
│ └── prj.conf (new file)
├── prj.conf
└── sysbuild.conf
2. Create sysbuild/ipc_radio/prj.conf:
#
# Network core (ipc_radio) configuration for nRF5340
# Enables extended advertising support for Bluetooth Mesh DFU
#
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_MBOX=y
CONFIG_IPC_SERVICE=y
CONFIG_BT=y
CONFIG_BT_HCI_RAW=y
CONFIG_BT_CTLR_ASSERT_HANDLER=y
CONFIG_BT_MAX_CONN=16
# Enable extended advertising support (required for Bluetooth Mesh)
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_ASSERT=y
CONFIG_DEBUG_INFO=y
CONFIG_IPC_RADIO_BT=y
CONFIG_IPC_RADIO_BT_HCI_IPC=y
3. Build with:
west build -b nrf5340dk/nrf5340/cpuapp --pristine
west flash
The key is that CONFIG_BT_CTLR_ADV_EXT=y line in the network core configuration. This tells the BLE controller to support the extended advertising HCI commands
that Bluetooth Mesh uses.
My question:
Is there a reason the nRF5340 DK isn't officially supported in this sample? The documentation doesn't mention any specific incompatibilities, and it seems to
work fine with this network core configuration. Should this be included in the sample by default, or is there something I'm missing that makes the nRF5340
unsuitable for Bluetooth Mesh DFU?
For anyone else trying to run this sample on the nRF5340, hopefully this helps!
Environment:
- NCS version: 3.1.1
- Board: nRF5340 DK
- Sample: samples/bluetooth/mesh/dfu/target