BLUETOOTHCTL-TRANSPORT(1)
π bluetoothctl-transport β the media transport submenu, bestie edition
okay so real quick: this is bluetoothctl-transport(1) from the Linux System Administration manual, and it's literally the page that explains the little submenu where you manage media transports for audio streaming. You're gonna be living inside org.bluez.MediaTransport(5) energy the whole time, so buckle up π
β¨ NAME β¨
bluetoothctl-transport β the Media Transport Submenu, aka where the audio magic happens π§
πΈ SYNOPSIS πΈ
bluetoothctl [--options] [transport.commands]
This submenu is the one that manages media transports for audio streaming, and it does it all through the org.bluez.MediaTransport(5) interface. no cap, that's the whole vibe π
π¦ MEDIA TRANSPORT COMMANDS π¦
π list β bestie, show me what we got
Lists all the available transports. That's it. That's the command.
Usage
> list
Example β display every available media transport (A2DP, LE Audio, all of them, the whole lineup β¨)
> list
β show β info dump, but make it cute
Shows you the transport information. It's pulling from the org.bluez.MediaTransport(5) properties, iykyk.
Usage
> show [transport]
Uses β org.bluez.MediaTransport(5) properties
[transport]β a specific transport object path (optional, and if you omit it, it just shows the current one, no biggie)
Example β show info for the currently selected transport
> show
Example β show transport information
> show /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β show a Broadcast Isochronous Stream transport π
> show /org/bluez/hci0/dev_11_22_33_44_55_66/bis1
π₯ acquire β claim it, it's yours now
Acquires the transport. Like, actually grabs it for audio streaming.
Usage
> acquire <transport> [transport1...]
Uses β org.bluez.MediaTransport(5) method Acquire
<transport>β the media transport object path you wanna acquire for audio streaming[transport1...]β extra transport paths for multi-stream acquisition (optional, but slay if you need it)
Example β acquire a transport
> acquire /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β acquire multiple transports at once, main character energy
> acquire /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 /org/bluez/hci0/dev_00_11_22_33_44_55/fd1
Note:
If you're running the setup with an audio server that has LE Audio support (think PipeWire), it will automatically acquire transports according to the configured roles. so you might not even have to lift a finger π
π select β for Broadcast Sink devices only, periodt
Selects a transport. Only for transports created on a Broadcast Sink device. This moves the transport into the "broadcasting" state, pending acquire.
Usage
> select <transport> [transport1...]
Uses β org.bluez.MediaTransport(5) method Select
<transport>β broadcast sink transport path to move into the broadcasting state[transport1...]β additional transport paths for multi-stream selection (optional)
Example β select a single Broadcast Isochronous Stream
> select /org/bluez/hci0/dev_00_11_22_33_44_55/bis1
Example β select stereo broadcast streams πΆ
> select /org/bluez/hci0/dev_00_11_22_33_44_55/bis1 /org/bluez/hci0/dev_00_11_22_33_44_55/bis2
Note:
If the select command receives a list of transports, they will first be linked using the "Links" MediaTransport property. Then they get selected one by one, by calling the "Select" MediaTransport method. After the first transport is acquired, the Broadcast Sink will create fds for the associated stream and all its links. Each link can then be acquired one by one, setting the fd for the transport and starting to receive audio. iconic behavior fr fr π«Ά
The select command does not require a local endpoint to be registered beforehand. Why? Because if the setup runs with an audio server that has LE Audio support (such as PipeWire), the audio server is the one to register endpoints and the transports are created as a result. Once a transport is selected, the audio server will automatically acquire. teamwork makes the dream work β¨
π§ unselect β nah, put it back
Unselects a transport. Again, only for transports created on a Broadcast Sink device. This moves the transport to the "idle" state, pending release by the audio server. Lowkey important detail: if the transport was acquired by bluetoothctl it can be released straight away, without having to be unselected. handy π
Usage
> unselect <transport> [transport1...]
<transport>β broadcast sink transport path to move into the idle state[transport1...]β additional transport paths for multi-stream unselection (optional)
Example β unselect a broadcast stream transport
> unselect /org/bluez/hci0/dev_00_11_22_33_44_55/bis1
Example β unselect multiple broadcast streams
> unselect /org/bluez/hci0/dev_00_11_22_33_44_55/bis1 /org/bluez/hci0/dev_00_11_22_33_44_55/bis2
Note: If you're running the setup with an audio server that has LE Audio support (such as PipeWire), it will prompt it to automatically release the transport. very demure, very mindful π
π release β letting go (growth)
Releases the transport.
Usage
> release <transport> [transport1...]
Uses β org.bluez.MediaTransport(5) method Release
<transport>β media transport object path to release from audio streaming[transport1...]β additional transport paths for multi-stream release (optional)
Example β release a transport
> release /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β release multiple transports
> release /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 /org/bluez/hci0/dev_00_11_22_33_44_55/fd1
Note:
Transports acquired by an audio server can only be released by said audio server. No take-backsies from you, bestie. π
π send β file goes brrr
Sends the contents of a file. yes, literally.
Usage
> send <transport> <filename> [transport1...]
<transport>β media transport object path to send audio data through<filename>β path to the audio file to transmit (supportsWAV,MP3,PCMformats)[transport1...]β additional transport paths for multi-stream sending (optional)
Example β send an encoded audio file via a transport
> send /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 /home/user/music.<format>
Example β send to multiple transports simultaneously, absolute icon behavior
> send /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 /home/user/stereo-left.<format> /org/bluez/hci0/dev_00_11_22_33_44_55/fd1 /home/user/stereo-rigth.<format>
π¦ receive β get it or set it
Get/Set the file to receive.
Usage
> receive <transport> [filename]
<transport>β media transport object path to receive audio data from[filename]β path to save the received audio data (optional, shows the current one if you omit it)
Example β show the current receive file for a transport
> receive /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β set the file to receive audio data
> receive /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 /tmp/recorded_audio.wav
Example β set the file for broadcast audio capture (note the quotes, bestie, the space in the path is not playing games) π
> receive /org/bluez/hci0/dev_11_22_33_44_55_66/bis1 "/home/user/My Recordings/broadcast.wav"
π volume β turn it up
Get/Set the transport volume.
Usage
> volume <transport> [value]
Uses β org.bluez.MediaTransport(5) property Volume
<transport>β media transport object path to control the volume for[value]β volume level (0-127, optional, shows the current one if omitted)
Example β show the current volume level
> volume /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β set the volume to 100
> volume /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 100
π« metadata β the details, the lore
Get/Set Transport Metadata.
Usage
> metadata <transport> [value...]
<transport>β media transport object path[value...]β metadata value as a hex string (optional, shows the current one if omitted)
Example β show the current metadata for a transport
> metadata /org/bluez/hci0/dev_00_11_22_33_44_55/fd0
Example β set a metadata value
> metadata /org/bluez/hci0/dev_00_11_22_33_44_55/fd0 0x03020100
π RESOURCES π
http://www.bluez.orgβ the mothership πΈ
π REPORTING BUGS π
Got beef with a bug? Tell the whole class:
linux-bluetooth@vger.kernel.org
π COPYRIGHT π
Free use of this software is granted under the terms of the GNU Lesser General Public Licenses (LGPL). so yes, it's free, go off π
and that's the page!! this icon was brought to you by BlueZ, dated November 2022 β go stream some audio, bestie π§β¨π«Ά
π¦ where this page comes from
- centos-stream 9: bluez 5.87+2.git8750129efca8-1.el9 Β· GPLv2+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms