HifiZine
The enthusiast's audio webzine

How to stream TIDAL to the Raspberry Pi

In earlier articles on networking your Mac music system, I showed how to set up an inexpensive networked music streamer using a Raspberry Pi and a HifiBerry DIGI+ digital output card. Part 1 focused on putting the streamer together and initial setup, and Part 2 showed how to configure a music server to read your iTunes (or other) files and send them to the streamer. For the sake of having a concrete example, the software distribution Volumio was installed on the Raspberry Pi.

But what about music streamed from the Internet? If you’ve poked around the Volumio interface, you’ve probably noticed that it has Internet radio stations. Still, we’re audiophiles, and the hot topic right now is lossless streaming – that is, CD quality audio streamed from the Internet, with TIDAL getting most of the press. Having just set up the Raspberry Pi to play music, we want to be able to send our streamed lossless audio there too…

This is not hard to do. It’s just not all that obvious how. I decided to write down this short step-by-step guide for those who are as mystified as I was. The article assumes that you have a Mac computer, but the Windows or Linux user should be able to adapt easily enough. You will also need a UPnP renderer to send audio to, and in this article I will assume it’s a Raspberry Pi running Volumio.

The article starts by explaining how to install and configure a server application called BubbleUPnP Server. You can install it on your Mac (or a Windows or Linux computer). A controller app will also be needed. Now that we are using BubbleUPnP Server, a broader range of controllers becomes available to us, and I have selected three that I like on three different platforms: BubbleUPnP on Android, LUMIN App on iPad, and Linn Kazoo on Mac.

In the following, Qobuz (another lossless streaming service) often appears alongside TIDAL. I have not tried the Qobuz option, but I expect it will work fine also.

BubbleUPnP Server

The first thing needed is a program called BubbleUPnP Server running on one computer on your network. This program acts as a “proxy” for a UPnP renderer (like Volumio), effectively turning it into an OpenHome renderer. Essentially, BubbleUPnP Server manages the playlist on behalf of Volumio, so you can have multiple tablets connected and they will all see the same playlist, for example. You also have access to a broader range of controllers (see following sections).

Download and install BubbleUPnP Server as described here:

Note: if you install BubbleUPnPServer on a Windows machine, it’s not possible to run a controller like Linn Kazoo on the same machine.

When the installer completes, it will open a webpage interface to BubbleUPnP Server. Bookmark it to make it easy to find later. (If you lose it, it is at http://localhost:58050/.)

BubbleUPnP status

On the Network&Security tab, I turn all of the options shown below off:

BubbleUPnP Server Network and Security

On the Media Servers tab, I select each server in turn and turn off “Make this Media Server available … for Internet access”:

BubbleUPnP Server Media Servers

 

On the Media Renderers tab, select your streamer and turn on the option “Create an OpenHome renderer.” In the “Room” field, type in a different name. In this example, I have used “volumio-tidal.” Finally, turn on the option “Gapless playback.” (It does work with Volumio.)

BubbleUPnP Server Media Renderers

 

And that’s it. You can close the browser window now. The next task is to install and/or configure a controller of your choice. Choose any of the following three sections, depending on the platform(s) that you want to use.

BubbleUPnP (Android)

To control playback from an Android tablet, install the BubbleUPnP app. (It’s appropriate that BubbleUPnP is the first controller listed in this article, as BubbleSoft have provided us with BubbleUPnP Server for free. The full licensed version of the BubbleUPnP app costs a few dollars, and you pay for it by purchasing the BubbleUPnP licensing app.)

Once the BubbleUPnP app is installed, drop down the main menu (top left). For the renderer, select “volumio (OpenHome)” (or the equivalent name for your own). Be sure to select the OpenHome version. For the library, select Local Media Server.

Bubble Tidal renderer

Open Settings (at the bottom of the menu), scroll down and select Local Media Server, then scroll down again and select TIDAL. Check the Enable box and tap on Account to enter your TIDAL username and password, then tap OK.

Bubble Tidal settings annotated

Back on the main screen, go to the Library view, scroll down and tap on TIDAL. You will get the TIDAL main menu:

Bubble tidal home

From there, you can access your TIDAL favorites (albums, playlists, artists), browse by genre, or use search:

Bubble Tidal annotated

 

Tap on the three dots to bring up the menu to play an album or add it to your TIDAL favorites. Or tap on the album cover to drill down.

You may be wondering what happens if you select the regular (UPnP) version of the renderer from the menu instead of the OpenHome version. This will still work – the difference is that your tablet is controlling track-by-track playback instead of BubbleUPnP Server. The advantages of using the server are summarized here (scroll down a bit further on that page). But if you do intend to use an Android device as your only controller, using just the BubbleUPnP app without installing BubbleUPnP Server does work very well.

LUMIN App (iPad)

To control playback from an iPad, install the LUMIN App. You can read the full documentation on the LUMIN website, but here are specifics for our setup. Drop down the “gear” icon to access the Setup menu:

Lumin Settings

Tap on the first entry. Initially this says “Select a LUMIN” but it soon changes to the first renderer that the app finds on your network. After tapping on it, select the OpenHome proxy for your renderer – “volumio-tidal” in my example. (If you select the regular UPnP renderer, you can still use the LUMIN App to control file-based playback but the app will simply not show anything related to TIDAL.)

Lumin settings volumio

Then tap on Options and then on TIDAL Settings to log into your TIDAL account:

Lumin Tidal login

You should also select MinimServer as the music library. That way, you will be able to control file playback from your library as well as TIDAL streaming.

You can navigate through your file library using the first seven icons in the little toolbar near the top. The eighth (second from last) icon will take you to the TIDAL home screen:

Lumin toolbar annotated

This is the TIDAL home screen:

Lumin Tidal home

From there, tap on My Music (lower right) to access your TIDAL Favorites, or use the search function (top right).

A tip: press and hold the album cover to bring up the menu to add an album to the playlist or to your TIDAL favorites:

Lumin Tidal menu

See How to use the Lumin app on the Lumin website for more help.

Linn Kazoo (Mac/Windows)

To control playback from a Mac or Windows computer, install Linn Kazoo. (You can also install Linn Kazoo on iPad/iPhone.) If you have already installed and used BubbleUPnP or the LUMIN App, you will have no trouble figuring this out.

Note: if you have installed BubbleUPnPServer on a Windows machine, don’t install Linn Kazoo on the same machine, as it won’t “see” the OpenHome renderer.

This is the home screen (you can always click on the icon at top left to get back there):

Linn Kazoo home

Click next to the home icon to select the OpenHome renderer (“volumio-tidal” in this example). Click Settings and select MinimServer as the music library. You can then access your music library from “My Music.”

From the Home screen, click on the Tidal icon and then on “My Tidal” to reach your favorites, and drill down from there. Or, use search. Here is an example screen:

Linn Kazoo search

To play an album, click on its artwork and from the popover screen, just click the Play Now button, or use the three dots to bring up more options:

Kazoo play album

Where to now?

The overall system architecture that I’ve put together through this series of articles so far looks something like this:

architecture

It works really well! But there is one drawback: a computer (shown as “Desktop Mac” in the diagram) has to be on every time you need to play music.

Why is that a drawback? Well, some may prefer not to have to turn on (or leave turned on) a computer just to play music. In my case, I do have a computer that’s always on, but I still want to try replacing it for audio playback with… another Raspberry Pi. It seems like a natural way to continue this journey.

Until next time then.

Acknowledgments

The author gratefully acknowledges the support of the following companies and individuals:

  • HifiBerry, for providing the Raspberry Pi add-on board (DIGI+) and case used in this article.
  • Patrick Dillon, for reviewing and commenting on the article prior to publication.


Readers' comments

    Dear John,

    maybe you can help me out. Everything works fine when disabling firewall on my CentOS 7 Server where BubbleUPnP Server is running on. Port 58050 is configured to be open when firewall is running, webserver access works fine. The problem is that clients like bubbleupnp or lumin only see the OpenHome renderer when turning firewall completely off, so there must be another port beside 58050 that has to be open.

    Kind regards
    Andre Dibowsky

    • Hi Andre, I can’t be sure but it looks as though BubbleUPnP server is also listening on TCP ports 58051 and 38251. The bubble web page also says “make sure that a firewall running on the machine on which BubbleUPnP Server runs is not blocking UDP port 1900”. You could try enabling those? Otherwise, might be best to try to get in touch with the BubbleUPnP developer.

    Awesome!
    Thank you very very much!!

  • Dear John,
    Are you streaming Tidal from the Tidal browser this way?
    Is it also possible to stream from the Tidal Windows App where the Tidal Masters MQA are enabled?
    Is it possible to stream Tidal in MQA quality this way?
    That would be nice using a Meridian Explorer 2 or Audioquest Dragonfly Red on the RPi.
    Kind regards,
    Wim

    • Hi Wim, no you can’t do this with the Tidal browser, you need to use the software as described above in the article. As far as MQA goes, I doubt it, the only way the configuration described in this article would work is if you have an MQA-enabled DAC… even then I’m not sure.

      Technology marches on, I don’t think it will be long before native 96k streaming is easily possible (without special proprietary encode/decode).

    Hello,

    I have a Raspberry pi 3 with Volumio,
    And I just intall minimserver, BubbleUPnP, Kinsky and Kazoo.

    I can stream files (evan hi-res) from my iTunes library and stream music from Qobuz : nice !

    But, I can’t stream iTunes files with Kazoo, I have to use Kinsky to to that, I find that strange.

    And I don’t see any way to simply find to see any hi-res files on Qobuz, ie I’m not sure that it is possible to stream hi-res from Qobuz

  • Hello,

    I have a Raspberry pi 3 with Volumio,
    And I just intall minimserver, BubbleUPnP, Kinsky and Kazoo.

    I can stream files (evan hi-res) from my iTunes library and stream music from Qobuz : nice !

    But, I can’t stream iTunes files with Kazoo, I have to use Kinsky to to that, I find that strange.

    And I don’t see any way to simply find to see any hi-res files on Qobuz, ie I’m not sure that it is possible to stream hi-res from Qobuz with Kazoo.
    In fact, I do not like Kazoo and Kinsky navigation.

    But at last, I can listen to music : thank to you !

  • Thanks for this informative article. How can we use a DLNA compliant network streamer like Teac NT-503
    as the renderer instead of raspberry Pi

    • Hi Rajiv, just follow the procedure above but select the Teac as the renderer/room.

    Hello,
    I have a Raspberry Pi3 with Volumio. I noticed no problems with running Tidal but my DAC Chord 2qute can’t find better upsampling than 44.1 kHz via USB. When I connect my MacBook same way Chord is changing upsampling to 96 kHz.

    Could you help me with that issue because it makes difference.

    Thanks in advance,
    Cuba

    • Hi Cuba, I’m not sure I understand the issue but if you want Volumio to upsample you will need to change this in its settings. I found the RPI doesn’t really have enough power for it, but you can try it.

    Dear John,
    many thanks for your article. I have a QNAP NAS which I use for backup and also to store my music library. The server comes with a bundle of software for server applications, but I also found on the website of BubbleUPnP the server applications for QNAP, downloaded it and configured it following your instructions. Works like a charm for Tidal with te Lumin app on an iPad.

    Again many thanks

    • Hi Joerg, thanks for posting, great to hear it’s working for you on a NAS system 🙂

    Hello John,
    I have completed the steps as defined above to use with my iMac with Linn app but cannot play a song from Tidal.
    Tidal shows up on the Linn app and I am able to search albums, but every album I pick goes to the playlist and does not play. If I enter the playlist and try to play from there, still nothing. I am able to play my itunes library stored on my NAS.
    Under the media servers only the NAS is visible. Is this correct? Shouldn’t Bubbleserver be here as well?
    Any assistance would be greatly appreciated. I am not very computer savvy.

    • Hi Craig, only the media server (minimserver) should appear in the list of servers, BubbleUPnPServer is “transparent.” I can only guess at what the issue here might be, please double check that you have selected the OpenHome version of the renderer in the Kazoo interface.

    Nice article with lots of useful information!! I jumped into this adventure having:

    a Qnap TS-439ProII+ with my music media on it
    a RPi 2 with Volumia running on it as renderer for my Wadia121 DAC
    an iPhone (i know, should be an Ipad) with lunin software on it as well as the Volumio App.

    I installed the JRE 8 version for Qnap on it, directly followed by the Bubble UPnpserver
    My Volumio works fine, using the Qnap for it’s media files.
    The lumin app shows the Volumia renderer AND the Qnap proxy (nice!! 🙂 )
    Looks like everything should be working well BUT: I Can’t add a Tidal entry anywhere.

    Is it nessessary to have a third PC in order to use Tidal in the way you drawed above or should it be possible to run the bubble app on the Qnap and working with the lumin to control the RPi with volumio on it.

    Maybe I try to change a wheel on a driving car?? I think I am missing something 🙂

    Ana thoughts??

  • To answer my own questions: Time!! After waiting some time the OpenHome settings on my Qnap appeared and after that, everything worked fine! Some Thoughts however:
    What about safety?, until now, I didn’t had to worry about safety leaks on my Qnap but with JRE and an inviting openhome protocol, running on the same NAS as where all my data is stored……….
    For my own music, stored on my NAS, Volumio works like a charm so the only question I am asking myself: is making such changes in my system for using Tidal only, the best deal concerning safety and usability? Without Ipad (just an iPhone), Roon is slightly better for Tidal but when it comes to dragging and dropping new music on my NAS, and finding it, for me Volumio is the only answer!

    • Hi Paul, glad you got it sorted 🙂 You raise a valid point – I always turn off all the Internet access settings in the BubbleUPnPServer interface. I assume this makes things reasonably safe but exactly what other security implications there are, I really don’t know.

    Hello,

    It make no sense to use a computer if Raspberry has substitute it as player. If you want play Tidal, use a simple labtop and forget pi.

    • Hi, you can use another Pi to run the music server instead of a computer if you want to. I have other articles on how to do that, or for my preferred choice these days, an ODroid HC1. Others posting in the comments are using an off-the-shelf NAS.

    Hi,

    There is no option to select the OpenHome renderer in Linn Kazoo app even after following all the steps listed by you. What should I do?

    • Sorry, I don’t know. Did you enable it in BubbleUPnP server?

    Hi, thanks for this guide. I tried it following your instructions – Minimserver and BubbleUPNP running on Synology DS418 NAS, Volumio installed on RPi3 and “enabled” as renderer in BubbleUPNP, using Linn Kazoo (or Lumin) on my iPad.

    It seems everything works fine, I can see and play music files from my NAS and even see TIDAL logo (no account yet, so can’t check if it works).

    One question – in Linn Kazoo I can see 2 Volumios – one is the one created in BubbleUPNP (which I want to see as this one enables the TIDAL). However I can also see the other one (I think it is enabled by Volumio’s internal UPNP?) without TIDAL option. Is there any chance to “disable” the second one? (make it invisible). I tried to disable UPNP in Volumio (there is a switch in the latest release) but when I did it I can’t see it in BubbleUPNP anymore. So now I can see either 2 Volumios in Kazoo or non of them.

    • Hi, thanks for the comment 🙂 I’m not aware of any way to disable the original renderer. That’s why I suggest making the OpenHome one a different name, you can see in the Lumin example there are two with the different names. Hope that helps 🙂

      • Great article thanks, a lot !

        Sadly, I noticed that the TIDAL integration doesn’t work anymore with Volumio’s latest versions (the ones with MyVolumio).

        • Hi, it still works fine for me with the latest version… Did you set it up the way I describe in the article? You need to log into Tidal in the Kazoo/Lumin/etc interface, not in the Volumio web interface. And you need to use BubbleUPnPServer as described.

    Thank you for this step-by-step tutorial! I would never have gotten as far as I have without it. However, I’m still not quite where I want to be. I have an rpi2 with volumio. On a Windows laptop, I have Bubbleupnp running with the Volumio renderer enabled as OpenHome, just as you showed. However, Linn Kazoo, which is on the same laptop that is running Bubbleupnp, does not see the OpenHome renderer (it only sees the original Volumio). I know I’m close, though, because I installed Linn Kazoo on a separate Windows laptop, and that one sees my OpenHome renderer from the first laptop. I am able to log into and play Tidal and Qobuz from there. If I can just figure out how to make the server and control point work together on the same laptop, I’ll be happy. Do you have any suggestions?

    • Hi Chris, glad the article was helpful! I haven’t seen anything like that. Is it possible that it’s something to do with Windows firewall? (I don’t know, this is the only thing I can think of.)

      • Thanks. I don’t know if it’s the firewall, because I created a rule to allow all traffic to 58050, and it still did not work. I think it requires some kind of port forwarding back to the localhost, but that’s beyond my skill level. Maybe there’s no way to have the control point on the same device as the server. For now, I am using my other laptop to run BubbleUPnP, and my main laptop has Linn Kazoo. At least with this setup I can stream directly to my raspberry pi. Thanks again! I really appreciate this post.

        • Hi John. Here’s one more sign-post with updates, in case others want to do something similar. I was not satisfied with the solution of running BubbleUPnP server on a separate laptop, because that’s too many things to boot for playing music. So, yesterday I bought another raspberry pi and successfully set it up to run BubbleUpNp server. Basically, I installed Rasbpian lite and set it up for SSH (by adding a blank file call SSH in the boot folder) so I could use it without a monitor. Next, I SSH’d to it with Putty (from Windows) and followed the steps for installing BubbleUPnP on a Debian system that are on the Bubblesoft website. This involved installing Java and downloading and installing the bubbleupnp package. After that, I figured out the internal IP address for my new pi by looking at the device table in my router configuration. Finally, I used my laptop to browse to http://[raspberry pi address]:58050 and configured it as you described. So now, here’s what I’ve got:
          1. A Raspberry Pi running Volumio, attached to my stereo system.
          2. A second Raspberry Pi running Raspbian and BubbleUPnP, which is configured to set the Volumio renderer as an OpenHome point.
          3. Linn Kazoo on my laptop as the control point.
          I now can listen to Quobuz music and save favorites directly through the Kazoo app.
          As an afterthought, once I learned how to install BubbleUPnP on a Raspberry Pi, it dawned on me that I probably could have just installed it on original one that’s running Volumio. I haven’t tried this yet, but a little more googling revealed that someone else has already created a third-party plug-in for BubbleUPnP on Volumio (though it isn’t officially sanctioned by the Volumio team–they want you to use myvolumio instead). So, I guess the takeaway is that it might be possible to run BubbleUPnP on the same device as the renderer, but I could find no information on how to run it on the same device as the control point. Thanks again for setting me on this path!

          • Hi Chris, glad to hear you found a solution, I think running BubbleUPnPServer on a separate SBC is a good idea. I usually run it on the same SBC as my music server (minimserver). I tried opening up Windows firewall ports to enable Kazoo to “see” the OpenHome renderer from BubbleUPnPServer but had no success.

          • And to add another update, it does work on a Mac (having BubbleUPnPServer and Kazoo running on the same machine). I’ll add a note to the article about Windows.

    Hi there – I think others might have asked something similar, but would it be possible to control the pi running volumio from android directly, and have volumio on the pi utilise Tidal directly? Thanks for the article.

    • Hi Philip, I think it may be possible if you use BubbleUPnP on the Android device. Although the Android devices would need to be on all the time. Perhaps give it a try and let us know?

    Great!!! Thanks for sharing this enlightening guide

  • My setup is that I have connected my Raspberry Pi running PiCorePlayer with RCA to my speakers.
    I bought iPeng for my iPhone and iPad.
    Because I have a Tidal HiFi subscription, at least I can stream FLAC (I see that in my Logitech Media Server playback information). To make this happen, I have installed the Tidal Plugin for LMS.

    My question, what is the advantage for me to add BubbleUpnp Server to my setup? iPeng is acting as a sort of Tidal Connect, right? I mean, iPeng is not sending a stream via BT to my Logitech MediaServer, but it streams the song directly from Tidal (as the RPi is a network streamer).

    Second question, how can I make it happen that I can stream Master quality / MQA? Do I need a USB DAC for that? Or can I make it happen on the RPi somewhere?

Leave a Reply to Yannick MAHE