Compare commits
2 Commits
9369da37a7
...
a0f6e875be
| Author | SHA1 | Date | |
|---|---|---|---|
| a0f6e875be | |||
| 0ce983b5ed |
@@ -16,3 +16,37 @@ 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
|
||||
|
||||
@@ -14,7 +14,26 @@
|
||||
*
|
||||
* Unlike Nordic's nrf54l15dk overlay, hw-flow-control is NOT set: the XIAO's
|
||||
* pinctrl only defines TX and RX for uart20, and the CMSIS-DAP bridge does not
|
||||
* carry RTS/CTS. See docs/ for the baud rate this was validated at.
|
||||
* carry RTS/CTS.
|
||||
*
|
||||
* That missing back-pressure is why the spinel link runs at 460800 rather than
|
||||
* the 1000000 Nordic uses. Bandwidth was never the constraint -- 802.15.4 tops
|
||||
* out around 250 kbps -- but without RTS/CTS a single late RX interrupt loses a
|
||||
* byte outright, and a lost byte corrupts the HDLC frame around it. At 1 Mbaud
|
||||
* the driver has 10 us to service each byte; the radio ISR can hold it off
|
||||
* longer than that during a burst. 460800 widens the window to 21.7 us while
|
||||
* still leaving roughly 4x headroom over peak Thread throughput.
|
||||
*
|
||||
* The symptom this fixes: otbr-agent runs for hours, then a traffic burst
|
||||
* desynchronises the stream, the next transmit gets no response, and
|
||||
* HandleRcpTimeout aborts the agent with exit code 6.
|
||||
*
|
||||
* [W] P-RadioSpinel-: radio tx timeout
|
||||
* [C] P-RadioSpinel-: Failed to communicate with RCP - no response from RCP
|
||||
*
|
||||
* The host must agree on the rate. In the RadioURL on the border router host:
|
||||
*
|
||||
* spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800
|
||||
*/
|
||||
|
||||
/ {
|
||||
@@ -27,7 +46,7 @@
|
||||
|
||||
&uart20 {
|
||||
status = "okay";
|
||||
current-speed = <1000000>;
|
||||
current-speed = <460800>;
|
||||
};
|
||||
|
||||
&uart21 {
|
||||
|
||||
Reference in New Issue
Block a user