wiim
A Python-based API interface for controlling and communicating with WiiM audio devices.
What it is and what it does
wiim is a Python library for controlling WiiM smart audio devices—speakers and receivers built on LinkPlay modules—over your local network. It abstracts the device discovery and control protocol, letting you write Python code to play, pause, skip, adjust volume, manage playback metadata, and coordinate multiroom audio groups without directly handling UPnP or mDNS details.
The library uses aiohttp for HTTP communication, async-upnp-client to interact with UPnP device descriptions, and zeroconf to discover WiiM devices by their _linkplay._tcp.local. service advertisement. It's designed for smart home automation, custom music player applications, or any Python tool that needs to remote-control WiiM hardware. The API is async-first, reflecting its dependency on aiohttp and the async networking stack.
Use it for:
- Build a custom Python home automation script that discovers WiiM speakers on startup and plays music on demand.
- Create a multiroom audio synchronization tool that groups WiiM devices and coordinates playback across rooms.
- Integrate WiiM device control into a larger smart home platform or voice assistant backend.
- Monitor playback metadata in real-time to display currently playing track information on a dashboard or display.
- Implement a Python-based music player UI that sends commands to WiiM hardware instead of local playback.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
wiim provides a Python API to discover, control, and monitor WiiM smart audio devices on your network, including playback control, metadata retrieval, and multiroom group management.
Yes, if you own WiiM devices and need programmatic control from Python. The library is actively maintained, has no known vulnerabilities, uses permissive MIT licensing, and depends only on stable async libraries. Install friction is low. The project is young (first release 2025-07-02) but shows active development. Start with the quick-start example to verify device discovery works on your network.
Install
wiim on PyPI
pip
pip install wiimuv
uv add wiimpoetry
poetry add wiimInstalling wiim
Before you install
Low friction install as a pure-Python wheel. Active maintenance with a recent commit on 2026-08-04 and first release in 2025-07-02, so the project is young but actively developed. Depends on aiohttp, async-upnp-client, and zeroconf—all stable async networking libraries.
License in practice
MIT license is permissive, allowing use in commercial and private projects with minimal restrictions. You must retain the license notice but face no copyleft obligations.
Quickstart
pip install wiim
import asyncio
from wiim import WiimDevice
async def main():
device = WiimDevice("device_ip_address")
await device.async_update()
print(device.playback_status)
asyncio.run(main())
Requires a WiiM device on your local network; device discovery via zeroconf works best on networks with mDNS support enabled.
Verify before relying
- Whether the package works with Python versions older than 3.x or has specific version constraints beyond 'Python :: 3'
- Whether WiiM device discovery works reliably across different network topologies or requires specific mDNS/UPnP configuration
- Minimum Python version required for async code support
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — aiohttp, async-upnp-client, zeroconf |
| Maintenance | actively maintained — 11 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 75,225/month — #14,737 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: wiim-0.1.6-py3-none-any.whl
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
plugwiseProvides Python interface to networked Plugwise…
permissive · top 15,000 on PyPI
sonos-websocketAsync Python library for communicating with…
permissive · top 15,000 on PyPI
socoSoCo is a Python library for programmatic…
permissive · top 15,000 on PyPI
nmclinmcli is a Python wrapper for the…
permissive · top 15,000 on PyPI
python-songpalPython library for controlling Sony audio…
copyleft · top 15,000 on PyPI
pycawPycaw provides programmatic control of Windows…
unclear · top 15,000 on PyPI
libsoundtouchControl Bose Soundtouch devices over the…
permissive · top 15,000 on PyPI
python-miioPython library and CLI tool for controlling…
copyleft · top 15,000 on PyPI
broadlinkA Python module and CLI for discovering,…
permissive · top 15,000 on PyPI
axisEstablishes connections to Axis Communications…
permissive · top 15,000 on PyPI