ESP32S3 and ESP32 BLE differences
-
sun-maker1
- Posts: 1
- Joined: Sun May 11, 2025 3:36 am
ESP32S3 and ESP32 BLE differences
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
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:
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).
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
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: ChatGPT-User, meta-externalagent and 3 guests