OTBR failed to start wpan0 interface

857 views
Skip to first unread message

Wayne Peacock

unread,
Mar 23, 2021, 1:17:21 AM3/23/21
to openthread-users

Hi All,

I have been using OTBR on a Raspberry PI with a Nordic NRF82840-Dongle for a few months now. The first build was easy with the BR running in a few hours. However I want to rebuild it and have run into lots of issues since the Thread 1.2.0 commits. 

 1. Fresh Raspbian Buster image following the instructions here: https://openthread.io/guides/border-router/build#ethernet I'm building it as ethernet only. The network is IPv4. Commit c59552ac61990d547bce61867e3fd60aa8c33621

2. Worked out I have to recompile the RCP to solve compatibly issues with Thread 1.2.0 'make -f examples/Makefile-nrf52840 USB=1 BOOTLOADER=USB THREAD_VERSION=1.2'

I never see a wpan0 interface appear now.

journalctl -u otbr-agent.service reports:

Mar 23 14:12:39 raspberrypi systemd[1]: Started Border Router Agent.

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Running 0.3.0-c59552ac

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Thread version: 1.2.0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Thread interface: wpan0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Backbone interface: eth0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-PLAT----: RCP reset: RESET_POWER_ON

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [NOTE]-PLAT----: RCP API Version: 3

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-PLAT----: Backbone interface is configured to eth0 (2)

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [WARN]-PLAT----: cannot find IPv6 link-local address for interface eth0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-CORE----: Non-volatile: Read OMR prefix fde2:96b1:f31e:6389::/64

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-CORE----: Non-volatile: Read on-link prefix fd9e:2482:6123:0::/64

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=(null)

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Set state callback: OK

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BBR-----: Add Domain Prefix: ::/0, NotFound

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BBR-----: Add BBR Service: seqno (140), delay (1200s), timeout (3600s), InvalidState

Mar 23 14:12:40 raspberrypi otbr-agent[391]: stop Thread Border Agent

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [adproxy] Stopped

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Initialize OpenThread Border Router Agent: OK

Mar 23 14:12:40 raspberrypi otbr-agent[391]: Border router agent started.

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-CORE----: Notifier: StateChanged (0x02038200) [NetData PanId NetName ExtPanId BbrState]

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BBR-----: Backbone TMF subscribes ff32:40:fdde:ad00:beef:0:0:3: OK

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BBR-----: Start Backbone TMF agent: OK

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BR------: start evaluating routing policy, scheduled in 679 milliseconds

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-PLAT----: MulticastRoutingManager: Disable: OK

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-PLAT----: Host netif is down

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [WARN]-PLAT----: cannot find IPv6 link-local address for interface eth0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=(null)

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [WARN]-PLAT----: cannot find IPv6 link-local address for interface eth0

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=(null)

Mar 23 14:12:41 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

Mar 23 14:12:41 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

Mar 23 14:12:42 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

Mar 23 14:12:42 raspberrypi otbr-agent[391]: [INFO]-PLAT----: processNetifAddrEvent: OK

Mar 23 14:12:42 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

There are no errors, but I don't understand the 'cannot find IPv6 link-local address for interface eth0. eth0 does have a link-local address fe80::ba27:ebff:fefb:56c3 


ifconfig reports: 

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.1.94 netmask 255.255.255.0 broadcast 192.168.1.255

inet6 fe80::ba27:ebff:fefb:56c3 prefixlen 64 scopeid 0x20<link>

ether b8:27:eb:fb:56:c3 txqueuelen 1000 (Ethernet)

RX packets 154 bytes 14808 (14.4 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 79 bytes 12185 (11.8 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0



lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1000 (Local Loopback)

RX packets 94 bytes 7076 (6.9 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 94 bytes 7076 (6.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

ether b8:27:eb:ae:03:96 txqueuelen 1000 (Ethernet)


I'm not sure why wpan0 does not come up. 

Thanks

Wayne

Jonathan Hui

unread,
Mar 23, 2021, 1:22:12 AM3/23/21
to Wayne Peacock, openthread-users
If your eth0 interface is IPv4-only, you should disable the BORDER_ROUTING feature by setting it to zero. The wpan0 interface is not coming up because otbr-agent is not able to apply IPv6 configurations to the eth0 interface.

For the RCP build, we recently changed the default Thread Version to 1.2 with openthread/openthread#6281, so you should not need to explicitly set the THREAD_VERSION=1.2 build option.

Hope that helps.

--
Jonathan Hui


--
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/f0c0b075-ca87-4979-8437-5114ac052686n%40googlegroups.com.

Kangping Dong

unread,
Mar 23, 2021, 1:46:52 AM3/23/21
to Wayne Peacock, openthread-users
Maybe try to reboot after installing ./script/setup ?



Wayne Peacock <wa...@buddy.com>于2021年3月23日 周二13:17写道:
--

Wayne Peacock

unread,
Mar 23, 2021, 6:39:53 AM3/23/21
to openthread-users
Thanks Guys.

I should state the Rpi has been rebooted a few times with no luck.  I did wonder about not having a IPv6 address after posting this, so I enabled IPv6 on my network and rebooted. I get a global IPv6 address and can ping devices via IPv6, but still no wpan0 interface even after rebooting. Funny thing is I still get the warning "cannot find IPv6 link-local address for interface eth0".

I will have another go rebuilding the whole thing again tomorrow.


Kangping Dong

unread,
Mar 23, 2021, 8:06:39 AM3/23/21
to Wayne Peacock, openthread-users
The Border Router monitors the eth0 address changes, "cannot find IPv6 link-local address for interface eth0
could happen when eth0 is set up after otbr-agent is started.

Your previous log

Mar 23 14:12:40 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=(null)

Mar 23 14:12:41 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

Mar 23 14:12:41 raspberrypi otbr-agent[391]: [INFO]-BR------: infra interface state changed: NOT RUNNING, link-local-addr=fe80:0:0:0:ba27:ebff:fefb:56c3

Shows that the eth0 is not running after the link-local address is added.

When the eth0 is not running or it has no link-local IPv6 addresses, the Border Routing function will be stopped. But that should not affect the wpan0 interface.

I didn't see logs about forming the network (e.g. attaching and role changes), did you check the border router state with command "ot-ctl state"?
Can you do following to help me verify the case:
1. Run "sudo ot-ctl state";
2. If it prints "Disabled",  run "sudo ot-ctl dataset init new", "sudo ot-ctl dataset commit active", sudo "ot-ctl dataset ifconfig up" and "sudo ot-ctl thread start"
3. Run "sudo ot-ctl netdata show"

Can you share the outputs of above commands? thanks!

BRs,
Kangping


Wayne Peacock

unread,
Mar 23, 2021, 7:32:54 PM3/23/21
to openthread-users
Hi Guys,

I have since followed Jonathan's advice and just rerun the script with BORDER_ROUTING=0  and now wpan0 is active. I assumed I needed BORDER_ROUTING=1 even for IPv4 using NAT64. It's now making more sense that this is only for native IPv6 routing and NAT64 will still work. I'm on a office network today that is only IPv4 so can't play with BORDER_ROUTING=1.

What is not 100% clear to me:

1. As I ran "INFRA_IF_NAME=eth0 ./script/setup" without being on a IPv6 network. Do I then need to rerun the script when on a IPv6 network? Was this my issue, I just expected to enable IPv6 on the network, reboot the Rpi and it would work?

2. Can I just keep running the ./script/setup with different switches without causing issues? i.e.   INFRA_IF_NAME=eth0 ./script/setup  then BORDER_ROUTING=0 ./script/setup. I assume the script will clean up any services previously configured but not needed now?

Kangping:

When I was in the failed state yesterday, I did try 'sudo ot-ctl state" would always return Disabled. It did also try 'sudo ot-ctl ifconfig up' without setting up a new dataset and then state would still return Disabled. I now wonder if I could have done what you said and it could have worked. I might have just missed out "Thread Start". 

Thanks for your Support.

Regards
Wayne

Kangping Dong

unread,
Mar 30, 2021, 1:38:40 AM3/30/21
to openthread-users
I think BORDER_ROUTING=1 should not affect the wpan0 interface in all cases. If you cannot work with BORDER_ROUTING=1, then there should be some bugs :(

> As I ran "INFRA_IF_NAME=eth0 ./script/setup" without being on a IPv6 network. Do I then need to rerun the script when on a IPv6 network? Was this my issue, I just expected to enable IPv6 on the network, reboot the Rpi and it would work?

May I ask how do you enable IPv6? You don't need to reinstall OTBR if you didn't purge dhcpcd and reinstall it.

> Can I just keep running the ./script/setup with different switches without causing issues? i.e.   INFRA_IF_NAME=eth0 ./script/setup  then BORDER_ROUTING=0 ./script/setup. I assume the script will clean up any services previously configured but not needed now?

You can do that with those two switches (INFRA_IF_NAME and BORDER_ROUTING) but don't play with NETWORK_MANAGER (you will need to re-flash the Raspberry Pi to fully disable NETWORK_MANAGER if it is once enabled).

> When I was in the failed state yesterday, I did try 'sudo ot-ctl state" would always return Disabled. It did also try 'sudo ot-ctl ifconfig up' without setting up a new dataset and then state would still return Disabled. I now wonder if I could have done what you said and it could have worked. I might have just missed out "Thread Start". 

Yes, you need to run "thread start".

Did you get to chance to the command to get outputs? It will be precious for us to catch the bug.

If you can do this, please also append the output of "ip a" after executing "thread start". Thanks!


BRs,
kangping
Reply all
Reply to author
Forward
0 new messages