ESP32S3 and ESP32 BLE differences

sun-maker1
Posts: 1
Joined: Sun May 11, 2025 3:36 am

ESP32S3 and ESP32 BLE differences

Postby sun-maker1 » Sun May 11, 2025 3:46 am

Brothers, today I tried the official BLE example esp-idf\v5.4\esp-idf\examples\bluetooth\bluedroid\ble\gatt_server_service_table I found a problem with this example, which is that when I burned the same code to ESP32, it did display the correct service and the uuid was also correct. However, if I burned to ESP32s3 and found that there was only one service called battery level, I think it may be because the service was not defined successfully, and then the default service battery level was initialized. However, I checked the service creation function and it returned normal. Has anyone encountered a similar problem? ESPIDF version 5.4 ESP32s3 example Gatt_serverless Service_table Bluetooth can communicate normally but the service is incorrect

ahsrabrifat
Posts: 201
Joined: Sat Jan 18, 2025 2:31 pm

Re: ESP32S3 and ESP32 BLE differences

Postby ahsrabrifat » Fri May 30, 2025 8:24 am

The ESP32-S3 uses different Bluetooth controllers (BT/BLE is handled differently on S3 compared to classic ESP32).
Source: https://www.theengineeringprojects.com/ ... assic.html

Often the bluedroid stack may not initialize completely due to configuration or timing issues.

Only the default GATT service (Battery Level) may be exposed when the custom attribute table fails silently, even if the return value appears successful.

Memory allocation or controller initialization could behave differently between ESP32 and ESP32-S3.
Run:

Code: Select all

idf.py menuconfig
Verify the following:

Component config -> Bluetooth -> Bluetooth controller
Set it to "Dual Mode" or "BLE only" based on your use case.

Component config -> Bluetooth -> Bluedroid Enable -> GATTS
Enable GATTS support.

Check BT/BLE memory settings (sometimes default values are not sufficient for ESP32-S3).

Who is online

Users browsing this forum: meta-externalagent, PetalBot and 2 guests