nRF7002 randomly unable to connect to Wifi

I have an application that syncs via the internet using a nRF5340 and nRF7002.  I am using the thingy53 with a nRF7002EB for now while the custom circuit boards are being manufactured.  The application connects via wifi every 4 minutes to transmit data.  It then disconnects from the Wifi network to save power between sync intervals.  The application is currently using nRF Connect v3.0.1 and is based on the Azure IoT sample.

The application is in early field testing with around 20 users.  It works well most of the time, but randomly, after 1-2 weeks the system will stop being able to connect to the Wifi network.  A Wifi scan is initiated, but a connection event is never received.  I have also discovered that the system will start working again if I issue the new diagnostic command nrf70 util rpu_recovery_test via a shell connection.

My suspicion is that this is a bug in the nRF7002 where it can somehow get into a semi-unresponsive state.  The only way to recover is to externally reset the nRF7002.  It is difficult to know for sure because this issue takes a week or two to reproduce.  I do have CONFIG_NRF_WIFI_RPU_RECOVERY set, but this doesn't seem to be working.  I am considering updating the application firmware to add a custom nRF7002 watchdog timer that can reset it if it hangs.  However, I wanted to check with the Nordic team to make sure there aren't any known issues or other suggested troubleshooting steps.

Parents
  • Hi,

    Too bad we likely won't be able to get logs. But the issue looks a bit similar to this one. Could you have  a look at my suggestions for that customer?

    Regards,

    Elfving

  • I have the wifi ready feature implemented, along with the RPU recovery feature.  See wifi.c above.  It seems that the error wasn't detected by the wifi ready and RPU recovery logic.  However, manually issuing the test command to test the RPU recovery via the shell resolved the issue.

    This application does have logging enabled (backed to flash file system).  I also have the shell enabled for extracting the logs.  So, I could add additional logging if you think it is useful.  It might take a week or two for the issue to occur again.  The last time I captured the error, I didn't see any error messages logged.  I could see that a wifi connect request was being issued every 4 minutes (wifi ready), but there was no connection event received.  I also checked the stacks and heap (both looked fine).

    If I add application layer logic to reset the RPU, what is the best API call to use to trigger the reset (similar to what the rpu_recovery_test did)?

Reply
  • I have the wifi ready feature implemented, along with the RPU recovery feature.  See wifi.c above.  It seems that the error wasn't detected by the wifi ready and RPU recovery logic.  However, manually issuing the test command to test the RPU recovery via the shell resolved the issue.

    This application does have logging enabled (backed to flash file system).  I also have the shell enabled for extracting the logs.  So, I could add additional logging if you think it is useful.  It might take a week or two for the issue to occur again.  The last time I captured the error, I didn't see any error messages logged.  I could see that a wifi connect request was being issued every 4 minutes (wifi ready), but there was no connection event received.  I also checked the stacks and heap (both looked fine).

    If I add application layer logic to reset the RPU, what is the best API call to use to trigger the reset (similar to what the rpu_recovery_test did)?

Children
No Data
Related