# 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 # Give the spinel link a deeper receive queue. # # The default 2048 bytes is sized for a link with RTS/CTS, where the host stops # sending once the buffer fills. This one has no flow control, so anything that # does not fit is simply lost. 8192 covers a burst of full-size frames arriving # while the OpenThread thread is busy. CONFIG_OPENTHREAD_COPROCESSOR_UART_RING_BUFFER_SIZE=8192