Janky volume control when casting to Pi

Issue description:

I have a speaker connected to a Pi running upmpdcli which is providing a UPnP AV renderer. In symfonium I have connected to navidrome (subsonic) and I trying to cast to the Pi. It seems to work for the most part and I really love the UI. But any time I touch the volume controls the it jumps to 100% and then moves around wildly before settling at some seemingly random value. When I try to change the volume using another app such as bubble upnp or Dsub then the volume control seems to work fine. But having to use a separate app to control the volume is far from ideal and I would love to identify the issue/solution so I can just use symfonium. There is nothing else running on the Pi so if upmpdcli is the issue I’m happy to try something else.

Logs:

Upload description: Nan0Scho1ar

Additional information:

 

 

Reproduction steps:

 

  1. Connect to connect to upmpdcli UPnP AV renderer.
  2. Play a song in my navidrome library
  3. Adjust the volume
     

Media provider:

Subsonic

Screenshots:

     

From the logs it’s the renderer doing random stuff, you need to check it’s logs.

@medoc is there something special about volume handling in upmpdcli ?

2025-02-11 13:55:02.768 Verbose UPnPRenderer  Volume range: 0 / 100 [true/true]

Seems the it returns a supported volume range of 0-100 as usuall.

2025-02-11 13:55:13.356 Verbose PlaybackController  setVolume: 90
2025-02-11 13:55:13.357 Verbose UPnPRenderer  Set volume: 90 -> 90
2025-02-11 13:55:13.357 Verbose UPnP  action invoke:
POST /uuid-ba68e549-af67-12f4-b086-b827ebdbf55e/ctl-urn-schemas-upnp-org-service-RenderingControl-1 HTTP/1.1
HOST: 192.168.1.108:49152
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
User-Agent: Linux/5.4.254-qgki-28575149-abA736BXXUAEXK2 UPnP/1.0 mmupnp/3.0.0
Connection: close
Content-Type: text/xml; charset="utf-8"
Content-Length: 323

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>90</DesiredVolume></u:SetVolume></s:Body></s:Envelope>

User set Volume to 90, proper command is sent.

2025-02-11 13:55:17.299 Verbose UPnP  action receive:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<CurrentVolume>90</CurrentVolume>
</u:GetVolumeResponse>
</s:Body></s:Envelope>

First answer says 90 then just after

2025-02-11 13:55:18.092 Verbose UPnP  action receive:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<CurrentVolume>100</CurrentVolume>
</u:GetVolumeResponse>
</s:Body></s:Envelope>

It change to something else without any action from Symfonium.

@Nan0Scho1ar are you sure there’s no other app connected to the renderer that could be trying to keep the volume at some values and interfere ?

I don’t think that there is much special about upmpdcli volume control, a problem is always possible, but the most likely cause, as you mention, would be another UPnP or MPD client.

I had closed all other tasks on my phone including background tasks when collecting the logs. There also shouldn’t be anything else connected to mpd because that’s all I put on the pi

Then as said check upnpmdpcli logs and see with Medoc if there’s anything explaining this.