[SOLVED] Power management fail after WiFi join

balix53
Posts: 27
Joined: Mon Jan 21, 2019 8:47 am

[SOLVED] Power management fail after WiFi join

Postby balix53 » Fri Mar 08, 2019 9:17 am

Hi,

I have an application that require the power management features. I was using esp-idf 3.1.1, seeing that in 3.1.3 release note there was a "Fixed crash during simultaneous use of Wi-Fi, Bluetooth and modem sleep" I decided to upgrade to this version. However I still have this issue, which will happen every time I successfully join a WiFi access point and seems to be related with the power management since disabling it in menuconfig will work fine. The following is the trace when the ESP32 crashes after having joined an access point:

Code: Select all

I (3511) wifi: mode : sta (30:ae:a4:c9:97:4c) + softAP (30:ae:a4:c9:97:4d)
I (6351) wifi: mode : softAP (30:ae:a4:c9:97:4d)
I (6431) wifi: flush txq
I (6441) wifi: stop sw txq
I (6441) wifi: lmac stop hw txq
I (6461) wifi: mode : sta (30:ae:a4:c9:97:4c)
I (6461) wifi: Set ps type: 2
I (8911) wifi: n:11 0, o:1 0, ap:255 255, sta:11 0, prof:1
I (10951) wifi: state: init -> auth (b0)
I (10961) wifi: state: auth -> assoc (0)
I (10971) wifi: state: assoc -> run (10)
I (11211) wifi: connected with WIFI_SSID, channel 11
I (11211) wifi: pm start, type: 2
E (11311) wifi: l:6968482, o:2320, n:2633426082, now:6974017
abort() was called at PC 0x40149f28 on core 0
0x40149f28: pm_on_beacon_rx at ??:?


Backtrace: 0x4009366f:0x3ffe1760 0x400937c7:0x3ffe1780 0x40149f28:0x3ffe17a0 0x4014a6d5:0x3ffe17e0 0x4014ada5:0x3ffe1800 0x4008a2c2:0x
3ffe1850
0x4009366f: invoke_abort at esp-idf/components/esp32/panic.c:676

0x400937c7: abort at esp-idf/components/esp32/panic.c:676

0x40149f28: pm_on_beacon_rx at ??:?

0x4014a6d5: ppRxProtoProc at ??:?

0x4014ada5: ppRxPkt at ??:?

0x4008a2c2: ppTask at ??:?


CPU halted.
Last edited by balix53 on Fri Mar 29, 2019 8:38 am, edited 1 time in total.

balix53
Posts: 27
Joined: Mon Jan 21, 2019 8:47 am

Re: Power management fail after WiFi join

Postby balix53 » Fri Mar 08, 2019 2:26 pm

I managed to narrow down this issue to the WiFi power save settings. First, I wasn't setting the listen_interval in my WiFi configuration (wifi_config_t) so I added it and set it to zero. It wasn't working either so I tried the other power save mode (WIFI_PS_MIN_MODEM instead of WIFI_PS_MAX_MODEM) and it finally worked.

So the question is: why can't I use the WIFI_PS_MAX_MODEM mode ?

balix53
Posts: 27
Joined: Mon Jan 21, 2019 8:47 am

Re: Power management fail after WiFi join

Postby balix53 » Thu Mar 21, 2019 4:55 pm

For a moment I was happy with the setting WIFI_PS_MIN_MODEM however the mode WIFI_PS_MAX_MODEM seems to be mandatory for my application. So I tried to change the setting just before joining an access point and the device managed to join it without crashing but it messes a bit with my application. I'm not quite sure about how this setting is managed in the Wi-Fi library do I really have to stop and start the Wi-Fi interface to apply it ? (It is how it is done in the examples of the esp-idf github).

balix53
Posts: 27
Joined: Mon Jan 21, 2019 8:47 am

Re: Power management fail after WiFi join

Postby balix53 » Fri Mar 29, 2019 8:38 am

It seems that one of the listen_interval field of a wifi_sta_config_t structure in my code was not initialized. This field is used when in WIFI_PS_MAX_MODEM mode.

Who is online

Users browsing this forum: No registered users and 47 guests