RF Wireless World

Browse articles, tutorials, tools, and vendors.

Bluetooth HCI Transport interfaces: UART vs USB vs SDIO

By RF Wireless Expert Team

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 0x01 to 0x05) 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 / InterfaceUART (Standard / 3-Wire)USBSDIO
Data Framing StrategyUses 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 & ReliabilityStandard 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) HandlingMixed 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 CaseLow-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 ConsumptionExtremely 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

  1. Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
  2. Bluetooth SIG : Bluetooth Core Specification change history
  3. Bluetooth SIG : Bluetooth Technology Overview

Continue Learning Bluetooth Basic Concepts

Continue Learning Bluetooth Technology

Compare Bluetooth With Other Technologies

Explore Deep Insight Bluetooth Technology

Keep Reading