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/ep0Preset 32_1_1Configuration.**>0: len 0x02 type 0x01Configuration.Sampling Frequency: 32 Khz (0x06)Configuration.**>1: len 0x02 type 0x02Configuration.Frame Duration: 7.5 ms (0x00)Configuration.**>2: len 0x03 type 0x04Configuration.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