Bluetooth HCI Transport interfaces: UART vs USB vs SDIO
Advertisement
In the Bluetooth architecture, the “Host” (the upper software stack, like your OS or microcontroller application) is often physically separated from the “Controller” (i.e. the physical Bluetooth radio and lower level baseband).
To make these two halves talk to each other seamlessly, Bluetooth uses a Host Controller Transport Layer. The primary goal of this layer is transparency. It allows the Host and Controller to exchange commands, events and data without the transport mechanism needing to understand the actual contents of the Bluetooth packets.
The Bluetooth Core Specification defines several physical transport layers. This page covers three most common such interfaces viz. UART, USB and SDIO. Let us explore how they work and what makes them different.
1. UART Transport Layer (Standard and Three Wire)
Universal Asynchronous Receiver Transmitter (UART) is one of the most common serial communication protocols in embedded systems. The Bluetooth spec defines two distinct ways to run HCI over UART.
-
Standard UART Transport: This is a simple, lightweight implementation that assumes the physical connection is completely free from line errors. Because UART natively just sends a stream of bytes, Bluetooth adds a 1-byte HCI packet indicator (ranging from
0x01to0x05) to the beginning of each transmission. This tells the receiving end whether the incoming bytes represent a Command, an ACL Data packet, a Synchronous Data packet, an Event or an ISO Data packet. It relies on standard RS232 settings (typically 8 data bits, no parity, 1 stop bit) and uses hardware flow control (RTS/CTS) to prevent buffer overruns. -
Three Wire UART Transport: What happens if your UART lines are susceptible to bit errors or burst errors? You use the Three Wire UART layer. This method transforms an unreliable byte stream into a reliable packet stream using a protocol called SLIP (Serial Line Internet Protocol). SLIP wraps packets in special “Start” and “End” bytes (
0xC0) and uses escape sequences to ensure data integrity. Furthermore, it adds a 4-byte packet header containing sequence numbers, acknowledgment numbers and an optional 16-bit CRC. This allows the system to detect corrupted data, request retransmissions and ensure reliable delivery.
2. USB Transport Layer
When Bluetooth is integrated into PCs, laptops or complex System on Chip (SoC) environments, USB is often the transport of choice. Unlike UART’s simple stream of bytes, USB is highly structured and uses “Endpoints” to manage different types of data traffic.
The Bluetooth USB Transport operates in one of two modes:
-
Legacy Mode: This mode intelligently maps Bluetooth packet types to specific USB endpoint types. For instance:
- HCI Commands are sent over the “USB Control Endpoint”.
- HCI Events are delivered via the “USB Interrupt Endpoint” (ensuring timely, predictable delivery).
- ACL Data is sent over “Bulk Endpoints”, which guarantee data integrity.
- SCO Data (Audio/Voice) is sent over “Isochronous Endpoints”, which guarantee timing and bandwidth but do not guarantee data delivery (if a voice packet is dropped, it’s ignored to prevent audio lag).
-
Bulk Serialization Mode: This is an alternative mode where all Bluetooth traffic including commands, events and audio are serialized and shoved entirely through the “USB Bulk Endpoints”. Because everything is sharing the same pipe, this mode goes back to using the same 1-byte packet indicator trick used in UART to distinguish between Commands, Events and Data.
One limitation of the USB transport is power management. USB Host Controllers often “snoop” attached devices every millisecond, which can prevent laptop processors from entering deep sleep states, potentially draining battery life faster than a UART interface would.
3. SDIO Transport Layer
Secure Digital Input/Output (SDIO) takes the standard SD Card interface and repurposes it for I/O peripherals like Bluetooth radios.
The SDIO transport is unique because it is heavily tied to the physical block transfer nature of the SD bus. In SDIO, all data is transferred in blocks. However, Bluetooth HCI packets vary wildly in size and might not perfectly align with the SD bus block sizes. Because of this, the SDIO transport requires a specific segmentation and recombination protocol. If an HCI packet is larger than the SD block size, it must be chopped up into smaller segments, transmitted and glued back together on the other side.
Instead of 1-byte prefixes (like UART) or dedicated physical endpoints (like USB), SDIO uses Service ID codes at the protocol level to route HCI Commands, ACL Data and Events to the correct internal logic.
Difference between UART, USB and SDIO in Bluetooth
To summarize, while all three interfaces achieve the exact same goal; moving HCI packets between the Host and the Controller; they do it using fundamentally different philosophies tailored to their hardware environments.
| Feature / Interface | UART (Standard / 3-Wire) | USB | SDIO |
|---|---|---|---|
| Data Framing Strategy | Uses a 1-byte prefix; 3-Wire adds SLIP framing (Start/End bytes). | Relies on USB Endpoints (Legacy) or a 1-byte prefix (Bulk Mode). | Block-based; requires strict segmentation and recombination. |
| Error Handling & Reliability | Standard assumes no errors. 3-Wire uses sequence numbers, acknowledgments, and CRC for retransmissions. | Relies on native USB protocols (e.g., Bulk endpoints have built-in error correction; Isochronous drops bad data). | Relies on the SD Physical Transport bus data integrity mechanisms. |
| Audio (SCO) Handling | Mixed into the byte stream; relies on the Host to parse it out in time. | Dedicated Isochronous endpoints guarantee timing and bandwidth for voice traffic. | Handled as blocked data packets routed via specific Service IDs. |
| Best Use Case | Low-power embedded systems, microcontrollers, and simple IoT devices. | PCs, laptops, and complex multi-function composite devices. | Systems where SD/MMC interfaces are already prevalent (e.g. certain single-board computers). |
| Power Consumption | Extremely low; supports deep sleep states easily using side band wake pins. | Moderate to High; USB polling can prevent the host CPU from entering deep sleep. | Low to Moderate; depends on the SD bus clock speed and bus sharing. |
Summary
Choosing the right HCI transport depends entirely on your hardware constraints. If you are building a battery powered IoT wearable, UART is your best friend. If you are building a PC peripheral or a device passing high fidelity audio where you need dedicated bandwidth, USB is the superior choice. If you are designing around a microprocessor that natively exposes an SD card bus for peripherals, SDIO is the way to go.
References & Further Reading
- Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
- Bluetooth SIG : Bluetooth Core Specification change history
- Bluetooth SIG : Bluetooth Technology Overview
Continue Learning Bluetooth Basic Concepts
- What are new features in Bluetooth 6.3 Version
- Bluetooth GATT Vs. ATT Vs. GAP : Key Comparison
- Bluetooth Service Vs. Characteristic Vs. Descriptor
- Bluetooth Central Vs. Peripheral : Key Differences
- Bluetooth pairing Vs. Bonding Phase
- Bluetooth Notifications Vs. Indications
- Bluetooth Channel Sounding Vs. RSSI
- Bluetooth Direction Finding Methods : AoA Vs. AoD
- Bluetooth HID Over GATT
- Bluetooth IRK Vs. LTK : Key Differences
- Bluetooth PHY : 1M Vs. 2M Vs. Coded Differences
- What is ATT MTU Size in Bluetooth
- Bluetooth Ranging : Phase Based Vs. RTT Based
- Bluetooth Error Codes Guide : Meanings, Causes & Fixes
- Bluetooth L2CAP and HCI : Key Differences
Continue Learning Bluetooth Technology
- Bluetooth Basics Tutorial
- Bluetooth Low Energy (BLE) Basics Tutorial
- Bluetooth Protocol Stack & Device State Diagram
- Bluetooth Physical Layer Modules
- Bluetooth MAC Layer Overview
- Bluetooth Channel Frequency List
- Bluetooth Network Security
- Bluetooth Low Energy (BLE) Connection Establishment Procedure
- Bluetooth Profiles: HFP, HSP, A2DP, AVRCP, PBAP & MAP
- Bluetooth Mesh Node Types & Protocol Stack Layer Functions
Compare Bluetooth With Other Technologies
- Bluetooth V5.0 Vs. V5.1 Vs. V5.2 Vs. V5.3
- Bluetooth Vs BLE : Key Differences
- Bluetooth Vs UWB Technology : Key Differences
- Bluetooth Vs Wi-Fi Vs UWB
- Comparison Between All Bluetooth Versions from 1.0 to 6.3
Explore Deep Insight Bluetooth Technology
- Bluetooth Error Recovery : ARQ, ACK, NAK
- Bluetooth Bit Stream Processing: HEC, CRC, FEC & More
- Bluetooth Routing: How Devices Know a Packet is for Them
- Bluetooth Flow Control: Understanding GO & STOP Bits
- Bluetooth Power Management: Sniff, Hold & Active Modes
- Bluetooth Packets Decoded: Structure, Types & Routing
- Decoding Bluetooth Packet Types: Control, ACL, SCO & eSCO
