bluetoothctl-endpoint🔗

Endpoint Submenu🔗

Version:

BlueZ

Copyright:

Free use of this software is granted under the terms of the GNU Lesser General Public Licenses (LGPL).

Date:

November 2022

Manual section:

1

Manual group:

Linux System Administration

SYNOPSIS🔗

bluetoothctl [–options] [endpoint.commands]

This submenu manages media endpoints for audio streaming using the org.bluez.MediaEndpoint(5) and org.bluez.Media(5) interfaces.

Endpoint Commands🔗

list🔗

List available endpoints.

Usage:

> list [local]

[local]:

Only show locally registered endpoints (optional, shows all if omitted)

Example List all available endpoints (local and remote):
> list
Example List only locally registered endpoints:
> list local

show🔗

Endpoint information.

Usage:

> show [endpoint]

Uses:

org.bluez.MediaEndpoint(5) properties

[endpoint]:

Path to specific endpoint to display (optional, shows current selection if omitted)

Example Show information for currently selected endpoint:
> show
Example Show local endpoint information:
> show /local/endpoint/ep0
Example Show remote endpoint information:
> show /org/bluez/hci0/dev_00_11_22_33_44_55/ep1
Example Show another local endpoint:
> show /local/endpoint/ep1

register🔗

Register Endpoint.

Usage:

> register <UUID> <codec[:company]> [capabilities…]

Uses:

org.bluez.Media(5) method RegisterEndpoint

<UUID>:

Bluetooth service UUID for the endpoint type (required)

<codec[:company]>:

Codec ID in hex format, optionally with company ID (required)

[capabilities…]:

Optional codec-specific capability data in hex format

Example LC3 BAP source:
>endpoint.register 00002bcb-0000-1000-8000-00805f9b34fb 0x06
>Auto Accept (yes/no): y
>Max Transports (auto/value): a
>Locations: a
>Supported Context (value): 3
>Context (value): 3
>CIG (auto/value): a
>CIS (auto/value): a
Example LC3 BAP sink with extra capabilities:
>endpoint.register 00002bc9-0000-1000-8000-00805f9b34fb 0x06 “0x03 0xe5 0x03 0x00 0x02 0xe6 0x07”
>Enter Metadata (value/no): n
>Auto Accept (yes/no): y
>Max Transports (auto/value): a
>Locations: a
>Supported Context (value): 3
>Context (value): 3
>CIG (auto/value): a
>CIS (auto/value): a
Example LC3 BAP Broadcast source:
>endpoint.register 00001852-0000-1000-8000-00805f9b34fb 0x06
>Auto Accept (yes/no): y
>Max Transports (auto/value): a
>Locations: 3
>Supported Context (value): 1
Example LC3 BAP Broadcast sink:
>endpoint.register 00001851-0000-1000-8000-00805f9b34fb 0x06
>Auto Accept (yes/no): y
>Max Transports (auto/value): a
>Locations: 3
>Supported Context (value): 1

Note:

If running the setup with an audio server that has LE Audio support (such as PipeWire) it will automatically register endpoints according to the configured roles. For more details about configuring a Broadcast Source with PipeWire check: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/doc/dox/config/pipewire-props.7.md

unregister🔗

Unregister Endpoint.

Usage:

> unregister <UUID/object>

Uses:

org.bluez.Media(5) method UnregisterEndpoint

<UUID/object>:

Either the service UUID or the object path of the endpoint to unregister

Example Unregister LC3 source endpoint by UUID:
> unregister 00002bcb-0000-1000-8000-00805f9b34fb
Example Unregister LC3 sink endpoint by UUID:
> unregister 00002bc9-0000-1000-8000-00805f9b34fb
Example Unregister broadcast source endpoint by UUID:
> unregister 00001852-0000-1000-8000-00805f9b34fb
Example Unregister broadcast sink endpoint by UUID:
> unregister 00001851-0000-1000-8000-00805f9b34fb
Example Unregister endpoint by object path:
> unregister /local/endpoint/ep0
Example Unregister another endpoint by object path:
> unregister /local/endpoint/ep1
Example Unregister source endpoint by path:
> unregister /local/endpoint/source0
Example Unregister sink endpoint by path:
> unregister /local/endpoint/sink0

Note:

If the endpoint was registered by an audio server, it can’t be unregistered from bluetoothctl. This must be done by the audio server as well.

config🔗

Configure Endpoint.

Usage:

> config <endpoint> <local endpoint> [preset]

Uses:

org.bluez.MediaEndpoint(5) method SetConfiguration

<endpoint>:

Path to the remote endpoint to configure

<local endpoint>:

Path to the local endpoint to use for the configuration

[preset]:

Audio quality preset name (optional, auto-detected if omitted)

Example Configure remote endpoint with local endpoint (auto preset):
> config /org/bluez/hci0/dev_00_11_22_33_44_55/ep0 /local/endpoint/ep0
Example Configure LE Audio Unicast with BAP setting 32_1_1:
> config /org/bluez/hci0/dev_00_11_22_33_44_55/ep0 /local/endpoint/ep0 32_1_1
Example Configure LE Audio Broadcast Source:
> config /org/bluez/hci0/dev_00_11_22_33_44_55/bis0 /local/endpoint/broadcast0

Note:

If the endpoint was registered by an audio server, it can’t be configured from bluetoothctl. This must be done by the audio server as well.

presets🔗

List available presets.

Usage:

> presets <endpoint>/<UUID> [codec[:company]] [preset] [codec config] [metadata]

<endpoint>/<UUID>:

Either endpoint path or service UUID to work with presets

[codec[:company]]:

Codec ID with optional company identifier

[preset]:

Preset name to display details or create custom preset

[codec config]:

Custom codec configuration data in hex format

[metadata]:

Additional metadata for the preset

Example using endpoint:
>presets /local/endpoint/ep0 32_1_1
>presets /local/endpoint/ep0
Preset 32_1_1
Configuration.**>0: len 0x02 type 0x01
Configuration.Sampling Frequency: 32 Khz (0x06)
Configuration.**>1: len 0x02 type 0x02
Configuration.Frame Duration: 7.5 ms (0x00)
Configuration.**>2: len 0x03 type 0x04
Configuration.Frame Length: 60 (0x003c)
Example List all available presets for local endpoint:
>presets /local/endpoint/ep0
Example List all presets for another endpoint:
>presets /local/endpoint/ep1
Example using UUID:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 32_1_1
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06
*32_1_1
Example List all LC3 sink presets:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06
Example List all LC3 source presets:
>presets 00002bcb-0000-1000-8000-00805f9b34fb 0x06
Example List all broadcast source presets:
>presets 00001852-0000-1000-8000-00805f9b34fb 0x06
Example List all broadcast sink presets:
>presets 00001851-0000-1000-8000-00805f9b34fb 0x06
Example Show details for 48kHz stereo preset:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 48_2_1
Example Show details for 24kHz mono high-quality preset:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 24_1_2
Example Show details for 16kHz mono preset:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 16_1_1
Example setting up LC3 custom preset:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 custom
>[Codec] Enter frequency (Khz): 48
>[Codec] Enter frame duration (ms): 10
>[Codec] Enter channel allocation: 3
>[Codec] Enter frame length: 100
>[QoS] Enter Target Latency (Low, Balance, High): Low
>[QoS] Enter SDU Interval (us): 1000
>[QoS] Enter Framing (Unframed, Framed): Unframed
>[QoS] Enter PHY (1M, 2M): 2M
>[QoS] Enter Max SDU: 200
>[QoS] Enter RTN: 3
>[QoS] Enter Max Transport Latency (ms): 10
>[QoS] Enter Presentation Delay (us): 20000
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06
*custom
Example setting up LC3 custom preset with extra configuration:
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06 custom “0x03 0xe8 0x00 0x00 0x02 0xe9 0x00”
>[Codec] Enter frequency (Khz): 48
>[Codec] Enter frame duration (ms): 10
>[Codec] Enter channel allocation: 3
>[Codec] Enter frame length: 100
>[QoS] Enter Target Latency (Low, Balance, High): Low
>[QoS] Enter SDU Interval (us): 1000
>[QoS] Enter Framing (Unframed, Framed): Unframed
>[QoS] Enter PHY (1M, 2M): 2M
>[QoS] Enter Max SDU: 200
>[QoS] Enter RTN: 3
>[QoS] Enter Max Transport Latency (ms): 10
>[QoS] Enter Presentation Delay (us): 20000
>presets 00002bc9-0000-1000-8000-00805f9b34fb 0x06
*custom

RESOURCES🔗

http://www.bluez.org

REPORTING BUGS🔗

linux-bluetooth@vger.kernel.org