Kodi Community Forum

Full Version: Slackware64-1337 XBMC nightly AMD-E350 Zacate How to
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Moderator please remove this thread. Tutorial does not work. Will post again if I get it straightened out and with a more accurate subject line. _ Thank you!

**EDIT 6-09-2011 For the time being this guide does not work. Getting errors on lib64 upon trying to playback a movie. Currently rebuilding on 32 bit slackware. Will update or remove post upon completion on install ~5pm 6-09-2011.

How to build XBMC nightly on Slackware-13.37 with vaapi.

Assumptions

I will assume that you can burn an iso of slackware 13.37 to dvd, connect it to your computer and boot to it. That you are familiar with how to use nano a cli based text editor. That you can mount a directory in /mnt and you know your way around that. That you can execute a shell script from cli namely your video driver installer package and you know how to download it. It is also assumed that you know your architecture and that you can line up to either x86 or x86_64 for your configurations and downloads.

Please do this on a wired connection. I dont want to walk you through a cli connection to a wpa network. Slackware will auto dhcp an address for you on a wire. Also, if this an htpc, make sure you have your receiver and television are hooked up as they will be when in normal use and that all hdmi cables are in place.

Super, lets do it.

When booting to Slackware the first thing one see's is a cursor on Boot> _

Type:
Quote:hugesmp.s
to get started and follow your prompts.

First thing you will notice is that Slackware's installer is pretty basic. If you are intimidated by partitioning in this manner use an ubuntu disk to lay out the partitions you want and then kill the ubuntu install as its installing the packages and put the Slackware disk back in. When prompted to login use:

Quote:root

and then type:

Quote:cfdisk
if you need to partition, or type:

Quote:setup
if your partitions look as they should

The ubuntu partitioning trick will get you past the hardest part involved with installing Slackware. They just dont include the partitioning utilities on Slackware that you find on other distributions.

Add target and swap if you intend to use swap space.Add source, I usually choose auto with usb dvd drive plugged in however you can use ftp, http, nfs, or locally mounted directory. There is even an "execute shell" option in the menu incase you need to manually mount a directory.

I have a package list of everything installed if anyone is interested. It would help one do an expert or minimal install.

If you have problems during lilo install like I did try going for an expert install. Opt for no time to choose between boot options when you take the top item, start new config. Add linux partition, kernel parameters as needed, name it XBMC and choose an 800x600 frame buffer with 32 bit depth (assuming a good television) and mbr for location to write to. It should go okay. If not go through all the options and at the end choose configure system from menu and go through it until lilo does not error and the next screen you see asks what mouse you want to use.

Make a "xbmc" user after install with the command adduser. Add them to /etc/sudoers after reboot if you want. Make that user xbmc and accept all the additional groups that are offered. I used xbmc for password on the xbmc user just so I wont forget it.

On a usb drive I had a tgz file of sbopkg as well as the latest ati catalyst driver. The first time we use slackpkg, Slackware update and install utility, it wants to get a new package list.

Quote:nano /etc/slackpkg/mirrors

and select a mirror in your area for the Slackware distro you are using. IE not 64 bit. Very important!!! Uncomment, or erase the # from the beginning of the line to enable that mirror.

CTL+o and CTL+x to save and close.

Quote:slackpkg update

will get us a new package list.

Now we need to add some packages from sbo or slackbuilds:

Download sbopkg.tgz from http://sbopkg.org

Quote:installpkg install /path/sbopkg.tgz

will install sbopkg.

Okay start sbopkg:

Quote:sbopkg

Answer c or yes or enter to all questions. and then sync to repository.

Now search and add the following to queue. Please do these in order and in groups of say five or ten so that just in case something does not go right its not too hard to go back and retrace where it happened. Anyways add the following and in this order:

sigc++
glibmm
mm-common
libxml++
libnfnetlink
libnetfilter - all
libmms
faac
faad
modplug
libcuefile
libreplaygain
musepack-tools
pysetup-tools *search pysetup
setup-tools *search setup
Cython
python-distutils-extra
libmpeg2
enca
microhttpd
libdvdcss
mdns
libdaemon
rtmpdump
numpy
smpeg
libass
curlftpfs
yajl
and lastly wicd if you have not already

If you watch the output you will see that sbopkg uses /tmp for its build directory. If you re tight on space take the time to clean up /tmp and reclaim some space.

Quote:rm -r /tmp/*.tgz

After erasing all the binaries and /usr/man and /usr/doc I was at 40 percent of 8 gigs on my 8gb ssd.
.

Okay here it gets a little tricky. We are going to download debian .deb files and convert them to tgz slackware packages.

Quote:wget http://ftp.de.debian.org/debian/pool...en_8.84.tar.gz

Quote:tar -xf alien_8.84.tar.gz

cd into its directory after untar and issue:

Quote:perl Makefile.PL; make; make install

Man page is here:
http://linux.die.net/man/1/alien


And some extra stuff, you know, just in case

Quote:wget ftp://slackware.opennix.com/pub/slackbui...4-1_mm.txz

Quote:wget ftp://slackware.opennix.com/pub/slackbui...4-1_mm.txz

Quote:wget ftp://slackware.opennix.com/pub/slackbui...4-1_mm.txz

Even though these are x86_64 pckages they seem to work well on 32 bit.

Quote:installpkg aacskeys-0.4.0c-x86_64-1_mm.txz libbluray-20110514-x86_64-1_mm.txz libaacs-20110514-x86_64-1_mm.txz

and clean up:

Quote:rm libaacs-20110514-x86_64-1_mm.txz libbluray-20110514-x86_64-1_mm.txz aacskeys-0.4.0c-x86_64-1_mm.txz

This is the part where we grab out gpu driver and install it. If you use Nvidia you know what to do. Nvidia provides wonderful support for you. If you use ATI http://www.ati.com has a driver link on the right side. I use catalyst 11-5 as recommended for the HD6310 Radeon APU.

Quote:wget http://www2.ati.com/drivers/linux/ati-dr...x86_64.run

Before installing please make sure you have kernel source package installed.

Quote:sh ./ati-driver-installer-11-5-x86.x86_64.run

Chose the default and recommended and:

Quote:cd /lib/modules/fglrx/build_mod

Quote:./make.sh

Quote:cd ..

Quote:./make_install.sh

Quote:reboot

if you have not made your xbmc user do this now with:

Quote:adduser
and follow prompts

Quote:cd /home/xbmc

Lets make sure the driver has the best in linux libraries for video support:

Quote:wget http://www.splitted-desktop.com/~gbeauch...2_i386.deb
Quote:wget http://www.splitted-desktop.com/~gbeauch...1_i386.deb
(NVIDIA only)

Quote:wget http://www.splitted-desktop.com/~gbeauch...1_i386.deb

Quote:wget http://www.splitted-desktop.com/~gbeauch...2_i386.deb

And lets convert them to Slackware packages with that "Alien" package we installed earlier.

Quote:alien --to-tgz libva-dev_0.32.0-1+sds2_i386.deb libva-dev.tgz

Quote:alien --to-tgz xvba-video_0.7.8-1_i386.deb xvba-video.tgz

Quote:alien --to-tgz libva1_0.32.0-1+sds2_i386.deb libva1.tgz

Quote:installpkg libva1-0.32.0.tgz libva-dev-0.32.0.tgz xvba-video-0.7.8.tgz

Quote:rm libva1-0.32.0.tgz libva-dev-0.32.0.tgz xvba-video-0.7.8.tgz


For whatever reason I simply could not get aliens slackbuilds to work on this nor could I build from source as splitted desktop does not document their required patches all that well so we ill be using already patched precompiled binaries.


Lets get some shiney new code:

Quote:git clone git://github.com/xbmc/xbmc.git

Quote:cd xbmc

Note that this is the nightly branch. It is recommended to download "stable" source code from the XBMC.org download page.

Quote:cd xbmc

Quote:./bootstrap

once bootstrap completes we have one file to modify that would have caused ./configure to hang:

Quote:nano xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp

scroll down to the first ifdef statement and make it look like:

Quote://#ifdef_WIN32
#include "system.h" // just for HAS_LIBRTMP
//#endif

ctl+o to write the file (save) and ctl+x to exit

basically we are adding "//" to the beginning of two lines.

after all of this we should get through a ./bootstrap

Quote:./bootstrap

Quote:./configure --enable-vaapi --enable-xrandr --enable-gl --enable-dvdcss --enable-goom --disable-external-ffmpeg --enable-bluray

If you are using an nvidia chipset add
Quote:--enable-vpdau
to the above configure script.

Next step:

Quote:make

and

Quote:make install

Now that makes 2.3 gigs worth of xbmc folder. I copy this to a thumb drive and keep it incase I need to change anything later. Now lets remove the source folder with:

Quote:rm -r /home/xbmc/xbmc

Now we should be able to start xbmc and see it working.

Okay good.

On to part two...
Part 2

LIRC anyone?

For lirc we need to get kernel source.

Quote:slackpkg install kernel-source
and...

back to sbopkg:

Quote:sbopkg -i lirc
p to confirm or proceed.


While we have the kernel-source package installed lets build an ati driver.

Surf to their site and download the driver for the hardware and os. I took 11.5 for amd64-linux.

http://www2.ati.com/drivers/linux/ati-dr...x86_64.run

run the installer that you downloaded

Quote:./ati-driver-installer-11.5-x86.x86_64.run
reboot

Follow prompts. Choose easy install.

Quote:reboot

Alternately if you use an nvidia chipset please mimic the same actions for the driver that lines up with your gpu.

Quote:cd /lib/modules/fglrx/install_mod
Quote:./make.sh
Quote:cd ..
Quote:make_install.sh

Quote:slackpkg remove kernel-source

Quote:reboot
Quote:aticonfig --initial

add damon startup to system startup:

Quote:nano /etc/rc.d/rc.local

add

Quote:/usr/sbin/lircd -H dev/input -d /dev/input/eventn

ctl+o and ctl+x

Quote:nano /etc/rc.d/rc.modules

add

Quote:/sbin/modprobe evdev
/sbin/modprobe uinput
/sbin/modprobe lircd

to a place in the middle somewhere. Comment a line above it describing it just in case. Save and close nano.

Quote:cp /usr/share/lirc/remotes/imon/lircd.conf.imon-pad /etc/lircd.conf

if you happen to have an imon ipad remote like I do:

Quote:cp /usr/share/lirc/remotes/imon/lircd.conf.imon-pad /etc/lircd.conf

if not look for your remote in the remote folder and if its there copy it over to /etc/lircd.conf



Now lets look at autologin since we have no kdm, gdm, or xdm.

Quote:nano /etc/inittab

find "
Quote:c1:2345:respawn:/sbin/getty 38400 tty1 linux
"

and comment it out by adding a # to the beginning. Scroll to end of that line, hit enter to start another and add:

Quote:c1:2345:respawn:/bin/login -f xbmc tty1 </dev/tty1 >/dev/tty1 2>&1

ctl+o to save and ctl+x to exit

Quote:cp /etc/profile /home/xbmc/.bash_profile
Quote:nano ~/.bash_profile

add:
Quote:if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
xinit xbmc
fi
to the end
ctl+o to save and ctl+x to exit

If you use bluetooth go in and change permissions on one file:

Quote:chmod u+x /etc/rc.d/rc.bluetooth
feel free to xinit fluxbox on login and become aquainted with bluman. If you have a bluetooth device you want to use it will work well. If you have everything set up and want to do this later hit ctl+alt+f3 or f4 as that will bounce you over to another tty. Just login and start p fluxbox wit xinit fluxbox or startx and use your htpc like a computer to associate your device.

If you wanted to you could install lcdproc and add your lcd or vfd display to the conf files in /etc. You would have to go in to the advanced gui settings.xml file in .xbmc folder and switch the <haslcd>no</haslcd> to <haslcd>yes</haslcd>. Its close to the bottom and this is from memory so it may not be 100 percent accurate.

wget http://distrib-coffee.ipsl.jussieu.fr/pu...x86_64.rpm

rpm2tgz lcdproc-0.5.3-1mdv2010.2.x86_64.rpm lcdproc-0.5.3.tgz

installpkg lcdproc-0.5.3-1mdv2010.2.x86_64.tgz

nano /etc/lcdproc.conf and add your device and settings
nano /etc/lcdvs.conf and do the same

nano /home/xbmc/.xbmc/userdata/guisettings.xml

Look in /etc/lcdproc for the LCDd.conf as well. The set up of these files will depend on your vfd or lcd screen.

scroll to the very bottom. Now move back up one section. Video Screen is the one we want. Take the time to google the right settings for your screen. This is where we activate it in xbmc after we set up the drivers.

Lets say you have an ssd hard drive like me. First thing I would do on reboot is go in to bios and check a couple things. One being that memory cache is set to write-through opposed to write back. This tells things to write to flash only when necessary. Two being to make sure that s1 clocks are set to off.

okay next we:

Quote:nano /etc/fstab

find the root partition(s) they may look like:

Quote:/dev/sda1 / ext4 defaults 1 1

with an ssd we want them to look like:

Quote:/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0

And ctl+o to save and ctl+x to exit

Lets make sure digital audio has a pipe out:

Quote:alsamixer

I only had one spdif and pressing "
Quote:m
" unmuted it.


Pat yourself on the back!!!

You just built xbmc and all its deps from source code, with the help of sbopkg, on a nice lightweight operating system. Slackware. Not only that but 64 bit and on a slightly minimal install. Again I suck. You scripted it to auto login and start xbmc, hopefully you configured a remote and are enjoying the benefits of a more efficient navigation experience on your Zacate platform than that of what windows or *buntu provides. This is a much better experience.

The one thing I wont help you with is splashy. Each and every time I try I bork my install. It took me a little while to get this how to and the install done so I am not going there yet. Possibly I will update this later with a splashy how to. IDK. Anyone who has things to add please feel free to add. Corrections please pm me. I will put attention asap and credit you for the eyes.

Rock on!
quotaholic

PS Youtube videos here:

http://www.youtube.com/watch?v=K4N_6R4hH0k
and
http://www.youtube.com/watch?v=/ZtPZAOs7Dcg


Based on how fast the gui is I think this is a winning combination. I have no ati experience and not sure how to try to tune 1080p performance. Any help would be appreciated. It looks like 1080p is hitting one core of the cpu as one core is always at 100 percent and fps rarely gets above 16.

Just to eliminate one possibility I set my sources in /etc/slackpkg/mirrors to point to slackware64-current and upgraded. This gives us a 2.6.38.7 kernel so I rebuilt libva, copied in xvba, ati-driver and lirc after installing the newer kernel-source package. Out of the box results are about the same. So I am currently rebuilding XBMC as well. Copied the xbmc source folder back in and ran:

./bootstrap
/configure --enable-vaapi --enable-xrandr --enable-gl --enable-dvdcss --enable-goom --disable-external-ffmpeg --enable-bluray
make clean
make
make install

Yup, I am stuck. Even went as far as to get rid of sbopkg and install it again in order to associate to -current- packages. No luck. GUI is lightning fast, video is not. Any tips or help would be wonderful at this point!!

**EDIT 6-05-2011 - Submitted feedback to amd catalyst driver team indicating driver performance was considerably lower than expectations. Hoping to hear back from them with
resolution.

**EDIT 6-06-2011 - Saw an error in the xbmc.log file pointing towards a lib64. Thought about it and wait. XBMC is a 32 bit program!! Need to compile in 32 bit support in to Slackware. Currently converting to aliens multilib and rebuilding ati driver as well as xbmc. If I get better video performance I will post better videos to youtube.

quotaholic
Have to admit I probably jumped the gun a little by posting this. XBMC from git on Slackware64 13.37 is the fastest gui I have used to date on XBMC. Sadly I cant seem to overcome the video problem. Playing Tron Legacy, a 14gb mkv gets me 12 - 16fps and 100 percent on cpu 1 and 10 percent load on cpu 0.

I spent today building Slackware's multilib support. I updated to "Current on 6-05" Mesa 7.10 is in there. Rebuilt the ATI driver 11.5. Flipped the "multi-lib 32 bit switch(/etc/profile.d/XX32.sh). Rebuilt XBMC. The ati driver only lists mesa as its only requirement past xorg. While I see better cpu load at idle the hd performance is still quite unusable.

Going to roll back to ATI driver 11.4 just to eliminate one other possibility.

Again if anyone can add to this please feel free. If you have an Nvidia based board please do try this recipe out as my problems are localized to ATI. Or at least I feel strongly that ATI is the culprit.

**EDIT 6-07

Made a leap forward today. Yes I am currently using ATI-driver 11-4. Not sure why it didn't dawn on me to check vainfo or I thought I did but never really did, not sure. Seems that vainfo reports some errors. So I tried the package from sbopkg or slackbuilds and still the same. Even rebuilt the ati-driver both before and after libva was installed and same results. Errors. I found alienBobs slackbuild in his uk section of slackware.uk. Same thing. So I went after a package called "Alien". One can find alien here:

Quote:wget http://ftp.de.debian.org/debian/pool/mai....84.tar.gz

cd into its directory after untar and issue:

Quote:perl Makefile.PL; make; make install

Man page is here:
http://linux.die.net/man/1/alien

Had to convert the packages found at splitted-desktop.com to tgz files from their respective .deb extensions. The normal tar.gx files would not build and needed patching. Documentation is non existent so I decided to convert the already patched libva1, libva-dev and xvba .deb packages. Installed them and now I have good output from vainfo, fglrxinfo and glinfo.

Now no matter what I do I cant seem to start xbmc with "xinit xbmc" however I can start fluxbox with "startx". Oh yeah. I compiled xbmc on libva 0.31 and I now have libva 0.32. Looks like I will rebuild XBMC one more time.

Hope everyone is enjoying the day as much as I am.

quotaholic
Okay just got finished with rebuilding xbmc. The cpu load looks better, more balanced across the gui functions. That is great, I can hold right or left key down and scan all of my movies with no lag spots now. Sure some of the covers take a fraction of a second to fill however the motion never pauses to buffer.

Now when I go to play a video XBMC crashes. I have a paste bin here:

http://pastebin.com/sk5EbSxQ

I cant tell you how much I would appreciate a bone here. I am not a good debugger with what is missing or not configured right.

Thanks in advance
quotaholic