About OpenThread tutorial

Hi, I'm trying to run a tutorial that does OpenThread process with nRF52840-DK.

The URL for reference is below.

https://openthread.io/codelabs/openthread-hardware?hl=ja#0

I'm doing it in order from the first step, but I get an error at the "Start OpenThread Daemon" step and can't proceed.

In addition, I confirmed that the nRF52840-DK was detected as ttyACM0 just before.

--- log start --------------------

sudo ./build/posix/src/posix/ot-daemon -v 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
./build/posix/src/posix/ot-daemon[3558]: Running OPENTHREAD/thread-reference-20230119-423-gfd1a247ae; POSIX; Jun 6 2023 02:22:15
./build/posix/src/posix/ot-daemon[3558]: Thread version: 4
./build/posix/src/posix/ot-daemon[3558]: 49d.17:15:15.166 [C] Platform------: Too many rcp failures, exiting
./build/posix/src/posix/ot-daemon[3558]: 49d.17:15:15.166 [C] Platform------: RecoverFromRcpFailure() at radio_spinel_impl.hpp:2333: Failure

--- log end ---------------------

The execution environment is below.

OS Name: Ubuntu 22.04.2 LTS

OS Type: 64-bit

SEGGER J-Link: V7.88e 64-bit DEB Installer

nRF5x Command Line Tool: V10.21.0 Linux x86 64

ARM GNU toolchain: gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2

Are there any possible solutions for this situation?

Parents Reply Children
  • Hi,

    We have tested NRF Connect SDK (NCS) co-processor sample from NCS v2.4.0.

    The tutorial for building RCP that you referred to is quite old. It is recommended to use NCS-based co-processor solution for building RCP firmware. You can read about NCS in the documentation. There you can also find guides how to install NCS automatically or manually. Documentation also provides resources about openthread co-processor communication. Additionally, it provides several thread samples where you can read specifically about thread co-processor sample

    Best regards,
    Dejan

  • Hi Dejan,

    Thank you for your advice.

    I installed NCS v2.4.0 and programmed the cli sample onto the board.
    As a result, by sending the "ot state" command to the board via serial communication, I was able to confirm that there was a reply from the board.

    I haven't been able to confirm Thread operation with cli yet, but I'm relieved to be able to confirm that the written sample seems to be working properly.

    Best regards,

    Yuma

  • Hi Dejan,

    I tried commissioning as described in the URL below.

    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/protocols/thread/overview/commissioning.html

    However, when I run the "ot joiner start N0RD1C" command on the joiner device, it fails with the following message:
    Join failed [Not Found]

    What could be the reason for the failure?

    My environment is below.
     -  nRF connect SDK 2.4.99
     - nRF52840DK (one each for V0.9.2 and V3.0.1)
     - Thread cli samples are already written on each board

    Best regards,

    Yuma

  • Hi,

    This might be due to the previous "ot commissioner joiner add" command. As stated in setting up commissioner, there are some encoding limitations

    Best regards,
    Dejan

  • He Dejan,

    I understand those litimations to be "The Joining Device Credential is composed of at least 6 and no more than 32 uppercase alphanumeric ASCII characters (base32-thread, 0 to 9 and A to Y, with the exclusion of I, O, Q, and Z)."
    According to that limitation, I use the string "NORDIC" with "O" replaced by 0 and "I" replaced by 1 as PSKd.

    In my environment, I use two different versions of nRF52840DK. (V0.9.2 and V3.0.1)

    Below is the log for setting up V0.9.2 as Commissioner and V3.0.1 as Joiner.
    In this case, a "Join failed [NotFound]" error was displayed on the Joiner side.

    Commissioner (v0.9.2)

    *** Booting Zephyr OS build v3.3.99-ncs1 ***
    
    
    uart:~$ ot thread stop
    Done
    uart:~$ ot dataset init new
    Done
    uart:~$ ot dataset commit active
    Done
    uart:~$ ot ifconfig up
    Done
    uart:~$ ot thread start
    Done
    uart:~$ ot dataset
    Active Timestamp: 1
    Channel: 19
    Channel Mask: 0x07fff800
    Ext PAN ID: eee8b1d35d500727
    Mesh Local Prefix: fdc9:969:c6f8:ec5f::/64
    Network Key: 18df0d4fd3aed28babc035336ac50817
    Network Name: OpenThread-7895
    PAN ID: 0x7895
    PSKc: 0e14f6c19136fc34eb064edc20c483a6
    Security Policy: 672 onrc
    Done
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Commissioner: petitioning
    Done
    Commissioner: active
    uart:~$ ot commissioner joiner add f4ce365f6f56d7d9 N0RD1C
    Done
    uart:~$

    Joiner (v3.0.1)

    *** Booting Zephyr OS build v3.3.99-ncs1 ***
    
    
    uart:~$ ot eui64
    f4ce36281bbf9601
    Done
    uart:~$ ot ifconfig up
    Done
    uart:~$ ot joiner start N0RD1C
    Done
    uart:~$

    On the other hand, the log of setting up V3.0.1 as Commissioner and V0.9.2 as Joiner is below.
    In this case, "Join failed [NotFound]" error is not displayed on Joiner side and "Commissioner: Joiner remove d3f93fad8484f27a" message was displayed on Commissioner side.

    Commissioner (v3.0.1)

    *** Booting Zephyr OS build v3.3.99-ncs1 ***
    
    
    uart:~$ ot thread stop
    Done
    uart:~$ ot dataset init new
    Done
    uart:~$ ot dataset commit active
    Done
    uart:~$ ot ifconfig up
    Done
    uart:~$ ot thread start
    Done
    uart:~$ ot dataset
    Active Timestamp: 1
    Channel: 22
    Channel Mask: 0x07fff800
    Ext PAN ID: dfe7d89a0296e843
    Mesh Local Prefix: fd67:bd59:ee13:8e7c::/64
    Network Key: 689c180dbaa8a07a286745ffb5d95557
    Network Name: OpenThread-c075
    PAN ID: 0xc075
    PSKc: 34ece973b65458eff346d4a0a7f4ef6c
    Security Policy: 672 onrc
    Done
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Error 13: InvalidState
    uart:~$ ot commissioner start
    Commissioner: petitioning
    Done
    Commissioner: active
    uart:~$ ot commissioner joiner add f4ce36281bbf9601 N0RD1C
    Done
    Commissioner: Joiner remove d3f93fad8484f27a
    uart:~$

    Joiner (v0.9.2)

    *** Booting Zephyr OS build v3.3.99-ncs1 ***
    
    
    uart:~$ ot eui64
    f4ce36281bbf9601
    Done
    uart:~$ ot ifconfig up
    Done
    uart:~$ ot joiner start N0RD1C
    Done
    uart:~$

    If there is no problem with the command execution procedure or command contents, I suspect that the board version is the cause from the difference in execution results.
    Please tell us your opinion.

    Best regards,

    Yuma Shimazu

Related