Bluetooth Audio
Introduction
The Bluetooth audio solution covers Classic Bluetooth and LE Audio in one software stack. The device can act as a speaker that receives music from a phone or PC and supports hands-free calling, as a source that sends local audio to a headset or speaker, or as an Auracast broadcast source or sink. Use A2DP playback, AVRCP control, and HFP calling to work with the existing phone Bluetooth ecosystem. The same software stack also supports LE Audio unicast, broadcast, and multi-device synchronized playback.
ESP32-S31 is recommended when the product needs both Classic Bluetooth and Bluetooth 5.4 (LE). ESP32 can be used when only Classic Bluetooth audio is required.
flowchart LR
Phone["Phone or PC"]
Soc["SoC"]
Spk["Speaker"]
Mic["Microphone"]
Head["Headset or speaker"]
Phone -->|"A2DP / HFP / LE Audio"| Soc
Mic --> Soc
Soc --> Spk
Soc -->|"A2DP Source / Auracast"| Head
Applications
Bluetooth speaker: a phone or PC sends music over A2DP; the device plays it as an A2DP Sink and supports previous, pause, next, and linked volume
Screened head unit: an in-vehicle or desktop terminal displays track, cover, and lyrics, and handles playback control and dialing on the device
Hands-free calling: HFP outputs downlink audio to the speaker and captures uplink from the microphone, for screened speakers, car head units, and desktop conference terminals
Bluetooth source: the device discovers and connects to a headset or speaker, then sends local or SD card audio to the peer
TWS and hearing aids: LE Audio unicast (CIS) for point-to-point connection or left/right synchronized playback
Shared listening: Auracast broadcast (BIS) from one source to many sinks, for exhibition guides, conference interpretation, public TV listening, and multi-room playback
Features
Dual-mode Bluetooth: Classic Bluetooth (BR/EDR) and BLE 5.4 on the same product, compatible with existing Bluetooth devices and LE Audio peers
Classic profiles: A2DP Sink / Source, AVRCP playback control and metadata, HFP hands-free calling, PBAP phonebook and call history
LE Audio: CIS unicast, BIS / Auracast broadcast, and TMAP telephony and media role combinations
esp_bt_audioreports connection, stream, playback control, volume, and call status through one event pathOptional touch UI: media player, dialer, and volume bar
Acoustic echo cancellation (AEC) on the call uplink
Hardware ASRC on ESP32-S31 for sample-rate conversion
Chip comparison
Bluetooth audio capabilities by chip:
Item |
ESP32 |
ESP32-S3 |
ESP32-S31 |
|---|---|---|---|
CPU |
Dual-core Xtensa LX6, up to 240 MHz |
Dual-core Xtensa LX7, up to 240 MHz |
Dual-core RISC-V, up to 320 MHz |
SRAM |
520 KB |
512 KB |
512 KB |
Classic Bluetooth |
Yes (v4.2 BR/EDR) |
No |
Yes (BR/EDR) |
Bluetooth LE |
Bluetooth LE 4.2 |
Bluetooth 5 (LE) |
Bluetooth 5.4 (LE) |
LE Audio |
No |
No |
Yes (CIS / BIS) |
Hardware ASRC |
No |
No |
Yes |
I2S |
2 controllers |
2 controllers |
2 controllers, hardware Bluetooth audio sync |
Sample-rate conversion loading:
Metric |
ESP32-S31 hardware ASRC |
ESP32-S3 software SRC |
|---|---|---|
Average CPU loading |
0.79% |
2.35% |
Peak CPU loading |
1.86% |
14.17% |
Average memory |
539 B |
19400 B |
Peak memory |
672 B |
87000 B |
Hardware and software
ESP32-S31 supports both Classic Bluetooth and LE Audio, and is the recommended SoC for this solution. ESP32 can be used when the product only needs A2DP, AVRCP, and HFP. ESP32-S3 supports Bluetooth LE only, and does not support Classic Bluetooth or LE Audio.
esp_bt_audio manages Bluetooth roles and events. The audio stream goes through an ESP-GMF pipeline for decode, effects, acoustic echo cancellation, and playback. Board peripherals are initialized by esp_board_manager. See esp_bt_audio/examples/bt_audio. The example index is in Multimedia Examples.