Server, renderer, controller: who does what
UPnP/DLNA network playback relies on three roles. They can be handled by three separate devices or combined in a single one:
- The server makes files available on the local network over HTTP.
- The renderer receives a file, decodes it and plays it: a WiiM streamer, a Sonos speaker, a network amplifier or AV receiver (Denon, Marantz, Onkyo, Yamaha…).
- The controller decides what to play and on which renderer, then sends the commands: play, pause, next track, volume.
With “Play on a network player”, RustMusic becomes the controller and serves the tracks in its queue itself. You stay in your RustMusic library; the device just plays. It is the opposite of the built-in DLNA server, where the device or its app browses your library.
This playback uses its own small HTTP server, separate from the library DLNA server, which can stay off. It only serves the tracks currently being played, at random-token addresses, never from a file path.
Turning on network player playback
- 1
Install RustMusic 0.3.0
Windows, macOS or Linux. Add your music folders as usual.
- 2
Turn the feature on in Settings
Open Settings → Network & DLNA. In the “Network players” group, marked BETA, turn on “Play on a network player”. While this setting is off, RustMusic does not look for any device on the network.
- 3
Pick the device in the audio output menu
Open the player’s output menu (“Audio output”). Devices found appear in the “Network players” section; the “Search” button runs the discovery again. Click your WiiM, Sonos or amplifier.
- 4
Start playing
Play an album as usual: the device does the playing. In the player bar, the “Network” pill shows what is active; clicking it lets you turn each feature off or on and leads to “Network settings”.
The chosen player is remembered the next time you launch RustMusic. To go back to the computer’s speakers or your DAC, pick them in the same menu: playback resumes at the same point in the track, whichever way you switch.
The file is sent as it is: hi-res, formats and DSD
RustMusic does not send a re-encoded stream: the device receives the original file and decodes it itself. A 24-bit / 96 kHz FLAC therefore arrives as 24-bit / 96 kHz, provided the device accepts that format on its network input. The device, not RustMusic, sets the limit.
Because the device decodes, RustMusic’s audio processing does not apply: no exclusive output, no native DSD (DoP), no Replay Gain. RustMusic’s volume slider sets the device’s volume.
- The queue, pause, seeking within a track and volume work as they do locally.
- Gapless playback is kept: the next track is handed to the device in advance (with a caveat for Sonos, see below).
- Title, artist, album and cover art appear on the device, if it can display them.
- Switching output mid-track resumes at the same point.
DSD (DSF, DFF) is rarely accepted by network players. When the device announces the formats it plays and the track’s format is not among them, RustMusic flags it straight away instead of leaving you with silence. If the device announces nothing, playback is attempted.
Sonos speakers
- Speakers appear under their room name (“Living Room”, “Kitchen”), as in the Sonos app.
- In a group, RustMusic automatically hands playback to the speaker that coordinates the group. If the group changes between two tracks, it checks again before the next one.
- Sonos speakers play up to 24-bit / 48 kHz. RustMusic does not convert files: a 96 or 192 kHz FLAC goes beyond what the speaker accepts.
- Sonos speakers leave a short gap between tracks: a live album or an opera is not perfectly continuous.
For a hi-res collection above 48 kHz, a streamer such as the WiiM, or a network amplifier that accepts those sample rates on its network input, is a better fit.
Network player, AirPlay or DLNA server: which one?
RustMusic 0.3.0 offers three ways to have a living-room device play your music. Each one is turned on separately in Settings → Network & DLNA.
| UPnP/DLNA network player | AirPlay (v1) | DLNA server | |
|---|---|---|---|
| Setting | “Play on a network player” | “Play on an AirPlay device (v1)” | “Share on the network” |
| Who picks the tracks | RustMusic | RustMusic | The device or its app |
| Who decodes | The device | RustMusic | The device |
| Quality sent | Original file, within device limits | 16-bit / 44.1 kHz (ALAC) | Original file, within device limits |
| Volume | The device’s | The audio sent, not the amp | The device’s |
| RustMusic Replay Gain | No | Yes | No |
| DSD | If the device plays it | No | If the device plays it |
In practice: the UPnP/DLNA network player keeps your RustMusic library and the original resolution. AirPlay is for devices that only speak AirPlay; it is AirPlay 1, and devices limited to AirPlay 2 or protected by a password are not offered. The DLNA server suits you when you would rather choose music from the amplifier or the manufacturer’s app.
No device in the list?
- Check that “Play on a network player” is on: otherwise no discovery takes place and the output menu invites you to turn it on in Settings.
- The computer and the device must be on the same local network, not on a Wi-Fi “guest” network that isolates devices. Switch the device on, then click “Search”.
- A VPN (WireGuard, OpenVPN…) or a virtual network adapter no longer hides devices: since 0.3.0, discovery runs from every network adapter on the computer. If your VPN blocks all local network access, allow it in the VPN’s options.
- On macOS 15, accept the local network access prompt. If you declined it, turn RustMusic back on in System Settings → Privacy & Security → Local Network: without this permission, macOS silently blocks discovery.
- On Windows, allow RustMusic through the firewall for private networks. Discovery uses SSDP (UDP 1900) and the device downloads tracks from the computer on TCP port 8201, or on another free port if that one is taken.
- Keep RustMusic open and the computer awake: it supplies the files to the device while you listen.
Network player playback is in beta. Not every UPnP/DLNA device implements the standard the same way: if one misbehaves, switch back to local output and report it with the device’s brand and model.
Frequently asked questions
Can I play hi-res FLAC on a WiiM from my PC?
Yes. Turn on “Play on a network player” in Settings → Network & DLNA, then pick the WiiM in the “Network players” section of the output menu. RustMusic sends it the file as it is: it is decoded at its original resolution if the WiiM accepts that format.
Does RustMusic work as a UPnP controller on Windows, macOS and Linux?
Yes, the feature is the same on all three systems. On macOS 15, allow local network access; on Windows, allow RustMusic through the firewall for private networks if discovery finds nothing.
Why won’t my Sonos play my 24-bit / 96 kHz files?
Sonos speakers play up to 24-bit / 48 kHz, and RustMusic does not convert anything in network player mode. For those files, use another device (streamer, network amplifier) or a version at 48 kHz or below.
Does the sound go through the computer’s sound card?
No. The computer supplies the file over the network and sends the commands. Decoding and digital-to-analogue conversion happen in the device, so the final quality depends on it and its settings.
How is this different from RustMusic’s AirPlay?
With UPnP/DLNA, the device receives and decodes the original file, in hi-res if it can. With AirPlay 1, RustMusic decodes and sends the audio in CD quality (16-bit / 44.1 kHz), but keeps its own queue, gapless playback and Replay Gain. Both are in beta and are turned on separately.
Sources and verification
RustMusic information checked for version 0.3.0.
Your library, played by your living-room devices
RustMusic 0.3.0 controls your WiiM streamers, Sonos speakers and network amplifiers over UPnP/DLNA. Free, open source, no account.