HOW-TO:Install XBMC for Linux on Arch Linux, MythicalLibrarian

From XBMC
(Difference between pages)
Jump to: navigation, search
(Installing NVIDIA Beta Drivers)
 
 
Line 1: Line 1:
'''DISCLAIMER!''' This is an unofficial guide. Unofficial as in the XBMC Team will not support this type of install, answer your questions, assist you with problems or anything along those lines. Unofficial means just that, this is not the official install method for XBMC and is not recommend, supported or endorsed by the XBMC Team.  This guide makes no promises that this will work with your system, that it will not break your computer, and that it will not steal your girlfriend. If you are comfortable with all of this then feel free to continue!
+
[[Image:Librarianas.png|left|200px|diagram of how mythicalLibrarian works]]Newest version was released --[[User:Outleradam|Outleradam]] 23:54, 2 January 2010 (UTC)
 +
[[Image:Libraraianlibraryfiles2.jpg|right|200px|actual picture from XBMC with recordings from MythTV ]]
 +
[[Image:Librararianlibraryfile.jpg|right|200px|actual picture from XBMC with recordings from MythTV ]]
 +
'''The Missing Symlink'''
  
This guide was written with the intent of helping those who would like to try a different distribution of LinuxThough there is nothing wrong with Ubuntu Linux some just prefer a choice.  The minimal install and rolling release style of Arch Linux compared to Ubuntu is seen as a benefit to some users.  Instead of having to deal with the lag of updating packages in some cases on Ubuntu, you can always have access to the latest and greatest.  In some ways this is bad and others it is good.  As with anything its all about preference.  Though with this flexibility you lose some ease of use.  If you are not comfortable with the command line and manually editing a config file with vi or nano THIS IS NOT THE GUIDE FOR YOU.  This guide assumes you have some basic knowledge of Linux.
+
mythicalLibrarian will convert your recordings into a [[Video Library]]You can see an example to the right.
  
Last, if you have questions or problems SEARCH, SEARCH, and SEARCH SOME MORE.  The wiki and forums for XBMC and Arch Linux are full of knowledge.  If you have a question or problem chances are someone else has had the same one.  So please search before you ask a question.
 
  
= Introduction =
+
'''About The Program'''
  
This guide is intended to be a step by step guide to getting XBMC up and running on a dedicated PC running Arch LinuxI will walk you through setting up all the hardware that is needed to get you the ultimate media p.c. experienceOver time I hope to have people contribute to this guide so it will cover a wider array of hardware.  This may seem like a long guide but just stick with it and you will come out on top.
+
mythicalLibrarian is a highly versitile tool designed to assign season and episode numbers to television shows based on show title and episode title so they are easily recognized by XBMC or BoxeemythicalLibrarian interfaces with TheTvDb to gain information about the target filemythicalLibrarian also has the ability to interface with MythTV's local database, XBMC's command interface, and Ubuntu GNOME desktop to provide an all-around recording recognition/managing engine which will run in the background of your back-end computer to update your library and provide status updates upon each completed job.
  
'''Please note:'''
+
mythicalLibrarian pulls information supplied by your [[MythTV]] program guide and, for episodes, and makes a fuzzy logic match out of the supplied data. If fuzzy logic is not enough, it will match original air date. For Movies, mythicalLibrarian will rename your MythTV recordings based upon information obtained from the program guide database on your computer. If you allow commercial data to be generated for your shows, mythicalLibrarian will also copy this data with the recordings. mythicalLibrarian allows MythTV to remain in control of the files, so there is no reason not to process your recordings for boxee and XBMC.
* The guide is for using XBMC on a dedicated HTPC, so there is no window manager and/ or any additional applications installed.
+
* You need minimum 1GB size flash drive or blank CD to create the install media.
+
* Since you will use this PC only as a [http://en.wikipedia.org/wiki/Media_center media center]. I assume that you use digital audio pass-through (S/PDIF or HDMI) to a receiver/amplifier with built-in Dolby Digital (AC3) decoder.
+
* <span style="color:red">'''Please also think twice, if you want to use any of the below sections in it's own, without following the guide step-by-step from the begining'''</span>
+
  
'''You will get:'''
+
MythicalLibrarian was designed to run under Ubuntu Karmic Koala OS through BASH2.
* A dedicated HTPC which auto-boots directly to XBMC Media Center.
+
* Latest XBMC SVN version.
+
* Upgraded ALSA (audio) driver.
+
* Up to date VIDEO (graphics) driver.
+
* LIRC (Microsoft MCE Remote will work out-of-the-box, however if you have any other remotes and/or LCD displays then you are on your own to solve the individual LIRC and LCDproc issues).
+
  
= Obtaining Arch Linux =
 
  
So you haven't bailed on me yet!  Now lets us start down the path of Arch Linux.  First we need to
+
[[Image:Files.mythicalfilesystemthumb.jpg|right|thumb|250px|Click this link to see the big picture http://wiki.xbmc.org/images/5/5f/Files.mythicalfilesystem.gif ]]
download Arch, we will use [http://en.wikipedia.org/wiki/BitTorrent_(protocol) Bittorent] to acquire the needed images.  If you can't use Bittorrent or
+
'''How it works'''
would rather use a more traditional method please reference the [http://www.archlinux.org/download/ Arch download page.]
+
  
== Thumb Drive Installation ==
+
mythicalLibrarian will generate several files of it's own while running. It must have it's own working directory. To the right, you can see an example of the layout of /mythicalLibrarian, the files which it creates and their purposes.
 +
Here is the basic flow:
 +
*Episodes- mythicalLibrarian references TheTvDb to gain SeriesID. Get current time from TheTvDb  If the database is out-of-date or non existant, it will download the full series and parse it.  Then, using fuzzy logic, it makes a match of the series name and gains season and episode information.  If this is not possible, it will attempt a match of original airdate from your MythTV program guide database.
 +
mythicalLibrarian will rename your recognizable episodes to: "'''''/Show Name/Show Name.SxxExx (episode title).ext'''''"
  
ftp://ftp.archlinux.org/iso/2009.02/archlinux-2009.02-2-ftp-i686.img.torrent
+
*Movies- mythicalLibrarian references your MythTV program guide database to verify it is a movie and then obtains the year for the movie.
 +
mythicalLibrarian will rename your movies to: "'''''/Movie Name/movie title (Year).ext'''''"
  
Download this torrent and load it up into your favorite bittorrent client. Note that an installation on x86_64 is possible, but not recommended as there are still issues with xbmc, like a non-working web interface or segfaults sometimes. Please have a look http://trac.xbmc.org/browser/branches/9.04_Babylon-linux-osx-win32/XBMC/known_issues.txt to learn more about this. Once the download is completed you will have the img you need to write to you thumb drive.  No we need to write that image to your thumb drive. 
 
  
<span style="color:red">'''This will erase everything on your thumb drive so please back up anything you may need on it.'''</span>
+
'''Additional Information'''
 +
*Although mythicalLibrarian has no known issues at the present time, mythicalLibrarian is in beta until it goes one month without problem reports. Please report problems here in the XBMC Forum thread:  http://forum.xbmc.org/showthread.php?p=470402#post470402
 +
*If you would like to see additional features and functions, please post in this thread http://forum.xbmc.org/showthread.php?t=65769
  
=== Windows ===
 
  
Download [http://www.chrysocome.net/rawwrite RawWrite.]
+
==Installation of mythicalLibrarian==
  
Run RawWrite and select the image you downloaded, your thumb drive and then let it do its thing.
+
*Get the current version of mythcalLibrarian from Google Code: [http://mythicallibrarian.googlecode.com/files/mythicalLibrarian.sh download link]
 +
*Place mythicalLibrarian.sh in /home/mythtv/mythicalLibrarian
 +
mkdir /home/mythtv/mythicalLibrarian
 +
cp /home/yourusername/downloads/mythicallibrarian.sh /home/mythtv/mythicalLibrarian
 +
*Make mythicalLibrarian executable by typing the following:
 +
sudo chmod +x /home/mythtv/mythicalLibrarian
 +
*Install dependencies
 +
apt-get install curl agrep libnotify-bin
 +
====Setting the Settings====
 +
[[Image:MythicalsettingsThumbnail.jpg|right|thumb|200px| Click this link to see the big picture http://wiki.xbmc.org/images/1/15/Mythicalsett.jpg]]
 +
To make mythicalLibrarian work, you will need to set the following settings located in text format within mythicalLibrarian.sh.You can see a picture of the settings to the right.
 +
*MoveDir - this is your primary episode move dir.
 +
*AlternateMoveDir- this is the folder where episodes will be moved if movedir cannot be used
 +
*FailSafeDir- folder to place links if files cannot be moved
 +
*PrimaryMovieDir-Folder to place movies
 +
*AlternateMovieDir- this is where movies will be placed if PrimaryMovieDir fails
 +
*Database username and password should be mythtv or root by default, but can be tested by opening a terminal and typing
 +
mysql -u*username* -p*password*  #replace *username* and *password* with your mysql username and password
 +
Leave the rest as default
  
=== Linux / OSX ===
+
====Use of mythicalLibrarian on MythTV Applications====
 +
*Click System/Administration MythTV Baclend setup
 +
*Select "1. General" then select next until you get to screen 3
 +
*Check "Follow symbolic links when deleting files". 
 +
*Select next until you get to screen 8
 +
*Check "Allow user job #1 Jobs"
 +
*Select next until you get to screen 10
 +
UserJob #1 Description: MythSExx
 +
User Job #1 Command: /home/mythtv/MythSExx/MythSExx.sh  "%TITLE%" "%SUBTITLE%" "%DIR%/%FILE%"
 +
*Select Finish to exit
 +
*Select 6. Storage Directories
 +
*Select Default
 +
*Add a recording folder to which MythTV has access ie. /home/mythtv/Videos
 +
*Add additional folders if required. 
 +
*Remove folders to which MythTV cannot run move jobs such as /lib or /var
  
You should already have [http://en.wikipedia.org/wiki/Dd_(Unix) dd] available to you, simply run dd in this syntax:
+
====Use of mythicalLibrarian on non-MythTV Applications====
 +
*edit mythicalLibrarian.sh and set Database=Disabled
 +
*Set mythicalLibrarian up to run the job as follows:
 +
/home/mythtv/mythicalLibrarian/mythicalLibrarian.sh "Show name" "Show Title" "File to rename"
 +
*see Setting the Settings in this section
  
==== Linux ====
+
==Librarian Interfaces ==
 +
mythicalLibrarian has the capability to send notifications to the Ubuntu GNOME desktop and keep your XBMC library up-to-date and clean.
  
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
====XBMC Commands====
# dd if=/where/the/image/is/archlinux-2009.02-2-ftp-i686.img of=/dev/sdX
+
[[Image:Xbmc notification.jpg|right|http://www.xbmc.org Another Sucessful library addition]]
</div>
+
mythicalLibrarain can keep XBMC's library up to date, clean out deleted files and send a notification upon a completed job. 
 +
*edit mythicalLibrarian.sh in your text editor
 +
*set XBMCUpdate, XBMCClean, and XBMCNotify to the desired settings, either Enabled, or Disabled
 +
* Set the IP and port under XBMCIP eg.
 +
XBMCIP=192.168.1.110:8080
  
If you dont know what /dev/ object to use try
+
====GNOME Desktop Notifications====
 +
[[Image:GNOMENotificationsthumbs.jpg|right|thumb|250px|Another Sucessful library addition ]]
 +
* mythicalLibrarian requires no-password sudo access to send GNOME notifications.  This can be a security risk.
  
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
GNOME Desktop notifications are used on the back-end machine by mythicalLibrarian to let you know that a file move operation is in process or an operation has completed. The external script librarian-notify-send becomes the specified username and sends a GNOME desktop notification. librarian-notify-send requires the user mythtv to have access to the sudo command without a password if run as a user job.
# tail -n 25 /var/log/messages
+
</div>
+
  
You should see Linux detect your thumb drive being and where its assigned to in /dev/
 
  
==== OSX ====
+
* Get the current version of librarian-notify-send from Google Code [http://mythicallibrarian.googlecode.com/files/librarian-notify-send download link]
 +
* place the file in /usr/local/bin
 +
* add mythtvall group
 +
sudo addgroup mythtvall
 +
* add mythtv to the mythtvall group
 +
sudo adduser mythtv mythtvall
 +
* edit the sudoers file
 +
sudo visudo
 +
* add the following line to the sudoers
 +
%mythtvall ALL=(ALL) NOPASSWD:ALL
 +
* hit ctrl-x and then y, then enter to write out and quit visudo
 +
* make librarian-notify-send executable by typing
 +
sudo chmod +x /usr/local/bin/librarian-notify-send
 +
* edit mythicalLibrarian and set Notify=Enabled  and NotifyUserName=*your user name*
  
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
You are done.
# dd if=/where/the/image/is/archlinux-2009.02-2-ftp-i686.img of=/dev/discX
+
</div>
+
  
If you don't know what /dev/ object to use try Disk Manager and find your thumb drive and in the right pane you should see what device it is.  Make sure to unmount the volume before writing to your thumb driveIt should be mount in /Volumes
+
====Notes====
 +
mythicalLibrarian is a spawn from the project BashSExx and [[MythSExx]].   
  
Now that we have our image on our thumb drive.  Now we need to reboot or boot the computer we are going to install this on.  You will probably have to go into your BIOS to boot of the thumb drive.  This varies by motherboard so just poke around.  On my Zotac Mini-ITX board I just had to set the first boot object to USB.
+
[[MythSExx]] can be used if you are strictly trying to rename episodes
  
== CD Installation ==
+
mythicalLibrarian is currently in advanced beta stage.
  
ftp://ftp.archlinux.org/iso/2009.02/archlinux-2009.02-ftp-i686.iso.torrent
+
[[category:Linux]]
 
+
[[category:File Sharing|Sources]]
Download this torrent and load it up into your favorite Bittorrent client.  Once that is completed you will have the iso you need to write to a blank CD.  This should be pretty straight forward in what ever operating system you are using so I wont go into detail.  You can use [http://www.nero.com Nero] on Windows, [http://cdrecord.berlios.de/ cdrecord] on Linux, and OSX's built in iso burner.
+
[[category:PVR]]
 
+
Now that we have our CD, we need to reboot or boot the computer we are going to install this on.  You will probably have to go into your BIOS to boot of the cd drive.  This varies by motherboard so just poke around.  On my Zotac Mini-ITX board I just had to set the first boot object to cd.
+
 
+
= Installing Arch Linux =
+
 
+
If you would like a more in depth guide please reference the [http://wiki.archlinux.org/index.php/Official_Arch_Linux_Install_Guide Offical Arch Install Guide ]
+
 
+
Once arch boots up go ahead and run
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# /arch/setup
+
</div>
+
 
+
Now that we are in the Arch installer we need to setup a few things. 
+
 
+
== Package Source ==
+
 
+
First we need to set the source.  Since we are using the FTP installer go ahead and select the FTP method.
+
 
+
== Network Setup ==
+
 
+
Next you need to setup your network.  If you use a static IP you will need that information if not just set it to DHCP and go about your business. 
+
 
+
== Package Mirror ==
+
 
+
Now we need to choose a mirror, try to find something that is close to you so you can get the best download speeds for obvious reasons. 
+
 
+
== Clock Setup ==
+
 
+
You will now need to set your clock.  Most will set their clock to localtime.  If your clock is set to GMT then by all means set it to GMT. 
+
 
+
== Hard drive Setup ==
+
 
+
How and what is the best way to do this is up for huge debate but I am not going to really tell you how to do this.  If you know how to do it I am sure you have a way you prefer.  If you just want to get it up and running go ahead and choose auto prepare.  Auto prepare will give you the following setup:
+
 
+
    *  32 MB ext2 /boot partition
+
    *  256 MB swap partition
+
    *  7.5 GB root partition
+
    *  /home partition with the remaining space
+
 
+
Note that in order to have Suspend-To-Disk working, you need a swap partition of at least the size of your RAM. So if you got 2GB RAM, make your swap partition is at least 2GB big.
+
 
+
<span style="color:red">'''THIS WILL ERASE EVERYTHING ON YOUR HARD DRIVE!!'''</span>
+
 
+
== Package Installation ==
+
 
+
Now we are down to the big part, what packages to install!  Just leave what it has set to default we will install anything we need later on down the road.  The install will take a few minutes so this maybe the time to get a new bottle of water if need be.
+
 
+
== System Configuration ==
+
 
+
This is where we setup some important things, like your network and what services you want running.
+
 
+
=== Hostname ===
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
HOSTNAME="whateveryouwantyourboxcalled"
+
</div>
+
 
+
=== Modules ===
+
 
+
Next setup your modules.  This is where you setup what modules you want loaded on boot up. 
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
MODULES="Whatevermodule"
+
</div>
+
 
+
If you lead the module name with a ! that will blacklist the module and prevent the system from loading it.  Helpful for pesky audio drivers. 
+
 
+
=== Network ===
+
 
+
Ok network time.  Under interfaces you will setup your network.  If you are using dhcp then
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
eth0="dhcp"
+
</div>
+
 
+
If you have a static ip you will need to do a bit more.  Here is an example:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
eth0="eth0 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255"
+
</div>
+
 
+
Also add your gateway if you need one:
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
gateway="default gw 192.168.1.1"
+
ROUTES=(gateway)
+
</div>
+
 
+
If you setup a static IP you will need to edit resolv.conf, If you use dhcp you can skip this step.  You will need to add a name server.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
nameserver <routers ip address>"
+
</div>
+
 
+
Or you can add any known DNS server.  If you dont do this you wont be able to resolve domain names.
+
 
+
=== Daemons ===
+
 
+
Last in rc.conf you will see DAEMONS, this is where you will setup what services you want to start on boot.  We will leave this alone for now.
+
 
+
=== Root Password ===
+
 
+
Last scroll down and set your root password.  Pick what you want just don't forget it! 
+
 
+
=== Boot Loader ===
+
 
+
Now follow the on screen steps to installing grub.  After grub is installed its time to reboot into our new Arch System!
+
 
+
= Installing Software =
+
 
+
Now we need to go through and install XBMC and all other supporting pieces of software.  Now that we have booted into our new Arch install you must be asking now what?  Ok first lets setup a user account. 
+
 
+
== Adding the XBMC user ==
+
 
+
This is the user we will be running xbmc under.  You can run xbmc under root but that is a very bad idea.  To create the user is simple.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# adduser xbmc
+
</div>
+
Follow the on screen prompts and provide the information needed.
+
 
+
== Installing Yaourt ==
+
 
+
[http://archlinux.fr/yaourt-en Yaourt] is a very handy program.  This is a repository tool that wraps around pacman that allows you to easily install packages from the AUR, or what is know as the user repository of packages for Arch.  I guess these packages are close to what user repositories are on Debian/Ubuntu.
+
 
+
Add the following lines to /etc/pacman.conf
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
[archlinuxfr]
+
  Server = http://repo.archlinux.fr/i686
+
</div>
+
 
+
Now sync and install
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -Sy yaourt
+
</div>
+
 
+
 
+
== Installing NVIDIA Beta Drivers ==
+
 
+
There are a few ways we can install the beta NVidia drivers on Arch.  You can use the official package in the AUR or if you just feel like using the official install package from NVidia you can do that as well.
+
 
+
=== AUR NVidia Drivers ===
+
 
+
You can use yaourt to install the latest beta drivers which are available from the AUR:
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
yaourt -Sy nvidia-utils-beta nvidia-beta
+
</div>
+
 
+
That way you can assure that there are no leftovers if you intend to update or remove the driver.
+
 
+
=== NVidia Installer ===
+
 
+
Not recommended, but possible is an installation directly from the nvidia driver package:
+
 
+
First download the latest drivers ( As of 29 May 09 )
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# wget ftp://download.nvidia.com/XFree86/Linux-x86/185.19/NVIDIA-Linux-x86-185.19-pkg0.run
+
</div>
+
 
+
Once that is done install them
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# ./NVIDIA-Linux-x86-185.19-pkg0.run
+
</div>
+
 
+
Follow the on screen prompts and it will complain that it cant find a precompiled kernel interface.  That is fine we want it to compile the drivers to our current kernel.
+
 
+
Now lets install the nvidia-utils program (skip this if you installed your driver the yaourt way above).
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S nvidia-utils
+
</div>
+
 
+
== Installing ATI Drivers ==
+
 
+
I dont have an ATi video card so this may need some tweaking.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# wget http://www2.ati.com/drivers/linux/ati-driver-installer-8-12-x86.x86_64.run
+
</div>
+
 
+
Once that is done install them
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# ./ati-driver-installer-8-12-x86.x86_64.run
+
</div>
+
 
+
This is incomplete and I really don't know beyond this.
+
 
+
== Installing ALSA ==
+
 
+
Sound is important in a setup like this so lets go ahead install alsa.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S alsa-lib alsa-utils
+
</div>
+
 
+
Once everything is installed go ahead and edit /etc/rc.conf and add alsa to your daemons line.  Reboot.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# reboot
+
</div>
+
 
+
Now that you have restarted we need to go ahead and un-mute all of the audio interfaces.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# alsamixer
+
</div>
+
 
+
Use left and right to scroll around and press 'm' to mute and unmute.
+
 
+
=== HDMI Audio ===
+
 
+
If you are using an HDMI connection to pass audio to your receiver or TV you need to edit your /etc/asound.conf and add the following
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  pcm.!default {
+
      type plug
+
      slave {
+
          pcm "hdmi"
+
      }
+
  }
+
</div>
+
 
+
 
+
== Install XBMC ==
+
 
+
We are going to use the SVN version of XBMC because the binary version in AUR has VDPAU disabled and there is no fun in that.  We are going to look at two ways.  The svn build through AUR and manually.  A few people have had trouble with the AUR build so if one doesnt work try the other.
+
 
+
=== AUR XBMC-SVN ===
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
yaourt -Sy xbmc-svn
+
</div>
+
 
+
This will pull all dependencies, checkout a recent version of xbmc from the SVN repository, patch some files for 64bit compatibility and finally compile, package and install xbmc. Feel free to add your experience or recommendations to the AUR comment page at http://aur.archlinux.org/packages.php?ID=20156.
+
 
+
=== Manual XBMC-SVN ===
+
 
+
First we are going to need to install a bunch of dependencies, easy enough.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S curl enca faac freetype2 fribidi gawk glew hal jasper libjpeg libmad libmysqlclient libxrandr lzo2 sdl_image sdl_mixer sqlite3 tre unzip libcdio libsamplerate python subversion autoconf automake boost cmake gcc gperf libtool make nasm patch pkgconfig zip flex bison lirc pmount smbclient unrar avahi
+
</div>
+
 
+
Whew that was a lot.  That should pull in everything you need along with any dependencies need by
+
those packages.  Now lets download xbmc.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# svn checkout https://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/linuxport/XBMC
+
 
+
# cd XBMC
+
 
+
# ./configure --prefix=/usr --disable-pulse
+
 
+
# make
+
 
+
# make install
+
</div>
+
 
+
All of those will take some time so once one command finishes move onto the next.  Depending on how fast your system is will depend on how long this takes.  If you need another bottle of water this is the time. If not be amazed by the fast scrolling text!
+
 
+
== Boot directly into XBMC ==
+
 
+
Now to get xbmc to start immediately after boot we need to make some changes
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
 
+
# yaourt -S minigetty
+
 
+
</div>
+
 
+
now edit /etc/inittab
+
 
+
Change this:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  c1:2345:respawn:/sbin/agetty 38400 vc/1 linux
+
  c2:2345:respawn:/sbin/agetty 38400 vc/2 linux
+
  c3:2345:respawn:/sbin/agetty 38400 vc/3 linux
+
  c4:2345:respawn:/sbin/agetty 38400 vc/4 linux
+
  c5:2345:respawn:/sbin/agetty 38400 vc/5 linux
+
  c6:2345:respawn:/sbin/agetty 38400 vc/6 linux
+
</div>
+
 
+
to this:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  c1:2345:respawn:/sbin/mingetty --autologin xbmc vc/1 linux
+
  c2:2345:respawn:/sbin/agetty 38400 vc/2 linux
+
</div>
+
 
+
 
+
<span style="color:red">'''This is a security hole but this is also a media pc so it should be fine.'''</span>
+
 
+
Also we deleted some of 4 of the other virtual terminals.  You wont be using them and it saves a bit of memory.  If you want to keep them go ahead but I doubt you'll use them. 
+
 
+
Now that we have the user logged in we need it to auto start XBMC.
+
 
+
Edit /home/xbmc/.bashrc and add the following
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  startx
+
</div>
+
 
+
Almost there
+
 
+
Edit /home/xbmc/.xinitrc and add the following
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  exec ck-launch-session /usr/bin/xbmc-standalone
+
</div>
+
 
+
Another way of auto starting XBMC (and make sure that it's idiot-proof even if it segfaults), you could start xbmc directly from inittab. Add the following line to /etc/inittab and comment out (#) all other lines beginning with "x:5:".
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
x:5:respawn:/bin/su xbmc -l -c "/bin/bash --login -c startx >/dev/null 2>&1"
+
</div>
+
 
+
You will also need to edit your /home/xbmc/.xinitrc as stated above.
+
 
+
== Thermal monitoring ==
+
 
+
So you playing some high bit rate 1080p video and you got the sound blasting and everything is great.  Well sometimes things get hot in that box so lets go ahead and setup [http://www.lm-sensors.org/ lm_sensors] so we have an idea of how hot it is in there.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S lm_sensors
+
</div>
+
 
+
Now we need to figure out what sensors you have.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# sensors-detect
+
</div>
+
 
+
When you run sensors-detect it will spit out a lot of questions, just hit enter.  The last question you will have to type out yes.  Go ahead and do that.  When its all done lets test and make sure that everything was loaded right and we can see the information we want to see.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  sensors -u
+
</div>
+
 
+
You should see a bunch of info about your system to include temp., voltage, and fan speeds.  Now to make XBMC understand what exactly is going on.
+
 
+
edit /home/xbmc/.xbmc/system/advancedsettings.xml
+
 
+
add the following lines
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  <advancedsettings>
+
  <cputempcommand>sensors|sed -ne "s/Core 1: \+[-+]\([0-9]\+\).*/\1 C/p"</cputempcommand>
+
  <gputempcommand>echo "$(nvidia-settings -tq gpuCoreTemp) C"</gputempcommand>
+
  </advancedsettings>
+
</div>
+
 
+
Now XBMC should be able to monitor how hot things are getting inside of your little media center.
+
 
+
== Speed Up Grub ==
+
 
+
Go ahead and edit /boot/grub/menu.lst
+
 
+
Change this:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  TIMEOUT=5
+
</div>
+
 
+
to this:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  TIMEOUT=0
+
</div>
+
 
+
 
+
== Boot Splash ==
+
 
+
Lets go ahead and get one of those fancy boot splash thingys going on that all the kids love these days.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# yaourt -S initscripts-splashy splashy
+
</div>
+
 
+
edit /boot/grub/menu.lst again
+
 
+
change
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  kernel (hd0,6)/vmlinuz26 root=/dev/sda1
+
</div>
+
 
+
to this
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  kernel (hd0,6)/vmlinuz26 root=/dev/sda1 ro quiet vga=791 splash
+
</div>
+
Your menu.lst may not be exactly the same but it should be close
+
 
+
Now edit /etc/rc.conf and add
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  SPLASH="splashy"
+
</div>
+
 
+
now edit /etc/mkinitcpio.conf
+
 
+
find the "HOOKS" section
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  HOOKS="base udev autodetect ide sata filesystems ...
+
</div>
+
 
+
add splashy before autodetect
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  HOOKS="base udev splashy autodetect ide sata filesystems ...
+
</div>
+
 
+
now before we build the initramfs lets remove the "the loading initramfs" lines from the boot up.  Open up and edit /lib/initcpio/init and comment out line #6.  Now lets install some themes
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# yaourt -S splashy-themes
+
</div>
+
 
+
Now we need to setup what theme.  Go ahead and do
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# cd /usr/share/splashy/themes/darch-grey/
+
# mv background.png background.bak
+
# wget http://img3.imageshack.us/img3/1894/backgroundism.png
+
# mv backgroundism.png background.png
+
</div>
+
 
+
Now we need to tell splashy to use our new theme instead of the default
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# splashy_config -s darch-grey
+
</div>
+
 
+
Last we need to make the splash show up on boot.  Anytime you change the theme or pretty much make any change to splashy you will need to rebuild the initramfs.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# mkinitcpio -p kernel26
+
</div>
+
 
+
== Antec Mult-Station Premier ==
+
 
+
Now we need to get lirc working correctly before we can setup the lcd screen.  Lirc should have already been installed with XBMC and if for some reason it is not go ahead and install it.
+
 
+
=== Remote ===
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S lirc
+
</div>
+
 
+
Now we need to install the modules to enable our device.  This used to take some trickery but with recent versions of lirc this isnt the case.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# modprobe lirc_dev
+
# modprobe lirc_imon
+
</div>
+
 
+
For some reason Lirc detects two devices with this screen.  We have /dev/lirc0 and /dev/lirc1.  Some buttons show up on one device and some show up on the other.  So we need to run two instances of lirc and have them talk together.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# /usr/sbin/lircd --driver=default --device=/dev/lirc0 --pidfile=/var/run/lirc0.pid --listen=8765
+
# /usr/sbin/lircd --driver=default --device=/dev/lirc1 --pidfile=/var/run/lirc1.pid --output=/dev/lircd --connect=localhost:8765
+
</div>
+
 
+
Edit you /etc/rc.d/lircd script and add those two lines above to the start section when lircd is called.  This why our remote will be setup properly on each start up and or reboot.
+
 
+
Start Lirc
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# /etc/rc.d/lircd start
+
</div>
+
 
+
Now we want this to all start up on boot so go ahead and add "lircd" to the daemons section of /etc/rc.conf and lirc_dev and lirc_imon to the modules section of /etc/rc.conf
+
 
+
=== LCD Screen ===
+
 
+
This is pretty hardware specific but maybe this will help someone out.  Now we need to get the LCD screen working, this is probably the easiest part.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# cd ~
+
# wget http://downloads.sourceforge.net/lcdproc/lcdproc-0.5.2.tar.gz
+
# tar -zxvf lcdproc-0.5.2.tar.gz
+
# wget wget http://codeka.com/blogs/imon/lcdproc-0.5.2-imonlcd-0.3.patch
+
</div>
+
 
+
Now we need to patch our version of lcdproc.  This will add the small changes need so the screen will function correctly.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# cd lcdproc-0.5.2
+
# patch -p1 < ../lcdproc-0.5.2-imonlcd-0.3.patch
+
</div>
+
 
+
Edit server/main.h file, and change RENDER_FREQ from 8 to 2:
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# cd server
+
# vi main.h
+
</div>
+
 
+
Now we need to build LCDProc.  If you see an error that says "IOWarrior.c' with per-target flags requires AM_PROG_CC_C_O' in `configure.in'" go ahead and ignore it.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# cd ..
+
# aclocal
+
# autoconf
+
# automake
+
# ./configure --enable-drivers=imonlcd --prefix=/usr
+
# make
+
# make install
+
</div>
+
 
+
Now lets go ahead and setup the LCDProc config file.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# vi /etc/LCDd.conf
+
</div>
+
 
+
In the [server] section change the line Driver=curses to Driver=imonlcd and the line DriverPath=server/drivers/ to DriverPath=/usr/lib/lcdproc/ ( the trailing / is needed dont forget it.)
+
 
+
Now move down and add this section to the config file.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  ## IMON LCD driver added by xxx 5Sept08 ##
+
  [imonlcd]
+
      Device=/dev/lcd0
+
      Contrast=200
+
</div>
+
 
+
You can change the contrast settings to your likings.  Now save the file.  Now start lcdproc
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# /etc/rc.d/lcdproc start
+
</div>
+
 
+
Add lcdproc to your daemons section of /etc/rc.conf to have it auto start on boot.
+
 
+
== Samba Server ==
+
 
+
So you have this giant harddrive in your media center pc but how do you get all of your files to it?  With Samba its easy, you media pc will show up as a windows share on your computer and you can just drag and drop your files back and forth.  Now lets install samba.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# pacman -S samba
+
</div>
+
 
+
Now edit you /etc/rc.conf file and add "samba" to your daemons section.  Now we need to setup our smb.conf file for our share directory.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# mkdir /home/xbmc/Share
+
# vi /etc/samba/smb.conf
+
</div>
+
 
+
Now setup your smb.conf file like the following.
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
  [global]
+
          workgroup = WORKGROUP
+
          netbios name = Media PC
+
          server string = XBMC Media PC; Samba Server %v
+
          encrypt passwords = yes
+
          passdb backend = smbpasswd
+
          security = SHARE
+
          guest account = xbmc
+
          log level = 1
+
          log file = /var/log/samba/%m.log
+
          max log size = 50
+
          socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
+
          read raw = yes
+
          write raw = yes
+
          oplocks = yes
+
          max xmit = 65535
+
          dead time = 15
+
          getwd cache = yes
+
          large readwrite = yes
+
  [Media]
+
          comment = Media Files on Media PC
+
          path = /home/xbmc/Share
+
          force group = users
+
          read only = No
+
          guest ok = yes
+
          guest only = yes
+
          create mask = 0666
+
          directory mask = 0666
+
          hide dot files = yes
+
</div>
+
 
+
Now lets go ahead and start samba
+
 
+
<div style="height: auto; width: 1000px; overflow:auto; border: thin inset black; background: #E6E6FA">
+
# /etc/rc.d/samba start
+
</div>
+
 
+
= Credit =
+
 
+
Sadly I cant think of everyone who helped me and I wish I could thank them all.  Here are a few who I know off hand that helped me out.
+
 
+
[http://forum.xbmc.org/member.php?u=46219 Ctwater] on the XBMC forums who had some good tips that I used.
+
 
+
[http://forum.xbmc.org/member.php?u=45414 Haggy] for all of his help and contributions.
+
 
+
[http://wiki.xbmc.org/?title=HOW-TO_install_XBMC_for_Linux_on_Ubuntu_with_a_minimal_installation%2C_an_unofficial_Step-by-Step_Guide Who Ever] wrote this guide.  I took a lot of tips and information from there on my install.  I dont who exactly wrote it but if you do let me know so I can give them proper credit.
+
 
+
[http://xbmc.org The XBMC Team] for all of thier great work and great software.  Keep up the great work guys.
+

Revision as of 15:38, 3 January 2010

diagram of how mythicalLibrarian works
Newest version was released --Outleradam 23:54, 2 January 2010 (UTC)
actual picture from XBMC with recordings from MythTV
actual picture from XBMC with recordings from MythTV

The Missing Symlink

mythicalLibrarian will convert your recordings into a Video Library. You can see an example to the right.


About The Program

mythicalLibrarian is a highly versitile tool designed to assign season and episode numbers to television shows based on show title and episode title so they are easily recognized by XBMC or Boxee. mythicalLibrarian interfaces with TheTvDb to gain information about the target file. mythicalLibrarian also has the ability to interface with MythTV's local database, XBMC's command interface, and Ubuntu GNOME desktop to provide an all-around recording recognition/managing engine which will run in the background of your back-end computer to update your library and provide status updates upon each completed job.

mythicalLibrarian pulls information supplied by your MythTV program guide and, for episodes, and makes a fuzzy logic match out of the supplied data. If fuzzy logic is not enough, it will match original air date. For Movies, mythicalLibrarian will rename your MythTV recordings based upon information obtained from the program guide database on your computer. If you allow commercial data to be generated for your shows, mythicalLibrarian will also copy this data with the recordings. mythicalLibrarian allows MythTV to remain in control of the files, so there is no reason not to process your recordings for boxee and XBMC.

MythicalLibrarian was designed to run under Ubuntu Karmic Koala OS through BASH2.


How it works

mythicalLibrarian will generate several files of it's own while running. It must have it's own working directory. To the right, you can see an example of the layout of /mythicalLibrarian, the files which it creates and their purposes. Here is the basic flow:

  • Episodes- mythicalLibrarian references TheTvDb to gain SeriesID. Get current time from TheTvDb If the database is out-of-date or non existant, it will download the full series and parse it. Then, using fuzzy logic, it makes a match of the series name and gains season and episode information. If this is not possible, it will attempt a match of original airdate from your MythTV program guide database.

mythicalLibrarian will rename your recognizable episodes to: "/Show Name/Show Name.SxxExx (episode title).ext"

  • Movies- mythicalLibrarian references your MythTV program guide database to verify it is a movie and then obtains the year for the movie.

mythicalLibrarian will rename your movies to: "/Movie Name/movie title (Year).ext"


Additional Information


Contents

1 Installation of mythicalLibrarian

  • Get the current version of mythcalLibrarian from Google Code: download link
  • Place mythicalLibrarian.sh in /home/mythtv/mythicalLibrarian
mkdir /home/mythtv/mythicalLibrarian
cp /home/yourusername/downloads/mythicallibrarian.sh /home/mythtv/mythicalLibrarian
  • Make mythicalLibrarian executable by typing the following:
sudo chmod +x /home/mythtv/mythicalLibrarian
  • Install dependencies
apt-get install curl agrep libnotify-bin

1.1 Setting the Settings

Click this link to see the big picture http://wiki.xbmc.org/images/1/15/Mythicalsett.jpg

To make mythicalLibrarian work, you will need to set the following settings located in text format within mythicalLibrarian.sh.You can see a picture of the settings to the right.

  • MoveDir - this is your primary episode move dir.
  • AlternateMoveDir- this is the folder where episodes will be moved if movedir cannot be used
  • FailSafeDir- folder to place links if files cannot be moved
  • PrimaryMovieDir-Folder to place movies
  • AlternateMovieDir- this is where movies will be placed if PrimaryMovieDir fails
  • Database username and password should be mythtv or root by default, but can be tested by opening a terminal and typing
mysql -u*username* -p*password*  #replace *username* and *password* with your mysql username and password

Leave the rest as default

1.2 Use of mythicalLibrarian on MythTV Applications

  • Click System/Administration MythTV Baclend setup
  • Select "1. General" then select next until you get to screen 3
  • Check "Follow symbolic links when deleting files".
  • Select next until you get to screen 8
  • Check "Allow user job #1 Jobs"
  • Select next until you get to screen 10
UserJob #1 Description: MythSExx
User Job #1 Command: /home/mythtv/MythSExx/MythSExx.sh  "%TITLE%" "%SUBTITLE%" "%DIR%/%FILE%"
  • Select Finish to exit
  • Select 6. Storage Directories
  • Select Default
  • Add a recording folder to which MythTV has access ie. /home/mythtv/Videos
  • Add additional folders if required.
  • Remove folders to which MythTV cannot run move jobs such as /lib or /var

1.3 Use of mythicalLibrarian on non-MythTV Applications

  • edit mythicalLibrarian.sh and set Database=Disabled
  • Set mythicalLibrarian up to run the job as follows:
/home/mythtv/mythicalLibrarian/mythicalLibrarian.sh "Show name" "Show Title" "File to rename"
  • see Setting the Settings in this section

2 Librarian Interfaces

mythicalLibrarian has the capability to send notifications to the Ubuntu GNOME desktop and keep your XBMC library up-to-date and clean.

2.1 XBMC Commands

http://www.xbmc.org Another Sucessful library addition

mythicalLibrarain can keep XBMC's library up to date, clean out deleted files and send a notification upon a completed job.

  • edit mythicalLibrarian.sh in your text editor
  • set XBMCUpdate, XBMCClean, and XBMCNotify to the desired settings, either Enabled, or Disabled
  • Set the IP and port under XBMCIP eg.
XBMCIP=192.168.1.110:8080

2.2 GNOME Desktop Notifications

Another Sucessful library addition
  • mythicalLibrarian requires no-password sudo access to send GNOME notifications. This can be a security risk.

GNOME Desktop notifications are used on the back-end machine by mythicalLibrarian to let you know that a file move operation is in process or an operation has completed. The external script librarian-notify-send becomes the specified username and sends a GNOME desktop notification. librarian-notify-send requires the user mythtv to have access to the sudo command without a password if run as a user job.


  • Get the current version of librarian-notify-send from Google Code download link
  • place the file in /usr/local/bin
  • add mythtvall group
sudo addgroup mythtvall
  • add mythtv to the mythtvall group
sudo adduser mythtv mythtvall
  • edit the sudoers file
sudo visudo
  • add the following line to the sudoers
%mythtvall ALL=(ALL) NOPASSWD:ALL
  • hit ctrl-x and then y, then enter to write out and quit visudo
  • make librarian-notify-send executable by typing
sudo chmod +x /usr/local/bin/librarian-notify-send
  • edit mythicalLibrarian and set Notify=Enabled and NotifyUserName=*your user name*

You are done.

2.3 Notes

mythicalLibrarian is a spawn from the project BashSExx and MythSExx.

MythSExx can be used if you are strictly trying to rename episodes

mythicalLibrarian is currently in advanced beta stage.

Personal tools
Namespaces

Variants
Actions
Navigation
Wiki help
Toolbox