Home > Hardware, Linux, Testing, Ubuntu, Video > How-to Setup a DLNA/UPnP Server in Linux for Smoother Video Streaming with Kodi and Other Media Players

How-to Setup a DLNA/UPnP Server in Linux for Smoother Video Streaming with Kodi and Other Media Players

I’m normally playing videos from a SAMBA share installed in a Ubuntu PC to play files from Kodi in Android TV box reviews, but sometimes when I use 10/100 Ethernet, or worse WiFi local “streaming” may not be as smooth as possible. SAMBA is convenient because of access control and read write operations, but if you want to get a bit more performance, you may switch to NFS instead, or like I’ve going to show you here to a DLNA / UPnP server to stream videos locally from Kodi 16.1.

There are several options, but MiniDLNA is lightweight compared to MediaTomb, so it will also run on lower end hardware like cheap ARM Linux development boards like Raspberry Pi, Orange Pi, or NanoPi NEO without taking too many resources.

Installation is very easy in Debian / Ubuntu distributions, and I supposed this should also work with Windows Subsystem for Linux in Windows 10:


MiniDLNA can be configured with the same settings for all users, or different settings for specific users. In both case you’ll need to edit /etc/minidlna.conf configuration file. In my case, I only changed or uncommented the following lines for global settings:


You can add as many media_dir lines as you want, and also add A, V or P letter to separate Audio, Video, and Photo media type. For example:


Please note that minidlna daemon (minidlnad) will automatically scan subdirectories, so they don’t need to be specified.

Now that we have modifed the configuration, let’s restart it:


The Wiki on Ubuntu linked in the introduction also mentions to run the following command to rebuild the database:


However, while I could find my new UPnP server in Kodi, there were no files at all, and the log shows the same error message over and over:


eventually the command:


fixed the issue. But that’s not exactly the right way to fix it as it assumes root is running the daemon.

A better way if you’re going to have a decidated server is probably to set the ownership of media files to minidlna with a command like:


So how do you play videos from your DLNA/UPnP server in Kodi 16.1? Go to Videos->Files, and select Add videos…

Kodi_UPnP_devicesNow select UPnP devices

Kodi_miniDLNA_serverKodi should like your UPnP / DLNA servers. In my case FX8350:root, which correspond to the hostname or friendly_name in the hostname, and to the user, normally minidlna. Select the server, than Browser Folder, or Videos, and click OK.

I’ve shot a short video showing how to setup UPnP devices in Kodi, and compare SAMBA and DLNA performance by playing the same video file in Kodi 16.1 Android through SAMBA and UPnP/DLNA.

You’ll notice the video played from the SAMBA server starts much faster, but buffers several time during playback, while the video played from MiniDLNA server on the same PC will buffer data longer at start, and always fill the buffer fast enough to avoid bufferring.

I took Conky screenshots for another video showing the traffic shape for both SAMBA with relatively constant speed (6600 KB/s to 7400 KB/s) and DLNA which shows very high bitrate (>10000 KB/s) to fill the buffer the first time, and then play consistently around 6400 to 6800 KB/s.

SAMBA_vs_DLNA-UPNP

Of course switching from SAMBA to DLNA won’t do miracles, but if you notice a few buffering while playing videos in SAMBA, switching to DLNA/UPnP may resolve the issue. You can also keep the best of both world, for example using SAMBA to download/copy files, and DLNA to play them back.

  1. MrT
    August 16th, 2016 at 16:21 | #1

    My only complaint about using UPNP is that external subtitles are not loaded, something that with SMB share seems to work.

  2. August 16th, 2016 at 16:45 | #2

    @MrT
    It will allow me to browse for the subtitle, but when I (manually) select it, it ends with an HTTP 404 error:

  3. August 16th, 2016 at 16:54 | #3

    @cnxsoft
    What I can do is to play the video over UPnP, and load the subtitle file over SAMBA. This has to be done manually, so it’s not quite user-friendly.

  4. Martin
    August 16th, 2016 at 19:08 | #4

    I have seen that accessing my Synology NAS with Samba from Ubuntu is very slow.
    You think DLNA is faster? This is an interesting idea, is there a benchmark program to test this?

  5. August 16th, 2016 at 19:53 | #5

    @Martin
    I don’t know storage benchmarks work with DLNA because AFAIK it’s sending HTTP packets.
    You can easily test it by playing videos with different bitrates from SAMBA and DLNA, and see if buffering decrease.
    As mentioned in the introduction, NFS is also another alternative to SAMBA, which should also be faster.

  6. Demetris
    August 16th, 2016 at 21:16 | #6

    @cnxsoft
    It’s not after some fiddling with all protocol’s samba is the best and the most compatible for all major OSes
    It needs some fine tuning although but after that nothing beats it hands down!

  7. Martin
    August 16th, 2016 at 21:16 | #7

    @cnxsoft
    I did the following:
    samba: cp /mnt/diskstation/video/bigmovie.avi /dev/null ==> 33 seconds

    dlna (djmount): cp /mnt/dlna/DiskStation/Video/bigmovie.avi /dev/null ==> 88 seconds

    but maybe djmount is not good (it mounts DLNA as file system).

  8. Errepunto
    August 17th, 2016 at 00:47 | #8

    I have been using Plex for a while, using its DLNA server, and works like a charm. Even when my server was a ODROID-U2 🙂

  9. divide
    March 8th, 2017 at 05:57 | #9

    Your most likely seeing that spike in speed because the file is already being cached in memory when you do the test. its pulling that data faster because it doesn’t have to buffer it into memory before the transfer..

  1. No trackbacks yet.