Files
openthread/tools/tcat_ble_client
arnulfrupp bb5585d412 [tcat] add tcat implementations and bug fixes (#11402)
Commit adds check if commissioning is possible and if the tcat device is already commissioned.
Adds advertisement update on disconnected and role change.
Fixes key handling for key references.
Fixes the authorization processing.
Implements recent changes of the application TLVs.
2025-07-30 12:27:10 -07:00
..

BBTC Client

Overview

This is a Python implementation of Bluetooth-Based Thread Commissioning (BBTC) client, based on Thread's TCAT (Thread Commissioning over Authenticated TLS) functionality.

Installation

If you don't have the poetry module installed (check with poetry --version), install it first using:

python3 -m pip install poetry
poetry install

This will install all the required modules to a virtual environment, which can be used by calling poetry run <COMMAND> from the project directory.

Usage

To see the supported commandline arguments of BBTC client, use:

poetry run python3 bbtc.py --help

In order to connect to a TCAT device, enter the project directory and run:

poetry run python3 bbtc.py {<device specifier> | --scan}

where <device specifier> can be:

  • --name <NAME> - name advertised by the device
  • --mac <ADDRESS> - physical address of the device's Bluetooth interface

Using the --scan option will scan for every TCAT device and display them in a list, to allow selection of the target.

For example:

poetry run python3 bbtc.py --name 'Thread BLE'

The application will connect to the first matching device discovered and set up a secure TLS channel. The user is then presented with the CLI.

Usage with a specific TCAT Commissioner identity

The TCAT Commissioner's certificate specifies what permissions it has obtained for specific features of managing a TCAT Device. By default, the identity in the auth directory is used. In order to use a different TCAT Commissioner certificate (identity), use the --cert_path argument, as follows:

poetry run python3 bbtc.py --cert_path <certs-path> {<device specifier> | --scan}

where <certs-path> is the directory where the private key, certificate, and CA certificate of the TCAT Commissioner are stored.

For example to use a pre-configured identity CommCert2 (related to Thread certification tests):

poetry run python3 bbtc.py --cert_path ./auth-cert/CommCert2 --name 'Thread BLE'

The auth-cert directory contains some other identities too, for testing purposes. Refer to Thread TCAT test plan documents for details.

See GENERATING_CERTIFICATES.md for details on generating own certificates.

TCAT Commissioner CLI Commands

The application supports the following interactive CLI commands:

  • help - Display available commands.
  • commission - Commission the device with current dataset.
  • thread start - Enable Thread interface.
  • thread stop - Disable Thread interface.
  • hello - Send "hello world" application data and read the response.
  • exit - Close the connection and exit.
  • dataset - View and manipulate current dataset. Use dataset help for more information.