Issue with OTBR Setup and sudo ot-ctl Command

Hello,

I am encountering an issue while setting up an OpenThread Border Router (OTBR) using the following hardware:

    nRF52833 board (flashed with RCP firmware)
    nRF52840 board (flashed with CLI firmware)
    Raspberry Pi 3B+

I have followed the official guide OpenThread Border Router Build Native (https://openthread.io/guides/border-router/build-native?hl=fr)  and also referred to OpenThread Hardware Codelab (https://openthread.io/codelabs/openthread-hardware#1) for additional insights.

Steps Taken:

    Flashed the nRF52833 board with RCP firmware and connected it to the Raspberry Pi.
    Flashed the nRF52840 board with CLI firmware and connected it to my PC running Windows with VS Code and the nRF Connect extension.
    Configured the Raspberry Pi (which was reset to a fresh state each time I attempted the setup).

Issue:
The command sudo ot-ctl, which is supposed to allow access to the CLI of the RCP and OTBR, is not functioning correctly. Either the session opens and closes unexpectedly, or I receive a "connection refused" error. For the moments where the sessions allow me to write some instructions, it feels like, despite the 'done' message, these instructions never succeed; my OTBR is not working.

Logs:

● otbr-agent.service - OpenThread Border Router Agent
     Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-07-21 15:47:32 BST; 12s ago
    Process: 8878 ExecStartPre=/usr/sbin/service mdns start (code=exited, status=0/SUCCESS)
   Main PID: 8884 (otbr-agent)
      Tasks: 10 (limit: 1568)
        CPU: 151ms
     CGroup: /system.slice/otbr-agent.service
             └─8884 /usr/sbin/otbr-agent "spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=1000000" trel://wlan0

Jul 21 15:47:33 raspberrypi otbr-agent[8884]: [INFO]-BA------: Result of publish meshcop service OpenThread BorderRouter #763C._meshcop._udp.local: OK
Jul 21 15:47:37 raspberrypi otbr-agent[8884]: 00:00:05.377 [I] Mle-----------: Send Link Request (ff02:0:0:0:0:0:0:2)
Jul 21 15:47:38 raspberrypi otbr-agent[8884]: 00:00:05.383 [I] MeshForwarder-: Sent IPv6 UDP msg, len:82, chksum:dc7d, ecn:no, to:0xffff, sec:no, prio:net
Jul 21 15:47:38 raspberrypi otbr-agent[8884]: 00:00:05.384 [I] MeshForwarder-:     src:[fe80:0:0:0:e042:17bf:c86:1a5d]:19788
Jul 21 15:47:38 raspberrypi otbr-agent[8884]: 00:00:05.384 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:2]:19788
Jul 21 15:47:42 raspberrypi otbr-agent[8884]: 00:00:09.770 [I] P-Daemon------: Session socket is ready
Jul 21 15:47:43 raspberrypi otbr-agent[8884]: 00:00:10.605 [I] Mle-----------: Send Link Request (ff02:0:0:0:0:0:0:2)
Jul 21 15:47:43 raspberrypi otbr-agent[8884]: 00:00:10.613 [I] MeshForwarder-: Sent IPv6 UDP msg, len:82, chksum:a702, ecn:no, to:0xffff, sec:no, prio:net
Jul 21 15:47:43 raspberrypi otbr-agent[8884]: 00:00:10.613 [I] MeshForwarder-:     src:[fe80:0:0:0:e042:17bf:c86:1a5d]:19788
Jul 21 15:47:43 raspberrypi otbr-agent[8884]: 00:00:10.613 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:2]:19788


~

lines 1-20/20 (END)
gg@raspberrypi:~ $ sudo journalctl -u otbr-agent
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.084 [I] Settings------: Read NetworkInfo {rloc:0x6000, extaddr:e24217bf0c861a5d, role:leader, mode:0x0f, version:5, keyseq:0x0, ...
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.084 [I] Settings------: ... pid:0x460b96ea, mlecntr:0x10d08, maccntr:0x109a0, mliid:bc0522ff9d0869ef}
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [I] Settings------: Saved NetworkInfo {rloc:0x6000, extaddr:e24217bf0c861a5d, role:leader, mode:0x0f, version:5, keyseq:0x0, ...
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [I] Settings------: ... pid:0x460b96ea, mlecntr:0x110f1, maccntr:0x10d88, mliid:bc0522ff9d0869ef}
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [I] Mle-----------: Send Link Request (ff02:0:0:0:0:0:0:2)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [I] Notifier------: StateChanged (0x1100102d) [Ip6+ Role LLAddr Rloc+ Ip6Mult+ NetifState ActDset]
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [I] AnnounceSender: Stopped
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.094 [N] P-Netif-------: Changing interface state to up.
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.095 [I] P-Netif-------: Sent request#6 to delete route 192.168.255.0/24
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.096 [I] P-Netif-------: Deleting route for NAT64
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: [INFO]-BA------: Publish meshcop service OpenThread BorderRouter #763C._meshcop._udp.local.
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: [INFO]-MDNS----: Removing existing service OpenThread BorderRouter #763C._meshcop._udp: outdated
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: [INFO]-MDNS----: Removing service OpenThread BorderRouter #763C._meshcop._udp
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: [INFO]-BA------: Cancelled previous publishing meshcop service OpenThread BorderRouter #763C._meshcop._udp.local
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: [INFO]-MDNS----: Registering service OpenThread BorderRouter #763C._meshcop._udp
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.100 [I] P-Netif-------: Succeeded to process request#1
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.100 [W] P-Netif-------: Failed to process request#2: No such process
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: Succeeded to process request#3
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: ADD [U] fe80::e042:17bf:c86:1a5d
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: Succeeded to process request#4
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: ADD [U] fdd6:1ce:c5de:6107:bc05:22ff:9d08:69ef
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: Succeeded to process request#5
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: ADD [U] fdd6:1ce:c5de:6107:0:ff:fe00:6000
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [I] P-Netif-------: Host netif is up
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.101 [W] P-Netif-------: Failed to process request#6: No such process
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.107 [I] MeshForwarder-: Sent IPv6 UDP msg, len:82, chksum:f05d, ecn:no, to:0xffff, sec:no, prio:net
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.107 [I] MeshForwarder-:     src:[fe80:0:0:0:e042:17bf:c86:1a5d]:19788
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.107 [I] MeshForwarder-:     dst:[ff02:0:0:0:0:0:0:2]:19788
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.124 [I] P-Netif-------: Message dropped by Thread
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff33:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff32:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff03::fc (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff03::1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff02::16
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] P-Netif-------: ADD [M] ff02::2 (rejected)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.125 [I] Notifier------: StateChanged (0x00001000) [Ip6Mult+]
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff33:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff32:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff03::fc (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff03::1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff02::16 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.126 [I] P-Netif-------: ADD [M] ff02::2 (rejected)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.313 [I] P-Netif-------: Message dropped by Thread
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.314 [I] P-Netif-------: ADD [M] ff33:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.314 [I] P-Netif-------: ADD [M] ff32:40:fdd6:1ce:c5de:6107:0:1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.314 [I] P-Netif-------: ADD [M] ff03::fc (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.314 [I] P-Netif-------: ADD [M] ff03::1 (already subscribed, ignored)
Jul 21 15:31:52 raspberrypi otbr-agent[6939]: 00:00:00.314 [I] P-Netif-------: ADD [M] ff02::16 (already subscribed, ignored)
lines 1-48



Additional Log:

gg@raspberrypi:~/src/openthread $ sudo ./build/posix/src/posix/ot-daemon -v 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800'
./build/posix/src/posix/ot-daemon[603]: Running OPENTHREAD/thread-reference-2023 0706-1496-g3019d3c6c; POSIX; Jul 21 2025 08:24:37
./build/posix/src/posix/ot-daemon[603]: Thread version: 5
./build/posix/src/posix/ot-daemon[603]: 49d.17:05:56.088 [C] Platform------: Init() at spinel_driver.cpp:87: Failure


 and 
 
gg@raspberrypi:~/ot-br-posix $ sudo service otbr-agent status
● otbr-agent.service - OpenThread Border Router Agent
     Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-07-21 10:06:29 BST; 2s ago
    Process: 9743 ExecStartPre=/usr/sbin/service mdns start (code=exited, status=0/SUCCESS)
   Main PID: 9749 (otbr-agent)
      Tasks: 1 (limit: 1579)
        CPU: 76ms
     CGroup: /system.slice/otbr-agent.service
             └─9749 /usr/sbin/otbr-agent -I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM0 trel://eth0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Backbone interface: eth0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Running 0.3.0-43082df
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Thread version: 1.4.0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Thread interface: wpan0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttyACM0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-AGENT---: Radio URL: trel://eth0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [NOTE]-ILS-----: Infra link selected: eth0
Jul 21 10:06:29 raspberrypi otbr-agent[9749]: [INFO]-RCP_HOS-: OpenThread log level changed to 4
Jul 21 10:06:31 raspberrypi otbr-agent[9749]: 49d.17:33:37.491 [W] P-SpinelDrive-: Wait for response timeout
Jul 21 10:06:31 raspberrypi otbr-agent[9749]: 49d.17:33:37.492 [I] P-SpinelDrive-: co-processor self reset successfully


Apologies if this log is potentially out of context, but I have been unable to recreate the "spinel_driver.cpp:87" error and this is the only relevant log I have on hand regarding a recognizable error.

Additional Information:

    I have verified that the correct firmware versions are flashed on both the nRF52833 and nRF52840 boards and the correct port is selected (ls /dev/ttyACM*)


    The Raspberry Pi is configured according to the official guide.


    I previously succeeded in setting up this OTBR (with numerous issues along the way) using the same hardware. I saved the Raspberry Pi image on my computer and was able to reuse this image without any problems, which rules out any hardware issues for me. Now, I am trying to start over from scratch to facilitate the reproducibility of an OTBR on these boards for my company but find myself stuck.

Question:
Has anyone encountered a similar issue? Are there any additional steps or configurations that I might have missed?

Thank you for your assistance.

Best regards,

Related