Kodi (formely known as XBMC) is an open source media center with a "10' interface designed for set top boxes and htpcs. The project originally started out as a mod for the original Xbox but has since dropped support for the xbox and greatly expanded in scope. It has built in support for all types of media playback and a third party add on system.

Finished

I was originally running it on a small under powered ion based set top box, but when Valve announced SteamOS it really got me interested in upgrading my hardware.

Hardware

Hardware

I also threw in an old 1 TB SATA drive I had sitting around for slow media storage. I picked up most of this during Black Friday sales so the total cost was ~$750.

Assembled Hardware

Booting up for the first time:

BIOS

Originally I threw in an old Haupage TV Tuner card I had from my old MythTv Box, but pulled it after I ran into some issues installing Ubuntu and due to airflow concerns since it sat so close to the video card.

Even after removing the card I kept getting getting kernel panics. Eventually I narrowed down the problem to some bad RAM.

Testing RAM

Software

At first I was planning on installing SteamOS, which does have repository for Kodi. In the end I decided to install Ubuntu it start Kodi on boot. SteamOS would start up to Steam in the big picture mode and you would need to launch Kodi from in there, so it was mostly a question about which I was going to use more.

There are a couple of linux distros for Kodi but I just installed the default Ubuntu 14.04-AMD64, in the past I had issues with Kodibuntu and Openelec is stripped down speciffically for running Kodi and I would need to install a desktop manager for Steam to work.

OS/Kodi

These instructions cover removing all of the the extra desktop stuff you don't need on a media pc and installing Steam and setting up Steam Launcher add on for Kodi. It was written for Ubuntu 12.04 but works fine on 14.04 as well.

Steam

A lot of the games in Steam had sound issues and were looking for 32 bit libraries. sudo apt-get install libc6:i386 installed the missing libraries.

Netflix

Since Netflix dropped Silverlight and added HTML5 support for Chrome, you can now watch Streaming videos on Linux. NetfliXBMC is a plugin for Kodi that uses the Netflix API to pull show data and then launches Chrome to play videos, its not perfect, but its a really impressive workaround.

First, you need to install Chrome (Not Chromium)

wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb
sudo dpkg -i google-chrome-stable_current_i386.deb
sudo apt-get -f install

Install xdotool

sudo apt-get install xdotool

Then download and add the repository and install and configure the Chrome App Launcher and NetfliXBMC addons in Kodi

wget http://www.alelec.net/kodi/repository.alelec.zip

Emulators

Libretro is a wrapper for various different emulators that lets you use one set of configuration for controllers and audio for all the emulators. There are different cores for each emulator.

To install Libretro

sudo add-apt-repository ppa:libretro/testing
sudo apt-get update
sudo apt-get install retroarch

Add any cores you want to use as well from the repository.

Then so we can access the emulators through Kodi install the Advanced Launcher addon.

Download the zip file and add as a repository and then install Advanced Launcher plugin.

wget http://www.gwenael.org/Repository

Add a location for Retroarch (/usr/bin/retroarch) and then for the parent of your rom directories. I also added a nfo subdir for storing downloaded cover art.

Then add a source for each of different emulators. Each one will need to point to a core in /usr/lib/libretro. The -f switch starts retroarch in fullscreen and -L switch is used to select the core to load, ie -f -L /usr/lib/libretro/gambatte_libretro.so for Gameboy roms.

Once the emulator is set select add items and Advanced Launcher will scrape the directory and add roms with any information it can get from the selected scraper.

ROM File Names

Filenames for roms will often have a series of letters and numbers after the game name, these are used to indicate release country version number and various other information. (U)(!) means its a known good dump of the US version. A complete list can be found here.

Advanced Launcher can be set to display the full game name instead of the file name, but if you have multiple versions they will all show up with the same name so I removed all of the non (U)(!) to keep things simple.

MAME

A quick note about MAME. MAME is an emulator for various different Arcade games. The libretro repository contains 3 different cores: MAME, MAME2010, and MAME2003. Due to the diverse hardware that the emulator handles new versions often won't work with old rom sets. Be sure to check the version number when selecting the core.