WiiM/LinkPlay Integration - Beta Release

Hey everyone! I’ve been working on an integration for WiiM and LinkPlay audio devices. It’s now in beta and ready for testing if you’re interested.

What is this?

This integration adds support for WiiM speakers (Mini, Pro, Pro Plus, Amp, Ultra) and other LinkPlay-compatible devices to Home Assistant. It focuses on making multiroom audio easier to manage.

Key Features

  • Multiroom audio with role detection (shows if speakers are grouped)
  • Virtual group player - single entity appears when you group speakers
  • EQ presets - switch between sound modes like Rock, Jazz, Classical
  • Media browser for presets and custom radio stations
  • Auto-discovery of devices on your network

Installation

Via HACS:

  1. Add custom repository: https://github.com/mjcumming/wiim
  2. Search for “WiiM Audio” and install

Manual: Download and extract to /config/custom_components/wiim/

Basic Setup

After installation, the integration should find your speakers automatically. If not, you can add them manually with their IP address.

Each speaker gets:

  • A media player entity
  • A role sensor (shows Solo/Master/Slave status)
  • A group coordinator entity when grouped

Looking for Feedback

This is a beta release, so I’m particularly interested in:

  • Multiroom grouping stability
  • Any devices that don’t work properly
  • Missing features you’d like to see
  • General bugs or issues

Documentation

Feel free to ask questions here or open issues on GitHub. Thanks for trying it out!

2 Likes

HI, thanks and this is one of multiple integrations that cover Linkplay/WiiM ( I only have WiiM ) and since there is also a Core integration with the same goals, why would people use this one and not the Core? Maybe a small comparison might help?

Here’s a quick comparison:

This integration focuses on:

  • Virtual group players - When you group speakers, a single media player entity appears to control the whole group
  • Better multiroom visibility - Role sensors show which speakers are Solo/Master/Slave
  • EQ control - Switch between presets (Rock, Jazz, etc.)
  • Quick Stations - Easy access to custom radio URLs via media browser
  • No external library dependencies

Both work well - this one just adds some quality-of-life features for multiroom users. Since you have WiiM devices, you could try both and see which workflow you prefer.

Thanks for the update, I only have 1 WiiM which I use as transport to my DAC so the Core part is sufficient for me, which btw does cover EQ (only for WiiM). I may try it for radio bit :slight_smile:

Just wanted to say thanks for sharing this integration. I have a bunch of Arylic devices and the core integration never showed the group status correctly when I synced my speakers through the 4stream app. In your integration it updates correctly which is amazing. Also because of this issues in the core integration pairing speakers through music assistant did not work correctly. Have not tried it yet with this integration but I hope it solves it.

The only thing that did not work for me was toggeling the Led on Arylic devices which is not a huge deal.

Thanks for the great work!

Edit: I just tried it with Music Assistant but for some reason only one media player from the Homeassistant Player Provider shows up. When I delete that specific player in the provider, another one shows up.

On the current beta of Music Assistant I am seeing all 3 of my WiiM players - are you still having this issue? If so, please open an issue on github,

1 Like

Hi, not sure if known to you but the WiiM/LP company have initiated a complete new integration for WiiM in Core. No clue how much time it will take untill it gets reviewed/accepted…still… good to know I guess

1 Like

I just tried again and the issue persists win the main add-on as well as the beta. I opened an issue on github with more information.

Hey guys, can’t seem to find this functionality but does anyone know if this supports “Announcements” or at-least TTL from HomeAssistant to anything on the WiiM side?

I assuming if you can do a media_player.play_media to any of these WiiM devices you can forward anything from Homeassistant? (e.g. Creating a TTL then forwarding the URL to that message to be spoken aloud)

I also noticed there’s no “Discussion” tab enabled for the Github repo: GitHub - mjcumming/wiim: WiiM (LinkPlay) Audio Integration for Home Assistant with multiroom support

Hello, looks great so far! One thing I miss from the Linkplay integration method is the output audio hardware. I frequently have to change from Optical to Line In and it would be good to have that capability.

@mjcumming I built something for the Linkplay/Core integration, the devs ‘forced’ me to create this as a sensor, you can have a look there if you want to add it. I would normally be happy to raise a PR but I myself am not spending time until I know how the new core-wiim integration looks like, there is movement but it takes time (as most in core)

just want to say thank you. You should spread the word in the simon42 community because many people don’t know that you can use it to create a multiroom system with inexpensive speakers.

I have some issues:
1.) FritzBox (DSL Router with integrated DLNA Server) is detected as WiiM device but cannot be activated. (no idea why this is detected as WiiM device)
2.) have two media players with my speaker. One is working the other one not available

1 Like

Hi All, I don’t check here too often so apologize for no response - best is to post an issue on github.

Latest Updates:

Transform your WiiM and LinkPlay speakers into powerful Home Assistant media players with full multiroom support. Built on the brand new, fully async pywiim library we wrote for reliable, high-performance device communication.

Why Choose This Integration?

  • :musical_note: Complete Media Control - Full transport controls, volume, sources, presets, TTS, and media browsing
  • :link: True Multiroom - Uses Home Assistant’s native grouping for reliable synchronized playback
  • :zap: Powered by pywiim - Built on the brand new, fully async pywiim library we wrote for robust, high-performance device communication
  • :rocket: Auto-Discovery - Finds speakers automatically via UPnP/SSDP/Zeroconf
  • :iphone: Universal Compatibility - Works with all Home Assistant dashboards, voice assistants, and media sources
  • :zap: Hybrid State Updates - UPnP events for real-time updates + HTTP polling for reliability
  • :control_knobs: Advanced Audio - 10-band EQ, audio quality sensors, output mode control, and format support
  • :alarm_clock: Timer & Alarms - Sleep timer and alarm management for WiiM devices
  • :bar_chart: Rich Diagnostics - Comprehensive statistics, health monitoring, and troubleshooting tools
  • :arrows_counterclockwise: Scene Support - Full scene restoration including EQ presets and playback state
  • :dart: Smart Features - Optimistic UI updates, adaptive polling, and intelligent source detection

Supported Devices

  • WiiM: Mini, Pro, Pro Plus, Amp, Ultra
  • LinkPlay Compatible: Arylic, Audio Pro (including Gen1: A26, C10, C5a and MkII models), Dayton Audio, DOSS, and many more
  • Enhanced Compatibility: Automatic protocol fallback for devices with non-standard configurations
  • Requirements: Home Assistant 2024.12.0+ on same network as speakers

Quick Start

1. Install via HACS (Recommended)

  1. Find in HACS: HACS → Integrations → Search “WiiM Audio”
  2. Install: Download → Restart Home Assistant
  3. Configure: Settings → Devices & Services → Add Integration → “WiiM Audio”

2. Manual Installation

  1. Download latest release
  2. Extract to /config/custom_components/wiim/
  3. Restart Home Assistant and add integration

Key Features

:musical_note: Media Playback & Control

Feature Description
Media Control Play, pause, stop, next/previous, seek with resume support
Volume Control Individual and synchronized group volume with debouncing
Smart Sources Detects streaming services (Spotify, Amazon Music, Apple Music, etc.)
Media Browser Browse Home Assistant media sources, DLNA servers, and custom radio stations
TTS Support Full Text-to-Speech integration for all TTS engines (Google, Amazon, Azure, etc.)
Shuffle & Repeat Toggle shuffle and repeat modes for playlists
Presets Hardware preset buttons (device dependent, up to 20)
URL Playback Play audio from any URL (radio streams, files, playlists)

:control_knobs: Audio Enhancement

Feature Description
EQ Control 10-band equalizer with 24 presets (Flat, Rock, Jazz, Classical, Pop, etc.)
Custom EQ Fine-tune each of 10 frequency bands (-12dB to +12dB)
Audio Output Control hardware output modes (Line Out, Optical, Coax, Bluetooth, Headphone)
Audio Quality Real-time sensors for sample rate, bit depth, and bit rate
Format Support Lossless (FLAC, WAV, ALAC up to 24-bit/192kHz) and compressed formats

:house: Multiroom & Grouping

Feature Description
Multiroom Groups Synchronized playback across speaker groups with perfect timing
Group Coordinators Virtual entities for unified group control
Role Detection Automatic master/slave/solo role detection with sensors
Group Volume Synchronized volume control across all group members
Smart Grouping Uses Home Assistant’s native grouping for reliable sync

:alarm_clock: Timer & Alarm Features (WiiM Devices)

Feature Description
Sleep Timer Set sleep timer (0-7200 seconds) to automatically turn off device
Alarm Management Create and manage up to 3 alarms with daily/weekly schedules
Alarm Control Full alarm creation, update, and deletion via services

:bar_chart: Sensors & Diagnostics

Feature Description
Role Sensor Shows current multiroom role (Master/Slave/Solo)
Input Sensor Current audio input source
Audio Quality Sample rate, bit depth, and bit rate sensors
Diagnostic Sensor Comprehensive device health and statistics
Firmware Sensor Device firmware version tracking
Bluetooth Status Bluetooth output and connected device status

:wrench: Advanced Features

Feature Description
Auto-Discovery Finds speakers automatically via UPnP/SSDP/Zeroconf
Real-Time Updates UPnP event subscriptions for instant state changes with HTTP polling fallback
Scene Support Full scene restoration including EQ presets and playback state
Optimistic Updates Immediate UI feedback for all controls
Enhanced Diagnostics Comprehensive device diagnostics with statistics and health monitoring
Protocol Fallback Automatic HTTP/HTTPS protocol detection with multi-port fallback
Audio Pro Support Full support for Audio Pro MkII with mTLS client certificate authentication

How It Works

The integration uses a hybrid approach combining UPnP event subscriptions and HTTP polling for optimal reliability and responsiveness:

  • UPnP Events (Primary): Real-time state updates via DLNA DMR event subscriptions
    • Instant updates when device state changes (play/pause/volume/mute)
    • Reduces network traffic and improves responsiveness
    • Automatically falls back to polling if UPnP becomes unavailable
  • HTTP Polling (Fallback): Adaptive polling strategy ensures reliability
    • 1-second polling during active playback for position updates
    • 5-second polling when idle for resource efficiency
    • Always available as fallback if UPnP subscriptions fail
    • Gracefully handles network issues and device restarts

This dual approach ensures you get the best of both worlds: real-time responsiveness when UPnP is working, and reliable operation even when it’s not.

1 Like

@ mjcumming this is awesome, thanks!

I was wondering whether you might have any plans to add a LinkPlay player provider for music assistant based on pywiim? My sense is that for a real good music experience, the “best” strategy at the moment is to have a player provider in MA and then it will show up in HA automatically as a MA player.

1 Like

@mjcumming I was using the media_content_id attribute that was introduced in V 1.0.33 to identify internet radio stations and found this very useful. This attribute has disappeared. Any chance to bring it back?

Thanks.

Can this pickup “Standby” status? Trying to automate something which requires the WiiM Ultra to be placed into Standby but HA can only pick up the following status - t’s turn on, turn off, becomes idle, starts buffering, is paused, starts playing, restart has been pressed

Yeah I’m really not sure what is best practice to set all of this up, as I seem to end up with multiples and overlap. Do I disable the built in Linkplay integration completely and just have this one, or is it best to have both running? Do entity or group related settings in MA then duplicate HA?

Separately to the above, I’ve got an ongoing frustration with some Linkplay speakers that are battery powered, but even if plugged in they go to sleep/standby and need a physical push on the on button to turn back on. Really annoying, and I’m not sure if there’s anything that can be done about it? Also causes endless refresh and log errors in HA as the devices come and go.

Further to the above, I came across this that suggests the MA Wiim/Linkplay integration will be separate to this integration or the underlying library.

I tested your component on my Arylic streamers, and when playing Spotify, the player doesn’t display cover art (just like with the official integration). Is this expected behavior?

A long time ago, the nagyrobi integration handled this functionality.