u/Brief_Mud_5882

AirPlay 2 on the WiiM Ultra via Docker — lossless, cover art on display, and videos won't interrupt your music
▲ 17 r/wiim

AirPlay 2 on the WiiM Ultra via Docker — lossless, cover art on display, and videos won't interrupt your music

Like many here, I love my WiiM Ultra but miss AirPlay. This is the AirPlay 2 equivalent: no spare device needed, and with a few extras that only AirPlay 2 makes possible.

What you get

  • A real AirPlay 2 endpoint in Control Center. The key difference from AirPlay 1 / Bluetooth / USB: AirPlay 2 routes audio per-app, so your music keeps playing on the Ultra while you scroll short videos or game on your phone
  • Lossless CD quality: the AirPlay PCM is repackaged as FLAC — no lossy transcoding anywhere in the chain
  • Now playing on the Ultra's display: title, artist, album and full-size cover art, refreshed on every track change (also visible in the WiiM Home app)
  • Volume integration: the iPhone volume slider drives the Ultra's hardware volume, with a configurable safety cap
  • Fully automated: pick the endpoint, press play — the bridge starts/stops the Ultra by itself

What you need

  • Any always-on box on your LAN that runs Docker: a NAS (Synology/QNAP/Unraid), a Pi, a mini PC…
  • The Ultra and the Docker host on the same subnet (mDNS needs to reach both)

That's it — two containers, ~90 MB total, negligible CPU.

Setup

git clone https://github.com/shinn-y/airplay2-dlna-bridge
cd airplay2-dlna-bridge
cp .env.example .env    # edit two lines: HOST_IP (Docker box) and RENDERER_IP (your Ultra)
docker compose up -d --build

Pick "AirPlay 2 Bridge" on your iPhone and play. (The name is changeable in shairport-sync.conf.)

How it works

iPhone ──AirPlay 2──▶ shairport-sync ──PCM──▶ bridge ──FLAC/HTTP──▶ WiiM Ultra (DLNA)

shairport-sync does the AirPlay 2 heavy lifting; a small Python bridge re-serves the audio as a FLAC stream and drives the Ultra over standard UPnP.

Honest limitations

  • Latency is ~4–6 s (AirPlay 2 clock + the Ultra's own HTTP prebuffer). Perfect for music, useless for video sync — keep using BT/optical for that
  • Track changes have a ~2–4 s gap when display updates are on. This one is a WiiM firmware constraint, not a bridge bug: the display only renders DIDL metadata (it ignores ICY in-stream tags in every mode — verified via the HTTP API), and the firmware restarts the stream on every metadata update. If you'd rather have fully gapless audio with a static display, set DIDL_PUSH=0 in .env — your choice
  • No multiroom with real AirPlay 2 speakers (HomePods etc.) — the Ultra's buffering makes sync impossible, protocol-level, unfixable. Grouping other WiiM/LinkPlay speakers behind the Ultra in the Home app works fine though
u/Brief_Mud_5882 — 3 days ago