I'm having troubles with ESP32 wireless signal strength. At this point, I believe the issue is something I'm doing in software, rather than a hardware problem.
Board: ESP32 Huzzah from Adafruit
IDE: Arduino 1.8.9, with the ESP32 1.0.1 board library.
Basic facts:
- The ESP32 is ~5ft from the AP, direct line of sight, no objects of any kind between them.
- The AP is a Unifi AP-LR; other devices can connect to this from two floors away, reliably.
- Reported RSSI at time of connection is approximately -52 to -58dB. Not great, but workable. And it seems low, for the range and lack of interference. It'll serve the web page, return pings, and so on.
- Over time, the RSSI degrades to -87ish dBm. It won't serve the web page, and very few pings are returned.
Things I've Tried:
- Hacking off part of the board. There's a little bit of PCB under the antenna on the Huzzah board. Cutting it off helps RSSI by a few dB, but it doesn't fix the problem.
- Resetting NVS physical RF calibration data every time. esp_phy_erase_cal_data_in_nvs();
- Checking the power level and RSSI periodically. According to the logs, max power level remains constant (it's showing 78, which is level 0, which is max power). RSSI degrades over time.
My current best theory is that something is slowly ramping down wifi transmit power over time. I have almost nothing to substantiate this theory, but it's the best I have.
Has anyone else seen behavior like this? Any thoughts?
Thanks,
Dan
ESP32 WiFi Signal Strength
Re: ESP32 WiFi Signal Strength
I'm sure Adafruit don't use them but I have to ask: The ESP32 module doesn't have an IPEX connector, does it?
It still wouldn't explain the decreasing rssi which is really strange. Does this also occur with a very simple WiFi sketch (eg. an example edited to print out rssi occasionally), or only with yours?
Is there any change if you tinker with the channel etc on your router?
Have you tested with a different router?
It still wouldn't explain the decreasing rssi which is really strange. Does this also occur with a very simple WiFi sketch (eg. an example edited to print out rssi occasionally), or only with yours?
Is there any change if you tinker with the channel etc on your router?
Have you tested with a different router?
Re: ESP32 WiFi Signal Strength
Can you correlate it to thermal cycling?
Re: ESP32 WiFi Signal Strength
Boarchuz:
- The Adafruit module does not have an IPEX, no. There's a process for installing one, but it's pretty dodgy.
- The problem appears to be independent of router (tried at several different sites, with several different APs, and similar results)
- Channel appears to be automatically chosen. Is there a way to encourage the ESP32 to pick a different channel?
- I've been able to duplicate this with a pretty simple sketch, just basically attempting to connect, with nothing else going on.
WiFive: Thermal cycling ... good thinking, but I'm not seeing any correlation there. It doesn't appear to be a problem related to run time since power up so much as run time since the network was connected.
So what I've found so far is interesting:
- Reported RSSI is nearly meaningless. Right now, I have one ESP32 reporting -87dB at the AP, but it's working just fine.
- Calling "WiFi.disconnect(true)" immediately before attempting to connect (Wifi.begin()) makes the connection work correctly more consistently. Oddly, setting the mode to WIFI_OFF, then WIFI_STA does not seem to have the same effect, though I would have thought the functionality would be similar.
- "esp_wifi_set_ps(WIFI_PS_NONE)" turns off power saving. If I've read the documentation correctly, this shouldn't matter ... but adding this line seems to help.
Thanks for the help,
Dan
- The Adafruit module does not have an IPEX, no. There's a process for installing one, but it's pretty dodgy.
- The problem appears to be independent of router (tried at several different sites, with several different APs, and similar results)
- Channel appears to be automatically chosen. Is there a way to encourage the ESP32 to pick a different channel?
- I've been able to duplicate this with a pretty simple sketch, just basically attempting to connect, with nothing else going on.
WiFive: Thermal cycling ... good thinking, but I'm not seeing any correlation there. It doesn't appear to be a problem related to run time since power up so much as run time since the network was connected.
So what I've found so far is interesting:
- Reported RSSI is nearly meaningless. Right now, I have one ESP32 reporting -87dB at the AP, but it's working just fine.
- Calling "WiFi.disconnect(true)" immediately before attempting to connect (Wifi.begin()) makes the connection work correctly more consistently. Oddly, setting the mode to WIFI_OFF, then WIFI_STA does not seem to have the same effect, though I would have thought the functionality would be similar.
- "esp_wifi_set_ps(WIFI_PS_NONE)" turns off power saving. If I've read the documentation correctly, this shouldn't matter ... but adding this line seems to help.
Thanks for the help,
Dan
Who is online
Users browsing this forum: No registered users and 30 guests