skillfed

wiim

A Python-based API interface for controlling and communicating with WiiM audio devices.

wiim v0.1.6 75.2K downloads/30d#14,737 on PyPI7
Permissive license MIT Active released

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 wiim

uv

uv add wiim

poetry

poetry add wiim

Installing 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

License :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3

Tags

wiim device control pythonlinkplay audio apimultiroom audio streamingsmart speaker automationupnp audio device controlzeroconf device discoveryhome audio integration
audio-controlhome-automationasync-networking

More Networking packages