Talk:XBMC

XBMC for armhf
While testing to cross compile xbmc for armhf, this list is a little brainstorming of the steps that i could remeber: The wiki page has to be rewritten. So the whole things has to be done a second time. With protocolling!!!

My memos for armhf: I had to make symlinks for apt-get install cmake shtool swig autoconf autotools-dev automake autopoint libtool default-jre gawk gperf zip g++-4.6-arm-linux-gnueabihf (maybe not complete listing) set all symlinks to version files (gcc -> gcc-4.6 etc...)
 * cross-compiled on a debian/sid-amd64(in vmware-virtual machine on windows vista;-)).
 * build your kernel, uboot, script.bin, boot.scr and debian armhf-rootfs like described in the rhomus-tech-"build-debian-for-mele-from-source"-wiki. adapt it do sid and armhf! <- be careful, current git-branches maybe broken due to heavy development?!
 * be sure to use components, that fit together!
 * you need a kernel with r3p0-mali-driver, to fit to binary mali-libs (i used stage/sunxi-3.0)
 * after setting up rootfs, chroot into rootfs and do all "apt-get build-dep xbmc" and other "apt-get install/remove"-things for needed packages in your chroot!
 * for newest (2012/10/30) xbmca10 you need to install libssh-4 and libssh-dev in chroot, if not already done by "apt-get build-dep xbmc"
 * "apt-get remove libegl1-mesa libegl1-mesa-dev libegl1-mesa-drivers libgles2-mesa libgles2-mesa-dev" isn't needed? no gl-stuff installed to be removed?
 * your includes for crosscompiling xbmc must point to the include dirs of your rootfs(SDKSTAGE)
 * you may the make/gcc -lines in config.log combined with a 'find / -name "....."' to check if -I"..."-parameters are set right etc.
 * set PKG_CONFIG_SYSROOT_DIR=$(SDKSTAGE) in depends.mk to let configure find the right pkg-config-things
 * check depends.mk and change dirs and USEARMHF=1!
 * follow empat0's instructions in depends.mk and set symlinks:
 * 1) /lib/arm-linux-gnueabi, /usr/lib/arm-linux-gnueabi
 * 2) and /usr/include/arm-linux-gnueabi to their path in ${SDKSTAGE}
 * for cross-compilation remeber to do (not in chroot):
 * be sure to all the files/links/dirs named right and in the right place with *hf-ending like listed in depends.mk
 * follow configure errors (config.log) and install the needed packages (dev-packages: chroot and install in armhf)

Finally edit the wiki page ;-)

Buildroot XBMC on the Mele A1000 and A0000 (Allwinner A10)
http://www.j1nx.nl/buildroot-xbmc-on-mele-a1000-allwinner-a10/

http://www.cnx-software.com/2012/11/12/xbmc-for-linux-on-allwinner-a10-devices-it-works-sort-of/

"Gimli recently decided to push his XBMC port to the public, so we now have a Buildroot XBMC on the mele A1000. Some of you are already knew about the port empatzero decided to release. This port is around for a while now and it does look like the same decoding gitches appear to happen. For some reason sometimes the decoding times show peaks in decoding time, up to the point it results in glitches.

''As both ports show similar bugs, Gimli decided to push it out in the open. Communication with Allwinner was still going on but progress was at a very slow rate. Having two different ports / approaches showing similar bugs kind of proof it is most likely something in the cedarX libraries. Hence the reason Gimli decided to release it.''

''Up till this point I have been following the progress from the sideline. I saw the port of empatzero popping up, but never actually decided to give it a go. I did not really liked the full blown linux OS for only one program (XBMC).''

I compiled the minimalistic buildroot envirnment (same as Gimli used for the RPi), compiled XBMC and merged them together with the necessary tweaks to get it running.


 * 3.0.42 kernel (just before the update to 3.0.52).
 * Buildroot environment.
 * No window manager (X11). XBMC runs straight onto the framebuffer.
 * Couple of tweaks here and there as this is not even an alpha release.
 * All armhf compild with Linaro toolchain.

''Created a bootable SD card with a ext2 partition containing the rootfs and xbmc binaries and started it up. There appears to be a memory leak in samba armhf compiled, so disabled that for now (server, not the client). Further more there is nothing really included. No LIRC remote support or other side hardware for that matter.''

''Inserted the SD card and turned on the Mele A1000. After a good couple of seconds the XBMC start splash appeared and the GUI showed up. GUI speed is fast enough and rendered at around ~40 FPS, similar as Empatzero his port.''

''Exactly the same performance and issues as Empatzero his port. The only difference is the AVI playback, but it should be noted that the test results on linux-sunxi (at this moment) are done without empatzero his last commit and support for AVI and other missing codecs.''

''There are still small issues here and there, but all with all not bad for a initial pre-alpha release. I will to some more testing, tweaking and adjustments. People that want to do it themselfs can already do so. Everything can be found on Gimli his github account."''

extra patches
No matter how I tried, HDMI audio was not working until I found this issue: https://github.com/rellla/xbmca10/issues/18

It's a simple patch: --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -789,7 +789,7 @@ void CAESinkALSA::EnumerateDevicesEx(AEDeviceInfoList &list, bool force) {            /* sun4i whilelist */ std::string strDevice = std::string(name); -       size_t found = strDevice.find("sun4i"); +       size_t found = strDevice.find("sunxi"); if(found != std::string::npos) EnumerateDevice(list, name, desc ? desc : name, config); @@ -896,7 +896,7 @@ AEDeviceType CAESinkALSA::AEDeviceTypeFromName(const std::string &name) return AE_DEVTYPE_IEC958; /* sun4i hdmi device */ - if(name.find("sun4isndhdmi") != std::string::npos) + if(name.find("sunxisndhdmi") != std::string::npos) return AE_DEVTYPE_HDMI; return AE_DEVTYPE_PCM;