org.bluez.Media(5)

✨ org.bluez.Media ✨

okay so bestie, this is the BlueZ D-Bus Media API documentation β€” it's the org.bluez.Media page from the Linux System Administration section, and it's literally the blueprint for how media endpoints and media players get registered over D-Bus. buckle up πŸŽ€


πŸ’… Interface

here's the whole vibe check for this interface, no cap:

  • Service β€” org.bluez
  • Interface β€” org.bluez.Media1
  • Object path β€” [variable prefix]/{hci0,hci1,...}
  • Used by β€” bluetoothctl-endpoint(1)

πŸ¦‹ Methods

void RegisterEndpoint(object endpoint, dict properties)

Registers a local end point to the sender β€” and bestie, the sender can register as many end points as it wants. iconic behavior honestly πŸ‘‘

⚠️ Note: if the sender disconnects, the end points get automatically unregistered. so don't ghost the bus, okay? 😭

possible properties:

  • string UUID β€” the UUID of the profile this endpoint is for. heads up: the UUID must be in the list of SupportedUUIDs.
  • byte Codec β€” the assigned number of the codec that the endpoint implements. these values should match the profile specification that's indicated by the UUID.
  • uint32_t Vendor [Optional] β€” the vendor-specific Company ID, Codec ID tuple that the endpoint implements. it shall be set to the appropriate value when Vendor Specific Codec (0xff) is used.
  • array{byte} Capabilities β€” the capabilities blob. it's used as-is, so the size and byte order must match.
  • array{byte} Metadata [Optional] β€” the metadata blob. also used as-is, so again the size and byte order must match.

Possible Errors:

  • org.bluez.Error.InvalidArguments
  • org.bluez.Error.NotSupported β€” emitted when the interface for the end-point is disabled

Examples:

bluetoothctl

> endpoint.register <UUID> <codec[:company]> [capabilities...]

void UnregisterEndpoint(object endpoint)

Unregisters the sender's end point. bye bestie πŸ‘‹

Examples:

bluetoothctl

> endpoint.unregister <UUID/object>

void RegisterPlayer(object player, dict properties)

Registers a media player object to the sender β€” and yeah, the sender can register as many objects as it likes, go off πŸ’…

The object must implement at least org.mpris.MediaPlayer2.Player as defined in the MPRIS 2.2 spec:

http://specifications.freedesktop.org/mpris-spec/latest/
⚠️ Note: if the sender disconnects, its objects are automatically unregistered.

Possible Errors:

  • org.bluez.Error.InvalidArguments
  • org.bluez.Error.NotSupported

void UnregisterPlayer(object player)

Unregisters the sender's media player. simple as that 🫢


void RegisterApplication(object root, dict options)

Registers endpoints and player objects within the root object, which must implement org.freedesktop.DBus.ObjectManager.

The application object path, together with the D-Bus system bus connection ID, define the identification of the application. iykyk πŸ”₯

Possible errors:

  • org.bluez.Error.InvalidArguments
  • org.bluez.Error.AlreadyExists

void UnregisterApplication(object application)

This unregisters the services that have been previously registered.

The object path parameter must match the same value that was used on registration β€” no switching it up on us πŸ™ˆ

Possible errors:

  • org.bluez.Error.InvalidArguments
  • org.bluez.Error.DoesNotExist

🌸 Properties

array{string} SupportedUUIDs [readonly]

A list of 128-bit UUIDs that represents the supported Endpoint registration. the whole guest list, basically πŸ’–

array{string} SupportedFeatures [readonly]

A list of strings that represent supported special features.

Possible values:

  • "tx-timestamping" β€” Bluetooth TX timestamping in media stream sockets is supported by BlueZ and the kernel. Applications may check kernel support for specific timestamp types via SIOCETHTOOL.

and that's the whole page, bestie, you ate that πŸ“

πŸ’œ BlueZ Β· April 2025 Β· org.bluez.Media(5) πŸ’œ β€” mwah, go slay some endpoints βœ¨πŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from