Closed DonaldFraser closed 8 months ago
@DonaldFraser Hi, this RIO prefix 2A00:23C5:53B8:E01::, lifetime 315360000
is sent by one of your device? Notice, this timelift is not a reasonable time, due to the unit of this variable is second defined by RFC 4861. And time 315360000
is almost 36000 years, seems not a reasonable lifetime.
Also I will discuss about this with LWIP team, if the user set the timeout time too long, should there be an assert or just print some error logs and set the default max timeout instead.
Hi, I don't have any experience of RIO, only what I have read at https://openthread.io/reference/group/api-border-routing. I think you are suggesting that the thread border router example on my ESP32-S2 device is receiving an RIO network message externally - so probably from my home wifi router in this case, as that's the SSID I used in menuconfig for this example. Maybe I can configure my router to send RIO messages with a much shorter timeout, although it's a basic home router I don't know if I can do this. Maybe I can configure my router with IPv4 instead of IPv6. I will try experimenting with router settings.
Donald
I was unable to find any router settings on my home wifi router that allowed the thread border router to work. However I did have an old 4G wifi router lying around. I have set that up now, used idf.py menuconfig to change the openthread thread border router example config to use the SSID and password for my 4G router wifi network. The thread border router example running on my esp32-s2 with esp32-h2 RCP, is working with that wifi network, which is great, I can start to experiment and add some more ESP-32H2 devkit Thread end devices now. However it would be good to be able to get this working with my real home wifi network in future. I guess this issue is still relevant in the real world where RIO messages coming from wifi routers that people may have in their homes could specify very long lifetimes. As zwx1995esp commented, maybe logging an error and using the default max timeout would be more robust for real world wifi networks. I am able to proceed experimenting, using my other wifi router now, but would be good to have a solution for the future.
@DonaldFraser We have enchaned the implementation to check the lifetime value from the received RIO. So the issue should not happen anymore with the latest SDK. You can try it with IDF v5.1.2 release.
Answers checklist.
IDF version.
v5.1
Operating System used.
Windows
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
CMD
Development Kit.
ESP32-S2-DevKitM-1 v1.0
Power Supply used.
USB
What is the expected behavior?
Building and running the Espressif Thread Border Router example https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_br, I expect the Thread Border Router to run on the ESP-32 S2 devkit as described in the example with no assert failure causing. I have built and run an RCP device on an Espressif ESP32-H2 devkit and this RCP is connected to the ESP32 S2 running this thread border router example by UART as per the example page.
What is the actual behavior?
ESP32-S2 idf.py monitor indicates an assertion failure, causing a reboot of the ESP32-S2 thread border router assert failed: sys_timeout /IDF/components/lwip/lwip/src/core/timeouts.c:308 (Timeout time too long, max is LWIP_UINT32_MAX/4 msecs) This pattern repeats on reboot, leading to continual reboots of the ESP32-S2 running the thread border router example Looks similar to https://github.com/espressif/esp-idf/issues/10029, but with openthread, not BLE
Steps to reproduce.
Debug Logs.
More Information.
No response