Monday, September 24, 2012

HowTo OpenELEC : Get the perfect Fusion XBMC Media Center with Zotac Nano XS AD11

*** Updated February 3, 2013  ***

Major changes:
02/03/2013 - Upgrade to OpenELEC 3.0 ^^
10/17/2012 - Upgrade to first Stable 2.0 !!!
10/14/2012 - Upgrade to Release Candidate 2 (RC2)
10/07/2012 - Upgrade to Release Candidate 1 (RC1)
10/03/2012 - UMA Frame Buffer Size recommendation updated
10/02/2012 - Various corrections
09/25/2012 - Initial Version

Edit 10/17/2012:

I strongly recommend using OpenELEC 3.0 for Fusion systems, it's very stable and cool ^^


Zotac Zbox are well known Home Media Center PC, small, complete and powerful.

In this post, i will expose a recent model based on AMD Fusion system and called "Zotac NANO XS AD11", associated with Openelec.

Openelec is very good Linux based distribution for XBMC, it's very light, almost all is working out of the box and easy to install and configure.

This box is very very small, incredibly small and has a good factory product, first let's some pictures of the animal ^^

And to give you an idea of its size, let's compare it to a well know product! (Iphone 4)

As you can see, it is very, very small :-)

The Zotac AD11 is provided with a Zotac MCE Remote control, an internal IR receiver and also an external USB IR receiver.

The remote control is perfectly working out of the box under Openelec, no intervention required.

Also, this device is provided with a USB Wireless interface, again working out of the box ^^

Thanks to the great work of Openelec developers, Openelec will easily give us an XBMC installation working out of the box, and able to deal with any HD movie!

Let's start!

Summary of steps: 

Step 1: Configure UMA frame buffer size in UEFI
Step 2: Install OpenELEC
  Step 2.1: Standard installation using media installator
  Step 2.2: Manual alternative installation method (example in dual boot with an other system) 
Step 3: Configure OpenELEC (Network, Video Options, Skin)
Step 4: Configure your Media Library
Step 5: Configure the sound
Step 6: Zotac MCE Remote control
Step 7: Optional - Opera addon - Integrated Web Browser

Step 1: Configure UMA frame buffer size in UEFI

First of all, we need to set a very important setting in Zotac EFI, if you don't you will get playback issue impossible to resolve in OpenELEC!


So, to set this:

  • Power on the Zotac and access to UEFI by pressing SUPPR key at boot time
  • Go in screen "Chipset"
  • Set UMA at 1G (default is 256M, see Note above for more details)

Save and reset.

Note: If you have enough Memory (let's beginning with 2GB), then setting UMA at 1GB is recommended to avoid any playback issue.
Still you can try with 512MB and update to 1GB in case of trouble.
See Peter's comments. (thanks to him!)

Step 2: Install Openelec

Step 2.1: Standard installation with media installator

Use this method if you don't plan to have multiboot on same device, with an other Linux installation as for example.
If you plan to have multiboot, go to "Step 2.2: Manual alternative method (Multiboot)

Installing Openelec is very easy and will be done a few steps.

Don't hesitate to take a look at the main Wiki Openelec Website:

Installation will be done in a few simple steps, described as bellow:
  1. Download Openelec installator and extract
  2. Create your installation booting USB Key
  3. Boot with your USB Key and install Openelec

1. Download and extract Openelec

Go to:

Look for the section "FUSION Builds' and download the last version, i recommend you to use the last version even if still considered as Beta.

Note: You have to choose between PVR version and non PVR version, if you want to know the difference, PVR means Personal Video Recorder and is used to access to Live TV systems.
Even if you don't have any PVR, choosing the version with PVR won't change anything, so don't worry too much.

Openelec is provided as a Bz2 compressed Tar archive, on Linux desktop environments, you can easily extract here with a right click / Extract Here, or use the command line in Terminal:
$ tar -xjf OpenELEC_PVR-Fusion*.tar.bz2

For windows Users, i recommend you to download and install 7zip (freeware), it will be able to extract files with no issues.

2. Create your USB installation key

For Linux Users:

Insert your USB Key and go to the extracted Directory, identify your device name. (you can use the "mount" command to do it, usually your USB key should /dev/sdb)

Then execute the provided script:
$ sudo ./create_installstick /dev/sdb

For Windows Users:

Inset your USB Key and launch "create_installstick.exe".

For Mac OS X Users:


3. Boot with USB Key and install Openelec in your internal device

Real simple, just boot with your USB Key connected. (if it fails then your first boot device may not be the USB key, enter the UEFI and force boot to the USB Key)

If you need help, see:

SSH: I recommend to activate SSH when asked by installator

Note: You can also manually install OpenELEC if you plan to use it in Multiboot with other OS.
I won't cover it here.

Step 2.2: Manual alternative installation method (Multiboot)

1. Install your system(s) and set your partitioning 

Use this installation method if you plan to have Multiboot.
I recommend you to install first systems you are planning to use on same device, let enough space free on your internal Volume for 2 OpenELEC partitions. (which can be logical partitions and not primary)

Partitioning example with an other Linux Installation (adapt to your needs or preferences):

Internal Volume is called "/dev/sda":

  • /dev/sda1: Main root ("/") partition for system 1
  • /dev/sda2: Logical main partition
  • /dev/sda5: Home ("/home") parttion for system 1
  • /dev/sda6: Swap partition for system 1
  • /dev/sda7: System partition for OpenELEC
  • /dev/sda8: Data partition for OpenELEC

When installation your first system, ensure to let enough space for your OpenELEC installation, the system partition does not requires much spaces. (256MB or 512MB will be largely enough)
Requirement for Data partition depends on you, if you have enough space set something like 8GB.

I recommend to use "gparted" when your are running your first system to create required partitions for OpenELEC.

Create 2 ext4 partitions with labels (labels are required, don't miss it) "OE_SYSTEM" and "OE_DATA".

Mount the OE_SYSTEM partition in your active Linux.

2. Extract OpenELEC and set your boot loader 

  • Download from OpenELEC site the last version and extract it. (using your desktop or the command "tar -xvjf <openelec archive" in command line)
  • Copy files contained in "target" directory to the OE_SYSTEM partition you have previously mounted
  • Edit the grub customize file and add your section for OpenELEC:
Adapt to your set up, in my example case:

menuentry "OpenELEC" {
    set root=(hd0,7)
    linux /KERNEL boot=/dev/sda7 disk=/dev/sda8 quiet

And update grub:

$ sudo update-grub


To easily manager your Grub boot loader (changing order and so on), i advise you to install grub-customizer:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer && sudo apt-get update && sudo apt-get install -y grub-customizer

Your OpenELEC installation is ready to be started, just reboot and choose OpenELEC at boot time. (which you should choose as default)

Step 3: Configure OpenELEC and customize XBMC

First, learn how to access to OpenELEC OS Setting:

If you have Confluent theme, Go to Parameters, scroll down and select sub menu "OpenELEC":

With other themes, you have can go to "Addon" or Parameters > Addon, then you may have to scroll up upon "Program Addon" then "OpenELEC OS Settings":

Set up your language

To configure your language, Go to Parameters > Appearence:

You may also need to configure your keyboard layout, Go to OpenELEC OS Settings, you have to reboot for this to be applied:

Configure your Network:

Wired Connection

If you are using your local wired connection (always recommended, more powerful and stable than any Wireless connection).

OpenELEC uses DHCP by default, so if you have a DHCP sever enabled in your Network (any ISP Box usually have one), you don't have nothing to do.

Note: If you don't know it already, DHCP will automatically set IP configuration of your devices connected to your Network

Therefore, you can if you prefer set a fix IP Address, go to OpenELEC OS settings

Wireless Connection

You may also want to use a wireless connection, the USB Wireless device provided works out of the Box, so just go to OpenELEC OS Settings.

You have to know:
  • Your Wireless SSID (eg the name of your Wireless Network)
  • Your Wireless Encryption mode, WEB or WPA
  • Your encryption Key

Also, note that the name of your Wireless interface should be "wlan0".

Example of configuration:

Check your Network connection status

Go to Parameters, scroll back and select sub-menu "System Information":

Configure Video Playback options:

Configuration advises:

  • In System->Settings->System->Video Settings:

- Vertical Sync: Always on

  • In System ->Video->Playback:

- XVBA: On

- Adjust Refreshrate to match video: On
- Sync Playback to Display: On
- Sync Method: Video Clock (Drop/Dupe)

Configure your skin

By default XBMC is provided with the Skin "Confluence" with is good enough but you may really appreciate to take a look at others skins.

I would recommend 2 skins in particular:


Let's give a try to Aeon Nox :-)

Go to Parameters, Skins:

Step 4: Configure your Media Library

First of all, OpenELEC will automatically be able to access to any device you will connect (external Hard Drive, USB keys...) and also able to access to any shared in your Network.

So do not worry about statically mounting your volumes in OpenELEC, this is not required.

Take a look on my older post, Step 9:

Everything will be explained on how you can set up your Media Library.

Step 5: Configure the sound

The Zotac AD11 is provided with a combo Jack / Optical connection (in front of the device) usable with an adapter, in addition with the HDMI connection, you have 3 possibilities:

  • Analogical using jack
  • Numerical using HDMI
  • Numerical using SPDIF

For information, here is the "aplay" output on Zotac AD11, you can see here the 3 interfaces:
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I had some issues with the classic way of configuring sound in OpenELEC (using asound.conf) but this may depends on your configuration and hardware capacity. (capable DTS receiver and so on)

I would recommend using the following method which works perfectly.

Note: If you don't have sound in menu, set also the asound.conf file (see Memorandum at the end this post), the system will use default pcm value for system sounds.


Sound output through HDMI, your TV is connected to your sound system through optical
Adapt to your hardware capacity: 2.0, 5.1 speakers, AC3/DTS capable...

Audio output = Optical or HDMI (try both)
Speaker configuration = 5.1

Audio output device = Custom
Custom audio device = plughw:0,3

Passthrough output device = plughw:0,3

Activate or Deactivate AC3, DDS...depending on your hardware


Sound output from SPDIF, your sound system is connected directly to your htpc using optical connection
Adapt to your hardware capacity: 2.0, 5.1 speakers, AC3/DTS capable...

Audio output = Optical
Speaker configuration = 5.1

Audio output device = Custom
Custom audio device = plughw:1,1

Passthrough output device = plughw:1,1

Activate or Deactivate AC3, DDS...depending on your hardware

Step 6: Zotac Remote control

Zotac AD11 is delivered with a small MCE remote control, and both an internal IR Receiver and external USB IR Receiver.

Fortunately, this remote works perfectly fine out of the Box in OpenELEC.

I would recommend you not to use the external USB IR Receiver because its quality (in my opinion) is very cheap and does not work as good as the Internal IR.

Therefore, if you want to use it anyway, you have to deactivate the Internal IR Receiver to avoid repeating keys in OpenELEC. (Go in UEFI)

Step 7: Optional - Opera Addon - Integrated Web Browser

If you want to get a Web Browser inside your OpenELEC installation, take a look at:

Thanks to his great work, you'll get a full operational Opera Web Browser ^^


If you are looking for an XBMC Media Center Fusion solution working out the box within a few minutes, then OpenELEC is definitively the solution for you.

This is a very great work from OpenELEC guys!


  • Traditional to configure your sound output using file "asound.conf":
Navigate with your computer inside your network. (Under Linux and Windows, navigate to Network)
You should see a new host called "OPENELEC", go inside (no authentication required) and go to the share called "Configfiles"

Create a blank file called "asound.conf" and put the following content, depending on your choice:

pcm.dmixer {
   type dmix
   ipc_key 1024
   ipc_key_add_uid false
   ipc_perm 0660
   slave {
      pcm "hw:0,3"               #HDMI, defaults to 48000 kHz
      channels 2
      period_size 1024
      buffer_size 4096
pcm.!default {
   type plug
   slave.pcm "dmixer"

Configuration in XBMC: Parameters, System, Sound configuration

Audio output = HDMI
Speaker configuration = 5.1

Audio output device = Custom
Custom audio device = plug:dmixer

Passthrough output device = hdmi (alsa)

Note: You may need to adapt this to your configuration, if you don't have a 5.1 sound system choose 2.0, if don't have DTS decoder uncheck it, and so...

For Digital sound through SPDIF:

pcm.dmixer {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:1,1"
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 48000
     bindings {
        0 0
        1 1

pcm.!default {
   type plug
   slave.pcm "dmixer"

Configuration in XBMC: Parameters, System, Sound configuration

Audio output = Optical
Speaker configuration = 5.1

Audio output device = Custom
Custom audio device = plug:dmixer

Passthrough output device = plug:dmixer

Note: You may need to adapt this to your configuration, if you don't have a 5.1 sound system choose 2.0, if don't have DTS decoder uncheck it, and so... 


Feel Free to comment!

Sunday, September 16, 2012

Howto Raspberry Pi : OpenELEC on Raspberry Pi, get a great XBMC experience on your Raspberry Pi

*** Updated April 5 2013  ***

Major changes:

04/05/2013 - Remote control section update, mention about CEC
03/16/2013 - New advancedsettings.xml version
03/05/2013 - overclocking correction
02/11/2013 - Advancedsettings.xml corrections
01/18/2013 - Major review: Download location, SSH activation, Themes locations...
12/03/2012 - Rpi 512MB update / Recommended Build
13/11/2012 - Overclock corruption workarounds, Last build test, note about missing videos when used as client of main XBMC
23/10/2012 - Image builds location changed / Add link to upgrade script as alternative
10/15/2012 - Recommended "stable" build
11/09/2012 - Update Backup & Restore
10/09/2012 - Update issue amendment
09/29/2012 - Add Verified Wireless section
09/28/2012 - Add a conservative mode in case of constant corruption
09/26/2012 - Turbo Mode data corruption workaround
09/24/2012 - New Turbo mode
09/21/2012 - Add memorandum section
09/21/2012 - Fit to screen correction and turbo mode announcement
09/20/2012 - Fit to screen section
09/19/2012 - Add backup / restore section
09/18/2012 - Add upgrade section - Add recommended themes
09/16/2012 - First version

The Goal: 

Get a fully functional XBMC Media Center on Raspberry Pi !

The Raspberry Pi is a very cheap and interesting small computer created by the Raspberry foundation for educational purposes.

Therefore, it comes with a GPU able to decode HD Video, a great community works on this device and allow us today to use it as a real XBMC Media Center.

Major sources: 

To help you setting up Openlec on your Raspberry Pi, don't hesitate to take a look at following pages:

My others XBMC related posts and guides:

OpenELEC Raspberry Pi FAQ:

OpenELEC WIKI for Raspberry Pi:

OpenELEC Forum for Raspberry Pi: If you have any issue, this is the place to go!

Official XBMC Website and Forum: full description of available advanced values for Raspberry Pi:
Interesting posts for Raspberry Pi:

Summary of steps: 

Step 1: Install OpenELEC on your SDCard
Step 2: Boot your Raspberry Pi and first setup
Step 3: Activate SSH (default is off)
Step 4: Connect to your Raspberry Pi and setup config.txt
Step 5: Configure your advancedsettings.xml
Step 6: Sound Setup
Step 7: Set up XBMC and your Media Library
Step 8: Customize Skin
Step 9: Remote Control
Step 10: Optional - Verified Wireless Interfaces
Step 11: How to update OpenELEC
Step 12: How to backup and restore
FAQ & issues

Let's start !

Step 1: Install OpenELEC on your SDCard

First thing, if you don't already have one, i would recommend you to get a "Class 10" SDHC Card, XBMC will be much more powerful on such cards.

Off course, this will still works on any SDHC Class SD card.

Download Last OpenELEC Build for Raspberry Pi:

Edit 01/18/2013: Previous download locations are outdated, to get the very last Rpi OE version, please use the download link in main OpenELEC Website: (look for Raspberry Pi)

********************************************** OUTDATED **********************************************
Edit 12/03/2012:  Recommended build:

Note: This build is compatible with both 256MB and 512MB Raspberry, take a look here:

Note for 512MB Raspberry:
If you have a 512MB Raspberry with a previous OpenELEC version installed, you should restart with a fresh install. (or move your current config.txt to config.txt.old before upgrade)
The required gpu mem option will automatically be set depending on your Raspberry Pi hardware.

You could choose to compile yourself OpenELEC for your Raspberry Pi, therefore i advise you to download last OpenELEC build on:

*********************************************************** **********************************************

These images are provided in Bz2 tar archive, when downloaded just extract it using your Desktop (right click then extract here) or in command line:$ tar -xjf OpenELEC-RPi.arm-devel-*.tar.bz2

Note: For Windows users, you may need an Archive Software such as 7zip to extract this archive

You will get a new directory "OpenELEC-RPi.arm-*", just go in this extracted directory to begin the creation of your SD-card.

If you are using Linux:

Real easy, just insert your Flash card into your card reader.
Your Flash card should identified as "/dev/sdb" (/dev/sda being your first drive), ensure this is the case (in case of you have more than one drive connected) using "mount" command.

Then, Go into the new directory and just execute:
$ sudo ./create_sdcard /dev/sdb

If your are using Windows:

Go to:

Step 2: Boot your Raspberry Pi and first setup

Insert your Flash card and boot your Raspberry.
OpenELEC will boot within a few minutes and XBMC will open.

Set screen:

With no additional configuration, you may have some "fit to screen" issues, in XBMC UI and play back also.

If you have some issues, proceed as follows:

Depending on your TV/Screen and configuration, you may try 2 methods, one manipulating overscan values and one other with UI zoom tuning.

Method 1: Set overscan - RECOMMENDED

Note a reboot is required.
Also "overscan_scale" is an experimental set, test with and without.

Try to set in your config.txt overscan settings (see Memorandum to learn how to update config.txt):
Note: Adapt overscan position values to your TV/screen
# Make display smaller to stop text spilling off the screen
overscan_scale=1 #

This worked perfectly for me.

Depending on your TV/Screen you can also just try: (did not worked for me)

You can also just try to disable overscan:

Also test some overscan values (above) and check your TV config (set full mode...)

Method 2: Set UI Zoom 

This method also worked for me, therefore the first method should be preferred to avoid issue when playing back.

An easy way to resolve your fit to screen issue could be to customize UI zoom (by probably -6 or -8%).

To do so, do as follows:

When done, do not hesitate to calibrate your screen:

Step 3: Activate SSH (default is off)

Edit 01/18/2013: SSH activation through OpenELEC OS Addon

SSH is now off by default and can be activated using the OpenELEC OS addon, under the section "Services".

To access to the OpenELEC OS Addon:

- Main menu "Programs" / Sub-menu "OpenELEC OS"
- Mai menu "Parameters" then Programs

Choose to activate the SSH daemon under the section Services, and reboot.

Step 4: Connect to your Raspberry Pi and setup config.txt

Identify the IP Address of your Raspberry Pi, to do so you can use XBMC system information.

In XBMC, Go to "parameters", then scroll down and go to "System Information".

Finally go to the Network panel to know your device IP Address:

Now that you know your IP Address, connect to your Raspberry;

Default password is: openelec

If you are on Linux:

Open a Terminal and go into SSH:
$ ssh root@XXX.XXX.XXX.XXX

If you are on Windows:

Download putty (freeware) and connect with SSH to your host

Setup your config.txt:

Edit 01/18/2013: config.txt coming with new builds now contain all required information to correctly set your main settings like Overcloking values, still information above are correct


Overclocking is not officially supported by OpenELEC, if you do so this is at your own decision and own risk.
Overclocking feature may result in file system corruption, data losses, crashed or global instability.
OpenELEC developers won't give any warranty about those risks until a fix is officially supported.

Therefore, Overclocking on Raspberry Pi will not break your guarantee if you use the new Turbo Mode which is described bellow. (only setting overvoltage without dynamic frequency allocation would break your Raspberry's warranty)

Overclocking is still under work in OpenELEC and Raspberry Pi in general, this is an experimental feature and you should be prepared to restore your installation in case of trouble. (see section How to backup and restore)


Note: See Memorandum section for a full config.txt sample

Default CPU frequency of Raspberry Pi is 700Mhz, you can check it as follows:
cat /proc/cpuinfo

You should see something like "BogoMIPS : 697.95" which confirms this frequency.

Do as follows:
mount -o remount,rw /flash
vi /flash/config.txt



Edit 09/23/2012: The Raspberry foundation introduced recently a new overclocking mode which sets on demand frequencies, you can now overclock your Raspberry Pi without breaking the guarantee.
Ensure to have the very last OpenELEC build!

Data Corruption:

Many people have data corruption and instability with higher overclocking modes, this seems to be related to high values of overvoltage.

For example, i have myself the case with a 8GB Class 4 that gets instantly corrupted when any overclock mode is set, where the same manufacturer Class 10 never got corrupted, still this is not related with class type SD card.

Anyway, you when your setup is done, see backup and restore section, this way if you have data corruption you could easily restore your flash card without re-installing.

Workaround : Set initial_turbo in config.txt

Edit 09/28/2012: If you have file system corruption with your settings, try to set:

It will force turbo mode after boot for the time set (max 60 secs) and should help preventing data corruption.

If even with this setting you still have Data corruption, try to comment "overvoltage=2" in Medium mode.

And if finally this still fails to work without file system corruption, i advise you to go back a more conservative overclocking mode which will work in most casse:

Conservative Overclocking mode:

If after all, you can't get any stable situation with overclocking mode enable, then simply disable it :-)
OpenElec works also very fine in default mode, moreover you should remember that higher CPU/GPU/Ram frequency does not change anything in playback quality ^^


Then go in insert mode (press key "i") and set your overclock settings.

Based on my tests, i would recommend this settings, but you can change, test or prefer what ever you want.

I could not get stability on higher overclocking model than Medium.

Be sure not to set "turbo_force=1" (or to set it to "0") because it would deactivate dynamic frequency. (and break your guarantee)

See Memorandum at the end of this post to see other overclocking modes and how to check activity.


If you are using an HDMI connection, i also recommend to add:
# Force HDMI 

Then save your file (press ":wq!") and:
mount -o remount,ro /flash

After reboot, you can see in kernel messages (run command "dmesg") CPU frequency dynamic allocation depending on your config:
bcm2835-cpufreq: switching to governor ondemand
bcm2835-cpufreq: Freq 700000->900000 (min=700000 max=900000 target=900000 request=900000)
bcm2835-cpufreq: Freq 900000->700000 (min=700000 max=900000 target=700000 request=700000)

Using the following command will also return current CPU frequency:
vcgencmd measure_clock arm

Mode "governor demand" confirms dynamic frequency allocation, and you can also notice CPU frequency changes depending on system load.

MPGE2 and VC1 Support:

If you want MPEG2 and VC1 Support, the Raspberry foundation now allows us to buy 2 cheap licences that will activate this.

So simply go to Raspberry's site:

You will need your CPU serial number, which you can easily get using the command:
cat /proc/cpuinfo

Or if you prefer, Go in XBMC, Parameters > Scroll down > System information and you will find you CPU serial number.

Look for the value next to "Serial" and Enter it into the Raspberry's site.

You will receive your licence keys within a few hours or days, when done add your keys to your config.txt as follows:
# MPEG 2 Hardware acceleration

# VC1 Hardware acceleration

Step 5: Configure your advancedsettings.xml

Now you need to configure your advancedsettings.xml file for XBMC, using this file you will ask XBMC to apply some tunes to improve UI performances:

  • Deactivating RSS feeds that consumes CPU
  • Activating Dirty Region
  • Tuning Thumbnails and Fanart resolution
  • Tuning Network memory buffer (note: not really proved this changes anything!) 

I advise you to access to the share called "Userdata" using your File Browser and navigating to your Network and OpenELEC host.

Then, use any text editor (example Gedit for Linux and Notepad for Windows) and create a new file called "advancedsettings.xml" with the following content:

Updated March 16, 2013: New advancedsettings.xml version

Note: This is new version of the advancedsettings.xml adapted to ARM processor like the RPi, if you have any issue with thumbnails quality due to the older file version, please delete your folder "~/.xbmc/userdata/Thumbnails", ensure you have the following advancedsetings.xml file and reboot 

The option "useddsfanart" must be set to false, explanation (thanks to Anonymous commentary):

"This settings allows XBMC to use your GPU rendering fanart and some other images. This will make loading images considerably faster, especially on systems with slower processors (e.g. Intel Atom based systems). Do not use this option on ARM based systems (Apple TV2/iOS/RPi/many Android systems) as it is likely to degrade performance because DDS images are not supported."


Old version:


When done, finally reboot!

Step 6: Sound Setup

In XBMC, setting the sound will be enough easy.

There is 2 possibilities, or you want a sound output through HDMI, or you will use your analogical connection through the jack connection provided.

In XBMC, go to parameters > sound configuration and set HDMI or analogical.

Also, if your TV does not take this in charge (or the sound system connected to your TV), ensure to unset sounds protocols.

Finally, please note that OpenELEC on Raspberry Pi does not uses ALSA for the sound ouput but OpenMixer (OMX), so don't try for now to use as far an example an external USB soundcard if you need an Optical connection, that won't be possible as for now...

Also, it will be much better to have a sound system able to decode DDS and so on, if you don't the CPU/GPU will have to downmix the sound, which causes more usage.
Some file could be hard to play for this reason.

Note: Without any DDS hardware support, you may issues with some MKV files, this is causes by software sound conversion using CPU required when your sound system does not support it.

Step 7: Setup XBMC and your Media Library

Now that your XBMC installation is ready to use, you need to configure your Media Library, and some few settings depending on your taste. (skins...)

I recommend you to take a look at other guides i wrote for XBMC, you will find fully applicable ways to manage your Library.
Go to Step 9

The Raspberry Pi is a very small device, if you are used to htpc don't expect to get the same kind of performances while scanning your Media Library, this will take a long long time ^^

I would recommend to use it as client of an other main XBMC installation that will take care about managing the Media Library and sharing it through SMB or NFS with an automatically shared Database. (Mysql)

Note about Mysql sharing: By the past i had some issues (missing videos) because of my XBMC master and slave version were using different versions of Mysql db (internal XBMC versions).
Ensure you always have most up to date possible XBMC versions when sharing over Mysql to avoid these kind of issue.

Consider your sharing Method:

If you are sharing your Media Files through your Network (from a NAS or share by another computer), you will probably wonder about the best way to set the Media Player.

Take a look at my post to configure Media Library sharing between your XBMC instances:

Files shared from a Windows computer (even Windows Server) should be shared and accessed by XBMC using SMB protocol.

Files shared from an Unix / Linux Operating system should have better performances when accessed by NFS.

Therefore, in my configuration with all tests i've made, i noticed instability with NFS sharing mode, while SMB share were very stable, even shared from a Linux based system.
So, i would recommend SMB sharing in our configuration.

You don't have to mount your Network shares in your Raspberry Pi to act as a client, just browse when you add a Video source to the protocol of your choice, XBMC will care about that.

Step 8: Customize skin

By default XBMC is provided with Confluent skin.
In my opinion, in our configuration the UI works good enough to keep it.

Therefore, i would recommend to deactivate Fanart back screen to get better performances:

Edit 01/18/2013: With last OpenELEC builds, number of older themes are not available anymore under the main XBMC repository because they're not yet fully compatible with Frodo.

Still some of theme now have dedicated Frodo version, like the Quartz theme i recommend for your Rpi.

You can download it here:

Download the theme as a Zip file, then proceed to manual installation under XBMC extension manager inside Parameters.

Here are some themes known to work good on Raspberry Pi, my preference goes to "Quartz" which real fast and good looking:
  • Quartz
  • Rapier
  • SLIK
  • Xperience1080

Some Quarz screenshots on Raspberry Pi:

Step 9: Remote Control

CEC - Consumer Electronic Control

Controlling XBMC using a remote control is in my opinion something primordial for any nice media center solution.

If you are lucky, you have a quite recent TV which is CEC compatible :-)

Note: CEC stands for Consumer Electronics Control, a protocol built into HDMI that allows for one appliance to control another)

Then the good news, The Raspberry hardware in addition with libcec included in OpenELEC is fully CEC compatible :-) 

You simply have nothing to do! Just plug and boot, very impressive.

Your remote control will work out of the box, i've tested it several time and it works very very good!

Generic MCE Remote control

If you're less (lucky), then i recommend you to get a cheap MCE Remote that will work out of the box in OpenELEC and XBMC.

I've tested and validated to work out of the box on OpenELEC for Raspberry:


Philipps RC197

Validated to work out of the box by others:

MCE r6 1039

Many others should also work!

Step 10: Optional - Verified Wireless Dongle

Wireless Interfaces known to work out of the box under OpenELEC:

Here are some verified Wireless interfaces that works out of the Box in OpenELEC, many others way work but haven't been tested by myself or by people comments confirmation.

  • Leguang LG-N18 150Mbps IEEE802.11 b/g/n USB 2.0 Wi-Fi Wireless Network Adapter
  • Silver Crest IEEE802.11 b/g/n USB 2.0 Wifi Dongle (rtl8192 chipset)
  • TP-Link TL-WN821N V2.0 300mbps IEEE802.11 b/g/n USB 2.0 Wifi Dongle

Feel free to add comments on this posts for any verified Wireless dongle under OE.

Wireless Configuration:

To configure your Wireless interface, nothing more simple:

  • Plug you Wireless interface
  • Check your interfaces status (ifconfig), if you Wireless interface works out of the box you should get a new interface normally called "wlan0"
  • Go to OpenELEC OS Settings addon (Parameters > Addons > Enabled Addons > Program)
You have to know:

  • Your Wireless SSID (eg the name of your Wireless Network)
  • Your Wireless Encryption mode, WEB or WPA
  • Your encryption Key

Step 11: Upgrade OpenELEC

As for now, the automatic update process through OpenELEC Addon does not seem to work for Raspberry. (as far as i have seen)

Still you can update manually, which is easy enough anyway and the recommended way.

Edit 09/20/2012: With last OpenELEC builds, this is not required anymore to manually upgrade the bootloader by copying files from "3rdparty/bootloader" to "/flash"

Edit 10/09/2012: Thanks to xbs who gave the right answer, temporarily deactivating overcloking avoids update issues using the standard method

How to update:


IMPORTANT - Issue while overclocking mode enabled 

If you have any overclocking mode enabled, i recommend for now to temporarily deactivate overclocking while applying upgrade, if you don't you have many chances to break your system.

To do so:

- Rename /flash/config.txt to anything you want (eg. mv /flash/config.txt /flash/ - The goal is to deactivate Overclocking while we are updating

- Apply update as follow (copying SYSTEM* and KERNEL* to upgrade, reboot)

- When update is done (you have rebooted), rename config.txt to normal name to reactivate Overcloking

- Reboot (to apply)

You're done :-)


Edit 10/23/2012: You may be interested with the following script that allows to achieve update in terminal within an SSH sessions. (pay attention to overclock issues when upgraded as in the manual way)

1. Download last version in your computer (See Step1 to get the proper URL)

2. Extract files

3. Connect to your Raspberry SMB share "Update" and copy files located in the directory "target" you previously extracted:
  • KERNEL and KERNEL.md5
  • SYSTEM and SYSTEM.md5
4. Finally reboot, the update process will automatically occur

Step 12: How to backup and restore

Your should consider about backing up your installation, the only element really required to be backed up is the main xbmc directory which contains all of your data.

I personally recommend the method using Partclone or dd. (Partclone will be faster but has some requirements)

Partclone will require that partitions you want to restore from previously backed up have exactly the same size.

Using the well known tool "dd", there is no requirements to restore but the operation requires more time as dd also considers blank spaces as data.

Using tar to backup the main xbmc folder will also works but you may have to recreate your flash card (if you system is broken) and cover the system itself.

Method 1: Using "partclone"

You can also use this alternatively method with Linux and Partclone:

Install Partclone:
$ sudo apt-get install partclone

How to backup:

Insert your card into your computer and do as follows:
$ sudo umount /dev/sdb1 && sudo umount /dev/sdb2
$ sudo fsck -yf /dev/sdb2
$ sudo partclone.fat -c -d -s /dev/sdb1 -o raspi_openelec_sdb1_mm_dd_yyyy.img
$ sudo partclone.ext4 -c -d -s /dev/sdb2 -o raspi_openelec_sdb2_mm_dd_yyyy.img

How to restore:

Insert your card into your computer and do as follows:
$ sudo umount /dev/sdb1 && sudo umount /dev/sdb2
$ sudo partclone.fat -r -d -s raspi_openelec_sdb1_mm_dd_yyyy.img -o /dev/sdb1
$ sudo partclone.ext4 -r -d -s raspi_openelec_sdb2_mm_dd_yyyy.img -o /dev/sdb2

Method 2: Using "dd"

You can also use this alternatively method with Linux and Partclone:

How to backup:

Insert your card into your computer and do as follows (ensure your flash card is seen as sdb!)
$ sudo dd if=/dev/sdb of=raspi_openelec_mm_dd_yyyy.img bs=1M

How to restore:

Insert your card into your computer and do as follows (ensure your flash card is seen as sdb!):

$ sudo dd if=raspi_openelec_mm_dd_yyyy.img of=/dev/sdb bs=1M

Using dd will restore any partition without any other requirements.

Method 3 : Simple method using tar

How to backup:

Boot your Raspberry Pi and create a Tar archive of your XBMC folder:
# cd /storage
# tar -cvzpf /storage/xbmc_raspi_backup_mm_dd_yyyy.tar.gz .xbmc

How to restore:

To restore, simply re-create your flash SD-Card using Openelec.
Then boot your Raspberry Pi, use a SCP client to connect (WinSCP for Windows, native SSH /desktop integration / GFTP for Linux) and copy your previously backed up Archive directly in root Home Folder.

Then restore (adapt DIRECTORY to the folder where resides your tar.gz file)
# cd /storage
# tar -xvzpf DIRECTORY/xbmc_raspi_backup_mm_dd_yyyy.tar.gz


As for now, XBMC with OpenELEC works very great for such a small device that could seem really low powerful.

I noticed a real low CPU usage using specified customization, providing you a smoothly XBMC Interface.

CPU Usage:

For information, with last OpenELEC build, i can observe a very low CPU Usage when IDLE, around 15-20 % not more.

Note: You should see very different CPU usage values in XBMC System Information Panel, this is caused by screen rendering. See Post #12 on

My Raspberry is connected trough the local Network and access to an XBMC Shared Library (Using SMB and Mysql), to be honest almost all videos 720p/1080p plays with no issues.

Therefore, Huge HD Video files will probably be difficult or impossible to play, you should avoid having files with a size bigger than 13-14 Gb... (when playing over your Network)

As a conclusion, i have to say that i am positively surprised by this small animal capacity, even if i would not change my main HTPC for a Raspberry Pi, this is very interesting and it makes a real good second XBMC client :-)

OpenELEC guys have done a real good job for this device, thank you!

Feel free to comment!


  • How to update config.txt to set your Raspberry Pi parameters:
Log in to your Raspberry with ssh, and update your config.txt:
mount -o remount,rw /flash
vi /flash/config.txt

  • Official 5 Overclocking settings with New Turbo mode:
Don't set "force_turbo" to value "1", let the default value (0)






How to check:

Check your kernel messages using the command "dmesg", you will see such messages which confirms the Turbo mode:
bcm2835-cpufreq: switching to governor ondemand
bcm2835-cpufreq: Freq 1000000->700000 (min=700000 max=1000000 target=700000 request=700000)
bcm2835-cpufreq: Freq 700000->1000000 (min=700000 max=1000000 target=1000000 request=1000000)

  • Monitor CPU frequency, temperature and others 
Using the following command will return current CPU frequency:
vcgencmd measure_clock arm

If you want, add this script to your storage:

echo -e "\n###############################################"
echo "###############################################"

echo -e "\nCPU current Frequency: `vcgencmd measure_clock arm`"
echo "CORE current Frequency: `vcgencmd measure_clock core`"
echo "CORE current Voltage: `vcgencmd measure_volts core`"
echo "CPU current Temperature: `vcgencmd measure_temp`"

echo -e "\nFirmware Version: `vcgencmd version`\n"

echo -e "Codecs Status:"
echo "`vcgencmd codec_enabled H264`"
echo "`vcgencmd codec_enabled MPG2`"
echo "`vcgencmd codec_enabled WVC1`"


And add this script to your "~.profile" if you want it when you log in with SSH, or add an alias to call this script, or whatever you want :-)

  • A sample current config.txt:
# config.txt - In OpenELEC edit this file as follows:

# mount -o remount,rw /flash                    #
# then edit and save your modification using vi #
# sync                                          #
# mount -o remount,ro /flash && reboot          #


# Force HDMI even if unplugged or powered off


# Make display smaller to stop text spilling off the screen
overscan_scale=1 #
# Adapt overscan values to your needs


# Licences for MPEG2 and VC1

#                                                         #
# Uncomment one of the section you want to use            #
# After reboot use command "vcgencmd measure_clock arm"   #
# to get current CPU frequency                            #

# If you have any data corruption using Turbo Mode and overclocking
# to with this setting uncommented


# If this still fails, try to use Medium mode whitout "over_voltage=2"
# If this finally still fails, forget about this until this gets fixed
# Use a more conservative mode that will works fine in any cases:

# Conservative (unofficial mode)

# Official Raspbian Overclocking modes:

# None

# Modest

# Medium

# High

# Turbo

FAQ & Issues:

- Resolution and fit to screen issues:

If you still have issues with resolution, i've seen in this post an interesting config.txt setting, adapt to your needs:
# Set stdv mode to PAL (as used in Europe)

# defines the aspect ratio for composite output (3 = 16:9)

# Force the monitor to HDMI mode so that sound will be sent over HDMI cable

# Set monitor mode to DMT

# Set monitor resolution to 1080p 50Hz

# Pretends HDMI hotplug signal is asserted so it appears a HDMI display is attached 

# Make display smaller to stop text spilling off the screen
overscan_scale=1 #

- Fail to play back ISO of DVD and DVD files:

This depends on many factors (the way you created your iso files and so on), still playing back with success ISO of DVD including Menu and DVD files is not absolutely guarantee.

You could think about converting into MKV files which will play perfectly!