[PATCH BlueZ v1 00/12] Add support for Shorter Connection Interval (SCI)

Luiz Augusto von Dentz <[email protected]> Fri, 24 Jul 2026 15:12:13 -0400
Newsgroups org.kernel.vger.linux-bluetooth
Message-ID <[email protected]>
From: Luiz Augusto von Dentz <[email protected]>

This series adds support for the Shorter Connection Interval (SCI) feature
introduced in Bluetooth Core Specification 6.2 and used by HIDS 1.1 / HOGP
v1.2.

SCI allows an LE ACL connection to use very short connection intervals (as
low as 1.25 ms) combined with a subrating factor, so a device such as a HID
peripheral can achieve low input latency while keeping power consumption
manageable. The connection rate parameters (connection interval range,
subrate factor range, peripheral latency, continuation number and
supervision timeout) are negotiated with the LE Connection Rate Request
procedure.

The series covers the full stack:

- HIDS 1.1 GATT discovery: the HID SCI Mode (0x2C39) and HID SCI Information
  (0x2C3A) characteristics, and the SCI flags in the HID Information
  characteristic.

- Management interface: a new Shorter Connection Interval setting (bit 25) to
  advertise controller support, a Load Connection Subrate command (0x005C) to
  load per-device connection subrate parameters, and a Connection Subrate
  event (0x0033) to report rate changes. Parameters are persisted per device
  in the [ConnectionSubrate] storage group.

- bluetoothctl: a conn-subrate command in the mgmt submenu to load subrate
  parameters, pre or post connection.

- monitor (btmon) decoding for the new command, setting and event.

- Emulation and tests: btdev and bthost gain SCI command/event support, and
  mgmt-tester and l2cap-tester cover the setting, the Load Connection Subrate
  command and connections for each of the four HOGP v1.2 recommended modes
  (Fast, Default, Low Power and Full Range), on both the client (central) and
  server (peripheral) side.

The corresponding kernel support (HCI commands/events, the SCI feature init
sequence and the MGMT Load Connection Subrate command) has already been
submitted separately.

HCI reference for the feature this series builds on:

  Commands (OGF 0x08):
    HCI_LE_Connection_Rate_Request              0x00A1 (octet 48 bit 5)
    HCI_LE_Set_Default_Rate_Parameters          0x00A2 (octet 48 bit 6)
    HCI_LE_Read_Min_Supported_Conn_Interval     0x00A3 (octet 48 bit 7)

  Event:
    LE Connection Rate Change                   subevent 0x37

  Feature bits (LE feature page 1, via LE Read All Local Features):
    Shorter Connection Intervals                page 1 bit 8
    Shorter Connection Intervals (Host Support) page 1 bit 9

Luiz Augusto von Dentz (12):
  input/hog-lib: Add discovery support for HIDS 1.1 SCI attributes
  emulator/btdev: Add emulation support for HIDS 1.1 SCI commands
  mgmt: Add Shorter Connection Interval setting and Load Connection
    Subrate
  mgmt-tester: Add tests for SCI setting and Load Connection Subrate
  adapter: Add support for loading connection subrate parameters
  monitor: Add decoding for Load Connection Subrate, SCI setting and
    event
  doc: Document ConnectionSubrate storage format
  client/mgmt: Add conn-subrate command
  mgmt-tester: Add HIDS recommended SCI parameter tests
  l2cap-tester: Add SCI mode tests for LE client connections
  emulator/bthost: Add LE Connection Rate Request support
  l2cap-tester: Add SCI mode tests for LE server connections

 client/mgmt.c             |  88 ++++++++++++++++++
 doc/bluetoothctl-mgmt.rst |  21 +++++
 doc/mgmt-protocol.rst     | 125 ++++++++++++++++++++++++++
 doc/settings-storage.txt  |  22 +++++
 emulator/btdev.c          | 107 ++++++++++++++++++++++
 emulator/btdev.h          |   1 +
 emulator/bthost.c         |  36 ++++++++
 emulator/bthost.h         |  14 +++
 emulator/hciemu.c         |   3 +
 emulator/hciemu.h         |   1 +
 lib/bluetooth/mgmt.h      |  31 +++++++
 monitor/packet.c          |  62 +++++++++++++
 profiles/input/hog-lib.c  | 106 +++++++++++++++++++++-
 src/adapter.c             | 172 ++++++++++++++++++++++++++++++++++++
 tools/l2cap-tester.c      | 181 ++++++++++++++++++++++++++++++++++++++
 tools/mgmt-tester.c       | 163 ++++++++++++++++++++++++++++++++++
 16 files changed, 1132 insertions(+), 1 deletion(-)

-- 
2.54.0