Playing Local Media with a Roku Streaming Stick

We're primarily a Kodi household, with OSMC on Raspberry Pis playing content from a modest, and locally hosted collection of digital media. This collection is exposed to Kodi via http, requiring nothing more special than a web-server (my NAS) with directory listings enabled.

However, I've been gifted a Roku 3810EU and wanted to play around with using that a bit.

It's been a good few years since I last played with a Roku (we had one to help with monitoring and testing a few jobs back), but the interface feels as accessible as it did then.

For those not familiar: Roku use the term "channels" to refer to what might more colloquially be referred to as apps and their store contains a wide range of possible channels providing access to OTT content: everything from Amazon Prime Video to Rakuten TV.

The problem, though, is that the Roku is (understandably) very much focused on playing remote streams and I've got a local media collection that I'd like to access.

Roku's store includes a channel (Roku Media Player) which allows playback of local content, but playback of LAN hosted media relies on DLNA, meaning that my simple HTTP server isn't compatible on it's own.

There are solutions (such as Plex) which could be used to provide DLNA support, but I didn't really want to have to stand up an additional service just so that the Roku could play content from a source that our existing media boxes handle fine.

Thankfully, there wasn't actually a need to do so, as those existing boxes are the key: Kodi can be configured to expose its media library to other players via DLNA.

This post describes the (easy) process I followed to configure an OSMC box to act as a DLNA server, allowing playback on the Roku.

Kodi: Enabling DLNA

Kodi's configuration tends to refer to DLNA as UPnP (DLNA is a UPnP A/V derivative). Although the two aren't the same, Kodi's support meets our needs (it might even be that the naming's misleading and Kodi have actually implemented DLNA rather than UPnP A/V, I haven't checked).

Enabling is pretty simple, going to Settings -> Services -> DLNA/UPnP should bring you to a screen like this (exactly how it looks will depend on the skin you have enabled)

Screenshot of the Kodi DLNA Settings page

DLNA can then be enabled by turning on the following options

  • Enabled UPnP support
  • Share my libraries

With that simple change made, it's now just a case of configuring the Roku

Roku: Finding the Channel

Apparently, some models already have Roku Media Player installed on them, so it's worth taking a quick scan through the home page to see if it's there (if the Roku's new, this is also a good opportunity to clear out any channels that you're not actually going to want).

Select Streaming Channels to enter the store, then choose Search Channels.

Enter Media as a search term, and Roku Media Player should be listed. Move across and into it by navigating right, you should then be presented with the option Add Channel.

Roku Media Player installed

When you enter the channel you're prompted with a choice of Media Types, choose Video and you should be presented with a list of the available DLNA sources

Roku Media Player Media Device Selection Screen

(We use a HDHomeRun device to make Freeview available around the house without needing to run aerial cables, that it's shown up in the list is an unexpected bonus).

Browse into your Kodi source and you should be presented with the choices Music Library and Video Library. Clicking into Video Library will then present Movies, TV Shows, these in turn then present categorisation choices: Genre, Title, Year, Actors etc.

Browse to a video and you should find you're able to play it back.

I was surprised, but pleased, to find that the Roku also provides access to media that hasn't been scanned into Kodi's library - the stuff you'd normally find by going to Files in Kodi's interface.

Load on Kodi

Playback via DLNA doesn't seem to result in much RAM or CPU usage on Kodi's end.

The box I chose to use is a Raspberry Pi 3 Model B, so has a quad core processor and 1GB of RAM. It seems to be able to support both local and DLNA playback at the same time.

That being said, to reduce the likelihood of conflict, I still deliberately chose a Pi that is unlikely to be used at the same time as the Roku.

Drawbacks and Limitations

This setup isn't without it's issues:


As the above section implies, navigation within Roku Media Player verges on the arcane, you have to work down through multiple layers of menu to actually reach the point of watching something. You can work through it pretty quickly, but it does make switching from movies to TV shows somethings of a pain.

Content Suitability

For those with kids, there's another (less obvious) constraint.

If you've got multiple Kodi boxes, think carefully about which one you set up as the DLNA server.

Kodi doesn't expose a way to restrict what devices can play back via it, so if you enable DLNA on a Kodi box that has access to more mature content (like porn), not only will that content become available to any DLNA supporting device on your LAN, but those devices might actively suggest adding the Kodi box as a media source.

Supported Formats

The Roku only supports playing the following video formats:

Screenshot of the Roku supported formats. Video is H.264 only unless you have a 4k stick which also supports h.265

Kodi does not transcode the media that it's streaming, so if you've got media stored that isn't in one of the (quite broad) range of supported formats, it won't play.


Once you know where to look, getting up and running doesn't take very long at all.

Unfortunately, the interface provided by Roku's Media Player isn't great, so navigation is a bit of a let down. This could be simplified if there were a way to add shortcuts to locations within the app to the Roku's home screen, but if that capability exists, I've not been able to it.

The main thing though, is that it does allow playback, so I can now watch old shows on an older TV without needing to contend with the supply chain issues currently affecting Raspberry Pi's and without letting quite a nice gift go to waste.