Helium – a M-DMC for your N9

What’s Helium?

Helium is a so-called UPnP A/V ControlPoint (or as DLNA puts it, a M-DMC). It allows you to browse UPnP/DLNA media servers from your N9 and show or play its contents on a rendering device as well as offering basic playback controls on those devices.

Where do I get it?


The current version is 0.6. It is available on this website or via openrepos.net. An issue tracker is available at github.

How to use

After starting

After launching Helium you will see a list of available media servers on your current network. Helium has two views, a “Server view” which you are currently in and a “Player view” which can be reached by clicking on the “Play” button in the bottom tool bar.
If you need to refresh the list of available devices because a device you believe is available but isn’t shown you can use the refresh button in the top bar to force a scan for available devices.
You can simply start browsing the server by tapping on it.

Browsing and playing media

The browse view looks similar to the initial server view. You go deeper into the hierarchy by tapping on the item if it indicates that there’s more to come. You can navigate up the hierarchy by using the tool bar’s back button.
You can refresh the current listing by clicking on the refresh button in the header.

To play back an item on the selected renderer, use a long press. By default this will open a pop-up menu where you can either chose to play the file on the currently selected player (“Play on current device”) or chose another player from a list of currently available players.
If the currently selected renderer does not support an item, Helium will tell you this by adding an exclamation mark to the item’s icon.

Player View

The player view does not look very different from the initial server view. You can refresh the list of available devices and switch back to the server view. To select a player tap on it. Helium will then show you extended playback controls as seen in the image.
You can start and stop a playback as well as see its current progress.
If the player supports it (some may not as those actions are optional), you can also pause a playback and seek in the media by tapping on the progress bar.
You can close the extended player view by tapping on the “up arrow” right to the device’s name.


Some details may be fine-tuned. It is possible enable or disable the use of album art and Settings pagethumbnails which speeds up the display of the media list. It is also possible now to show the device icons.
If you prefer the old way of using long press to play a file on the currently selected renderer, the settings panel has an option to revert to the old behaviour.
It is also possible to start the on-device media sharing every time you launch Helium. This does not show the status icon yet.

37 thoughts on “Helium – a M-DMC for your N9

  1. Is it possible play music from dlna server in N9? Using the phone like a renderer?
    Great App!

  2. How can i play music/video from my mediatomb server? “Play on current device” option isn’t active and when i tap renderer&refresh i get “connection lost” message…
    Great app anyways, guess im doing smth wrong

    1. You can’t use Helium to play music from your UPnP server on your phone yet. It’s a planned feature but it doesn’t work right now. “Current device” means the currently selected renderer in the renderer view.

  3. Nice app, two observations
    1. Can’t play a folder, need to play song by song
    2. Doesn’t give the functionality of a renderer to the N9.
    Hope the app will be updated, thanks and keep up the good work.

  4. Good app.But error is:very long passes to the next photo ,das not transmit video in AVI format end some others.You can fix it?

    1. Unfortunately those are things that are completely out of my control.
      I know that some renderer take ages to display photos, but that’s an issue in the devices. Same holds for AVI. If the renderer does not support AVI and the server does not support transcoding to something that the renderer understands, there’s nothing I can do about that. Sorry.

  5. Hi! I’ve been waiting for a UPnP-controller for the N9 ever since I bought it! I have a Linn Sneaky DS (www.linn.co.uk), and right now I can only control it through their quite simple web-based UI, which leaves a lot to wish for. I can only turn it on and change the volume, as well as walk through an already defined playlist. This means that my girlfriend is currently choosing all the music, and we can’t have it like that, right 😉
    I was so glad to see Helium, but the problem is that I can’t see neither servers nor renderers on my network through it. I’m using Mediatomb on my desktop computer, MiniDLNA on my NAS, but I can see my N9 and my Windows 7 share.
    Have you tested its compliance with MiniDLNA? It would be great to see if you get any other results.

  6. And now the Linn Sneaky showed up as well, but it took a couple of minutes (at least 3-4 minutes of waiting in the Renderer view). After switching to Servers and back, it’s gone again. Sorry to spam you, I just had to update you on the issue!
    I’ll follow your repository on GitHub to check the progress! I’ve started development on my own UPnP controller a couple of months back, but haven’t really gotten anywhere, just a program that finds devices on the network. I’m using HUPnp (Herqq) since that is written in C++ and already utilizing Qt.

    1. Well let’s say the N9’s hardware is a little bit challenged when it comes to handling massive UDP packet burst. miniDLNA should work fine, at least it does here.

    1. Well it works instantly here, it depends on the network, accesspoint and the overall load. I only said it might be the reason, hard to be sure.

  7. In shop there was a Vid?oEditor app which converts video in files and your server transfers them without problems.(on my TV precisely)

  8. I managed to reproduce the problem and also find a solution for it. It looks like it’s a bug, but I guess you’ll know more about that than I.
    At first, I didn’t find either Renderer or Server, even after waiting for 5 minutes. But if I went to the website of my NAS (with the N9), it suddenly popped up in Helium as well. And the same thing happened with the Renderer! When going to it’s website, it popped up in Helium, and it automatically started when I pressed on it in the list.
    Is there some sort of “wakeup”-message in the UPnP protocol, for clients that are somehow sleeping? Does that need to be sent before scanning for servers/clients?

  9. Hello,
    I have got several suggestions of integrating DLNA media rendering into the QSpot Spotify client for N9. It currently uses QtMultimedia (QAudioOutput) for audio playback. Would it be possible to use your DLNA (Helium) solution in some way to achieve this (i.e, is it technically feasible)?

    1. That depends. If by renderer it means a true UPnP remote accessible renderer, then no. There’s no code in Helium to help you with that.
      If it means renderer as in DLNA player, meaning browse remote UPnP shares and play locally, then you can reuse the browsing code in Helium to get the URI you need for playback. This is on my TODO list as well.

  10. Thanks for the reply. So if I have understand this correctly, audio DLNA playback is not possible at all at the moment? Not event using e.g., the Korva d-bus (media push) interface?

  11. yes that was my intention, therefore I wanted to check with you about its feasibility and the best way to implement it (if possible). 🙂

    1. Ah. In an ideal world, korva would be the way to go. If on the N9, you can’t really depend on it since it’s not in base, though. (and it only handles local file:// URIs, but that would be fixable).
      Otherwise you can reuse the code from Helium, you need to basically just call SetAVTransportURI on the renderer.

  12. Thanks for the suggestion. I have been studying the Helium sourcecode (in particular, SetAVTransportURI). What kind of URIs are supported (e.g., do I need to store the Spotify data locally and the provide the URI to the local audio data). And could it cope with audio streaming?

    1. That largely depends on the device. They’re implicitly listed in the “sink” variable of the GetProtocolInfo call. the format is “protocol:mime-type:*:other-stuff”. However you can safely assume that everything speaks HTTP.

  13. Thanks for the info, I will look into GetProtocolInfo etc. What minimum amount of code from Helium would be suitable to include for the UPnP media render functionality?

    1. The stuff from gupnp-qt4 and the stuff from upnpmediarenderer. Although that’s not the nicest code on earth, I’m currently revising that.

  14. I’ve been using Helium to control Raspberry Pis running XBMC and Minidlna and it works very well. On an Android tablet I use BubbleUPnP (or Yatse for XBMC) so I miss the Local Renderer from time to time.
    Could you use mplayer/kmplayer for local playback instead of a much more ambitious remote-controllable renderer? It could be in the Play on…, Play on other device… menu. There are two applications for the Finnish Elisa Viihde (tv shows stored online as Transfer Streams) using mplayer/kmplayer (free Hupi Player and inexpensive goViihde) for local playback. Setting the parameters for the player is much simpler for Elisa Viihde than DLNA, though: HD is not supported so there’s just one file format (ts/MPEG-2), and resolution is either 720×576 or 720×480.

  15. Just bought a Sonos. In some limited way, I am able to play music from my NAS to my Sonos, controlled via Helium. Pretty cool actually!

Comments are closed.