ESP32 WiFi RSSI: Arduino IDE vs Espressif IDF

I’ve been developing an application with the ESP32, and have stumbled in to some interesting WiFi RSSI problems. Basically, I was getting a marginal initial connection which resulted in slow transfers and hung connections later, which caused all kinds of problems. Fixing the signal strength solves a lot of other problems.

One big help was to shift from the ESP32 with an on-board antenna (the little built in PCB thing) to the ESP32 version that has an external antenna. Playing around with antennas to get one that works well is an interesting challenge, but I’ve found a couple that work well.

More interesting, and more relevant to this forum, I found that a simple wifi connect Arduino sketch got mediocre RSSI (as reported by the AP), where the simple wifi connect sketch compiled in ESP-IDF got much better signal – on average, an improvement of 5-6 dBm. Where the Arduino IDE sketch was getting ~65ish dBm, the ESP-IDF sketch – doing the same thing, on the same board, in the same location – was indicating 55-60ish dBm.

So the obvious question is why? What is the Arduino code doing so differently that it gets a measurably weaker signal from the same board as compared to the ESP-IDF code? Any thoughts?

You might get more insight from Expressif, they are responsible for both the code in their Arduino IDE plugin and of course the ESP-IDF.

In a few instance I have seen it reported that base code in the ESp-IDF is more up to date.