UPnP 2025
Available here -
UPnP 2025This is a fork of the original UPnP plugin created by Steven.
I was going to call it UPnP 2.0 but didn’t want to imply that it supports the UPnP Device architecture 2.0 standard, because it doesn’t….. yet.
Changes
- Converted all the code from VB to C#.
- Changed the Net target to 4.8
- Small layout adjustments to the config page.
- Removed references to FileCodec.AnyPCM as that is no longer part of the Musicbee API.
- Added support for Podcasts (downloaded only). I took some tips from GoodMorning’s fork to do this.
- Adjusted some of the default profiles to reflect current capabilities and added some new ones. Eg) BubbleUPnP now supports higher sample rates. In fact it pretty much supports anything. By default BubbeUPnP is set to downmix multi channel audio to stereo. If you toggle that off you can stream 192 kHz 6 channel audio straight to it, no transcoding. This worked with Flac and Ogg (Vorbis) for me. You also need to uncheck the "stereo only" checkbox in the plugin settings.
I’ve currently only tested it running the BubbleUPnP app on my android 14 mobile and an LGB6OLED TV from 2016 and it seems to work fine on both.
I’m testing it on 3.6.9143 P and haven’t noticed any crashes or memory leak problems rumoured in the other thread.
I have done no testing at all with using Musicbee to play to UPnP device. I have a vested interest in getting this working with modern devices so that will be worked on.
I just wanted to get this out as a starting point which hopefully will help some users as it should work with current versions of Musicbee.
I have some experience with DLNA servers, I helped get some things working on Serviio for sony bluray players a decade ago but my knowledge of UPnP and everything associated with it is very limited. I need to get up to speed on the UPnP documentation and the standards. The plan is to add support for modern UPnP standards to this plugin.
So for now, please don’t fill the thread with wishlists and issues you are having. I’m sure a good chunk of them are related to mismatched standards which I will get to.
In the meantime. The following might help you with any current issues.
To match a profile to your device the User Agent field is the key. To find the user agent your device is using.
- Check “log debug information”
- Click Save.
- Start your device and tap the Musicbee server
- Open the UPnP config page again in Musicbee and click the “View” button
You should see entries ending like this -
useragent=Android/14 UPnP/1.0
BubbleUPnP/4.4.9
useragent=Linux/3.10.19-p.57.digya.k2l.2 UPnP/1.0
LGE WebOS TV LGE_DLNA_SDK/1.6.0/05.70.40 DLNADOC/1.50
The values you need to worry about are highlighted in blue.
You need to set the “applies when user-agent contains” field to match this user-agent name. eg) for the LG TV above you could use “LGE” or “LGE WebOS” or the full name “ LGE WebOS TV LGE_DLNA_SDK”. They will all match and use that profile.
You can set a profile to match multiple user-agents by separating them with a pipe symbol. Eg) if you set the field to “Bubble | LGE WebOS” it will match to both devices.
To make sure it’s using the correct profile, restart your device and Musicbee and check the debug log again, it should list what profile is being used for your device. Remember to uncheck the log debug checkbox and click save when you’re done troubleshooting. To clear the log you can just click view which opens it in notepad. Hit ctrl+a to select everything, hit delete and save it.
The other settings are thresholds and if the selected song is outside those thresholds it will be transcoded to be within the thresholds, otherwise it will direct stream the song to the device as long as your device advertises it can play the format. eg) if it’s Flac and your device doesn’t advertise it can play Flac, it will be transcoded even if it’s within the thresholds above.
When a song is transcoded it will follow the “output format” and “output sample rate” values.
As it states, the “force transcode” setting is global and applies to all profiles when checked.
Note: if you set the output format to PCM - 24 bit but have the “maximum bit depth” for that profile set to 16, it will save the output format as PCM – 16.
The “stereo only” checkbox will force a transcode on anything that isn’t 2 channels. Whether it’s mono or 5.1
If songs are getting transcoded even though the profile is matching and the song is within the thresholds, make sure your device is not transcoding, when I was testing 5.1 Flac and Ogg files it took me a while to figure out it was actually BubbleUPnP downmixing the incoming stream to stereo.
And just to pre-empt some queries. Here are some things that I am not going to do.
- Enable streaming to multiple devices at the same time.
- Enable streaming outside of the local network. You’re probably better off using something like Emby/Plex for this anyway. I highly recommend Emby, been using it for years and it’s fantastic.
- Do workarounds for obscure devices that don’t work because they are not following UPnP standards.
If devices are not being detected at all you should check firewall settings. Especially if the debug log states a connection was actively refused. If you’re having issues with a device newer than 2020, there is a good chance it’s not going to work until I update the plugin to handle modern UPnP standards. I can’t give a timeline for this, I’ll just say soon™.
edit:
This plugin has a different filename to the original so make sure you disable the original and backup the \AppData\UPnPSettings.dat file if you want to experiment with the new version. Running them both at once probably won't be good.