Friday, September 10, 2010

How to Synchronize Your XBMC Media Center Between Every Room in the House

By Jason Fitzpatrick

How to Synchronize Your XBMC Media Center Between Every Room in the House

How to Synchronize Your XBMC Media Center Between Every Room in the HouseWouldn't it be nice if you could pause or stop your media center in the living room, head into the bedroom, and pick up exactly where you left off without skipping a beat? You can with XBMC, and here's how it works.

We've shown you how to clean up your media, customize your install, and emulate games in pursuit of making XBMC the ultimate media center. Today we're going to show you how to synchronize all the XBMC consoles in your house.

XBMC is a fantastic open-source media center application for Windows, Mac, Linux, and (at least the old) Apple TV. If this is your first time hearing about XBMC, you really should check out our start to finish guide to setting up XBMC to see what XBMC is really capable of.

If you have more than one XBMC installation in your house—we're currently rocking 5 installations in this media-center-happy home—you might have noticed one seemingly small but annoying flaw in XBMC. If you paused, stopped, or bookmarked a television show or movie in the living room and then went to resume watching it in the bedroom, the remote instance of XBMC had no idea where you left off. Bookmarks and resume-points are stored on each local XBMC installation, as are any changes or annotations you make to your library. We're going to take care of that annoyance today with a little database wizardry. When we're done you'll be able to pause Scarface in the living room and unpause it in the bedroom, and your network of XBMC centers will keep everything in sync.

Getting Started with XBMC Syncing

How to Synchronize Your XBMC Media Center Between Every Room in the House
You're going to need a couple things to make this synchronization magic happen. The foremost is multiple copies of XBMC running a current release, if you only have one XBMC install you don't need to worry about all this syncing jazz. To enable synchronization via a central database you must be using SVN version R28117 or above. Check your release number in the System Info menu of XBMC if you're unsure which version you have. If you have a pre-R28117 release the easiest way to upgrade—and enjoy some sweet new features in the process—is to grab a current release here.

The other component you'll need to bind all your XBMC installs together is a MySQL database. If you've never worked with databases or MySQL before that might sound like a frightening proposition, but I assure you it's not. This is the first time I've ever played with MySQL, and despite a few hiccups with syntax (my fault) when I first set everything up, it was a breeze. Download a free copy for your OS of choice here. Stick with the Essentials package. Although our setup instructions below focus on Windows, the MySQL commands transfer across operating systems, so Linux and Mac users can easily follow along.

Once you've ensured your XBMC installations are up to date enough and you've grabbed a copy of MySQL it's time to get started setting up your database.

Step One: Install and Configure MySQL

How to Synchronize Your XBMC Media Center Between Every Room in the House
Where you choose to install MySQL is critical to the success of your synchronization efforts. Whether you install it on a Windows, Mac, or Linux machine is not as important as installing it on a machine that's running most often. I installed it on my home server, which runs 24/7.

Run the MySQL installer. When prompted to select a configuration type choose "Standard Configuration". If you're a web developer or MySQL wiz, you've possibly already got it installed and configured; if you're new to MySQL—like I was—the standard installation is just fine for the simple media database we'll be creating. Enter a password for your database when you're prompted to do so, and specify that you want your database to have network access. Leave the default port of 3306 alone—if you change it here you'll just have to change it in the files we'll be working with in a few minutes. After the installation is complete pull up the MySQL Command Line Client—look in the MySQL start menu entry for it—and run it. It will prompt you for your password and then dump you into a console that looks like the screenshot below.

How to Synchronize Your XBMC Media Center Between Every Room in the House

Now it's time to create a user, some databases, and assign our new user some privileges. First we'll be creating a user account for all of our XBMC installations. They'll be sharing the same login. At the commend prompt type in:

CREATE USER 'xbmc' IDENTIFIED BY 'xbmc';

You just created the login/password pair xbmc/xbmc. Since this database is just for a media center and just for use on a private network we're not going to concern ourselves with heavy security. You can, of course, go more secure if you like.

After you've created your user account, it's time to create some databases for XBMC. Type the following:

CREATE database xbmc_video;
CREATE database xbmc_music;

Now we have a user "xbmc", and two databases. XBMC requires a separate database for the video library and the music library.

Finally, we need to give our user access to the databases. Again, since we're not concerned with securing confidential records or the like, we'll take the easy way out here to minimize the amount of typing and fussing we need to do. Type the following command at the prompt:

GRANT ALL ON *.* TO 'xbmc';

Now user "xbmc" has access to all our databases. To confirm that everything's in order so far, fire off the following commands:

SELECT host,user from mysql.user;
SHOW DATABASES;

How to Synchronize Your XBMC Media Center Between Every Room in the House

If everything is in ship shape, you'll see results like those in the screenshot above. Now all that's left to do is tell XBMC how to access the database and start sharing information through it.

Step Two: Configure XBMC to Use Your New Database

As with any software-based tinkering, we recommend backing up before proceeding, so let's do that first.

Under the Settings menu in Video and Music, respectively, you'll find an Export Library button. Export the video and music library for safe keeping. We'll be importing them shortly.

Once you've exported your libraries, open up your favorite text editor and copy the following text into a new file:

 <advancedsettings>     <videodatabase>         <type>mysql</type>         <host>***.***.***.***</host>         <port>3306</port>         <user>xbmc</user>         <pass>xbmc</pass>         <name>xbmc_video</name>     </videodatabase>      <musicdatabase>         <type>mysql</type>         <host>***.***.***.***</host>         <port>3306</port>         <user>xbmc</user>         <pass>xbmc</pass>         <name>xbmc_music</name>     </musicdatabase> </advancedsettings> 

Replace ***.***.***.*** with the IP address of the computer on your network that is hosting the MySQL database. If you altered the MySQL server port during the installation, make sure to change it. (If you didn't, the default was 3306.) In Windows, save this file as advancedsettings.xml in the %APPDATA%\XBMC\userdata—just copy and paste that text into the Explorer address bar or the Run box. (On Linux, the path should look something like ~/.xbmc/userdata; on OS X, something like ~/Library/Application Support/XBMC/userdata.

Once you've copied the file to every XBMC installation on your network, start one of them up and import the music and video libraries you exported. This freshly imported—or freshly scanned, if you're starting from scratch—library will populate the database on your primary machine/server. From here out your XBMC viewing habits will sync between machines and you'll be able to resume playback, access bookmarks, and see what media you've already viewed from anywhere in your house. The first screenshot below is taken from the XBMC center in one room and the second was taken in another room; both XBMC installs feed from the central database.

How to Synchronize Your XBMC Media Center Between Every Room in the House

How to Synchronize Your XBMC Media Center Between Every Room in the House

Note how the second XBMC install knows that we already watched the first episode and that we paused the second one 45 seconds into the show. In addition to remembering which shows we've watched and where we left off, the database also remembers things like subtitle settings, if we've zoomed the screen in, video modes, and more. If you're curious to see everything currently shared by the XBMC database, you can check out this developer's thread, complete with charts that highlight all the variables that'll sync between installations.

One current shortcoming with the database system—although rumored to be in the pipe for future releases—is that thumbnails and fanart are cached locally and not stored with the database. While creative users in the XBMC forums have come up with solutions to work around this like using symbolic links and moving your thumbnail cache, there is a much easier solution. We'd strongly recommend you go check out our guide to whipping your movie and TV show art into shape for XBMC. The method we outline in the guide results in all your thumbnails, movie posters, fan art, and more being stored with your media. It's the best way to do it and it makes reinstalling XBMC or adding a new install to your network a breeze since the "scraping" it does is from the local network and not a distant server. If you combine local artwork storage with a MySQL media database you'll have the fastest home media network around.


Have a favorite XBMC tip, trick, or add-on to share? Let's hear about it in the comments. We love a good media center, especially a powerful and open-source one, and we always love to hear about new ways to make them better.

Jason Fitzpatrick is the Senior Writer at Lifehacker and a devotee of the cult of XBMC. His media is massaged, his artwork is in order, and now his XBMC units are synced from attic to basement and to everything in between.

Number of comments
  • Share this:

No comments:

Post a Comment

CrunchyTech

Blog Archive