User: Password:
Subscribe / Log in / New account

XBMC comes to Android

Please consider subscribing to LWN

Subscriptions are the lifeblood of If you appreciate this content and would like to see more of it, your subscription will help to ensure that LWN continues to thrive. Please visit this page to join up and keep LWN on the net.

By Nathan Willis
January 9, 2013

Version 12 of the XBMC media-playback application is currently in the final stages of development; release candidate 3 was released on January 3. There are multiple enhancements to the codebase, but one of the biggest stories is that XBMC v12 will officially add support for Android. An Android port naturally makes XBMC available on tablets and handsets, but, just as importantly, it enables running on numerous set-top boxes, "smart TVs," and the increasingly-popular smart TV dongle — device classes currently dominated by proprietary applications produced by entertainment companies.

[XBMC v12 on Android's main menu]

Binary builds RC3 of XBMC v12 are available for download from The Android build is an .apk package that is installable on any device on which the user has enabled installation of non-Play Store software. The project site says that XBMC will eventually come to the Play Store, but not during the pre-release phase. The XBMC wiki has an Android hardware page outlining which devices have tested well with which media types — as one might expect, there is a significantly higher hardware threshold required to enable 1080p video playback.

The target platform for the initial Android release is set-top boxes, in particular the Pivos XIOS DS, which is a compact ARM Cortex A-9 device that the team used as the reference development platform. The project offers a few guidelines for assessing the suitability of other devices, including a note that practically speaking, any Android device that does not have the NEON-compatible coprocessor (or does not have it enabled) will probably be unable to play back HD video. Nevertheless, there are unsupported NEON-free builds linked to from the Android hardware wiki page. The final caveat is that thus far the porting effort has not addressed power consumption, so users of battery powered mobile devices may find XBMC to be quite draining — although the project assures users that this, too, will be addressed in the future. Wall-powered set-top boxes, of course, may not find high power consumption as problematic.


I tested the new release on a Nook Tablet running CyanogenMod 7 (CM7), and the battery-draining issue is indeed no joke. The device boasts a 4000 mAh battery, which XBMC managed to drain completely in a little over 3 hours, even though video playback only accounted for a small portion of the time. Granted, CM7 is an unofficial port for this particular device and comes with its own share of power consumption problems. Still, it is clear that there is considerable room for improvement. Nevertheless, even on year-old hardware and a less-than-up-to-date version of Android, XBMC runs remarkably well.

[XBMC v12 on Android's content

Feature-wise, the good news is that the Android port is nothing short of the full XBMC experience — this is not a "light" or "mobile" version of the software. All of the media formats, network protocols, and add-ons supported in desktop XBMC are available in the Android edition. NFS access was missing from some of the early betas of XBMC v12, but as of now, there are no major gaps in player functionality. Video playback from standard-definition web sources was smooth, and a significantly better experience than accessing the same sites through either the stock Android browser or Firefox. Audio playback rarely stress-tests modern devices, so it gets less attention in reviews, but all of the audio add-ons tested worked like a charm as well.

There are, however, still hiccups to be encountered in individual plug-ins. To some degree this is unavoidable; a huge subset of the video playback add-ons, for example, are "screen scraper"-style hacks to retrieve content from specific Web-based video services, such as the many cable and broadcast TV channels that offer a subset of their programming online. The authors of these add-ons must rewrite their page parsing code every time the target site alters its layout, but one of XBMC's strengths is that add-ons are installable from within the XBMC interface, and updates to restore service can be pushed out quickly.

But reliance on third-party add-on developers has its downside; there are other add-ons available for desktop Linux XBMC that do not seem to work for the Android build, such as the D-Bus based notifications, some of which may never work because of platform limitations. Still others offer functionality that depends on external factors, such as the MythBox add-on, which allows XBMC to play back content from a MythTV back-end. But the add-on only supports MythTV 0.24, which is two releases out-of-date.


A far more significant problem with XBMC v12 on Android is navigating the user interface. XBMC has long had navigation "trap doors;" spots where it is possible to navigate into a menu or tool, but it is either impossible to navigate back out, or it is only possible to navigate back out through different means (for example, menus where the left-arrow key allows you to enter a screen, but the screen can only be exited by hitting Escape). These trapdoors are usability warts under the best of circumstances, but on an Android device they can literally leave the user stranded if the device does not have a hardware keyboard. Android phones might have a keyboard; tablets will not. Some set-top boxes come with wireless keyboards, although they are largely looked down on, and there is always the possibility of pairing Bluetooth keyboards. But users seem to loathe putting down the directional remote with its single-thumb driveability.

[XBMC v12 on Android's video player]

Trapdoors are not the only interface difficulty, however. Many of XBMC's screens and onscreen controls assume the presence of either a traditional pointer or a touchscreen. Jumping directly to a specific point in the timeline of a song or video, for instance, requires a pointing device to be at least marginally accurate. There may not be a one-size-fits-all solution, considering the variety of content types XBMC plays (and the variety of caching/streaming challenges that accompany them), but some more work will probably be required to optimize for the Android set-top box, which is often touch-free (and may be pointer-free as well).

But the bigger question that XBMC needs to answer for potential Android users is how it offers an improvement over getting at the same content through other applications. Quite simply, the answer it gives is "it depends" — entirely on the type of content. Consuming Internet-delivered video and audio is significantly better through XBMC than it is through a browser. The difference is not quite as stark when compared to a dedicated Android application for a particular service (such as Grooveshark). And XBMC is far less compelling for content that requires more manual searching and browsing.

Take podcasts, for example. XBMC supports managing podcasts, but its interface for subscribing and listening to them is no better than any other on the market. In fact, when coupled with the difficulties of using the UI without a keyboard, it may actually be slightly worse. The same is true for watching or listening to files from local storage — there is no compelling advantage to using XBMC for this task over the stock Android tools, and in some places the interface makes the task more difficult.

As a result, XBMC for Android works well as an Internet content front-end, where a set-top box must compete against the rapidly growing stack of commercial streaming boxes from Roku, Netgear, and everyone else at the big consumer electronics shows. Some of these commercial products also offer an interface into the owner's local music and video collection (typically through UPnP/DLNA). XBMC can match that experience, although with a large enough collection no DLNA solution is particularly pleasant — all eventually fall back on scrolling through page after page of track titles.

Where XBMC has a clear advantage is that it will always be able to offer access to more online content than these proprietary competitors, because the community writes its own add-ons and updates them without the need to call in lawyers and negotiate complex multi-year distribution deals. This is probably where XBMC will make the biggest splash, if and when users of commercial Android set-top boxes can install XBMC through the Google Play store. The do-it-yourself crowd will probably find a desktop Linux-based XBMC set-top box both easier to build and more flexible — but the average consumer may very well discover a new world through seeing XBMC available as a one-click installation option.

The application may also end up being a handy option on handheld Android devices (once the power-consumption issues are fixed). There will probably be more and better options for podcasts and locally stored content, but XBMC's unified front-end to a wealth of Internet-delivered services is likely to be a hit even on phones. If nothing else, it saves users the trouble of scrolling through dozens and dozens of extra application launchers.

(Log in to post comments)

XBMC comes to Android

Posted Jan 10, 2013 8:28 UTC (Thu) by scarabeus (subscriber, #87843) [Link]

I suppose the battery drain comes in hand with the extensive cpu/gpu usage XBMC interface is doing. From what I observe even without playback the XBMC running on my htpc is right now eating 24% of one core (E450) for just sitting and displaying main menu (the same as is on first screenshot in this article).
And that I bet will be serious pita to get fixed properly.

XBMC comes to Android

Posted Jan 10, 2013 15:19 UTC (Thu) by jmspeex (subscriber, #51639) [Link]

I had the same problem (except it was more like 60% CPU) and I finally figured out it was just due to some useless text scrolling at the bottom of the screen. After I figured out how to disable it, I ended up with ~2-5% CPU when idle. Much more reasonable, even though I still find it silly that XBMC would require CPU time for doing nothing.

XBMC comes to Android

Posted Jan 10, 2013 20:14 UTC (Thu) by sbakker (subscriber, #58443) [Link]

Yeah, XBMC's main loop is horrific. I noticed a similar thing on my RPi. The program runs in a "game-loop", executing about 100 times/sec, even if there is no input, and nothing to update on the screen. On every loop iteration it performs non-blocking read attempts on all its inputs. (Hence, when I told XMBC that I wasn't using an infrared remote, its CPU usage dropped from 99% to 70%, since it was performing much fewer read attempts.)

There does not seem to be any plans to change this any time soon.

XBMC comes to Android

Posted Jan 10, 2013 20:18 UTC (Thu) by nix (subscriber, #2304) [Link]

Let me guess, at least one input is some hideous thing on which select() doesn't work?

XBMC comes to Android

Posted Jan 15, 2013 14:46 UTC (Tue) by charlieb (subscriber, #23340) [Link]

> Let me guess, at least one input is some hideous thing on which
> select() doesn't work?

That's one possibility. Another is that XBMC is ported from Windows by people who don't understand or don't care about linux.

XBMC comes to Android

Posted Jan 17, 2013 15:25 UTC (Thu) by oliv3r (guest, #86764) [Link]

Actually, both are true or neither.

XBMC is ported from ... the Xbox and the loop was designed in that way. The term 'game-loop' isn't far off.

They do want to change that, but it would require a major rewrite. I think while XBMC is amazing and it will grow to be more amazing too, it will require a full on rewrite to be more portable and less demanding on resources. Event driven and all that.

XBMC comes to Android

Posted Jan 18, 2013 6:38 UTC (Fri) by raven667 (subscriber, #5198) [Link]

Actually that is something amazing that is worth a mention, that an application designed to run on the original Xbox game console has been made to run not only on standard desktop systems but also Android. I think there may be a point to be made about the homogenization and standardization of computing, that our modern operating systems and hardware are similar enough that a program can be made to run in such different environments. Early computers were much more wild by comparison.

XBMC comes to Android

Posted Jan 18, 2013 7:54 UTC (Fri) by Fowl (subscriber, #65667) [Link]

I blame C.

XBMC comes to Android

Posted Jan 19, 2013 15:48 UTC (Sat) by nix (subscriber, #2304) [Link]

You can also blame Unix (and POSIX).

XBMC comes to Android

Posted Jan 19, 2013 18:04 UTC (Sat) by raven667 (subscriber, #5198) [Link]

Although the Xbox environment is not POSIX or Unix. In any event I was just caught momentarily in awe that anything works at all 8-)

XBMC comes to Android

Posted Jan 10, 2013 15:56 UTC (Thu) by wookey (subscriber, #5501) [Link]

Does it do PVR? I like XBMC, but the thing keeping me using mythtv on main machine is getting over the air TV as well as stuff off the internet. OK, I could have a separate myth backend - but it shouldn't need two computers and two software systems to receive/watch TV. I've been waiting for XBMC-PVR for my ARM hardware (I did look at building it myself, but the monstrous build-deps list scared me off for the time being!). So does this Android version have the PVR features? I suspect not.

XBMC comes to Android

Posted Jan 11, 2013 0:28 UTC (Fri) by nickbp (guest, #63605) [Link]

XBMC 12 brings PVR frontend support for various backends.

XBMC comes to Android

Posted Jan 11, 2013 0:28 UTC (Fri) by nickbp (guest, #63605) [Link]

XBMC comes to Android

Posted Jan 11, 2013 0:57 UTC (Fri) by n8willis (subscriber, #43041) [Link]

Yes and no. Or sort of. There is support for generic PVR front-endedness -- a different add-on than the preceding MythBox add-on, which only browsed Recorded Programs. Though like I mentioned, it's a couple of releases behind MythTV (and since Myth changes its db format regularly, that's a serious incompatibility (though ultimately that's MythTV's fault, since the way it is designed requires all front-ends to open a live MySQL connection to the back-end database....)).

Anyway, the thing about the new XBMC PVR functionality is that it is front-end stuff only. It does have an EPG and a UI for scheduling and managing record rules, but it requires a separate back end, and on Linux that means, yep, MythTV. Ans as you're no doubt aware, MythTV is so screwy to configure that any change to ditch part of it is a welcome opportunity, but the back-end config is probably more convoluted than the front end, so this is just a partial fix.

Maybe someday, though....

XBMC comes to Android

Posted Jan 11, 2013 1:00 UTC (Fri) by grantma (subscriber, #5225) [Link]

Android RC3 build includes cmyth PVY client which works on MythTV 0.26.

Am I going to Y E A H!

XBMC comes to Android

Posted Jan 11, 2013 12:22 UTC (Fri) by wookey (subscriber, #5501) [Link]

OK. Nice. That's definitely progress.

MythTV's design choice requiring version sync across all clients/backend does indeed turn out to have been an unhelpful one, but I guess that wasn't obvious when they started.

There are other PVR backends are there not? Such as 'DVR' and I see 'TVHeadend' on the myth wiki. I've not tried either of these but they are probably easier to configure than mythtv :-) The backend when doing digital recording from USB is pretty simple: select channel and record stream at specified time, keep and expose a list, optionally run transcode and ad-remove processes. It's rather more fiddly with analogue TV cards. Most of the hard bit (UI, display technologies) seems to me to be in the front end. Hmm. I suppose the EPG database has to be in the back-end if delivered over the air. That complicates matters.

XBMC comes to Android

Posted Feb 14, 2013 8:50 UTC (Thu) by dag- (subscriber, #30207) [Link]

It took me literally 10 minutes to insert an old DVB-T USB stick in one of my AppleTV's running OpenELEC, install the tvheadend service addon, scan and configure the channels through the tvheadend web interface (automatic) and install the tvheadend client addon on both devices and point it to this AppleTV.

In 10 minutes I could watch DVB-T channels (TV and radio) on both boxes, read EPG information and schedule recordings. No reboot, no command line fiddling, no prior knowledge needed. And with this information, maybe you can do it in 5 minutes :-)

BTW I never heard of tvheadend before, but it looks like a great piece of software.

No-keyboard UI

Posted Jan 11, 2013 20:00 UTC (Fri) by rfunk (subscriber, #4054) [Link]

One nice thing about XBMC is that you can change the skin, and this allows you to choose a skin that's better for the system you're running. On my tablet I chose a touch-oriented skin, while in my living room I use a more standard skin that works with the 6-button (4 directions plus OK and Menu) Apple Remote.

Copyright © 2013, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds