This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Thread Border Router networking fail

Hello Nordic Taam:

I follow the WEB steps below

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_tz_v4.1.0%2Fthread_ot_performance_measurement.html

Software Development Kit > nRF5 SDK for Thread and Zigbee v4.1.0 > Thread > Thread tools > Thread Border Router

nRF52840 DK Version:nRF5_SDK_for_Thread_and_Zigbee_v4.1.0_32ce5f8\examples\thread\ncp\ftd\uart\hex

Raspberry Pi 3 Version:RaspPi_OT_Border_Router_Demo_v4.1.0-1.alpha

Use nRF52840 DK UART connect Raspberry Pi 3 to get the following information

wpan0 => [
"NCP:State" => "associating"
"Daemon:Enabled" => true
"NCP:Version" => "OPENTHREAD/20191113-00534-gc6a258e3; NRF52840; Apr 5 2020 21:51:18"
"Daemon:Version" => "0.08.00d (; Apr 21 2020 19:11:43)"
"Config:NCP:DriverName" => "spinel"
"NCP:HardwareAddress" => [F4CE363EC3C45B0E]
]


pi@raspberrypi:~ $ sudo wpanctl status
wpan0 => [
"NCP:State" => "uninitialized"
"Daemon:Enabled" => true
"NCP:Version" => ""
"Daemon:Version" => "0.08.00d (; Apr 21 2020 19:11:43)"
"Config:NCP:DriverName" => "spinel"
"NCP:HardwareAddress" => [F4CE363EC3C45B0E]
]

If I have the wrong steps or have not completed, please give me some pointers, thank you.

Also, can you teach me how to set up the Thread Border Router successfully on Raspberry Pi 3?

Best Regards

Rick.

Parents
  • Hi,

    The instructions on Thread Border Router is the latest and should be correct. It also looks like you are using the correct versions of the firmware and border router image. 

    I have tested this multiple times before, and have not had any issues with getting the network up and running.

    Are you using a revision 1 DK or later? Did you have the DK connected to the RPi before you booted it? Did you run 'erase all' command on the DK before flashing the NCP FW? You did not run any other commands on the border router prior to the "sudo wpanctl status" command?

    If nothing works, I would suggest that you start over and flash the DK and border router image again to the devices to see if that solves any issues.

    Best regards,
    Jørgen

  • Hi Jørgen:

    How are you today!

    Is there any update?

    Pls kindly help advise how to solve it?

    Best Regards,

    Rick.

  • Hi Jørgen

    Thanks for your quick response.

    About this answer, I still don't know how to make it execute normally, please could you explain in detail?

    1. Border Router join FTD is Leader in nRF52840, but my FTD did not have 2000 prefix, how can I create 2000 prefix?
    The ifconfig shows that wlan0 only has a global IPv6 address with prefix of 64. To provide global address to end node (which will have /64 prefix according to Thread protocol specifications), a /62 prefix address or lower is required in the border router. This can be limited by your ISP, or more likely the network equipment. Many routers will only provide a /64 prefix address, even if the ISP allows you a larger address space. Some OpenWRT firmware can support the correct prefix.

    Best Regards,

    Rick.

  • Most likely you need another WiFi router to connect the RPi border router to, which supports larger than /64 prefix address space. I do not have any lists of devices that support this, but we have used OpenWRT firmware on a few different routers to support this.

    You also need to check in the router configuration that you receive a large enough address space from your ISP. Some ISPs will only provide /64 prefix addresses to end-users, but some provide larger like /48 prefixes. Since you get a /64 address on the RPi, I assume this is OK.

  • Hi Jørgen


    How are you today!

    Thanks for your explanation.

    If I share Wifi AP from my cell phone to connect the RPi border router to, not use Wi-Fi Router, Can I successful in the above three questions?

    because I Wired network not support IPv6, but My cellphone ISP can support IPv6, so my case method always from cellphone Wi-Fi AP.

    Best Regards,
    Rick.

  • My answers are valid for any WiFi equipment, regardless if you are using a normal WiFi router or a mobile phone. Most likely you will not get the correct IPv6 prefix from the phone. If you only get a /64 prefix address from the phone, the IPv6 network is not usable together with the Thread network anyways as the end nodes will not receive global IPv6 addresses.


  • Hi Jørgen:

    If I need to use openWRT in Raspberry pi 3, how can I set it? or it has support??

    because I OTBR has support IPv6 form my phone, but not have Open WRT can distribution IP to my FTD accessory.

    and I need to set the wpanctl gateway for RPi border router?

    Best Regards,

    Rick.

Reply Children
  • Hi Rick,

    If you only have IPv6 connectivity through your phone, it will not help to introduce an OpenWRT router in the network. You need to get IPv6 connection natively from the internet service provider in a router that can assign IPv6 addresses further with larger address space than /63 prefix. The phone is not able to do that, and adding a router between the phone and the border router will not help with that.

    If you cannot get this kind of IPv6 setup, you can still use the border router with IPv4 network devices, for instance, the Google Cloud example uses IPv4 and NAT64 to send data from the nodes to the cloud.

    Best regards,
    Jørgen

  • Hi Jørgen

    I want to get the IP address for Openthread device from the border router or mobile phone, how can get it?
    because I have a case, need to use a mobile phone control Openthread device.
    or you have good kindly advised?

    I use version is:
    nRF52840 DK Version:nRF5_SDK_for_Thread_and_Zigbee_v4.1.0_32ce5f8\examples\thread\ncp\ftd\uart\hex

    Raspberry Pi 3 Version:RaspPi_OT_Border_Router_Demo_v4.1.0-1.alpha

    1. Pls kindly advise how to get IP Address of all Thread devices?

    2. Pls kindly advise how to get locate the IP Address of other Mesh Local devices from Border Router or End Device?

    3. Pls kindly advise how can get IP address of other Router and End device from Border Router?

    4.Pls kindly advise how to get the IP Address, assigned by the Border Router, to the Devices?

    5. Pls kindly advise how can see any Thread log from Border Router? (ex. IP assigned, join flow, -MLE----- information et. )

    Best Regards,

    Rick.

  • Hi,

    1.-4. See this page for detail pg IPv6 addressing used by OpenThread. You can get Mesh- and Link-Local address of nodes by doing a multicast ping to the ff02::1/ff03::1 addresses from the Border Router:

    Link-Local:

    pi@raspberrypi:~ $ ping -6 -I wpan0 ff02::1
    PING ff02::1(ff02::1) from fe80::900e:ea92:8be6:51f8%wpan0 wpan0: 56 data bytes
    64 bytes from fe80::900e:ea92:8be6:51f8%wpan0: icmp_seq=1 ttl=64 time=0.193 ms
    64 bytes from fe80::1028:aa0a:fd4c:649%wpan0: icmp_seq=1 ttl=64 time=36.5 ms (DUP!)
    64 bytes from fe80::a813:d16e:3821:861e%wpan0: icmp_seq=1 ttl=64 time=48.4 ms (DUP!)
    ^C
    --- ff02::1 ping statistics ---
    1 packets transmitted, 1 received, +2 duplicates, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.193/28.411/48.481/20.538 ms
    

    Mesh-Local:

    pi@raspberrypi:~ $ ping -6 -I wpan0 ff03::1
    PING ff03::1(ff03::1) from fd11:22::ec33:5809:17a8:aa3a wpan0: 56 data bytes
    64 bytes from fd11:22::ec33:5809:17a8:aa3a: icmp_seq=1 ttl=64 time=0.199 ms
    64 bytes from fd11:22::52db:33fd:683f:65dc: icmp_seq=1 ttl=64 time=37.8 ms (DUP!)
    64 bytes from fd11:22::b3eb:df1f:8f1c:aeaf: icmp_seq=1 ttl=64 time=49.7 ms (DUP!)
    ^C
    --- ff03::1 ping statistics ---
    1 packets transmitted, 1 received, +2 duplicates, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.199/29.271/49.773/21.126 ms
    

    You can also get the RLOC16 address of all routers in the network from the RouterTable property:

    pi@raspberrypi:~ $ sudo wpanctl getprop "Thread:RouterTable"
    Thread:RouterTable = [
            "920EEA928BE651F8, RLOC16:0000, RouterId:0, NextHop:63, PathCost:0, LQIn:0, LQOut:0, Age:0, LinkEst:no"
            "1228AA0AFD4C0649, RLOC16:4400, RouterId:17, NextHop:41, PathCost:1, LQIn:3, LQOut:3, Age:8, LinkEst:yes"
            "AA13D16E3821861E, RLOC16:a400, RouterId:41, NextHop:17, PathCost:1, LQIn:3, LQOut:3, Age:31, LinkEst:yes"
    ]

    The nodes can be addressed using the MeshLocal prefix + 0000:00ff:fe00:RLOC16, for instance fdde:ad00:beef::ff:fe00:4400.

    5. You can view logs in Syslog, see the instructions on this page. The grep string may not work with our SDK example, but removing it should give you all Syslog output.

    Best regards,
    Jørgen

  • Hi Jørgen

    How are you today!

    Thanks for your explanation.

    But I have a case that needs to use the mobile phone or PC control the Thread Device. Pls kindly advise how can get the IP address of Thread Device from a mobile phone or PC?

    Or you have any advice can be using a mobile phone or PC control Thread Device?

    Best Regards,
    Rick.


  • Hi Jørgen:

    How are you today!

    Are you have any advice?

    Pls kindly help advise how to solve it?

    Best Regards,

    Rick.

Related