<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bluetooth Classic Audio on Embedded Systems Development</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/</link><description>Recent content in Bluetooth Classic Audio on Embedded Systems Development</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/index.xml" rel="self" type="application/rss+xml"/><item><title>Bluetooth Classic for Audio</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/bluetooth-classic-overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/bluetooth-classic-overview/</guid><description>&lt;h1 id="bluetooth-classic-for-audio"&gt;Bluetooth Classic for Audio&lt;a class="anchor" href="#bluetooth-classic-for-audio"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Bluetooth Classic (BR/EDR — Basic Rate / Enhanced Data Rate) is the transport layer behind wireless headphones, car audio, and hands-free calling. BLE (Bluetooth Low Energy) was not designed for continuous audio streaming — its connection intervals, packet sizes, and lack of guaranteed throughput make it unsuitable for real-time audio at acceptable quality. Bluetooth Classic&amp;rsquo;s ACL (Asynchronous Connection-Less) and SCO (Synchronous Connection-Oriented) links provide the bandwidth and timing guarantees that audio demands. The ESP32 is the dominant MCU platform for Bluetooth Classic audio, with both Bluedroid and NimBLE stacks available, though NimBLE supports only BLE — Bluetooth Classic audio requires Bluedroid or BTstack.&lt;/p&gt;</description></item><item><title>A2DP Audio Streaming</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/a2dp-audio-streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/a2dp-audio-streaming/</guid><description>&lt;h1 id="a2dp-audio-streaming"&gt;A2DP Audio Streaming&lt;a class="anchor" href="#a2dp-audio-streaming"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A2DP (Advanced Audio Distribution Profile) is the Bluetooth Classic profile for streaming high-quality stereo audio — it is the protocol behind every wireless headphone and Bluetooth speaker. A2DP defines two roles: the &lt;strong&gt;source&lt;/strong&gt; (SRC) sends audio (phone, MCU, media player) and the &lt;strong&gt;sink&lt;/strong&gt; (SNK) receives and plays it (headphones, speaker). An ESP32 can act as either role, enabling projects that stream audio to Bluetooth headphones (source) or receive audio from a phone (sink).&lt;/p&gt;</description></item><item><title>HFP &amp; Hands-Free Voice</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/hfp-voice-calls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/hfp-voice-calls/</guid><description>&lt;h1 id="hfp--hands-free-voice"&gt;HFP &amp;amp; Hands-Free Voice&lt;a class="anchor" href="#hfp--hands-free-voice"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The Hands-Free Profile (HFP) carries bidirectional voice audio over Bluetooth Classic — it is the protocol behind car hands-free systems, Bluetooth headsets for phone calls, and any device that handles voice communication over Bluetooth. Unlike A2DP (which streams high-quality unidirectional audio), HFP provides a simultaneous two-way voice channel: microphone audio flows from the hands-free unit (HF) to the phone (audio gateway, AG), and downlink audio flows from the phone to the hands-free unit. The audio quality is lower than A2DP (narrowband or wideband voice rather than music), but the bidirectional real-time nature is what makes voice calls work.&lt;/p&gt;</description></item><item><title>AVRCP Playback Control</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/avrcp-playback-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/bluetooth-audio/avrcp-playback-control/</guid><description>&lt;h1 id="avrcp-playback-control"&gt;AVRCP Playback Control&lt;a class="anchor" href="#avrcp-playback-control"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;AVRCP (Audio/Video Remote Control Profile) provides the control channel that accompanies A2DP audio streaming. While A2DP handles the audio data, AVRCP handles play/pause, next/previous track, volume adjustment, and track metadata (title, artist, album). Every Bluetooth speaker and headphone uses AVRCP alongside A2DP — the play/pause button on a headphone sends an AVRCP command to the phone, and the track name displayed on a car stereo arrives via AVRCP metadata notifications.&lt;/p&gt;</description></item></channel></rss>