App version
Production
Issue description
Summary
Symfonium never shows album art on a BMW IDrive (eDrive 8.5) head unit connected via Bluetooth. Other players work fine.
Description
Hi, been using Symfonium for the last two years with as my Jellyfin/Local music player. I have gotten recently a new car with an infotainment system that works from Bluetooth.
When connected to it, the player is able to see the track name, the album and the artists; it is also able to skip and go back a song, and it provides a shuffle button which doesn’t work. But, what I am more concerned about is actually the Cover Art. It does not display it no matter what. This was doubly strange, has, if I played the same songs through my phone’s default music app (Samsung Music, which I installed when debugging), the Cover Art would be present.
Do note, this has always been a problem. I have used Symfonium with a bunch of different cars, not all of which had fancydandy infotainment systems, but the ones that did, never shown the Cover Art.
I have gone through extensive debugging the past few days to try and figure out if there was something I could do from my side, but it seems to be deeply related with either the Samsung’s Bluetooth Stack, Symfonium’s Media Session/player registration or both.
Quick reference
This support ticket was originally based on ticket Missing Bluetooth Album Art/Metadata , but then went off the freaking rails… xd sorry for the long description below
Environment and “Toggled” settings
Environment
- Samsung S24 Ultra with latest Android Update
- Symfonium Production with latest update
- BMW IDrive 8.5 with latest update
- AVRCP at 1.6
- “Expose media sessions queue” setting turned on on Symfonium
- Main media library streamed or cached from Jellyfin
Connection made through Bluetooth. Android Auto was an option but I am not intentionally using it, as I want to use the car’s own “Interface”
“Toggled” Settings
So, I have tried:
- All AVRCP versions available;
- Toggling “Expose media sessions queue”
- Toggling “Disable Media session restoration”
- Re-pairing Bluetooth with the car on each setting change
- Playing music from Local Provider, Streamed fromJEllyfin and Cached from Jellyfin.
- A bunch of other random stuff that I don’t recall to be honest xd
My theory
Preface
So, as I said, I went deep on trying to debug this. I can’t read the logs from the side of the vehicle, and as such I can’t 100% say that the Cover Art missing is caused by situations A,B or C, but I can see what my phone is doing/sending and what my Car is requesting and Receiving… so my educated guess is but that.
I know for a fact why the car shows no Cover Art, I don’t know the mechanisms for this failure and that’s what I want to see with you guys.
What I know is failing.
When using Symfonium as the media player, while the connection is registered as OBEX-able, the car makes no requests for Cover Art, nor does it ever open an OBEX channel.
This is in contrast of other media players, where, when a playback is started, a few milliseconds after an OBEX request from the car is made for the Art, for which the phone responds with the address and then a channel for transmitting said art is opened.
Suspected cause for the missing OBEX channel
When I restart my phone’s Bluetooth, the AVRCP Target service starts, which lists the available media players on my device, which would be at the time of testing Samsung Music Player, VLC and Symfonium. All of these have similar described capabilities (AVRCP 1.6 player bitmask bits), including the Cover Art one, but they have a two different ones. Samsung Music player as both the “Browsing” and the “NowPlaying” bits as true while Symfonium has them at false.
This appears to be relevant because of how my car is accessing metadata. When communicating with my phone, the car requests metadata from Samsung Music Player as:
- RX&TX SetBrowsedPlayer player=
- RX&TX GetItemAttributes scope=3(Now Playing) which contains the typical metadata BUT ALSO an attr bit 0x08 for COVER_ART_HANDLE
- TX Browse COVER_ART_HANDLE=
- RX OBEX GET … the image
When Using Symfonium instead, the car never communicates through the Browser Channel, but through generic AVRCP commands:
- RX AVRCP GetElementAttributes attrs=TITLE,ARTIST,ALBUM,TRACK#,NUMTRACKS,GENRE,DURATION
- TX AVRCP … TITLE=‘Sultry Night’ ARTIST=‘Kenichiro Nishihara’ ALBUM=‘Sincerely…’
This might be relevant as AVRCP GetElementAttributes never references 0x08 AKA the Cover Art handle (I assume it’s just the normal behavirour for GetElementAttributes, which differs fromthe GetItemAttributes).
So my theory is as follows: The car does not show any Cover Art from Symfonium, because it never requests any to begin with. It doesn’t request the art from Symfonium, because it can only request said cover art from a Browsable Player, which, for some reason, Symfonium is not.
< I hit the char limit of th>
Device type
Phone
Media provider
All
Steps to reproduce
The steps to reproduce the problem are simple:
- Play music over bluetooth.
What’s more interesting is the steps I have taken to try to debug this (from which the debug logs I have provided originated:
- Kill all media players running
- Restart Bluetooth
- Connect to car
- Play local music on Samsung Music Player, skipping songs around
- Kill Samsung Music Player, open Symfonium
- Play the exact same local music on Symfonium, skipping songs around
- Kill Symfonium
(This test started at 20:32 local time)
When playing through Samsung, Cover Art was uploaded to the car’s infotainment. When using Symfonium, no cover art was present on the infotainment
Additional information
< Continuing the Issue Description text box>
Used tools
I have gathered the Symfonium Debug logs, the Android report enriched with the Bluetooth stack trace.
I have analyzed the debug logs through greps for keywirds such as AVRCP, OBEX, BIP, COVER,…
I h ave analyzed the Bluetooth trace through Wireshark my nemesis.
I will provide all of the above. The Android Report will be limited to the grepped version of itself because: 1-it’s gigantic, 2- contains too much info to be shared publically.
Expected solution and questions
First, questions, are you guys expecting Symfonium “not to be” Browsable on AVRCP?
It does feel like BMW decided that they only wanted to grab Cover Art through Browsable media players, ignoring the fact that even on it’s not browsable state, Symfonium does advertise the Cover Art attibute as a capability when the media session is registered. It is also strange that Symfonium can and techically receives extra calls such as the Shuffle command from the infotainment system, but decides to ignore them? Something seems wrong but I cannot say what, or better, where.
I hope that Symfonium is able to be “Browsable” so that I can see the cover arts <3
Final remarks
I tried to be as brief as possible. English is not my first language so I might just not be able to do it better then this. I have uploaded the logs files described above, but please ask for more. I would really love to not need to go back to Samsung Music and local only files just for the Cover Art of my car.
Also, after coming up with my thesis, I asked Gemini to read through the same logs as I will provide you, to come up with a thesis of it’s own. I tried my best to avoid “poisoning the well” as much as possible (although no approach is perfect when I give the machine pre-grepped logs). It came up with the same conclusing as me: “Symfonium not appearing Browsable appears to be the key distinction, the reason for that being is unknown”.
I wasn’t fully satisfied, so I asked a friend with Claude’s expensive subscription to take an handover from Gemini with the same logs. Claude also came up with the same thesis, although it did analysis a bit further then I did. While I don’t know your stances on LLMs being used on debugging,i can assure you everything I wrote above were my own findings, but I believe that Claude was more eloquent then myself on explaining them, as such I will also provide that conversation. Please do not crucify me I just want my covers >.< . If LLM stuff is frowned upon, just ignore it but please address my findings anyways.
I searched existing issues first
on
I understand that logs are mandatory
on
Log upload name / description
Symfonium never shows album art on a BMW IDrive (eDrive 8.5) head unit connected via Bluetooth. Other players work fine.