rooUPnP: Finally a Roon Extension for UPnP Streamers

In this thread I would like to introduce and support rooUPnP, an inexpensive and handy solution to use UPNP/DLNA streamers with Roon.

I would be happy to answer here all questions from interested parties and all rooUPnP users.

rooUPnP is my second Roon Extension and part of the rooExtend platform ( that I will gradually expand with further Roon extensions. The aim of rooExtend is to make useful Roon extensions easily accessible to Roon users without in-depth IT knowledge.

rooUPnP supports Roon cores on all platforms (Windows, MacOS, Linux, RoonOS), also Roon 1.8.

The rooUPnP Extension itself runs on a RaspberryPi 4, which is used to transport the FLAC output of Roon to your UPnP streamers. Running high sample rates, the audio in- and output produces a lot of traffic. So rooUPnP can be operated with Ethernet only not with WiFi.
If you like you can also try Pi Model B, Pi 2 or Pi 3. I got some reports that it works but there will be no guarantee because all these devices have a bottleneck with their Ethernet controller.

Some elder streamers may not be ready for 24Bit FLAC. In order to still be able to use them with Roon, rooUPnP can transcode 24Bit FLAC output from Roon to different audio formats. These formats can be individually selected for each streamer in your home.

You also can adjust the maximum sample rate individually for each of your UPnP streamers. Sample rate conversion will always be done by Roon with its high-quality DSP routines.

The software for the RaspberryPi 4 can simply be downloaded and copied to a SD-card. After this the RaspberryPi 4 is ready for use. You only must connect the RaspberryPi 4 to your Ethernet. All settings regarding the individual setup of your UPnP streamers can be done in Roon.

So that the solution can be used quickly and easily by laypeople, three videos are available that explain the procedure step by step.

A small license fee is payable for the rooUPnP Extension. I offer lifetime license for $35. Without licensing, your UPnP devices will be discovered so you can see if it will work. Audio playback will not be possible without license.

I wish everyone a lot of fun using your UPnP streamers with Roon.


rooUPnP test phase with a FREE LICENSE

PLEASE don’t buy a license for rooUPnP now!
I have decided to provide a FREE LICENSE for testing for a few weeks. During this time, I will probably release new versions that fix possible issues. If I get the impression that rooUPnP is stabilizing, I will end the test phase. During the test phase, rooUPnP can be used free of charge by everyone.

The license number for testing is: 69962830-E872-4031-BE07-1FE12D62818F

rooUPnP is quite new and UPnP streamers are partly quite ugly devices. My intention is to get some feedback from you and build up a list with supported streamers. To encourage your feedback regarding working or incompatible devices, I will offer a discount code to everyone reporting his findings on one or more devices so I can add them to my list. The discount codecan be used if you decide buying a rooUPnp license after the test phase.

Buying the license the testers can enter the discount code in the Checkout box. First klick (1) and then enter the code in the appearing field (2).

There are some options that can be set regarding your streamers. To perform the test first enter the corresponding settings and please proceed the following steps one after another.

  • Always start with: 44100, MP3 16Bit, Default
  • If this does not work try to change to: 44100, MP3 16Bit, Option 1 or Option 2
  • If you cannot play music in one of these settings your streamer is incompatible with rooUPnP.
  • If you found a working MP3 setting change to PCM 16Bit and do not touch the other settings.
  • If successful proceed to FLAC 16Bit.
  • If this all works for you so far try PCM 24Bit or FLAC 24Bit. (FLAC will be the better choice if it works!)
  • If this also works great! If not stay with the PCM or FLAC 16Bit setting.
  • Now play a 192kHz tune within Roon and increase the sample rate setting step by step.
  • If you are the lucky guy, you can get up to 192kHz.

After this please send me the following information in a personal mail via the roonlabs community. Please do not post it in this thread!

Manufacturer of the streamer:
Type of the streamer:
Max samplerate: 44100 | 48000 | 88100 | 96000 | 176400 | 192000
UPnP audio format: FLAC up to 24Bit | Flac 16Bit | MP3 16Bit | PCM 16Bit | PCM 24Bit
HTML length setting: Default | Option 1 | Option 2
Issues you found:
Your Comments: Please also note here what happens if you encounter an incompatible streamer.

I will enter the information in my list I will publish and send you in response the rebate code.

Be sure I appreciate your support a lot.

Thanks DrCWO.


No problems so far. It is working on a RPi 3. I will use it for the next days and will report.

Will someone kindly describe the logical use cases for the uPnP extension? This isn’t going to enable remote access of Roon out of home, right? Thanks. JCR

1 Like

This looks very interesting. I currently achieve this using lms-to-upnp but your solution could be more elegant.

Will this work on a Pi Model B, that’s what I have to hand? Also do you plan to release this to run in a Container? A container implementation would open this up to a lot of NAS users. I currently run LMS in a container to host lms-to-upnp.

Thank you


It’s for people with streamers that are not supported by roon, ie not “roon ready”, plus no airplay or chromecast compatibility. So by default roon can’t see it. eg older Naim network players like the ndx or nds. This aims to fix this by effectively being a bridge between roon and a upnp compatible device.

1 Like

This is what I have been looking for I thought of buying other products to do this great news.

1 Like

@Trickydickie I think the answer to your question is just there…

Pi3 was reported to work…

OK, curiosity has got the better of me and I have tried this on my old Raspberry Pi Model B!

To an extent this works OK and it’s a remarkably simple implementation, I can see this being of great benefit to people.

I use a Naim NDS and I am experiencing inconsistent results depending on the resolution of the file. Currently I can play 24/192 files OK but 16/44 files result in a static noise. If I enable FLAC compression within Roon all is well.

I note that you are actually using the same UPNPBridge software that I currently use, albeit wrapping it nicely into a plug and play solution.

I’ve seen this issue before but normally the challenge has been playing the 24/192 files and until now so I put this issue down to throughput. However on the same Pi using UPNPBridge and a lightweight distribution I was able to play most material with occasional static on 24/192 with FLAC compression set to off. It’s odd that the more challenging 24/192 files play but the 16/44 don’t.

I currently use UPNPBridge running within Logitech Media Server as a plugin in a container on my Celeron based QNAP NAS. I don’t have any issues with the static noise on this device even with FLAC compression disabled.

Why I can hear you asking don’t you just enable FLAC compression and be done with it?!

Well the NAIM NDS doesn’t sound quite as good if it receives FLAC and does the decoding onboard the streamer. Naim does explain that the overhead of doing this generates small amounts of noise within the streamer which slightly affects sound quality. Sending WAV or PCM avoids this and it sounds better for it.

Edit: The bridge allows you to send WAV if correctly configured - thanks to @DrCWO for his guidance.


That sounds very interesting! So ROON will work with my T+A MP 1260 ? With 24/192 files?
sounds great!

Just try and report, I am happy about every report I get. It supports UPnP so should work.

Very nice amp. It reminds me a bit of the Braun devies in the seventies :relaxed:

I like to comment on that with some insight how rooUPnP works.

In the advanced device setup of the connected UPnP streamers in Roon you always have to set “Use Flac compression” to “Yes”. This is the default behaviour so I did not mention it before (see screenshot below).


rooUPnP is configured to handle always and only Flac input from Roon. I did that to save bandwith on the Ethernet cable. Inside rooUPnP this Flac got decoded to either 16Bit or 24Bit PCM (bit perfect) according to what Roon sends to rooUPnP.
In the settings dialog in the rooUPnP extension for your streamer, you can define what is sent to your UPnP streamer.
According to this setting the decoded PCM got re-encoded by rooUPnP. Either to Flac, PCM or MP3. Re-encoding to Flac and PCM is lossless as far as you have selected a 24Bit output. If you select 16Bit output, 24Bit data will be truncated to 16 Bit.

Hope this helps a bit to understand the hidden functionality of rooUPnP.

So @Trickydickie: If your Naim NDS likes PCM more than Flac, please select PCM 24Bit in the rooUPnP extension for your NDS and switch “Use Flac compresson” in the “Device setup” dialog shown above to “Yes”.

Thank you for your reply.

I had chosen 24bit PCM but had made an assumption that setting FLAC compression to on in Roon would result in FLAC arriving at the player. As you say this isn’t the case and upon checking my streamer it is indeed receiving WAV. With FLAC compression switched on I don’t experience the static problem. Interestingly I receive PCM rather than WAV from my other installation of UPNPBridge but wither WAV or PCM is fine for me!

I do have one issue though.

Yesterday evening I switched off the Raspberry Pi and restarted my Logitech Media Server Container which has UPNPBridge running as a plugin so I could listen to music with my existing setup.

This morning I have stopped the container and started the Pi back up.

I have quite a few devices and one is the Naim NDS which I call ‘Sitting Room’. The sitting room player is working in Roon but it didn’t appear this morning in the list of UPNP devices in the extension manager. The device was playing fine but absent from Extenstion Settings panel meaning that it can’t be configured in Roon > Settings. There are other devices missing too as I have 3 Naim Muso QB’s that would normally be discovered by the UPNP Bridge. I tried restarting Roon and this didn’t help but restarting the Naim NDS and one of my Muso’s did result them appearing for a brief time before disappearing again so there does seem to be a discovery issue occurring with my Naim devices.

The device labelled Conservatory is a Yamaha Musiccast device and the Digia devices are actually Panasonic TV recorders.

I will send you as requested my existing config file to your email address.

Thank you


For anyone interested I have this working on an ancient Raspberry Pi Model B with 512MB ram with the ARM710 processor.

I have an Aurender N100, as I’m sure you know this media streamer is not Roon ready, am I to understand that your device will allow me to run Roon on this?
Thank you

1 Like

Should, just try. I offer a free of charge license code for a test period.

1 Like

I played many hours of music through the Naim NDS yesterday and experienced no issues.

I have spent some time testing all my devices and can report that these settings worked for my devices
Naim NDS

Max Samplerate: 192000
UPNP Audio Format: PCM 24 Bit

Note: These settings should work for all of the legacy Naim streamers as they use the same firmware and streaming board, i.e. Naim ND5XS, NDX, NAC272, UnitiQute, UnitiLite, Uniti and Superuniti. The next generation streamers are Roon Certified

There is one issue to be aware of. If you have an album of mixed formats and are playing a 24/192 track and the next track is 16/44 the player will not move on to the next track. I reached out to Phillipe on this and he believes it’s an issue with the way the Naim streamer reports back to the plugin. Changing to FLAC resolves this. I live with this as a mixed format albums are rare and I prefer to receive WAV/PCM at the streamer for this device.

Naim Music QB (1st Generation) Naim Mu-so Qb | Compact Wireless Speaker | Audio Streaming

These are Airplay compatible but Roon’s Airplay is reverse engineered and flawed so UPNP works better. The settings will also apply to the 1st Generation Muso too. 2nd Generation devices work with Roon already.

Max Samplerate: 192000 (wired) 48000 (Wireless)
UPNP Audio Format: FLAC 24 Bit

Panasonic SC-ALL05 SC-ALL05 Wireless Waterproof Speaker | Panasonic UK & Ireland

This is part a range of portable speakers using Qualcomm hardware. They will go to 24/192000 but I find reliability better at a lower rate and it doesn’t really matter as these are not high quality units.

Max Samplerate: 44100
UPNP Audio Format: FLAC 16 Bit

Yamaha WXAD10 Wireless Streaming Adapter MusicCast WXAD-10 - Overview - Accessories - Audio & Visual - Products - Yamaha - Other European Countries

This is a simple adaptor that allows an existing system to be enabled for streaming, good quality for the price. It’s part of a range of devices in the MusicCast range so you will probably find these settings OK for the whole range. Note: I use a wired connection, the wireless experience may vary.
Whilst it will play 24/192 I experience some dropouts when playing 24/192 material 24/96 works fine as set below.

Max Samplerate: 96000
UPNP Audio Format: FLAC 24 Bit

Hope this helps people with the same devices, or similar from the ranges.


Hi Dr. Oelrich

I am already using Squeezebox-systems to connect Roon to an UPnP-Device. I have to squeeboxes in use and in as a backup, just in case.
I understand that you are using the squeezebox api of ROON. So it is about the same setup for me. Having already the squeezeboxes I will not change the for a RasPi. Mostly the same but I have to buy and install hard- and software:
Good luck to you and tthe system. I regards it as a useful system. Nevertheless, I would prefer to run it on a small Windows-Mini-computer, if possible the same one which is used as Roon-Server. (i5_10xx, 16Gb Ram, 512 M2.SSD)

Hi Axel,
sure I can understand your wish.

rooExtend is basically a cross-platform implementation based on node.js.
The only thing that prevents a Windows release is Bluetooth for rooDial. Bluetooth handling in Linux and Windows is quite different and rooDial is implemented in Linux so far. As both are bundled in the rooExtend platform I cannot offer rooUPnP for Windows now. It would be quite an effort to make rooDial work on Windows.

The current requests regarding Windows are few. This may be caused by the low price and esay setup (important for the customers!) of the Raspberry implementation. So I decided for now to only offer rooExtend for the Pi.
Maybe some day I will spend the effort to port it to Windows but not in the near future. Currently I prefer to offer additional functionality.