Bluetooth

Bluetooth H5 three-wire UART context

A reliable three-wire UART transport context with packet sequencing and link establishment. It differs from H4 framing despite sharing the hci_uart module.

On this page
  1. Overview & identity
  2. Driver & binding
  3. Firmware
  4. Read-only diagnostics
  5. Limitations & related issues
  6. References

Overview & identity

H5 identifies a protocol path, not a chip. A report listing hci_uart supplies only secondary context unless the serial device and active protocol are also known.

This is an explicit class, transport or driver-context profile. It is not an exact numeric product match.

A numeric match establishes a candidate family within the reviewed evidence. Marketing names, board variants, subsystem conditions and successful operation remain separate questions.

Driver & binding

The three-wire option includes hci_h5 in hci_uart. Its link negotiation and sequencing mean serial initialization failures must be separated from BlueZ pairing failures.

  • hci_uart — kernel driver/module candidate

Detected, bound, operational: learn the difference

Firmware

Device/revision dependent

The protocol itself supplies no universal firmware filename. Chip-specific firmware or board initialization may be needed separately.

Inspect firmware packaging on your distribution

Read-only diagnostics

Run one displayed command at a time. Replace uppercase placeholders with the affected device, interface or module from your own output. Commands are never executed here. Read-only output can still contain private identifiers.

Read the controller parent path

readlink -f /sys/class/bluetooth/CONTROLLER/device

Replace CONTROLLER with the local hci name, such as hci0, found in /sys/class/bluetooth. The path helps distinguish USB, serial and SDIO parents. It does not prove which UART protocol is active. No root privileges are needed.

Read controllers visible to BlueZ

bluetoothctl list

This asks the BlueZ daemon for known controllers without discovery or pairing. An empty response can mean daemon or D-Bus access problems as well as absent controllers; compare kernel enumeration. Normally no root privileges are needed.

Read controller initialization

journalctl -k -b --no-pager

Read the current boot’s kernel messages for the controller, requested firmware and setup result. Journal visibility depends on local permissions; an unreadable log is not evidence of no errors. This command does not change the device.

Limitations & related issues

A loaded hci_uart module cannot distinguish H5 from H4 or a vendor protocol. This profile does not recommend attaching or changing a live serial port.

These guides are linked for relevant observations, not as known defects of every device in this family.

Choose a hardware diagnostic workflow · Inspect a log excerpt in Fix Lab

References

Source review records a checked implementation or document, not a reproduced hardware test. Version-specific tables do not establish a minimum kernel or guaranteed operation.