HCI

<\/script>\n
'; }, get iframeSnippet() { const domain = '{ SITE_DOMAIN }'; const type = '{ embed_type }'; const slug = '{ embed_slug }'; return ''; }, get activeSnippet() { return this.method === 'script' ? this.scriptSnippet : this.iframeSnippet; }, copySnippet() { navigator.clipboard.writeText(this.activeSnippet).then(() => { this.copied = true; setTimeout(() => { this.copied = false; }, 2000); }); } }" @keydown.escape.window="open = false" @click.outside="open = false">

Embed This Widget

Theme


      
    

Widget powered by . Free, no account required.

Host Controller Interface -- the standard interface between the BLE host stack (software) and the controller (radio hardware).

Also known as: Host Controller Interface

HCI (Host Controller Interface)

HCI is the standardized interface between the BLE host stack (software running on an application processor) and the BLE controller (the radio hardware and link layer firmware). It defines a set of commands, events, and data formats that allow the host to manage connections, configure advertising, and exchange data with remote devices.

Architecture

In a typical BLE system, the host and controller may run on the same SoC (single-chip architecture) or on separate processors connected via UART, SPI, or USB (dual-chip architecture). HCI abstracts this physical transport, providing a uniform command/event interface regardless of the underlying bus.

The dual-chip architecture is common in designs using a dedicated BLE Module connected to a host MCU, or when using a PC or smartphone as the host with an external BLE dongle.

Command and Event Flow

HCI communication follows a command/event pattern:

  1. Host sends HCI Command: e.g., LE_Set_Advertising_Parameters, LE_Create_Connection
  2. Controller returns HCI Event: e.g., Command_Complete, LE_Connection_Complete
  3. Asynchronous data: ACL data packets flow bidirectionally for GATT operations

Key HCI command groups for BLE include: - LE Controller commands: Advertising, scanning, connection management, PHY configuration - Link Control commands: Disconnect, read remote features - Informational commands: Read BD_ADDR, read buffer size - Status commands: Read RSSI, read TX Power

HCI Logging and Debugging

HCI logs (also called btsnoop logs on Android) are the primary tool for debugging BLE interoperability issues. They capture every command, event, and data packet exchanged between host and controller. Tools like Wireshark, Ellisys, and nRF Sniffer can decode HCI logs into human-readable protocol traces.

On Android, HCI logging can be enabled in Developer Options. On embedded systems using Zephyr or other RTOS, HCI trace output can be directed to a UART or RTT console for analysis.

Transport Layers

Transport Speed Use Case
UART (H:4) 115.2 kbps - 4 Mbps Most common for embedded
UART (H:5, 3-Wire) Same With flow control and error recovery
SPI Up to 8 Mbps High-speed embedded designs
USB 12 Mbps (Full Speed) PC dongles, development kits
SDIO Up to 50 Mbps Wi-Fi/BLE combo modules

Frequently Asked Questions

Our glossary covers 90+ BLE technical terms organized by category. Each term includes a definition, related terms, and links to relevant chips and guides.