---
name: "bluetoothctl-endpoint"
section: "1"
platform: "linux"
package: "bluez-utils"
version: "5.87-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/bluetoothctl-endpoint"
---

# bluetoothctl-endpoint(1)

Endpoint Submenu

## Name

bluetoothctl-endpoint - Endpoint Submenu

## SYNOPSIS

**bluetoothctl** \[--options\] \[endpoint.commands\]

This submenu manages media endpoints for audio streaming using the **[org.bluez.MediaEndpoint(5)](/org.bluez.MediaEndpoint/5.md)** and **[org.bluez.Media(5)](/org.bluez.Media/5.md)** 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)](/org.bluez.MediaEndpoint/5.md)** 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)](/org.bluez.Media/5.md)** 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)](/org.bluez.Media/5.md)** 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)](/org.bluez.MediaEndpoint/5.md)** 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\>

## Copyright

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