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.
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.
- SILVERSTONE Grandia Series GD05B Case
- ASRock H97M Pro4 LGA 1150 Intel H97 HDMI SATA 6Gb/s USB 3.0 Micro ATX Intel Motherboard
- EVGA 02G-P4-2643-KR GeForce GT 640 2GB
- Intel Core i5-4690K Devil's Canyon Quad-Core 3.5GHz LGA 1150 BX80646I54690K Desktop Processor
- LG Internal 24x Optical DVD Drive
- G.SKILL Ripjaws X Series 8GB (2 x 4GB) 240-Pin DDR3 SDRAM DDR3 1600 (PC3 12800) Desktop Memory Model F3-12800CL9D-8GBXL
- SAMSUNG 840 EVO MZ-7TE120BW 2.5" 120GB SATA III TLC Internal Solid State Drive
- EVGA 100-W1-0430-KR 430W PSU
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.
Booting up for the first time:
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.
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.
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.
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.
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
sudo apt-get install xdotool
Then download and add the repository and install and configure the Chrome App Launcher and NetfliXBMC addons in Kodi
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.
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.
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.