Remotely Control Kodi (XBMC) with Yatse using Port Forwarding

This guide will show you how to get Kodi (XBMC) home theater connectivity on your Android phone using Yatse from anywhere in the world by port forwarding.

If you use Kodi (formerly XBMC) with the Yatse Android app, you know how many awesome features you get that make everything feel so seamless and integrated.  But, just out of the box, you only get those features if you are connected to your home wifi.

This guide will show you how to get all that home theater connectivity on your Android phone from anywhere in the world.

First off, if you don’t know what the Yatse app can do, check out this post.

Now that you know how awesome Yatse is, let’s see how you can make it even more awesome.

Setup Dynamic DNS

The first step is to have a host name that will always point to your home network.  For most people, your ISP (Internet Service Provider) will change the IP address of your house on occasion, especially if you reboot your router.

In order to have a domain name that always resolves to your house’s IP, you will need to set dynamic DNS.

There are many free dynamic DNS providers.  My router (the Ubiquity EdgeRouter Lite) happened to support several dynamic DNS providers.

After you sign up for the account at the provider of your choice, you will either need to enter the account credentials in your router (if yours has that kind of feature like mine), of you will need to download a program that will run on your computer.

In both cases, the purpose is to report back to the dynamic DNS provider to let them know what your IP address is.  That way, if your IP address changes, your router or the program that you installed will report that to quickly update the DNS record on your dynamic DNS host name.

Tip: If you own your own domain and would like to use that instead of the one provided, you can set a CNAME record for a subdomain of your domain and have that point to the host name provided by your dynamic DNS provider.

Port Forwarding on Your Router

Now that you have your own subdomain that will always point to your home network’s IP, let’s open up some ports on your router to allow the Yatse app to communicate with your home theater PC from the outside.

There are 2 main ports that are used by Yatse (or any other Kodi remote).

8083: This is the main port that remotes use to communicate with the Kodi API.

9777: This is the Kodi event port.  Remotes will work fine without this port opened up.  But when you enable this, then the status of Kodi communicates to your Android phone (and even Android Wear smart watch).  For example, if I’m at work, and my kids are watching their favorite TV show at home, I will see the fan art of that TV show on my phone’s lock screen and also as a card on my Moto 360.  I can pause or skip from either place.

Kodi Library on a MySQL Database

You might have noticed that I show a 3rd port forwarded in my screenshot.  It’s port 3306.  That is the port for MySQL database connectivity.  I have this because I have a MySQL database that stores all of my library data.  I then have several computers that have an advancedsettings.xml file set to point to that database.

That way, all of my computers that run Kodi share the exact same library data, watched statuses, etc.  I can stop a show midway through, walk to a different room with a different computer and resume that show from that exact same spot.

If you are interested in learning more about that, let me know in the comments and I can write a new tutorial on how to set that up.

16 thoughts on “Remotely Control Kodi (XBMC) with Yatse using Port Forwarding

  1. Hi Nathan, I know this is an old post… I followed your steps until the very last one…. I can’t add my Kodi host using the DDNS address and port from Kodi’s setup… Would you be kind enough to elaborate on that?

        1. Thanks for the attention Nathan, I setup my router (running DD-WRT) as the host for DDNS and I setup port forwarding within the router to the Android Kodi host (Krypton on Nvidia Shield). When I ping my DDNS host while connected to WiFi, it works, when I attempt the same thing through my phone’s cell network connection, it fails…. Am I missing something!?

        2. Thanks for the attention Nathan, I setup my router (running DD-WRT) as the host for DDNS and I setup port forwarding within the router to the Android Kodi host (Krypton on Nvidia Shield). When I ping my DDNS host while connected to WiFi, it works, when I attempt the same thing through my phone’s cell network connection, it fails…. Am I missing something!?

Leave a Reply

Your email address will not be published. Required fields are marked *