Kodi Community Forum
[LINUX] XBMC for Linux port to ARM architecture CPU and SoC chips? - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Discussions (https://forum.kodi.tv/forumdisplay.php?fid=222)
+--- Forum: Feature Requests (https://forum.kodi.tv/forumdisplay.php?fid=9)
+--- Thread: [LINUX] XBMC for Linux port to ARM architecture CPU and SoC chips? (/showthread.php?tid=35139)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48


- dandel - 2011-06-21

davilla Wrote:@dandel, I have an Geniatech EnjoyTV Device Smile

Unsuccessful at booting a real linux kernel from SD card yet.

I actually need to find out more information on how your dealing with the device. I hope you have access to the device using adb and usb... because if you do, you can try some of the boot loader access tricks that are discussed at the xda developers forum... XDA-Developers: [Newbie Guide] adb/fastboot/bootloader/android 101

also, getting the logcat and dmesg info from android will help with figuring out some of what needs to happen in setting up the device.


- davilla - 2011-06-21

hardwired serial port and fastboot. I'm at the bootloader level and am telling it to boot over SD card.


- joyhsieh - 2011-06-21

I am trying to build XBMC on pandaboard with ubuntu 10.10 netbook version. After installing the required packages in README.ubuntu and ./configure --enable-gles, I got error the message in "make":
Code:
CC    libavcodec/aacdec.o
/tmp/cceL0oCD.s: Assembler messages:
/tmp/cceL0oCD.s:5789: Error: selected processor does not support ARM mode `ubfx sl,r3,#0,#4'
/tmp/cceL0oCD.s:5790: Error: selected processor does not support ARM mode `ubfx fp,r3,#4,#4'
/tmp/cceL0oCD.s:6020: Error: selected processor does not support ARM mode `ubfx sl,r3,#0,#2'
/tmp/cceL0oCD.s:6021: Error: selected processor does not support ARM mode `ubfx fp,r3,#2,#2'
/tmp/cceL0oCD.s:6023: Error: selected processor does not support ARM mode `ubfx ip,r3,#4,#2'
/tmp/cceL0oCD.s:6025: Error: selected processor does not support ARM mode `ubfx r0,r3,#6,#2'
/tmp/cceL0oCD.s:6030: Error: selected processor does not support ARM mode `rbit r3,r3'
/tmp/cceL0oCD.s:6233: Error: selected processor does not support ARM mode `ubfx r1,r2,#0,#4'
/tmp/cceL0oCD.s:6234: Error: selected processor does not support ARM mode `ubfx ip,r2,#4,#4'
/tmp/cceL0oCD.s:6405: Error: selected processor does not support ARM mode `ubfx r0,r3,#0,#2'
/tmp/cceL0oCD.s:6406: Error: selected processor does not support ARM mode `ubfx r1,r3,#2,#2'
/tmp/cceL0oCD.s:6408: Error: selected processor does not support ARM mode `ubfx r2,r3,#4,#2'
/tmp/cceL0oCD.s:6410: Error: selected processor does not support ARM mode `ubfx r5,r3,#6,#2'
make[2]: *** [libavcodec/aacdec.o] Error 1
make[2]: Leaving directory `/home/ubuntu/xbmc/lib/ffmpeg'
make[1]: *** [ffmpeg] Error 2
make[1]: Leaving directory `/home/ubuntu/xbmc/lib'
make: *** [dvdpcodecs] Error 2

Then, I tried ./configure --enable-gles --enable-external-ffmpeg, but I got other error message:
Code:
CPP     GUIShader.o
GUIShader.cpp:25: note: #pragma message: msg1
GUIShader.cpp:27: note: #pragma message: msg2
/tmp/ccs4qymt.s: Assembler messages:
/tmp/ccs4qymt.s:4420: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:4448: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:4480: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5166: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5193: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5225: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5355: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5387: Warning: swp{b} use is deprecated for this architecture
/tmp/ccs4qymt.s:5420: Warning: swp{b} use is deprecated for this architecture
AR      guilib.a
make[1]: Leaving directory `/home/ubuntu/xbmc/xbmc/guilib'
g++ -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -D_DEBUG -Wall -O2 -mfloat-abi=softfp -mno-apcs-stack-check -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -D_DEBUG -Wall -O2 -mfloat-abi=softfp -mno-apcs-stack-check -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad   -o xbmc.bin -Wl,--whole-archive xbmc/linux/linux.a xbmc/network/network.a xbmc/video/windows/videowindows.a xbmc/utils/utils.a xbmc/cores/DllLoader/exports/util/exports_utils.a xbmc/cores/DllLoader/exports/exports.a xbmc/settings/settings.a xbmc/video/video.a xbmc/guilib/guilib.a  xbmc/xbmc.a xbmc/addons/addons.a xbmc/cores/playercorefactory/playercorefactory.a xbmc/cores/dvdplayer/DVDPlayer.a xbmc/cores/paplayer/paplayer.a xbmc/cores/VideoRenderers/VideoRenderer.a xbmc/cores/VideoRenderers/VideoShaders/VideoShaders.a lib/tinyXML/tinyxml.a xbmc/cores/cores.a xbmc/interfaces/python/python.a xbmc/cores/DllLoader/dllloader.a xbmc/cores/dvdplayer/DVDCodecs/DVDCodecs.a xbmc/cores/dvdplayer/DVDCodecs/Audio/Audio.a xbmc/cores/dvdplayer/DVDCodecs/Overlay/Overlay.a xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxers.a xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreams.a xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitles.a xbmc/cores/AudioRenderers/audiorenderers.a xbmc/cores/ExternalPlayer/ExternalPlayer.a xbmc/filesystem/filesystem.a xbmc/filesystem/MusicDatabaseDirectory/musicdatabasedirectory.a xbmc/filesystem/VideoDatabaseDirectory/videodatabasedirectory.a xbmc/input/input.a xbmc/dialogs/dialogs.a xbmc/music/karaoke/karaoke.a xbmc/music/music.a xbmc/music/dialogs/musicdialogs.a xbmc/music/infoscanner/musicscanner.a xbmc/music/tags/musictags.a xbmc/music/windows/musicwindows.a xbmc/video/dialogs/videodialogs.a xbmc/pictures/pictures.a xbmc/playlists/playlists.a xbmc/programs/programs.a xbmc/powermanagement/powermanagement.a xbmc/storage/storage.a xbmc/threads/threads.a xbmc/windows/windows.a xbmc/interfaces/python/xbmcmodule/xbmcmodule.a xbmc/network/libscrobbler/scrobbler.a lib/libRTV/librtv.a lib/libUPnP/libupnp.a lib/libXDAAP/libxdaap.a xbmc/interfaces/interfaces.a xbmc/cdrip/cdrip.a xbmc/interfaces/json-rpc/json-rpc.a xbmc/interfaces/http-api/http-api.a xbmc/dbwrappers/dbwrappers.a lib/libsquish/libsquish.a lib/SlingboxLib/SlingboxLib.a lib/libapetag/.libs/libapetag.a lib/xbmc-dll-symbols/dll-symbols.a xbmc/rendering/rendering.a xbmc/windowing/windowing.a  xbmc/rendering/gles/rendering_gles.a xbmc/windowing/egl/windowing_egl.a lib/UnrarXLib/UnrarXLib.a lib/libhts/libhts.a xbmc/threads/posix/threads_posix.a xbmc/input/linux/input_linux.a xbmc/network/linux/network_linux.a xbmc/powermanagement/linux/powermanagement_linux.a xbmc/storage/linux/storage_linux.a -Wl,--no-whole-archive -lavcodec -lXrandr -lavahi-client -lavahi-common -lpulse -lmicrohttpd -lSDL_image -lrt -ljasper -lresolv -ldl -lSDL_mixer -lyajl -lbluetooth -lsmbclient -lssh -lmysqlclient -lcrypto -lssl -lz -llzo2 -lpthread -ltiff -ljpeg -lbz2 -lGLESv2 -lEGL  -Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient -lfontconfig   -lfribidi   -lsqlite3   -lpng12   -lpcre   -lpcre -lpcrecpp   -lcdio -lm   -lsamplerate   -lfreetype   -lasound   -lenca -lm   -lXt   -lXext   -lXmu   -ldbus-1 -lpthread -lrt   -lSDL   -lhal -ldbus-1 -lpthread -lrt   -lhal-storage -lhal -ldbus-1 -lpthread -lrt   -lavcodec -lavformat -lavutil -lpostproc -lswscale   -L/usr/lib -lpython2.6 -rdynamic
/usr/bin/ld: xbmc/windowing/windowing.a(WinEventsSDL.o): undefined reference to symbol 'XkbGetKeyboard'
/usr/bin/ld: note: 'XkbGetKeyboard' is defined in DSO //usr/lib/libX11.so.6 so try adding it to the linker command line
//usr/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [xbmc.bin] Error 1

Any advice is appreciated.
Thanks.


- davilla - 2011-06-21

how are you setup to cross-compile ?


- joyhsieh - 2011-06-21

davilla Wrote:how are you setup to cross-compile ?

I got the source code from git clone git://github.com/xbmc/xbmc.git, put and built them on pandaboard directly.


- dandel - 2011-06-21

davilla Wrote:hardwired serial port and fastboot. I'm at the bootloader level and am telling it to boot over SD card.

There is one other method that might work... try tftp...

http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Introduction-to-Das-UBoot-the-universal-open-source-bootloader/


- CrashX - 2011-06-21

Sigma Design's 'ultra thin' TV box design promises HD in a tiny package:

http://www.engadget.com/2011/06/21/sigma-designs-ultra-thin-tv-box-design-promises-hd-in-a-tiny/

Based on the article xbmc is supported. Now the question is how much would it cost ? All we really need is hdmi,optical out and usb ....


- christian667 - 2011-06-21

Ok this are the steps I had to make to compile the xbmc-pvr successfully on my pandaboard:
  1. Get git source & bootstrap:
    Code:
    git clone https://github.com/opdenkamp/xbmc.git && cd xbmc && ./bootstrap
  2. Configure:
    Code:
    ./configure --enable-gles --disable-vdpau --disable-optical-drive
  3. Edit xbmc/guilib/MatrixGLES.cpp:
    change
    Code:
    #if defined(__ARM_NEON__)
    to
    Code:
    #if 0
  4. Edit xbmc/cores/VideoRenderers/Makefile.in:
    remove part
    Code:
    ifeq ($(findstring arm,arm),arm)
          yuv2rgb.neon.S \

    endif
  5. Edit xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp:
    change
    Code:
    #if defined(__ARM_NEON__)
    to
    Code:
    #if 0
  6. build it:
    Code:
    make
  7. create package and install it:
    Code:
    checkinstall --fstrans=no --install=yes --pkgname=xbmc --pkgversion "20110621"
  8. finish.

Now XBMC runs quite useable in 1080p accelerated with OpenGL-ES - yeah Big Grin
BUT: I don't know how to get the resolution down to 720p - and the bigbuckbunny trailor in 720p doesn't run smoothly on my 1080p TV, which maybe occurs because of the kind of upscaling (?!) to fit the screen resolution. Is there a way to start xbmc in another resolution? In System → .. the only selectable resolution is 1080p Sad
Thanks for all you help Smile


- CrashX - 2011-06-21

christian667 Wrote:Ok this are the steps I had to make to compile the xbmc-pvr successfully on my pandaboard:
  1. Get git source & bootstrap:
    Code:
    git clone https://github.com/opdenkamp/xbmc.git && cd xbmc && ./bootstrap
  2. Configure:
    Code:
    ./configure --enable-gles --disable-vdpau --disable-optical-drive
  3. Edit xbmc/guilib/MatrixGLES.cpp:
    change
    Code:
    #if defined(__ARM_NEON__)
    to
    Code:
    #if 0
  4. Edit xbmc/cores/VideoRenderers:
    remove part
    Code:
    ifeq ($(findstring arm,arm),arm)
          yuv2rgb.neon.S \

    endif
  5. Edit xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp:
    change
    Code:
    #if defined(__ARM_NEON__)
    to
    Code:
    #if 0
  6. build it:
    Code:
    make
  7. create package and install it:
    Code:
    checkinstall --fstrans=no --install=yes --pkgname=xbmc --pkgversion "20110621"
  8. finish.

Now XBMC runs quite useable in 1080p accelerated with OpenGL-ES - yeah Big Grin
BUT: I don't know how to get the resolution down to 720p - and the bigbuckbunny trailor in 720p doesn't run smoothly on my 1080p TV, which maybe occurs because of the kind of upscaling (?!) to fit the screen resolution. Is there a way to start xbmc in another resolution? In System → .. the only selectable resolution is 1080p Sad
Thanks for all you help Smile
Have you tried 1080P trailer ?


- topfs2 - 2011-06-21

Not sure why you would have to do that, I had xbmc running on pandaboard just fine without any neon alterations. Perhaps pvr branch is not up to date or something?
EDIT: All I had to do in fact was disable python, which is a non-issue now since we use system python

@CrashX pandaboard uses a hw accel we don't support yet (it can be used through gstreamer or openmax, neither works with panda yet. It can be used alone also, which might be simplest), without those patches it will not do 1080p. It will not do 1080p yuv-rgb neither so needs my omap overlay patches too most likely.

My gstreamer branch might have it be close on 1080 with h264 though


- joyhsieh - 2011-06-22

topfs2 Wrote:Not sure why you would have to do that, I had xbmc running on pandaboard just fine without any neon alterations. Perhaps pvr branch is not up to date or something?
EDIT: All I had to do in fact was disable python, which is a non-issue now since we use system python

Could you please share your installation steps and installed packages?

Thanks.


- joyhsieh - 2011-06-22

christian667 Wrote:Ok this are the steps I had to make to compile the xbmc-pvr successfully on my pandaboard:
  1. Get git source & bootstrap:
    Code:
    git clone https://github.com/opdenkamp/xbmc.git && cd xbmc && ./bootstrap

The git source I used is different from yours. Would this an problem to install XBMC on Pandaboard?


- christian667 - 2011-06-22

@joyhsieh:
I dont't think that this could be the problem in your case, the master git source should be more up-to-date, but my setup is the following:
I use a 1080p TV connected to the HDMI of my pandaboard, running ubuntu 11.04-Netbook-preinstalled version.

@CrashX:
1080p starts and the UI stays useable, but it really doesn't run smoothly (@topfs2: yet Wink )

@topfs2:
What is your development setup on your pandaboard? Did you try the bigbuckbunny 720p trailer?
Is there a way to start xbmc(-standalone) without starting GDM before?


- topfs2 - 2011-06-22

joyhsieh Wrote:Could you please share your installation steps and installed packages?

Thanks.

Packages and installation steps are in the README, it is the normal steps for embedded with the normal gles configure flags. I did not have to alter anything besides disable python (which is not needed anymore).

I used ubuntu on pandaboard, and the drivers did not have the dev packages so I compiled it using mesa's dev and reinstalled drivers after the compile.


- christian667 - 2011-06-22

I didn't have to de- and reinstall the Omap4-GLES, I compiled with
Code:
dpkg --get-selections | grep gles
libgles1-mesa                    deinstall
libgles1-sgx-omap4                install
libgles1-sgx-omap4-dbg                install
libgles1-sgx-omap4-dev                install
libgles2-mesa                    deinstall
libgles2-sgx-omap4                install
libgles2-sgx-omap4-dbg                install
libgles2-sgx-omap4-dev                install