Shocking discovery about antenna quality of ESP32 modules

Since my BLE reception was very poort, I’ve been running some test in the past days about the quality of antennas of ESP32 modules… and the results have been shocking to say the least.

ESP32 Generic DEV Board with integrated Antenna (Running OpenMQTTGateway 1.2.0)

A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06",       "mac_type":0,"rssi":-83,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB",       "mac_type":0,"rssi":-89,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05",       "mac_type":0,"rssi":-94,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6",       "mac_type":0,"rssi":-90,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27",       "mac_type":0,"rssi":-91,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"

ESP32 WROOM with external Airgain antenna (Running OpenMQTTGateway 1.4.0)

A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06","name":"ATC_xxxx06","rssi":-62,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB","name":"ATC_xxxxFB","rssi":-86,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05","name":"ATC_xxxx05","rssi":-88,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6","name":"ATC_xxxxD6","rssi":-78,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27","name":"ATC_xxxx27","rssi":-84,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"

ESP32 Seeed XIAO with external provided antenna (Running OpenMQTTGateway 1.4.0)
Seeed Xiao

A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06","name":"ATC_xxxx06","rssi":-39,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB","name":"ATC_xxxxFB","rssi":-64,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05","name":"ATC_xxxx05","rssi":-66,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6","name":"ATC_xxxxD6","rssi":-55,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27","name":"ATC_xxxx27","rssi":-62,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"

The sensors were put the same location, and in the same position (+/- 5cm), and the readings have been taken simultaneously:

The first module, the one with the integrated PCB antenna, is the worst… more so because the PCB antenna is stacked on top of the dev board PCB. I did not expect much form it, but it is the most readily available on Amazon or Ebay. I bought a couple of them in hurry and they were delivered in a couple of days. They do work and are easy to use.

The ESP32U with Airgain antenna (bought separately: it is a well known brand, often used internally in routers) does way better! e.g. for the first sensor, going from -83db to -62db, a difference of +11db versus the no-name Dev board.

…but the real surprise here was the Seeed XIAO with the provided antenna… here the same sensor goes from -83db to -39db, a difference of +44db!

The measurements are in regards to the first sensor, but every sensor shows a similar pattern.

The best part? The Seed was also the cheapest (considering you don’t have to buy antennas or dev boards separately) and smallest board!
Keep in mind tho that it is an ESP32-C3 with a single core RISCV processor and BT5.0, while the others are ‘vanilla’ ESP32 with a dual core ARM processor and BT4.2)


Very nice and informative comparison, thanks. I have to admit though that I’m not that shocked by the results :wink: especially about the ESP32 Generic DEV Board with integrated Antenna

Personally I now only use the ESP32-WROOM-32D boards when it comes to integrated antennas, as mentioned a while back

as the ESP32-WROOM-32D has the antenna sticking out over the actual PCB, improving the reception substrantially, at least in my tests.

@DigiH @1technophile : These days I received an ESP32 dev board with an external antenna connector.
To make things as fair and replicable as possible, I have used the same antenna on both the ESP32 DEV board and on the Seeed XIAO C3.
And… agains all expectations: the C3 has still better reception that the ‘no brand’ ESP32 dev board bought on Aliexpress, on average by 9 to 10dB!
Same location, same antenna, but either the C3 also integrates a signal amplfier or it is simply better built.
I encourage you (and anyone else of course) to try one of these little gems. They’re less and $5 on seeed’s official store and they also do include a very good antenna.

(I’m not affiliated in any way with seeed, and I won’t even go as far as putting a link to their store, just trying to give a good advice to the community sice I spent quite some time and money to do these comparisons )


I would have assumed that the Seeed XIAO C3’s Bluetooth 5, compared to all the other boards’ Bluetooth 4(.2) would make a noticeable difference in reception, but personally know too little about the specifics if the observed difference could mainly be due to that or which other factors might be involved.

Thanks for all your time and effort you put into this! Now I’m just waiting for them to stock it in their EU warehouse :slight_smile:

Can anyone tell me the best way to get OMG up and running on the XIAO C3?

The standard “lolin_c3_mini” environment works well for the Xiao. If you need serial output I can also help you. But I would have to know for which version of OpenMQTTGateway you are building.

1 Like

That’s all I needed! Thank you! I just need it up and running scanning BLE devices.