Hi, I'm new here and this is my first real question.
I've been playing with Phil Schatzmann's Bluetooth A2DP Audio Library for ESP32 a bit and I've managed to configure my ESP32 either as:
- a Source → the ESP32 can send audio to a bluetooth device (an EMEET M0 conference speaker)
- or a Sink → an audio player, where the audio comes from my PC (unfortunately, NOT the conference speaker)
But I never could understand how to configure the ESP32 to receive audio from the EMEET M0 Conference speaker's microphone.
The problem is that I can't "explain" to the EMEET M0 conference speaker that it needs to "connect" to my ESP32 Sink.
The EMEET M0 just "stands there", and is accessible as an audio input device (a microphone) when you're using Windows for example, but how can I discover it as a Source with the ESP32, using the A2DP library?
Eventually I want the ESP32 to both send and receive audio to the Bluetooth Conference Speaker at the same time.
Has anyone had any more luck with this library to connect it to a bluetooth microphone, or is knowledgeable about the Bluetooth protocol which is incredibly complicated? (hats off to P. Schatzmann for making such an amazing library! 🤯👍)
Thanks a lot in advance.
Pom
Hi, I'm new here and this is my first real question.
I've been playing with Phil Schatzmann's Bluetooth A2DP Audio Library for ESP32 a bit and I've managed to configure my ESP32 either as:
- a Source → the ESP32 can send audio to a bluetooth device (an EMEET M0 conference speaker)
- or a Sink → an audio player, where the audio comes from my PC (unfortunately, NOT the conference speaker)
But I never could understand how to configure the ESP32 to receive audio from the EMEET M0 Conference speaker's microphone.
The problem is that I can't "explain" to the EMEET M0 conference speaker that it needs to "connect" to my ESP32 Sink.The EMEET M0 just "stands there", and is accessible as an audio input device (a microphone) when you're using Windows for example, but how can I discover it as a Source with the ESP32, using the A2DP library?
Eventually I want the ESP32 to both send and receive audio to the Bluetooth Conference Speaker at the same time.
Has anyone had any more luck with this library to connect it to a bluetooth microphone, or is knowledgeable about the Bluetooth protocol which is incredibly complicated? (hats off to P. Schatzmann for making such an amazing library! 🤯👍)
Thanks a lot in advance.
Pom
When working with Phil Schatzmann’s ESP32-A2DP library, it's important to remember that A2DP is designed solely for high-quality, one-way audio streaming. In practice, this means your ESP32 can serve either as a Source (sending audio to a Bluetooth speaker) or as a Sink (receiving audio from a device like your PC), but not for capturing audio from a Bluetooth-equipped microphone—like the one in the EMEET M0. A2DP isn't built for two-way, bidirectional audio; it’s fundamentally unable to detect or interact with a mic source on its own.
That’s where the disconnect lies: the EMEET M0’s microphone doesn’t advertise itself as an A2DP source and instead uses HFP (Hands-Free Profile) or HSP (Headset Profile)—the standard protocols for handling voice (mic) input on Bluetooth devices. These profiles support two-way communication (for both mic and speaker), but at lower fidelity (typically narrowband voice codecs like CVSD or mSBC). Unfortunately, Schatzmann's library doesn’t support HFP/HSP—only A2DP—and so the ESP32 cannot “see” or connect to the M0’s mic using that library alone.
That said, it’s still valuable to explore community resources for inspiration or peripheral audio integration approaches. One such example is this project titled “E-Speaker Using ESP32”. This project demonstrates the ESP32 handling both Wi-Fi and Bluetooth audio for playback and even integrates local voice-control input. While it doesn’t directly address capturing mic audio from a Bluetooth conference speaker, it highlights how the ESP32 can interact with audio peripherals and manage audio streams—potentially serving as a conceptual or hardware reference.
To truly capture audio from the EMEET M0’s microphone, you’ll need to move beyond the Arduino-based A2DP library and work directly with ESP-IDF, specifically implementing an HFP client or Hands-Free Unit (HFU).
Thank you so much for your insight! If I could somehow "master" the EMEET then I could theoretically recreate my own personal Alexa device from any conference speaker for roughly $50, which would just be awesome! 😆