DLNA / UPnP
Unifica as duas pontas do padrão DLNA (Digital Living Network Alliance), que roda sobre UPnP:- Digital Media Renderer (DMR) — TVs, soundbars, receivers e dongles que
tocam mídia. Vira uma entidade
media_playercom play/pause/stop, volume, mute, next/previous, seek eplay_mediapor URL. - Digital Media Server (DMS) — NAS, Jellyfin, MiniDLNA, Plex (modo DLNA), qualquer PC rodando um servidor UPnP. Vira uma fonte navegável no painel de mídia, com browse hierárquico e busca por título.
Pré-requisitos
- Os dispositivos precisam estar na mesma LAN do edge — DLNA/UPnP depende
de SSDP multicast (
239.255.255.250:1900) para descoberta e dos próprios endpoints HTTP do aparelho para controle. Não funciona por VPN sem bridge multicast. - A integração roda em um edge local. Crie um em Configurações → Edges antes de adicionar.
- Em redes com múltiplas VLANs/subnets, os dispositivos precisam estar no mesmo segmento L2 do edge (ou use IGMP snooping + multicast routing).
Configurar
1
Adicione a integração
Vá em Configurações → Integrações → Adicionar → DLNA / UPnP.
2
Escolha o dispositivo
O Portal faz um M-SEARCH SSDP e lista os dispositivos encontrados (com
fabricante, modelo e capacidades Renderer / Server). A descoberta demora
~3 segundos. Se o aparelho não aparecer, selecione “Informar URL
manualmente”.
3
Modo manual (quando SSDP falha)
Informe a URL do device description (ex.:
http://192.168.1.50:49152/description.xml). Essa URL costuma aparecer na
página de administração do dispositivo, ou pode ser descoberta rodando
gssdp-discover -n 3 numa máquina Linux da mesma rede.4
Pronto
- Se o dispositivo tem AVTransport → é criada uma entidade
media_player.dlna_<udn>_media_player. - Se tem ContentDirectory → o device aparece no painel Mídia como uma fonte navegável.
- Se tem os dois → ambas as coisas, numa única entry.
Funcionalidades
Renderer (DMR)
- Play / Pause / Stop / Next / Previous track
- Volume (ajuste absoluto 0–100 e mute/unmute) — quando o dispositivo
anuncia
RenderingControl - Seek (
media_seek) quando o stream expõe duração play_mediacom URL direta (HTTP/HTTPS, MP3/FLAC/AAC/vídeo)- Metadados em tempo real: título, artista, álbum, posição, duração, arte da
capa (via
GetPositionInfo)
Server (DMS)
- Browse hierárquico do catálogo, começando pela raiz (
ObjectID=0) - Busca por título (
dc:title contains "...") — quando o servidor suporta a açãoSearch(opcional no spec UPnP) - Resolução para URL direta tocável em qualquer
media_player
Como funciona por baixo
- SSDP (
239.255.255.250:1900UDP multicast) para descobrir os dispositivos. - HTTP GET no
LOCATIONrecebido do SSDP para ler o device description XML. Isso dá oscontrolURLdos services suportados. - SOAP (POST XML com header
SOAPAction) para cada comando: play/pause vão emAVTransport:1, volume emRenderingControl:1, browse emContentDirectory:1. - O polling do estado do DMR é de 10 segundos — o Portal reage otimisticamente aos comandos iniciados por você (o card muda imediatamente), e re-sincroniza no próximo ciclo com o estado real do dispositivo.
Reproduzir mídia (media_player.play_media)
<res> do item e passa a URL
pronta para o renderer.
Limitações desta versão
- Sem GENA event subscription — usamos polling de 10s em vez de assinar eventos push do UPnP. Isso significa que mudanças iniciadas pelo controle remoto físico ou por outro app (não pelo Portal) demoram até 10 segundos para refletir no dashboard.
- Sem agrupamento multiroom — DLNA não padroniza grouping; cada fabricante faz do seu jeito (SongCast, Play-Fi, etc.).
- Sem “modo exclusivo” — se outro app estiver controlando o renderer, os comandos do Portal competem com ele.
Solução de problemas
- Nenhum dispositivo encontrado no SSDP — a rede do edge pode estar
bloqueando multicast. Teste com
gssdp-discover -n 3numa máquina Linux da mesma subnet. Soluções comuns:- Confirmar que o edge e o dispositivo estão na mesma VLAN (routing L3 bloqueia multicast por padrão).
- Em switches gerenciados, verificar se IGMP snooping não está descartando o tráfego multicast.
- Como último recurso, use o modo “Informar URL manualmente”.
- “Dispositivo não suporta AVTransport nem ContentDirectory” — a URL aponta para um UPnP que não é DLNA (ex.: um Internet Gateway Device).
- Comando funciona mas o estado demora para atualizar — polling de 10s; comandos acionados pelo Portal atualizam otimisticamente.
- “Comando DLNA desconhecido” — o device recusou uma ação opcional do spec (comum em TVs com stack UPnP incompleto). Previous/next em alguns renderers só funcionam durante playback de playlist/queue.
- Arte da capa (
entity_picture) não aparece — depende do DMR exporupnp:albumArtURInoTrackMetaData. Nem todos expõem. - DMS retorna “0 resultados” na busca — o servidor pode não implementar a
ação
Search(opcional no UPnP ContentDirectory). O browse manual continua funcionando.
Referência
- Spec UPnP Device Architecture 1.1 — https://openconnectivity.org/upnp-specs/
- Spec UPnP AVTransport / ContentDirectory / RenderingControl — mesmos links no OpenConnectivity.
- DLNA Guidelines — perfis de mídia (audio, video, image) e matriz de compatibilidade entre DMR e DMS.