When I got rid of the last Windows partition on any of my home computers, I thought I would finally give NFS a chance to replace CIFS as the reigning network file system in my house. To it’s credit, NFS took that chance and ran with it and it’s worked pretty much flawlessly ever since. Seeing how reliable it has been, it has become my primary means of accessing media located on my HTPC when not in front of/within earshot of the my TV/hifi but still on the local network.
That approach, however, has some serious shortcomings. I can’t see what I have and have not watched. I can’t see if I’m halfway through a movie – something that is depressingly common in this ADD world of media abundance. I have to move between file managers and video players, something that isn’t that practical when my 2-in-1 laptop is in a position that hides away the keyboard and I have to rely on the touch screen. And I find myself missing the inviting presentation of Kodi from my HTPC.
So recently the thought struck me: Could I not just set up a second Kodi instance on my linux laptop only as a client? Turn a full-fledged Kodi application into a dumb terminal? An… *makes sign of the cross* ‘app’? Only then I did I remember that, wait, wasn’t that sort of the selling point of Plex over Kodi? Apps aplenty? Streaming everywhere and anywhere? Well, yes. But it can be done with Kodi. Sort of. Here’s what I got.
So to start with the disappointing news: There is no client mode in Kodi. No one big flip switch that will make it understand that there are no local media and that it should ask another Kodi setup for everything, including content and settings. All you can do is add non-local sources to your ‘client’ and give them pride of place.
The good news is that done right, this does come with pretty much all of the benefits, I was missing from the NFS setup: Watched status and resume points are synced both ways (!), it looks pretty and it’s easier to navigate. Of course it’s only local so if you’re wedded to Plex’s non-local streaming feature you probably won’t want to switch. I should also add that I have only tested this in a linux server + linux client setup.
UPnP
Kodi supports UPnP as a server, client and even, as of v13, as a control point. Personally, I was somewhat disappointed that I was going to have to go down the UPnP route. UPnP is incredibly useful and incredibly it is actually a common and widely used standard but it’s not particularly… sexy? I remember trying to get music from my server to play on my hifi using my phone as a control point when I got all the parts together a few years ago. It was kind of cumbersome and I quickly moved on to simply playing music from Kodi. The requirement for the TV to be on in order to listen to music seemeed stupid at first but it was easier than UPnP and so it won as convenience always does. Various manufacturers prefer their own proprietary solutions and so UPnP solutions languish and applications to go with them get old and ugly and few and far between. I think I went through the small number of UPnP apps in the otherwise huge Android ecosystem in the course of just a few hours.
Nevertheless, UPnP, it is. And here’s the selling point: While cross-application implementations may leave something to be desired, when both ends of the stream are called Kodi, the meta-stuff just works. If I have watched the first twenty minutes of a tv episode on the HTPC and open it in Kodi on my laptop via UPnP, Kodi asks if I want to resume at the 20 minute point. If I watch it to the end, it get’s marked watched. There is no local and remote status: If it’s watched on the laptop, it get’s marked watched on server and client, alike. The same goes for resume points.
Server settings
On the server you must of course enable UPnP so that your media are advertised on the local network. Go to Settings | Services | UPnP/DLNA to toggle on the Share my libraries option. I also tend to toggle on Allow remote control via UPnP, suspecting that it might be a factor in the exchange of metadata. If nothing else it will allow you to use some of those not-too-impressive smartphone apps to control playback on your server.
Secondly, you should go to Settings | Services | General to set a recognisable device name. The default – ‘Kodi’ – is not particularly helpful when both client and server are Kodi. For clarity I tend to go with [hostname].kodi in a sort of pseudo-mdns style. Restart Kodi (or reboot) after you have made any changes to the UPnP service as it only seems to updatarye the name advertised on startup.
And that’s really all there is to it. If you’re running a firewall on the server make sure that you’re not blocking any relevant UPnP ports (UDP 1900, for one).
Client settings
In the client we will need to add the relevant sources one by one. That means any movie libraries on the server, any TV libraries on the server, any music libraries on the server and so on and so forth. These sources will be added to the client’s own media libraries, respectively the movie, TV and music libraries. Because my client is a pure client and so does not have a local collection to master – what little media I keep locally is easily perused using Nautilus – these will be the only sources in their libraries.
To add parts of your server library to your client, simply go to Settings | Media | Library and click on Videos… in the Manage Sources section. Then click on Add videos…, choose Browse and scroll down until you find UPnP devices. When you click that, you should see that Kodi has found your server instance of Kodi. If it’s not there or does not have the name you have assigned it, you may want to restart both Kodis, first the server instance, then the client. From then on it’s simply a matter of navigating as deep as you want to before clicking OK and adding the level you’re currently at (e.g. do you to add all of the Video library in one go or do you prefer having two separate sources for TV and film, each navigated down to displaying all shows/movies by title) . To make sure you know where the media are located you should name the source so that it’s clear, e.g. Movies (SERVER_NAME). Repeat for each source you want to add, tv, music, etc.
Theme
I have been using this setup for a while and it has been working pretty well. Metadata sync works and videos start up much more responsively than on a netowrked file system.As I mentioned my ‘client’ machine is a 2-in-1 (Lenovo’s Yoga 2 Pro) and media consumption on the device typically means that the laptop is in either ‘tent’ or ‘kneeling’ mode, making a workable touch interface an important requirement of any media player. Kodi 17 introduces a dedicated default touch theme called Estouchy, derived from the main default theme, Estuary.
The results are mixed. Yes, there are shortcuts to the main screen and back to the player but configurability is very low and generally it just feels like a weirdly neutered Estuary. For instance, I am unable to add separate TV and Movie categories to the main menu. On Estouchy all video is gathered under well, Videos. Because then you can have room for a (seemingly) mandatory Weather category. Brilliant. With the Titan theme I believe you can clear out the main menu’s default categories and just stick the the specific sources straight to front of the application. Another strange restriction: Unlike Estuary you can’t change the color. The list goes on.
The addition of a big lower-right button to change the library view does make that part a lot easier for a touchscreen user but how often do you really cyckle through different views? You find one you like (InfoWall or you’re crazy) and you stick with it. The likewise easy to reach toggle button for an onscreen keyboard is a feature I wwould love in GNOME but I can find what I’m looking for in Kodi without searching. I cannot say if Estouchy supports touchscreen gestures of any kind as I believe the linux drivers for my touchscreen only registers any touch – long, short, sweeping, stabbing – as a mouse left-click. This makes it really hard to use my client Kodi as a serious music player as Kodi 17/Estouchy makes it almost impossible to play an album without some sort of context click which you may or may not get with better drivers or on different platforms.
I suggest you try out a few different themes – even if Estouchy is supposedly touch dedicated, it may or may not be the best suited theme for your kodi ‘client’. As a final touch you may wish to make some changes to advancedsettings.xml on the client if you are having buffering issues.