Why doesn't org.bluez.MediaPlayer1 appear when my Raspberry Pi connects to my iPhone via Bluetooth?
0
votes
0
answers
17
views
I'm using a Raspberry Pi with BlueZ 5.66 and Linux 6.6. I want to use the Pi as a Bluetooth audio sink (A2DP) and AVRCP controller so I can stream audio from an iPhone and control playback (play/pause/next/etc) via D-Bus using the
org.bluez.MediaPlayer1
interface.
This works correctly when the iPhone initiates the Bluetooth connection to the Pi. I can see the MediaPlayer1
interface under the device path on D-Bus, and playback control works.
However, if I initiate the connection from the Pi using:
bluetoothctl connect XX:XX:XX:XX:XX:XX
…the connection succeeds, but org.bluez.MediaPlayer1
never appears. Even if I start playback on the iPhone afterward, the interface is still missing.
I'm using BlueZ as the Bluetooth stack and BlueALSA for audio. I'm not using PulseAudio and would prefer to avoid it due to its complexity. From what I understand, MediaPlayer1
is exposed by BlueZ when acting as an AVRCP controller and detecting a remote media player. Is there a way to force or trigger org.bluez.MediaPlayer1
to appear when the Pi initiates the Bluetooth connection to the iPhone? Are there any known limitations, timing issues, or configuration-based workarounds that would allow this to work more reliably (ideally without switching to PulseAudio)?
**Steps to reproduce:**
1. Pair and trust the iPhone:
bluetoothctl
power on
agent on
default-agent
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
2. Start music playback on the iPhone.
3. Check D-Bus for /player0
:
busctl tree org.bluez
**Expected:**
A /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/player0
path should appear, with org.bluez.MediaPlayer1
exposed.
**Actual:**
That path and interface only appear if the iPhone initiates the Bluetooth connection to the Pi. They never appear if the Pi initiates the connection.
Asked by joeyvanlierop
(1 rep)
Jul 28, 2025, 07:05 PM