⭐ Love this integration? Please star us on GitHub if you use this integration! It helps others discover the project and shows your support for the development effort.
Transform your WiiM and LinkPlay speakers into powerful Home Assistant media players with full multiroom support. No additional dependencies required.
- 🏠 Native Integration - Built entirely within Home Assistant's framework
- 🎵 Complete Media Control - Full transport controls, volume, sources, presets
- 🔗 True Multiroom - Uses Home Assistant's native grouping for reliable sync
- ⚡ Zero Dependencies - No external Python packages needed
- 🚀 Auto-Discovery - Finds speakers automatically on your network
- 📱 Universal Compatibility - Works with all Home Assistant dashboards and voice assistants
- WiiM: Mini, Pro, Pro Plus, Amp, Ultra
- LinkPlay Compatible: Arylic, Audio Pro (including 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
- Add to HACS: Integrations → ⋮ → Custom repositories → Add
https://github.com/mjcumming/wiim
- Install: Search "WiiM Audio" → Download → Restart Home Assistant
- Configure: Settings → Devices & Services → Add Integration → "WiiM Audio"
- Download latest release
- Extract to
/config/custom_components/wiim/
- Restart Home Assistant and add integration
Feature | Description |
---|---|
Media Control | Play, pause, stop, next/previous, seek |
Volume Control | Individual and synchronized group volume |
Smart Sources | Detects streaming services (Spotify, Amazon Music, etc.) |
Audio Output | Control hardware output modes (Line Out, Optical, Coax, Bluetooth) |
Multiroom Groups | Synchronized playback across speaker groups |
Quick Stations | Custom radio station list in Browse Media |
EQ Control | 10-band equalizer with presets |
Presets | Hardware preset buttons (device dependent, up to 20) |
Auto-Discovery | Finds speakers automatically via UPnP/Zeroconf |
# Create speaker group
service: media_player.join
target:
entity_id: media_player.living_room
data:
group_members:
- media_player.kitchen
- media_player.bedroom
# Remove from group
service: media_player.unjoin
target:
entity_id: media_player.living_room
Create wiim_stations.yaml
in your config folder:
- name: BBC Radio 2
url: http://stream.live.vc.bbcmedia.co.uk/bbc_radio_two
- name: Groove Salad (SomaFM)
url: http://ice2.somafm.com/groovesalad-128-mp3
Access via Browse Media → Quick Stations on any WiiM device.
# Switch to Bluetooth output
- service: select.select_option
target: select.living_room_audio_output_mode
data:
option: "Bluetooth Out"
# Switch to Line Out
- service: select.select_option
target: select.living_room_audio_output_mode
data:
option: "Line Out"
# Morning radio
- service: media_player.play_media
target: media_player.kitchen
data:
media_content_type: url
media_content_id: "http://stream.live.vc.bbcmedia.co.uk/bbc_radio_two"
# Play preset button
- service: wiim.play_preset
target: media_player.living_room
data:
preset: 1
Service | Description |
---|---|
wiim.play_preset |
Play hardware preset (device dependent) |
wiim.play_url |
Play audio from URL |
wiim.set_eq |
Set equalizer presets or custom values |
wiim.reboot_device |
Reboot device |
The WiiM integration doesn't support custom source names for several reasons:
- Device Limitation: Source names come directly from the device's firmware and API
- Consistency: Other major integrations (Sonos, Denon, Yamaha) also don't support source renaming
- API Compatibility: The device expects specific source names for proper functionality
- Automation Reliability: Custom names could break existing automations and scripts
Instead of renaming sources, you can customize the display in several ways:
# In customize.yaml
media_player.living_room_speaker:
friendly_name: "Living Room TV Audio"
# In automations.yaml
- alias: "When HDMI is selected"
trigger:
platform: state
entity_id: media_player.living_room_speaker
attribute: source
to: "HDMI"
action:
- service: notify.persistent_notification
data:
message: "TV audio is now active"
# In Lovelace dashboard
type: entities
entities:
- entity: media_player.living_room_speaker
name: "TV Audio"
secondary_info: "{{ states('media_player.living_room_speaker').attributes.source }}"
When experiencing issues, you can download comprehensive diagnostic information to help with troubleshooting:
- Device Diagnostics: Go to Settings → Devices & Services → WiiM Audio → (Select device) → Download Diagnostics
- Integration Diagnostics: Go to Settings → Devices & Services → WiiM Audio → (⋮ Menu) → Download Diagnostics
The diagnostics include:
- Device information (model, firmware, network status)
- Multiroom group configuration and roles
- Media playback state and current sources
- API polling status and error tracking
- EQ settings and sound modes
All sensitive data (IP addresses, MAC addresses, network names) is automatically redacted.
- 📚 Quick Start Guide - Installation and basic setup
- 🎛️ User Guide - Complete features and configuration
- 🤖 Automation Cookbook - Ready-to-use automation patterns
- ❓ FAQ - Quick answers to common questions
- 🔧 Troubleshooting - Fix common issues and network problems
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 🏠 Community: Home Assistant Community
We welcome contributions! See CONTRIBUTING.md for guidelines:
- Code improvements and bug fixes
- Documentation updates
- Testing on different speaker models
- Example automations and scripts
This integration builds upon excellent work from:
- python-linkplay - Comprehensive LinkPlay library
- LinkPlay HA Integration - Original LinkPlay integration
MIT License - see LICENSE for details.
This integration is not affiliated with WiiM or LinkPlay. All trademarks belong to their respective owners.