Music assistant no artwork on TV

Hi all,
I’m new to Home Assistant.
I set up Music Assistant integration. I successfully shared the music folder from my Windows 10 PC to the HA. I configured the Denon receiver as player via DLNA.

The issue I have is when music is playing in HA via DLNA to my Denon receiver, I don’t see the artwork/album cover and artist/track name on TV that is connected to the receiver. I have a NOW PLAYING screen with the default Music Assistant black screen with the MA logo instead of the artist name/track name and artwork of the currently playing music

I’m running HAOS on a mini PC. It is up-to-date:

  • Core 2025.3.3
  • Supervisor 2025.03.3
  • Operating System 14.2
  • Frontend 20250306.0
    I have a Denon X1400H Receiver and Samsung smart TV. I also have a Win 10 PC.

When music is playing I am able to see the (currently playing) artwork (album cover) in the dashboard - both with Maxi Media Player card (see screenshot) and also with the regular Media Player card.
I also see the artwork in the currently playing playlist in Music Assistant.

Is it possible to configure DLNA/Music Assistant/Denon receiver send artwork to the TV when music is playing? If so, how?

Let me know what logs should I share

Thanks in advance!!

When you’re playing dlna on that player. Do any of the other media player entities that are the same device from another lens have the album art you’re looking for?

I’m not sure what you mean by “from another lens” but I have both Denon Heos integration and Denon AVR Network Receivers integration. Maybe that’s the problem?

There are three entities:

  1. media_player.denon_avr_x1400h, integration: Denon AVR Network Receivers

  2. media_player.denon_avr_x1400h_heos, integration: Denon HEOS

  3. media_player.denon_avr_x1400h_2, integration: Music Assistant

When music is playing, all three are in state of playing (see screenshot)

Using media_player.denon_avr_x1400h_2 entity I can see the artwork displayed in the Dashboard

Ok that’s what I suspected.

So, your setup similarly to me - (I have Denon gear, I suspected this was the case, but I don’t use its DLNA player a lot so I didn’t know what you were seeing…)

Remember your front end does NOT have to be what your scripts and things ACTUALLY use. What I did was set up a Universal media player: Universal media player - Home Assistant that represents what’s actually happening in my stack.

then setup something like this (this is an early version of my living room universal… it’s WAY complicated now - this should get you started.

#Custom Media Player for Living Room
media_player:
  - platform: universal
    name: Living Room Denon AVR
    unique_id: UUID---
    device_class: receiver
    children:
      - media_player.denon_avr_s940h  # Replace with your Denon AVR entity ID
      - media_player.denon_avr_s940h_2 # Replace with your HEOS entity ID
      - media_player.living_room_tv   # Replace with your TV entity ID
      - media_player.living_room_voice_assistant_media_player # Replace with your Voice Assistant entity ID
      - media_player.spotify  # Replace with your Spotify entity ID
    state_template: >
      {% if is_state_attr('media_player.denon_avr_s940h', 'source', 'HEOS Music') %}
        {{ states('media_player.denon_avr_s940h_2') }}
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'TV Audio') %}
        {% if is_state_attr('media_player.living_room_tv', 'source', 'Spotify') %}
          {{ states('media_player.spotify') }}
        {% else %}
          {{ states('media_player.living_room_tv') }}
        {% endif %}
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'CBL/SAT') %}
        {{ states('media_player.living_room_voice_assistant_media_player') }}
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'Friday') %}
        {{ states('media_player.living_room_voice_assistant_media_player') }}
      {% else %}
        {{ states('media_player.denon_avr_s940h') }}
      {% endif %}
    active_child_template: >
      {% if is_state_attr('media_player.denon_avr_s940h', 'source', 'HEOS Music') %}
        media_player.denon_avr_s940h_2
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'TV Audio') %}
        {% if is_state_attr('media_player.living_room_tv', 'source', 'Spotify') %}
          media_player.spotify
        {% else %}
          media_player.living_room_tv
        {% endif %}
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'CBL/SAT') %}
        media_player.living_room_voice_assistant_media_player
      {% elif is_state_attr('media_player.denon_avr_s940h', 'source', 'Friday') %}
        media_player.living_room_voice_assistant_media_player
      {% else %}
        media_player.denon_avr_s940h
      {% endif %}
    commands:
      turn_on:
        service: media_player.turn_on
        data:
          entity_id: media_player.denon_avr_s940h
      turn_off:
        service: media_player.turn_off
        data:
          entity_id: media_player.denon_avr_s940h
      volume_up:
        service: media_player.volume_up
        data:
          entity_id: media_player.denon_avr_s940h
      volume_down:
        service: media_player.volume_down
        data:
          entity_id: media_player.denon_avr_s940h
      volume_mute:
        service: media_player.volume_mute
        data:
          is_volume_muted: "{{ not state_attr('media_player.denon_avr_s940h','is_volume_muted') }}"
        target:
          entity_id: media_player.denon_avr_s940h
      select_source:
        service: media_player.select_source
        data:
          entity_id: media_player.denon_avr_s940h
          source: "{{ source }}"
      select_sound_mode:
        service: media_player.select_sound_mode
        target:
          entity_id: media_player.denon_avr_s940h
        data:
          sound_mode: "{{ sound_mode }}"
    attributes:
      sound_mode: media_player.denon_avr_s940h|sound_mode
      sound_mode_list: media_player.denon_avr_s940h|sound_mode_list
      source: media_player.denon_avr_s940h|source
      source_list: media_player.denon_avr_s940h|source_list
      volume_level: media_player.denon_avr_s940h|volume_level
      is_volume_muted: media_player.denon_avr_s940h|is_volume_muted

Functionally I make scripts and whatever work with what they’re going to, but THIS is what I Actually show on the front end… This way if my spouse walks up to it and hits a button it works no matter what. So if I need the album art - I pull it from the entity/attribute that has and stuff it into the attribute in this universal. The version posted above doesn’t do that for the art, but each of those attributes should be able to be templated so it can ‘figure out’ what’s what based on state and show one single view of what’s going on. I’ve found it’s good to define one of these anytime you have a bunch of gear people in your home consider ‘one unit’ but in your case you’re just grabbing the data from another angle or ‘lens’

I added Universal media player to my configuration.yaml but unfortunately it didn’t change anything.
Artwork on the TV is still not displaying.

You have to configure yojr own media player to grab the right stuff. How did you set it up?

I put this code chunk in config yaml:

media_player:
  - platform: universal
    name: Denon AVR
    unique_id: denon_universal_remote
    device_class: receiver
    children:
      - media_player.denon_avr_x1400h       # Denon AVR Integration entity
      - media_player.denon_avr_x1400h_heos  # Denon HEOS Integration entity
    browse_media_entity: media_player.denon_avr_x1400h_heos
    commands:
      turn_off:
        action: media_player.turn_off
        data:
          entity_id: media_player.denon_avr_x1400h
      turn_on:
        action: media_player.turn_on
        data:
          entity_id: media_player.denon_avr_x1400h
      volume_up:
        action: media_player.volume_up
        data:
          entity_id: media_player.denon_avr_x1400h
      volume_down:
        action: media_player.volume_down
        data:
          entity_id: media_player.denon_avr_x1400h
      select_sound_mode:
        action: media_player.select_sound_mode
        target:
          entity_id: media_player.denon_avr_x1400h
        data:
          sound_mode: "{{ sound_mode }}"
    attributes:
      sound_mode: media_player.denon_avr_x1400h|sound_mode
      sound_mode_raw: media_player.denon_avr_x1400h|sound_mode_raw
      sound_mode_list: media_player.denon_avr_x1400h|sound_mode_list

And none of those attributes override the artwork.

You’ll need to look at one of the players (the x400) while it’s running (in dev tools) and look at it’s attributes (check out a Spotify player they’re wild) one of them will be the art.

You can then assign the other value to the dame attribute in your universal.

You can make it switch artwork if you change source by using conditionals etc.

Think through. Ok im in this mode what is going on. This one has this. That one has that. And assemble the attributes make sure they display.

When the attributes are populated the player takes on those attributes and out pops the result - in this case artwork.