BLUETOOTHCTL-ENDPOINT(1)

πŸ’– bluetoothctl-endpoint πŸ’–

okay so bestie, this is the BLUETOOTHCTL-ENDPOINT(1) page from the BlueZ manual β€” the Linux System Administration one β€” and we are about to make media endpoints make sense. It's giving β€œaudio streaming admin but make it cute” ✨


πŸŽ€ NAME πŸŽ€

bluetoothctl-endpoint β€” Endpoint Submenu. That's the name, and honestly it ate πŸ’…


🌸 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. No cap, that's the whole vibe πŸ¦‹


🎧 ENDPOINT COMMANDS 🎧

🫢 list 🫢

List available endpoints. Iconic. Let's see what's in the group chat πŸ‘‘

Usage:

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. It's giving β€œtell me everything” πŸ’β€β™€οΈ

Usage:

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. This is where you make it official, bestie πŸŽ€

Usage:

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. Time to leave the group chat, respectfully πŸ™ˆ

Usage:

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. No sneaky bypass, bestie 😭

🫢 config 🫢

Configure Endpoint. Matchmaker, matchmaker, make me a match πŸ’˜

Usage:

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. The audio server has main character energy here πŸ’…

🫢 presets 🫢

List available presets. This is the preset menu and it is lowkey huge, so buckle up 🎒

Usage:

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 β€” the BlueZ home base, bestie πŸ¦‹


πŸ› REPORTING BUGS πŸ›

linux-bluetooth@vger.kernel.org β€” send the bug reports here, no cap πŸ’Œ


Free use of this software is granted under the terms of the GNU Lesser General Public Licenses (LGPL). Respect the license and slay responsibly πŸ‘‘


okay bye bestie β€” this was BLUETOOTHCTL-ENDPOINT(1) from the BlueZ manual, source/version BlueZ, dated November 2022. Periodt πŸ’…βœ¨

πŸ“¦ where this page comes from