> ## Documentation Index
> Fetch the complete documentation index at: https://rockboxzig.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# UPnP / DLNA

> Three independent UPnP/DLNA modes — sink, media server and renderer.

Rockbox has three UPnP/DLNA modes that can be enabled independently. They
combine freely: e.g. expose your library to BubbleUPnP **and** stream live
to Kodi at the same time.

## Mode 1 — PCM sink (push to a renderer)

Rockbox encodes live PCM as a continuous WAV-over-HTTP stream and tells a
UPnP MediaRenderer to play it via AVTransport SOAP.

```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
music_dir         = "/path/to/Music"
audio_output      = "upnp"
upnp_renderer_url = "http://192.168.1.x:7777/AVTransport/control"
upnp_http_port    = 7879   # WAV broadcast HTTP port (default 7879)
```

Track metadata (title, artist, album, album art, duration) is sent as
DIDL-Lite XML in `SetAVTransportURI` and refreshed on every track change.

> [!TIP]
>
> **Finding `upnp_renderer_url`**: start `rockboxd` with `RUST_LOG=info` —
> it scans the LAN at startup and logs
> `upnp scan: found renderer "<name>" av=http://...` for every renderer
> found.

## Mode 2 — Media Server (let others browse your library)

Exposes your music library as a UPnP ContentDirectory. BubbleUPnP, Kodi,
VLC, foobar2000 and the like can browse artists / albums / tracks and pull
audio directly from Rockbox.

```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
upnp_server_enabled = true
upnp_server_port    = 7878         # default
upnp_friendly_name  = "Rockbox"    # name shown in apps
```

## Mode 3 — MediaRenderer (let others push to you)

Rockbox registers as a `MediaRenderer:1`. Any control point can push a URI
and control playback remotely. Incoming DIDL-Lite metadata is parsed and
displayed in the UI.

```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
upnp_renderer_enabled = true
upnp_renderer_port    = 7880        # default
upnp_friendly_name    = "Rockbox"
```

## All UPnP keys

| Key | Default | Description |
| - | - | - |
| `audio_output = "upnp"` | — | Enable the PCM → WAV streaming sink |
| `upnp_renderer_url` | — | AVTransport controlURL of the target renderer |
| `upnp_http_port` | `7879` | WAV broadcast HTTP port |
| `upnp_server_enabled` | `false` | Start the ContentDirectory media server |
| `upnp_server_port` | `7878` | Media server HTTP port |
| `upnp_renderer_enabled` | `false` | Start the MediaRenderer endpoint |
| `upnp_renderer_port` | `7880` | MediaRenderer HTTP port |
| `upnp_friendly_name` | `"Rockbox"` | Display name shown to control points |

## Typical setups

> [accordion] Stream to Kodi (sink mode)
>
> Find Kodi's AVTransport URL with `RUST_LOG=info rockboxd`, then:
>
> ```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
> audio_output      = "upnp"
> upnp_renderer_url = "http://192.168.1.42:7777/AVTransport/control"
> ```

> [accordion] Library on the LAN (server mode)
>
> ```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
> audio_output         = "builtin"
> upnp_server_enabled  = true
> upnp_friendly_name   = "Living-room music"
> ```

> [accordion] Phone control (renderer mode)
>
> ```toml theme={"theme":{"light":"catppuccin-latte","dark":"min-dark"}}
> audio_output           = "builtin"
> upnp_renderer_enabled  = true
> upnp_friendly_name     = "Rockbox"
> ```
>
> Now BubbleUPnP can pick "Rockbox" as the playback target.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.