Bluetooth physical architecture

The physical architecture of Bluetooth is split into two main elements: Host and Controller.

Representation of the physical architecture of Bluetooth

Bluetooth Controller

A controller is a chip, or a set of them, capable of transmitting and receiving radio waves, responsible for performing the lower-level tasks of the Bluetooth communication protocol.

A controller may support one or more Bluetooth technologies. There are controllers that only support Bluetooth LE, others that support Bluetooth BR/EDR, and others that support combined operation in both modes.

The controller, besides having the hardware to convert radio signals into bits and vice versa, also has multiple responsibilities when it comes to creating, maintaining, and closing connections. The lower layers of the Bluetooth standard are implemented in the firmware of these controllers, and they have packet processing capability without the need for these packets to reach the Host.

Host

The Host refers to the hardware that uses a Controller to communicate via Bluetooth. This Host must run a software stack that provides an abstraction and allows applications to interact with Bluetooth devices independently of the hardware.

This software run on the Host is responsible for functions related to discovery and pairing processes. Some of these functions include enumerating nearby devices, controlling whether a device should be discoverable or not, enumerating the capabilities of the Host to decide which pairing methods are available, intervening during the pairing process to allow the user to confirm or deny this action, or storing pairing keys in a secure place.

Host Controller Interface or HCI

Host Controller Interface_ or HCI refers to the protocol used to communicate a Host with a Controller. The HCI protocol usually limits the ability of a Host to modify the behaviour of a Controller. Overcoming this barrier involves modifying the Controller or modifying the Controller firmware.