Files
otbr/boards/xiao_nrf54l15_nrf54l15_cpuapp.conf
Timo 0ce983b5ed Power the RF switch and transmit at full power
Two defects, both specific to running this sample on a XIAO rather than a DK,
and both only on the border router side -- which is why the link was so lopsided
and why a Matter device could attach but not sustain SRP updates.

The coprocessor sample sets CONFIG_GPIO=n, which is reasonable on a DK whose RCP
has no GPIO-controlled RF hardware. This board selects its antenna path with
one: P2.03 powers the RF switch and P2.05 picks ceramic or external, declared as
regulator-fixed nodes with regulator-boot-on. With GPIO off, REGULATOR_FIXED
cannot build (it depends on GPIO), so those nodes got no driver, neither pin was
ever driven, and the border router ran with an unpowered antenna switch. The
devicetree looks correct throughout, which is what made this hard to see.

Separately, Zephyr defaults OPENTHREAD_DEFAULT_TX_POWER to 0 dBm and the sample
never overrides it, while Nordic's Matter samples use 8 -- so the border router
was transmitting 8 dB weaker than the devices talking to it. That asymmetry hits
beacon responses during a joiner's active scan, which is exactly what kept
failing.

Measured: -93 dBm at close range before, -71 dBm after, against a -101 dBm
sensitivity floor.
2026-08-21 22:12:23 +02:00

45 lines
1.8 KiB
Plaintext

# OpenThread RCP on the Seeed XIAO nRF54L15.
# The XIAO has no external SPI flash populated.
CONFIG_SPI_NOR=n
# Nordic uses this on the nRF54L15 DK to keep the main stack clear of CRACEN
# (the hardware crypto engine) stack usage.
CONFIG_MAIN_STACK_SIZE=2048
# Nothing may write to uart20 except spinel. The boot banner and the UART log
# backend would both land mid-stream and desynchronise otbr-agent's HDLC
# decoder. Logs ride in-band over spinel instead, where otbr-agent decodes them.
CONFIG_BOOT_BANNER=n
CONFIG_LOG=y
CONFIG_LOG_MAX_LEVEL=1
CONFIG_LOG_BACKEND_UART=n
CONFIG_LOG_BACKEND_SPINEL=y
CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=2048
# Transmit at the nRF54L15's full +8 dBm.
#
# Zephyr's default is 0 dBm and the coprocessor sample never overrides it, while
# Nordic's Matter samples set 8 -- so an RCP built from this repo was running 8 dB
# weaker than the Matter devices talking to it. That asymmetry hurts the
# border-router-to-device direction specifically, which is the one that matters
# for beacon responses during a joiner's active scan.
CONFIG_OPENTHREAD_DEFAULT_TX_POWER=8
# The XIAO needs GPIO, unlike the DKs this sample targets.
#
# The upstream coprocessor prj.conf sets CONFIG_GPIO=n ("Disable GPIO"), which
# is fine on a DK whose RCP has no GPIO-controlled RF hardware. This board
# selects its antenna path with one: P2.03 powers the RF switch and P2.05
# selects ceramic vs external, both declared as regulator-fixed nodes with
# regulator-boot-on in the board DTS.
#
# With GPIO off, REGULATOR_FIXED cannot build (it depends on GPIO), so those
# nodes get no driver and neither pin is ever driven -- the RF switch stays
# unpowered and the border router runs with a crippled antenna path. Measured
# -93 dBm at close range before this was found, against a -101 dBm sensitivity
# floor.
CONFIG_GPIO=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED=y