Filling a Zune from Linux

Posted: January 1st, 2010 | Author: | Filed under: Linux, Music, Software | Tags: , , , , , , , , , , , , , , | 1 Comment »

Thinking that I was up for a challenge, I decided to spend the day figuring out how to put the music in my Banshee library onto a Microsoft Zune. Since my library contains a good number of FLAC files that I’ve ripped in from my CD collection, my solution called for a caching system that converts the FLAC files to mp3s and stores them so that the playlist can be changed without having to re-convert the FLAC files into something that the Zune can play on every sync. My weapons of choice for the project were a Windows XP instance running inside of Sun Virtual Box, and 126 lines of perl script.

The Steps:

  1. Create a WinXP VM that has the Zune software installed and can see two shared folders on my Linux machine:
    1. My normal Music folder, which contain my entire collection
    2. The cache folders, which contain all of the FLAC files in my collection, but converted to mp3 so that the Zune can play them
  2. Open the Banshee database, located at ~/.config/banshee-1/banshee.db
  3. Select all of the FLAC files in the playlist that we’d like to put on the Zune
  4. For each, check if it has been converted and cached
    1. If so, simply add the path to the cached copy of the track to an m3u file in the cache folder
    2. If not, convert the track, and then add the path to the cached copy of the track to an m3u file in the cache folder
  5. Select all of the mp3 files in the playlist that we’d like to put on the Zune
  6. Put those in a separate m3u file that is located in the Music folder.
  7. Boot up the Zune software on the VM. It should autoscan it’s monitored folders, find the m3u playlists, and put them in its library
  8. Sync the playlists with the Zune by dragging and dropping them to the device icon in the lower left corner of the screen

As previously mentioned, steps 2 through 6 were accomplished by way of a perl script that I can run as often as I like:

#/usr/local/bin/perl

#Requirements: libdbd-sqlite3-perl, flac, lame

#We need database support
use DBI;

#Database path – change this to reflect your user environment
my $dbpath = “dbi:SQLite:dbname=/home/jon/.config/banshee-1/banshee.db”;

#Playlist name – change this to reflect the playlist that you want to export
my $plistname = “Favorites”;

#Cache Path – the path to the directory where you’ve been caching converted FLAC files
my $cachepath = “/home/jon/Storage/mp3Cache/”;

#Music Path – the path to the folder where your music collection is actually stored
my $musicpath = “/home/jon/Music/”;

#Connect to the database – no username/password
my $dbh = DBI->connect($dbpath,”",”",{RaiseError => 1, AutoCommit => 0});

if(!$dbh) {
print “Could not connect to database $dbpath”,”\n”,”Exiting”;
exit;
}

#Pull the list of FLAC files for conversion and caching
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%flac’”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $cachepath.$plistname.’_cached.m3u’ or die “Error trying to open cache m3u playlist for overwrite. Do you have write permissions in $cachepath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#add /music to $cachepath so that files are in a subdirectory, away from the m3u file
$cachepath = $cachepath.”music/”;
if( ! -e $cachepath ) {
`mkdir “$cachepath”`;
}

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri by removing the file:// prefix and reverting the uri escaping
$uri = substr $uri, 7;
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;

#fix time into seconds
$length = int($length/1000);

#check if the flac file has already been converted and cached at cachepath
#if not, convert it and put it at cachepath.
my $path = $cachepath . $artist . ‘/’ . $album . ‘/’ . $title . ‘.mp3′;
if( ! -e $path ) {
#file dne, convert it
print “\nTrack: $title by $artist has not yet been cached, converting…”,”\n”;

#make sure that the file actually exists before attempting to convert it
if( ! -e $uri ) {
print “WARNING: Track $title by $artist does not exist at $uri”,”\n”;
} else {

#ensure that cache album/artist directories exist
my $partpath = $cachepath.$artist;
if( ! -d $partpath ) {
`mkdir “$partpath”`;
}
$partpath = $partpath.’/’.$album;
if( ! -d $partpath ) {
`mkdir “$partpath”`;l
}

#do the conversion – we’re chaining flac and lame here, reading in the flac file from $uri, and putting the resulting mp3 at $path
`flac -cd “$uri” | lame -h – “$path”`;
}
}

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u ‘\\music\\’.$artist.’\\’.$album.’\\’.$title.’.mp3′,”\r\n\r\n”;
}

#close the m3u file in the cachepath directory
close $m3u;

#TODO: scan the m3u file and delete any files that aren’t in it from the cache directory

#Pull the list of MP3 files and dump them into an m3u file
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%mp3′”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $musicpath.$plistname.’.m3u’ or die “Error trying to open music folder m3u playlist for overwrite. Do you have write permissions in $musicpath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri to become a windows file path
$uri = substr $uri, 7;            #remove file:// prefix
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;    #correct uri encoding
$uri =~ s/$musicpath//g;            #remove musicpath prefix
$uri =~ s/\//\\/g;                #change forward slashes to backslashes
$uri = ‘\\’.$uri;                #add the leading backslash

#fix time into seconds
$length = int($length/1000);

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u $uri,”\r\n\r\n”;
}

#close the m3u file and the database connection
close $m3u;
$dbh->disconnect;

Sorry for the horrible formatting.

The only snag that I hit during the entire process was really my fault – I have a tendency to overcomplicate things, and did so on this project by initially writing the script to output a *.zpl file instead of a *.m3u file. That didn’t work at all, and I ended up simplifying the script greatly by just outputting an *.m3u file and hoping for the best.

On the off chance that the Zune jukebox software refuses to properly update its playlists after you change the *.m3u files, first try deleting them from the application, and then restarting it. If that doesn’t work, you can write a Windows batch script with code similar to the following:

del /q “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists\*”
xcopy “\\Vboxsvr\mp3cache\Favorites_cached.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”
xcopy “\\Vboxsvr\music\Favorites.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”

This script deletes all files from the Zune playlists directory, and then copies each of the *.m3u files that we created with the above perl script directly into the Zune playlists directory. This should force the application to get it’s act together.

Overall, I’m happy with this patchwork job. It allows me to use the Zune on Linux, which is great because the Zune really is a beautiful piece of hardware. Now if only the libmtp guys could get it working natively, without a WinXP VM…

This piece originally appeared at The Linux Experiment


Setting up an LVM for Storage

Posted: January 1st, 2010 | Author: | Filed under: Linux | Tags: , , , , , , , , , , , , , , , | No Comments »

Recently, I installed Kubuntu on my PC. Under Windows, I had used RAID1 array to create a storage volume out of two extra 500GB hard drives that I have in my system. Under Linux, I’ve decided to try creating a 1TB LVM out of the drives instead. This should be visible as a single drive, and allow me to store non-essential media files and home partition backups on a separate physical drive, the better to recover from catastrophic failures with. The only problem with this plan: documentation detailing the process of creating an LVM is sparse at best.

The Drive Situation
My machine contains the following drives, which are visible in the /dev directory:

  • sdc: root drive that contains three partitions; 1, 2, and 5, which are my boot, root, and swap partitions respectively
  • sda: 500GB SATA candidate drive that I’d like to add to the LVM
  • sdb: 500GB SATA candidate drive that I’d like to add to the LVM

First Try
Coming from a Windows background, I began by searching out a graphical tool for the job. I found one in my repositories called system-config-lvm 1.1.4.

The graphical tool that I found to create LVMs

I followed the buttons in this tool and created a 1TB LVM spanning sda and sdb, then formatted it with ext3. The result of these steps was an uninitialised LVM that refused to mount at boot. In response, I wrote the following script to activate, mount, and assign permissions to the drive at boot:

#!/bin/bash
sudo whoami
sudo lvchange -a y /dev/Storage/Storage
sudo mount /dev/Storage/Storage /home/jon/Storage
sudo chown jon /home/jon/Storage
sudo chmod 777 /home/jon/Storage

It worked about 50% of the time. Frustrated, I headed over to the #kubuntu IRC channel to find a better solution.

Second Try
On the #kubuntu channel, I got help from a fellow who walked me through the correct creation process from the command line. The steps are as follows:

  1. Create identical partitions on sda and sdb:
    1. sudo fdisk /dev/sda
    2. n to create a new partition on the disk
    3. p to make this the primary partition
    4. 1 to give the partition the number 1 as an identifier. It will then appear as sda1 under /dev
    5. Assign first and last cylinders – I simply used the default values for these options, as I want the partition to span the entire drive
    6. t toggle the type of partition to create
    7. 8e is the hex code for a Linux LVM
    8. w to write your changes to the disk. This will (obviously) overwrite any data on the disk
    9. Repeat steps 1 through 8 for /dev/sdb
    10. Both disks now have partition tables that span their entirety, but neither has been formatted (that step comes later).
  2. Make the partitions available to the LVM:
    1. sudo pvcreate /dev/sda1
    2. sudo pvcreate /dev/sdb1
    3. Notice that the two previous steps addressed the partitions sda1 and sdb1 that we created earlier
  3. Create the Volume Group that will contain our disks:
    1. sudo vgcreate storage /dev/sda1 /dev/sdb1 will create the volume group that spans the two partitions sda1 and sdb1
    2. sudo vgdisplay /dev/storage queries the newly created volume group. In particular, we want the VG Size property. In my case, it is 931.52 GB
  4. Create a Logical Volume from the Volume Group:
    1. sudo lvcreate -L $size(M or G) -n $name $path where $size is the value of the VG Size property from above (G for gigabytes, M for megabytes), $name is the name you’d like to give the new Logical Volume, and $path is the path to the Volume Group that we made in the previous step. My finished command looked like sudo lvcreate -L 931G -n storage dev/storage
    2. sudo lvdisplay /dev/storage queries our new Logical Volume. Taking a look at the LV Size property shows that the ‘storage’ is a 931GB volume.
  5. Put a file system on the Logical Volume ‘storage’:
    1. sudo mkfs.ext4 -L $name -j /dev/storage/storage will put an ext4 file system onto the Logical Volume ‘storage’ with the label $name. I used the label ‘storage’ for mine, just to keep things simple, but you can use whatever you like. Note that this process takes a minute or two, as it has to write all of the inode tables for the new file system. You can use mkfs.ext2 or mkfs.ext3 instead of this command if you want to use a different file system.
  6. Add an fstab entry for ‘storage’ so that it gets mounted on boot:
    1. sudo nano /etc/fstab to open the fstab file in nano with root permissions
    2. Add the line /dev/storage/storage    /home/jon/Storage       ext4    defaults        0       0 at the end of the file, where all of the spaces are tabs. This will cause the system to mount the Logical Volume ‘storage’ to the folder /home/jon/Storage on boot. Check out the wikipedia article on fstab for more information about specific mounting options.
    3. ctrl+x to exit nano
    4. y to write changes to disk
  7. Change the owner of ‘storage’ so that you have read/write access to the LVM
    1. sudo chown -R jon:jon /home/jon/Storage will give ownership to the disk mounted at /home/jon/Storage to the user ‘jon’

Time for a Beer
Whew, that was a lot of work! If all went well, we have managed to create a Logical Volume called storage that spans both sda and sdb, and is formatted with the ext4 file system. This volume will be mounted at boot to the folder Storage in my home directory, allowing me to dump non-essential media files like my music collection and system backups to a large disk that is physically separate from my system partitions.

The final step is to reboot the system, navigate to /home/jon/Storage (or wherever you set the boot point for the LVM in step 6), right-click, and hit properties. At the bottom of the properties dialog, beside ‘Device Usage,’ I can see that the folder in question has 869GB free of a total size of 916GB, which means that the system correctly mounted the LVM on boot. Congratulations to me!

Much thanks to the user ikonia on the #kubuntu IRC channel for all the help.

This piece originally appeared at The Linux Experiment


WinAmp Equalizer Presets for Banshee

Posted: December 23rd, 2009 | Author: | Filed under: Linux | Tags: , , , , , , , | 1 Comment »

So far, I’ve had a great experience running the Banshee media player on Kubuntu. One thing that it lacked on install was a decent selection of equalizer presets. A quick googling turned up a post on the Ubuntu forums that provided the following XML file of presets taken from WinAmp. Just copy and paste the following code into your ~/.config/banshee-1/equalizers.xml file, and restart Banshee.

<equalizers>
<equalizer name=”(WinAmp) Classical”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-1.11022E-15</band>
<band num=”1″>-1.11022E-15</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-1.11022E-15</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>-1.11022E-15</band>
<band num=”6″>-7.2</band>
<band num=”7″>-7.2</band>
<band num=”8″>-7.2</band>
<band num=”9″>-9.6</band>
</equalizer>
<equalizer name=”(WinAmp) Club”>
<preamp>0</preamp>
<band num=”0″>0</band>
<band num=”1″>0</band>
<band num=”2″>8</band>
<band num=”3″>5.6</band>
<band num=”4″>5.6</band>
<band num=”5″>5.6</band>
<band num=”6″>3.2</band>
<band num=”7″>0</band>
<band num=”8″>0</band>
<band num=”9″>0</band>
</equalizer>
<equalizer name=”(WinAmp) Dance”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>9.6</band>
<band num=”1″>7.2</band>
<band num=”2″>2.4</band>
<band num=”3″>-1.11022E-15</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>-5.6</band>
<band num=”6″>-7.2</band>
<band num=”7″>-7.2</band>
<band num=”8″>-1.11022E-15</band>
<band num=”9″>-1.11022E-15</band>
</equalizer>
<equalizer name=”(WinAmp) Full Bass”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-8</band>
<band num=”1″>9.6</band>
<band num=”2″>9.6</band>
<band num=”3″>5.6</band>
<band num=”4″>1.6</band>
<band num=”5″>-4</band>
<band num=”6″>-8</band>
<band num=”7″>-10.4</band>
<band num=”8″>-11.2</band>
<band num=”9″>-11.2</band>
</equalizer>
<equalizer name=”(WinAmp) Full Bass and Treble”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>7.2</band>
<band num=”1″>5.6</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-7.2</band>
<band num=”4″>-4.8</band>
<band num=”5″>1.6</band>
<band num=”6″>8</band>
<band num=”7″>11.2</band>
<band num=”8″>12</band>
<band num=”9″>12</band>
</equalizer>
<equalizer name=”(WinAmp) Full Treble”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-9.6</band>
<band num=”1″>-9.6</band>
<band num=”2″>-9.6</band>
<band num=”3″>-4</band>
<band num=”4″>2.4</band>
<band num=”5″>11.2</band>
<band num=”6″>16</band>
<band num=”7″>16</band>
<band num=”8″>16</band>
<band num=”9″>16.8</band>
</equalizer>
<equalizer name=”(WinAmp) Laptop Speakers and Headphones”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>4.8</band>
<band num=”1″>11.2</band>
<band num=”2″>5.6</band>
<band num=”3″>-3.2</band>
<band num=”4″>-2.4</band>
<band num=”5″>1.6</band>
<band num=”6″>4.8</band>
<band num=”7″>9.6</band>
<band num=”8″>11.9</band>
<band num=”9″>11.9</band>
</equalizer>
<equalizer name=”(WinAmp) Large Hall”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>10.4</band>
<band num=”1″>10.4</band>
<band num=”2″>5.6</band>
<band num=”3″>5.6</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>-4.8</band>
<band num=”6″>-4.8</band>
<band num=”7″>-4.8</band>
<band num=”8″>-1.11022E-15</band>
<band num=”9″>-1.11022E-15</band>
</equalizer>
<equalizer name=”(WinAmp) Live”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-4.8</band>
<band num=”1″>-1.11022E-15</band>
<band num=”2″>4</band>
<band num=”3″>5.6</band>
<band num=”4″>5.6</band>
<band num=”5″>5.6</band>
<band num=”6″>4</band>
<band num=”7″>2.4</band>
<band num=”8″>2.4</band>
<band num=”9″>2.4</band>
</equalizer>
<equalizer name=”(WinAmp) Party”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>7.2</band>
<band num=”1″>7.2</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-1.11022E-15</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>-1.11022E-15</band>
<band num=”6″>-1.11022E-15</band>
<band num=”7″>-1.11022E-15</band>
<band num=”8″>7.2</band>
<band num=”9″>7.2</band>
</equalizer>
<equalizer name=”(WinAmp) Pop”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-1.6</band>
<band num=”1″>4.8</band>
<band num=”2″>7.2</band>
<band num=”3″>8</band>
<band num=”4″>5.6</band>
<band num=”5″>-1.11022E-15</band>
<band num=”6″>-2.4</band>
<band num=”7″>-2.4</band>
<band num=”8″>-1.6</band>
<band num=”9″>-1.6</band>
</equalizer>
<equalizer name=”(WinAmp) Reggae”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-1.11022E-15</band>
<band num=”1″>-1.11022E-15</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-5.6</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>6.4</band>
<band num=”6″>6.4</band>
<band num=”7″>-1.11022E-15</band>
<band num=”8″>-1.11022E-15</band>
<band num=”9″>-1.11022E-15</band>
</equalizer>
<equalizer name=”(WinAmp) Rock”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>8</band>
<band num=”1″>4.8</band>
<band num=”2″>-5.6</band>
<band num=”3″>-8</band>
<band num=”4″>-3.2</band>
<band num=”5″>4</band>
<band num=”6″>8.8</band>
<band num=”7″>11.2</band>
<band num=”8″>11.2</band>
<band num=”9″>11.2</band>
</equalizer>
<equalizer name=”(WinAmp) Ska”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>-2.4</band>
<band num=”1″>-4.8</band>
<band num=”2″>-4</band>
<band num=”3″>-1.11022E-15</band>
<band num=”4″>4</band>
<band num=”5″>5.6</band>
<band num=”6″>8.8</band>
<band num=”7″>9.6</band>
<band num=”8″>11.2</band>
<band num=”9″>9.6</band>
</equalizer>
<equalizer name=”(WinAmp) Soft”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>4.8</band>
<band num=”1″>1.6</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-2.4</band>
<band num=”4″>-1.11022E-15</band>
<band num=”5″>4</band>
<band num=”6″>8</band>
<band num=”7″>9.6</band>
<band num=”8″>11.2</band>
<band num=”9″>12</band>
</equalizer>
<equalizer name=”(WinAmp) Soft Rock”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>4</band>
<band num=”1″>4</band>
<band num=”2″>2.4</band>
<band num=”3″>-1.11022E-15</band>
<band num=”4″>-4</band>
<band num=”5″>-5.6</band>
<band num=”6″>-3.2</band>
<band num=”7″>-1.11022E-15</band>
<band num=”8″>2.4</band>
<band num=”9″>8.8</band>
</equalizer>
<equalizer name=”(WinAmp) Techno”>
<preamp>-1.11022E-15</preamp>
<band num=”0″>8</band>
<band num=”1″>5.6</band>
<band num=”2″>-1.11022E-15</band>
<band num=”3″>-5.6</band>
<band num=”4″>-4.8</band>
<band num=”5″>-1.11022E-15</band>
<band num=”6″>8</band>
<band num=”7″>9.6</band>
<band num=”8″>9.6</band>
<band num=”9″>8.8</band>
</equalizer>
</equalizers>

Enjoy!


Going Linux, Once and for All

Posted: December 23rd, 2009 | Author: | Filed under: Hardware, Linux | Tags: , , , , , , , , , , , , , , , , , , , , , | No Comments »

With the linux experiment coming to an end, and my Vista PC requiring a reinstall, I decided to take the leap and go all linux all the time. To that end, I’ve installed Kubuntu on my desktop PC.

I would like to be able to report that the Kubuntu install experience was better than the Debian one, or even on par with a Windows install. Unfortunately, that just isn’t the case.

My machine contains three 500GB hard drives. One is used as the system drive, while an integrated hardware RAID controller binds the other two together as a RAID1 array. Under Windows, this setup worked perfectly. Under Kubuntu, it crashed the graphical installer, and threw the text-based installer into fits of rage.

With plenty of help from the #kubuntu IRC channel on freenode, I managed to complete the Kubuntu install by running it with the two RAID drives disconnected from the motherboard. After finishing the install, I shut down, reconnected the RAID drives, and booted back up. At this point, the RAID drives were visible from Dolphin, but appeared as two discrete drives.

It was explained to me via this article that the hardware RAID support that I had always enjoyed under windows was in fact a ‘fake RAID,’ and is not supported on Linux. Instead, I need to reformat the two drives, and then link them together with a software RAID. More on that process in a later post, once I figure out how to actually do it.

At this point, I have my desktop back up and running, reasonably customized, and looking good. After trying KDE’s default Amarok media player and failing to figure out how to properly import an m3u playlist, I opted to use Gnome’s Banshee player for the time being instead. It is a predictable yet stable iTunes clone that has proved more than capable of handling my library for the time being. I will probably look into Amarok and a few other media players in the future. On that note, if you’re having trouble playing your MP3 files on Linux, check out this post on the ubuntu forums for information about a few of the necessary GStreamer plugins.

For now, my main tasks include setting up my RAID array, getting my ergonomic bluetooth wireless mouse working, and working out folder and printer sharing on our local Windows network. In addition, I would like to set up a Windows XP image inside of Sun’s Virtual Box so that I can continue to use Microsoft Visual Studio, the only Windows application that I’ve yet to find a Linux replacement for.

This is just the beginning of the next chapter of my own personal Linux experiment; stay tuned for more excitement.

This post was mirrored at The Linux Experiment