<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Your Warranty Is Void.com</title>
	<atom:link href="http://www.yourwarrantyisvoid.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yourwarrantyisvoid.com</link>
	<description>Linux, Hardware, Software and Chaos. What more is there?</description>
	<lastBuildDate>Mon, 11 Mar 2013 03:17:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How to build a [better] Minecraft Server</title>
		<link>http://www.yourwarrantyisvoid.com/2013/03/10/how-to-build-a-better-minecraft-server/</link>
		<comments>http://www.yourwarrantyisvoid.com/2013/03/10/how-to-build-a-better-minecraft-server/#comments</comments>
		<pubDate>Mon, 11 Mar 2013 03:17:25 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[How-To's]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Toys and Games]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1209</guid>
		<description><![CDATA[Quite some time ago, I posted an article on how to build a basic Minecraft Server which served to get you up and off the ground with multiplayer gameplay.  It&#8217;s been two years since that article was posted and there have been so many advances in the Minecraft Server realm from administration changes (now you [...]]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1210" alt="Minecraft Screenshot" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/2013-02-15_21.07.53-300x168.png" width="300" height="168" /></p>
<p>Quite some time ago, I posted <a title="Minecraft Server howto 1.0" href="http://www.yourwarrantyisvoid.com/2011/01/09/installing-minecraft-server-in-ubuntu-server/">an article</a> on how to build a basic Minecraft Server which served to get you up and off the ground with multiplayer gameplay.  It&#8217;s been two years since that article was posted and there have been so many advances in the Minecraft Server realm from administration changes (now you have a fancy GUI) to core game changes that allow for the modification for just about everything gameplay related. Popular alternative servers (Bukkit, Tekkit, Feed The Beast, etc..) allow for mods to be used which can drastically expand your Minecraft experience.   This howto will detail the process going from a basic Debian server installation to a fully fledged vanilla Minecraft server with a browseable map. Read on for the full article, it&#8217;s pretty long but we have a lot to cover.<span id="more-1209"></span></p>
<h1> Foreword</h1>
<p>In this How-To, we will cover all of the steps necessary to cover taking a stock Debiam server and transforming it into a Minecraft server, complete with a web based administration console that will allow you to administer and control your new server without having to login to it.</p>
<p>The steps in this document are for a medium to intermediate skillset. Although all commands are provided for you (with screenshots if applicable), there may be something that breaks unexpectedly and will need to be adjusted.  I have taken into account some of the most common pitfalls that you may encounter but there are no guarantees.  All commands like <strong>ls</strong> and <strong>apt-get update</strong> are bolded to indicate commands ran and a brief explanation is provided of each. This How-To assumes that you have a Debian server ready to go that is SSH reachable at a minimum. We will cover installing additional packages and software as well as the basic configuration required for the server to operate however additional steps beyond the scope of this server will not be covered, such as port forwarding or firewall rules simply due to the fact that there are millions of different types of routers on the market, and there are millions of ways the manufacturers have decided to implement their firewall rules.</p>
<p>For this How-To, you  will need a Debian Squeeze server with SSH/SCP access at a minimum and an SSH/SCP client for your client OS.  For Windows, I recommend PuTTY for SSH and WinSCP for SCP. Mac OSX and Linux both provide easy SSH and SCP commandline utilities.</p>
<p>This How-To is split into five parts:</p>
<ul>
<li>Hardware Requirements</li>
<li>Installing Mono, Java, and a few other important things.</li>
<li>Compiling and installing MCMyAdmin (the core Minecraft server and a Web based GUI made by Phoronic UK)</li>
<li>Installing Minecraft Overviewer (a really cool map service that displays your world in a Google Maps environment)</li>
<li>Now What? (Website, Plugins, and other things)</li>
</ul>
<h3>About the Software</h3>
<p>Instead of just dumping the Minecraft Server java archive into a directory and running it, we&#8217;ll be installing a control panel called <a title="MCMyAdmin" href="http://www.mcmyadmin.com/">McMyAdmin</a> made by Phonic UK, which is a management console that offers a great amount of features for the basic server.  You can control virtually all aspects of the Minecraft server process in addition to switching out the core server application with an alternate version if desired.  Another feature of the McMyAdmin management application is the ability to create backups and restore from backups with easy clicks of the mouse, no SSH needed. Please bear in mind that this is a commercial product however the &#8220;Free&#8221; edition comes with the ability to have up to 8 maximum players. The unlocked version is 10 GBP, which as of this writing comes out to about $15 and is well worth it for a large-scale deployment. <strong>If you are going to want more than 8 concurrent players and/or you like Phonic UK&#8217;s work, please consider buying a license and supporting this software!</strong></p>
<p>To generate the maps necessary for our mapping service, we will be using the <a title="Minecraft Overviewer" href="http://docs.overviewer.org/en/latest/">Minecraft Overviewer</a>.  This is a very powerful mapping application for Minecraft which we will be using to generate regular updated maps in a Google Maps style format.  We can even set points of interest (POIs) and example code will be given. Using online resources, we can even set up a series of markers such as red pickaxes to indicate mines, or a train icon to indicate a rail station.  There are unlimited possibilities for the points of interest and that&#8217;s only part of the awesomeness of the Overviewer.</p>
<p><strong>WARNING!!!</strong> Although I have tried my best to ensure that the site&#8217;s formatting doesn&#8217;t insert any weird characters, sometimes the single and double quotes will be converted to &#8220;smart quotes&#8221; that aren&#8217;t properly received by Linux.  Make sure to pay attention to the quotes and ensure that any commands copied and pasted are using standard quotes and not smart quotes.</p>
<p>With all of that out of the way, let&#8217;s review the hardware.</p>
<h2>I: Hardware Requirements</h2>
<p>The system requirements for a Minecraft Server depend greatly on your goal for the server once running.  Are you going to host a massively large server with 48 user slots or is this just a basic server for you and a few friends?  Your intentions will be as critical to your server as the server&#8217;s configuration and specs.  The specs posted below are just a guide for a typical server and your deployment may be different.</p>
<h3>To Virtualize Or Not To Virtualize?</h3>
<p>One of the big words in doing Minecraft servers either at home or at a colo facility is virtualization.  If you are running virtualization, you need to be aware of the server that is housing the virtual machine you&#8217;re running Minecraft on. If the server doesn&#8217;t have readily ample disk I/O and memory available to your VM due to oversubscription, your Minecraft server may lag considerably.  I&#8217;ve used VMware Server on a quad core server with 8GB of RAM and found that under 1 or 2 users it was good however it would not handle more than 5 users concurrently. Your mileage may vary.</p>
<h3>System Requirements</h3>
<p>The system requirements listed below list both minimum and recommended specs.  Performance specs are also listed if you have extra cash for the build.</p>
<ul>
<li>Minimum:  2GB RAM, 2GHz single core processor, 160GB Hard Drive</li>
<li>Recommended: 4GB RAM, 2GHz dual-core processor, 320GB Hard Drive</li>
<li>Performance: 8GB+ RAM, 3GHZ Quad-Core processor, 500GB HD</li>
</ul>
<h3>Operating System</h3>
<p>Unlike my last how-to, the OS being used in this example is Debian Squeeze. Although the instructions are tailored to Debian Squeeze specifically, the same general steps apply and ultimately will not matter significantly in the finished product (your running Minecraft server).  At a minimum, you should be using a 64 bit operating system to take advantage of all of the RAM in your sustem. The leading reason for using Debian is Oracle&#8217;s decision to remove Java from the repositories for Ubuntu.  While there are third-party repositories, I would rather go with the same in-repo installation for Java than with a third party solution.</p>
<h1>II: Installing Mono, Java, and a few other important things</h1>
<p>Like with all things, let&#8217;s start off with package installation.  Login to your server, <strong>sudo bash</strong> or <strong>su -</strong> to root. First, we will need to make some changes to the apt repositories.  Edit your <strong>/etc/apt/sources.list</strong> and add &#8220;<strong>non-free</strong>&#8221; to each of the lines in the file.  This allows us to install the required components.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/aptrepoupdate1.png"><img class="aligncenter size-medium wp-image-1231" alt="Apt Repo Update" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/aptrepoupdate1-300x175.png" width="300" height="175" /></a></p>
<p>Next, do an <strong>apt-get update &amp;&amp; apt-get upgrade</strong> and make sure to install any updates. This will ensure that your Debian installation is up to date and you will be ready to continue.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/aptgetupdate1.png"><img class="aligncenter size-medium wp-image-1233" alt="apt-get update" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/aptgetupdate1-300x175.png" width="300" height="175" /></a></p>
<p>Now to install something towards completing our cause. Run <strong>apt-get install bison gettext fontconfig libpng12-0 libpng12-dev libX11-6 libX11-dev libexif12 sun-java6-jre unzip bzip2 wget build-essential screen sun-java6-jre</strong></p>
<p>This command will install several packages including the Sun Java6 runtime environment which is required for running Minecraft.  During the installation, you will get a prompt which looks like the below. Be sure to accept the license otherwise Java will not be installed. Please note: The weird characters are due to the fact I am using PuTTY in a Windows box. Although the text may not render properly, the functionality is the same.  Just scroll down using the Page Down key, hit Tab, then Enter to go to the next screen</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javawarning.png"><img class="aligncenter size-medium wp-image-1244" alt="Java warning" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javawarning-300x175.png" width="300" height="175" /></a></p>
<p>Finally,  select &#8220;Yes&#8221; by hitting the Left Arrow and hit Enter.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javawarning2.png"><img class="aligncenter size-medium wp-image-1245" alt="Java Warning 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javawarning2-300x175.png" width="300" height="175" /></a></p>
<p>To validate that Java is installed correctly, run <strong>java -version</strong> and make sure the version comes up as shown.  It should read &#8220;java-1.6.0_26-b03&#8243; as shown below.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javaversion.png"><img class="aligncenter size-medium wp-image-1243" alt="Java Version" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/javaversion-300x175.png" width="300" height="175" /></a></p>
<p>Now that Java&#8217;s installed, it&#8217;s time to download and compile Mono. Run <strong>wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.gz</strong> to download the mono source to your home directory.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/downloadmono.png"><img class="aligncenter size-medium wp-image-1240" alt="Download Mono" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/downloadmono-300x175.png" width="300" height="175" /></a></p>
<p>Once Mono has been downloaded, untar it wth <strong>tar -xzvf mono-2.10.8.tar.gz</strong>. The untar process will create a new directory called mono-2.10.8. Go into the directory via <strong>cd mono-2.10.8</strong> and start the configuration process with this command: <strong>./configure &#8211;prefix=/opt/mono-2.10 &amp;&amp; make &amp;&amp; make install</strong> This command compiles Mono and installs it in the /opt/mono-2.10 directory and will take approximately 20 minutes to complete.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/compilemono1.png"><img class="aligncenter size-medium wp-image-1235" alt="Compile Mono" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/compilemono1-300x175.png" width="300" height="175" /></a></p>
<p>Once mono is installed, you should be able to verify its version by running <strong>/opt/mono-2.10/bin/mono &#8211;version</strong> as shown below:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/monoversion.png"><img class="aligncenter size-medium wp-image-1267" alt="Mono Version" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/monoversion-300x175.png" width="300" height="175" /></a></p>
<p>Now that we have Mono and Java ready, move on over to the next section to continue our build.</p>
<h1>III:Installing McMyAdmin</h1>
<h3>Section 1: Standing up the MC server</h3>
<p>It is recommended not to run McMyAdmin as root so we will start off by creating a new user. For the purposes of this tutorial, we will use the name &#8220;mcserver&#8221; as the user that is running mcmyadmin.  This will be the user that we will log in as to stop and restart McMyAdmin via SSH.  You can use any other non-root user, just be sure to use that username in place of &#8220;mcserver&#8221; for the duration of this howto.<b><br />
</b></p>
<p>Start off by running <strong>adduser mcserver</strong> and follow the on-screen prompts.  You can hit enter to all other prompts, but be sure to provide a good password.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/adduserconsole.png"><img class="aligncenter size-medium wp-image-1232" alt="Add User console" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/adduserconsole-300x175.png" width="300" height="175" /></a></p>
<p>Now, we&#8217;re going to switch into that user and perform the McServer download.  Run the command <strong>su &#8211; mcserver</strong> and you should see the prompt change from a # (for root) to a $ (for user).</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/switcchuser1.png"><img class="aligncenter size-medium wp-image-1288" alt="Switch User" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/switcchuser1-300x175.png" width="300" height="175" /></a></p>
<p>Now let&#8217;s <strong>wget http://mcmyadmin.com/Downloads/MCMA2_glibc25.zip &amp;&amp; wget http://mcmyadmin.com/Downloads/etc.zip</strong> to start downloading the McMyAdmin files.<strong><br />
</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/downloadmcmyadmin.png"><img class="aligncenter size-medium wp-image-1239" alt="Download McMyAdmin" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/downloadmcmyadmin-300x175.png" width="300" height="175" /></a></p>
<p>Now, let&#8217;s make a directory called mcmyadmin and extract the zipfile contents into it. Run <strong>mkdir mcmyadmin &amp;&amp; cd mcmyadmin &amp;&amp; unzip ../MCMA2_glibc25.zip</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/unzipmcma.png"><img class="aligncenter size-medium wp-image-1291" alt="Unzip MCMA" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/unzipmcma-300x175.png" width="300" height="175" /></a></p>
<p>Now we&#8217;ll go back up one directory, and unzip the etc zipfile.  Run <strong>cd ~ &amp;&amp; unzip etc.zip</strong>. When done, you should have two zipfiles and two directories.</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1290" alt="Unzip etc" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/unzipetc-300x175.png" width="300" height="175" /></p>
<p>Before continuing, we need to do one thing before we perform the first start. Hit <strong>Ctrl-D</strong> to end your mcserver session. This should drop you back as root.  As root, run <strong>mv /home/mcserver/etc /usr/local</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mvetc.png"><img class="aligncenter size-medium wp-image-1268" alt="Move etc" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mvetc-300x175.png" width="300" height="175" /></a></p>
<p>Next, we&#8217;re going to switch back to the mcserver user and we&#8217;re going to start the server process to download updates. Again, run <strong>su &#8211; mcserver</strong> and as the mcserver user, <strong>cd mcmyadmin</strong>, then finally <strong>./MCMA2_Linux_x86-64</strong> to start. Please note, this screenshot is just prior to starting McMyAdmin, as the screen will change.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/prestartMCMA.png"><img class="aligncenter size-medium wp-image-1281" alt="Pre-start MCMA" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/prestartMCMA-300x175.png" width="300" height="175" /></a></p>
<p>If all went well and everything is where it should be, you should get a blue screen with white text asking if you want to update like in the below screenshot.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/poststartMCMA.png"><img class="aligncenter size-medium wp-image-1279" alt="Post-start MCMA" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/poststartMCMA-300x175.png" width="300" height="175" /></a></p>
<p>Of course, answer yes.  This will download the core files and start up the MC server instance as shown below.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcmafirststart.png"><img class="aligncenter size-medium wp-image-1256" alt="MCMA First Start" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcmafirststart-300x175.png" width="300" height="175" /></a></p>
<p>After a few moments, you&#8217;ll see this message &#8220;You must complete the first start wizard via the web interface.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcmawarning.png"><img class="aligncenter size-medium wp-image-1257" alt="MCMA Warning" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcmawarning-300x175.png" width="300" height="175" /></a></p>
<p>This is going to be tricky.  In order to login to the web interface, you have to connect to localhost.  Before you go reaching for your New Tab button, there&#8217;s some trickery involved. <span style="text-decoration: underline;">It means localhost to which McMyadmin is running!</span> Fear not, we have a workaround. By using remote port forwarding built in SSH, we can forward the remote service port for McMyAdmin to the local computer (the one you&#8217;re reading this and typing the commands on).</p>
<h3>Windows Users</h3>
<p>I&#8217;m going to assume you&#8217;re using PuTTY simply because I haven&#8217;t heard of any other Windows based SSH client (apart from cygwin).   Configuring port forwarding is pretty basic in PuTTY. Please note, you don&#8217;t have to exit your session (and it&#8217;s advisable that you don&#8217;t exit right now otherwise the server process will exit.)</p>
<ul>
<li><span style="line-height: 13px;">Click on the PuTTY icon on the upper left hand window.</span></li>
<li>Click on &#8220;Change Settings&#8221;.</li>
<li>Click on the + next to SSH (should be at the bottom of the left hand window).</li>
<li>Click on &#8220;Tunnels&#8221;</li>
<li>On the right hand side, click the &#8220;Local&#8221; radio button.</li>
<li>Type &#8220;8080&#8243;  into the Source Port field.</li>
<li>Type in &#8220;127.0.0.1:8080&#8243; into the Destination field.</li>
<li>Click &#8220;Add&#8221;</li>
</ul>
<p>Your port forward should look like the following  when you enter it.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/puttyportforward.png"><img class="aligncenter size-medium wp-image-1282" alt="PuTTY Port Forward" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/puttyportforward-300x286.png" width="300" height="286" /></a></p>
<p>Your port forward should look like the following once you click &#8220;Add&#8221;</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/puttyportforward2.png"><img class="aligncenter size-medium wp-image-1283" alt="Putty Port Forward 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/puttyportforward2-300x286.png" width="300" height="286" /></a></p>
<p>Now, click Apply to apply the port forwarding and regroup further below.</p>
<h3>Mac/Linux Users</h3>
<p>Mac and Linux Users will need to open a new terminal session and run this command. You will want to replace 1.2.3.4 with that of your Minecraft server:  <strong>ssh -L 8080:127.0.0.1:8080 1.2.3.4</strong></p>
<p>This will establish the needed port forwarding during your next steps.</p>
<h3>Logging in to the UI for the first time</h3>
<p>Now that we have the needed port forwards, it&#8217;s time to login.  Open another browser window and go to <strong>http://127.0.0.1:8080</strong></p>
<p>You should be presented with a login prompt like below:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcfirstlogin.png"><img class="aligncenter size-medium wp-image-1254" alt="MC First Login" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcfirstlogin-300x143.png" width="300" height="143" /></a></p>
<p>Login with the name &#8220;admin&#8221; and the password &#8220;admin&#8221;.  Click OK to dismiss the Welcome message. You will be brought to the configuration game settings page.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcgamemode1.png"><img class="aligncenter size-medium wp-image-1255" alt="MC Game Mode" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcgamemode1-300x143.png" width="300" height="143" /></a></p>
<p>We&#8217;ll discuss the game features later, but first we need to reset the admin password and establish remote connectivity to the McMyAdmin service. For now, click on &#8220;CHANGE PASSWORD&#8221; in the upper left hand corner and change your password to a more secure password.  The &#8220;old password&#8221; is &#8220;admin&#8221;.  You will need to choose a fairly complex password, it won&#8217;t let you set a &#8220;test1234&#8243; password.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcchangepassword.png"><img class="aligncenter size-medium wp-image-1253" alt="MC Change Password" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcchangepassword-300x143.png" width="300" height="143" /></a></p>
<p>Now that we have the password set, log out of the web interface and go back to your terminal session. In order to shutdown the server, type in <strong>/quit</strong> and hit enter.  Then, type it in again until you&#8217;re back to terminal prompt. (I had some issue with this as evidenced in the screenshot.)</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcquit.png"><img class="aligncenter size-medium wp-image-1259" alt="MC Quit" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcquit-300x175.png" width="300" height="175" /></a></p>
<p>With the server down, we need to restart it properly. To do this, use <strong>Ctrl-D</strong> to log out of the server as mcserver and again to log out as root.  Log back in again, but this time use only your mcserver username and password.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/loggedinasmcuser.png"><img class="aligncenter size-medium wp-image-1246" alt="Logged in as MCserver" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/loggedinasmcuser-300x175.png" width="300" height="175" /></a></p>
<p>Next, run <strong>screen</strong> and hit enter to get back to a shell prompt.  (Sidenote: For the uninitiated, &#8220;screen&#8221; is an application that creates a virtual terminal that is not bound to your SSH session.  If we started the server process and then closed our SSH window, the process would be terminated.  Since we want it to stay running, we use screen to keep the process running.  You can use <strong> screen -r</strong> to reattach to the screen session and <strong>CTRL-A </strong> then <strong>D</strong> to disconnect without terminating a screen session)</p>
<p>If you have more than 2GB RAM, you will want to change something first before you fire up the server again.  First, <strong>cd mcmyadmin</strong> and open up <strong>McMyAdmin.cfg</strong> in your favorite text editor.  Scroll down to the <strong>Java</strong> section and look for the line that reads <strong>Java.Memory=1024</strong>.</p>
<p>You will want to change this to 2/3 of your server RAM as this allocates the memory to the Minecraft server process.    The cursor in the screenshot below is located on the line to alter. Since this server has 3GB RAM, I am using 2GB RAM to the Minecraft process. You&#8217;ll need the remaining RAM to run your OS and to handle the map generator later.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mccfg.png"><img class="aligncenter size-medium wp-image-1252" alt="MCMA Config" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mccfg-300x175.png" width="300" height="175" /></a></p>
<p>To restart the server in our screen session, <strong>cd mcmyadmin</strong> then run <strong>./MCMA2_Linux_x86_64</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcminecraftrunning.png"><img class="aligncenter size-medium wp-image-1258" alt="Minecraft running" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcminecraftrunning-300x175.png" width="300" height="175" /></a></p>
<p>If you did it correctly, you should see the Minecraft Server begin generating your spawn chunks.  Use <strong>Ctrl-A</strong> then <strong>D</strong> to detach the screen session, then <strong>CTRL-D</strong> to logout.  When you detach from the screen session, Screen will print a message letting you know that the session was detached and it looks like this.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcscreensession.png"><img class="aligncenter size-medium wp-image-1260" alt="MC Screen Session" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcscreensession-300x175.png" width="300" height="175" /></a></p>
<p>Next, let&#8217;s make sure that you can access the Minecraft server panel remotly.  Try to point your browser to your Minecraft server&#8217;s IP address on port 8080, e.g. if your IP is 1.2.3.4, then you want to browse to 1.2.3.4:8080.  If you get the McMyAdmin page and you are able to login, you&#8217;re good to go on to the next section.</p>
<h3>Section 2: Web Configuration</h3>
<p>At this point in the configuration, we have successfully stood up the McMyAdmin server process and we&#8217;re ready to configure our game.  First, we&#8217;re going to adjust the game options then we will restart the server to apply those options, then finally we will add a user as admin and continue configuration.</p>
<p>Logging into the Web UI, we get a nice display of the server&#8217;s current status as shown below. This screen is important as it shows the CPU utilization of the server (top graph), the amount of memory allocated to RAM and how much is currently being used (bottom graph) and we can see how many users are logged in. (above the CPU Utilization graph).  We also see that the server is active and ready to receive players.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/uimainwindow.png"><img class="aligncenter size-medium wp-image-1289" alt="UI Main Window" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/uimainwindow-300x143.png" width="300" height="143" /></a></p>
<p>On each page, we will cover all of the options available under the &#8220;Configuration&#8221; tab. You will want to set these settings according to how you want your Minecraft server set.</p>
<h3><span style="line-height: 13px;">Game Settings</span></h3>
<ul>
<li><strong>Game Mode</strong> &#8211; You can set your game mode here, Available options are Survival (mine for minerals, avoid monsters, farm, build, etc), Creative (All players have access to all blocks in inventory from the start) and Adventure (not implemented except on some specialized servers.) <strong>You will more than likely want Survival Mode as this is the most common game mode.</strong><strong><br />
</strong></li>
<li><strong>Game Difficulty</strong> &#8211; This affects the mobs difficulty settings.  Available options are Peaceful (Mobs won&#8217;t attack unless provoked), Easy (Mobs will rarely attack), Normal (mobs will sometimes attack), and Hard (mobs will actively seek you out.)</li>
<li><strong>Hardcore Mode</strong> &#8211; This sets the option for what is called ban-on-death.  If a player (even an OP) dies for any reason, they are banned and can never come back.  Most servers don&#8217;t enable permaban, because they want the users to come back.</li>
<li><strong>Enable Monsters</strong> &#8211; This controls whether or not enemy monsters spawn. Enemy monsters are Skeletons, Creepers, Slimes, Zombies, Witches and other hostile mobs.  Note: Disabling slimes may result in your players not able to make Sticky Pistons.</li>
<li><strong>Enable Animals</strong> &#8211; This controls whether or not neutral mobs (Cows, Sheep, Chickens, Bats) spawn.  It&#8217;s recomended to leave this enabled.</li>
<li><strong>Enable NPCs</strong> &#8211; This controls whether or not NPC characters like Villagers spawn.  It&#8217;s recommended to leave this enabled.</li>
<li><strong>Allow Player versus Player Combat</strong> &#8211; This is whether or not players can get damaged by other players. Turning this off disables PVP.</li>
<li><strong>Enable &#8220;The Nether&#8221;</strong> &#8211; This enables or disables Nether Portal functionality.</li>
<li><strong>Allow Flight</strong> &#8211; Can users with the appropriate client plugins use flight? <strong>It&#8217;s recommended to leave this set to Yes so that you can fly around as OP.</strong></li>
<li><strong>Allow Command Blocks</strong> &#8211; This controls whether or not <a title="Minecraft Command Blocks" href="http://www.minecraftwiki.net/wiki/Command_Block" target="_blank">Command Blocks</a> are enabled.</li>
<li><strong>Texture Pack</strong> &#8211; If you are using a specific texture pack (not covered in this How-To), you can specify it here.</li>
</ul>
<p>Here is all of the options on the Game Setting screen.  Be advised, some of these settings require a server restart.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/gamesettings.png"><img class="aligncenter size-medium wp-image-1241" alt="MC Game Settings" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/gamesettings-300x163.png" width="300" height="163" /></a></p>
<h3>Server Settings</h3>
<ul>
<li><strong><span style="line-height: 13px;">World Seed</span></strong><span style="line-height: 13px;"> - If you have a predefined World seed, you can specify it here. Please note that entering a seed will require you to delete your existing world first.  It&#8217;s ok if this is blank.</span></li>
<li><strong>World Generator Settings</strong> &#8211; If you have any additional settings for the World Generator, you can specify them here. You will have to delete the world and recreate it to generate the world using these new settings.</li>
<li><strong>Server MOTD</strong> &#8211; This is the message that your users will see when they first login to the server.</li>
<li><strong>Server Type</strong> &#8211; There are several popular settings for the Minecraft Server process, you can use the Official engine (from Mojang), or you can use some of the popular alternates (Bukkit/CraftBukkit, Tekkit, FeedTheBeast, Spigot and Forgemod). Note: See the last section &#8220;<strong>A cautionary tale about mods and plugins</strong>&#8221; for more details as to what these are.  If you are unsure, set it to <strong>Official.</strong></li>
<li><strong>Server Release Stream</strong> &#8211; This is how you tell which version of the Server Type to download.  There are the &#8220;Beta&#8221; releases and there are the &#8220;Recommended&#8221; releases.  For most purposes, &#8220;Recommended&#8221; is, well, recommended.</li>
<li><strong>Maximum Players</strong> &#8211; You can control how many concurrent players are allowed in the game.  Because we are using the free version of McMyAdmin, we are limited to 8. <b>Note:</b> I have run my server for two years and have not had any issue with this limit. Larger servers may require that a license be paid for if players are getting server full messages.</li>
<li><strong>Generate Structures</strong> &#8211; This controls whether or not NPC villages and other structures are generated. This does not affect mine generation, but will affect strongholds, dungeons and abandoned mineshafts.</li>
<li><strong>World Type</strong> &#8211; This controls how biomes and what kind of terrain are generated. The choices are Standard (usual Minecraft terrain, mountains, cliffs, hills, forests, etc..), Large Biomes (same as standard but with huge tracts of land instead of the standard sized biomes), and Flat (which is well, flat.).</li>
<li><strong>View Distance</strong> &#8211; This controls the default view distance of the clients connected to the server. If the server&#8217;s view distance is smaller than the client&#8217;s, it will force the client to use the lower value. The default value is 10 and honestly, I&#8217;ve never found need to change it.</li>
<li><strong>Allow Snooping</strong> &#8211; This controls whether or not the Minecraft Snooper process is allowed to collect non-identifying stats about the Minecraft server process like how much RAM is allocated, how many concurrent players (no usernames), etc.  I have this disabled on my server but you can either turn it off or leave it on. This setting <strong>does not</strong> affect gameplay.</li>
<li><strong>Restart on Severe Errors</strong> &#8211; Should the MC server process encounter an unexpected fault and abnormally terminate, should McMyAdmin attempt to restart it?  <strong>I do not recommend turning this on.</strong>  If the server crashes unexpectedly, especially in a vanilla installation like what is covered here, this could be the sign of a severe hardware failure.  Attempting to restart the server process only to have it crash again could trash your map.</li>
</ul>
<p>Here is all the options of the Server Settings page. Changes to these settings will definitely require a restart of the Minecraft server as they affect low-level components of the server&#8217;s operation.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/serversettings.png"><img class="aligncenter size-medium wp-image-1287" alt="Server Settings" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/serversettings-300x178.png" width="300" height="178" /></a></p>
<h3>Features</h3>
<ul>
<li><strong><span style="line-height: 13px;">Server Name</span></strong><span style="line-height: 13px;"> &#8211; This is the name of the server that will show up in the client&#8217;s server list once added.  This will also be the name of the server that shows up on any public Minecraft Server lists on the Internet. </span></li>
<li><strong>Welcome Message</strong> &#8211; This is the message that the server displays for users when they login to the server. This can be freeform text and can be used to convey information to your users like maintenances or contests, etc.</li>
<li><strong>Whitelist Mode</strong> &#8211; This controls how users are authorized to join the server. The options are No Whitelisting (Anyone can join unless explicitly banned), Lockdown (Admin only), Single Group (only users in the Whitelist Group can join), and Match Any Group (Any group in the users tab will be allowed to join, non added users will get rejected.).</li>
<li><strong>Whitelist Group</strong> &#8211; If the &#8220;Single Group&#8221; option is set, this field must be set with the group that holds your authorized users. If you are using any other Whitelist mode, this field is disregarded.</li>
<li><strong>Enable Server Sleeping</strong> &#8211; This is a feature that you may want to consider if you are on a server that runs other applications as well.  If there are no users logged into the Minecraft server after a set period of time, the MC server process is temporarily paused.  When a user reconnects to the server, the MC server process is spun back up and the user receives a &#8220;Starting up, please reconnect in a bit&#8221;.  After about 30-60 seconds, the server is fully online and ready to accept players.  While I can see the benefit of this feature in some deployments, I have it disabled.</li>
<li><strong>Enable Status Image and Widget</strong> &#8211; This feature gives you a status image you can display on a webpage that reflects the server status.  Please note, if you are not on the same network as the Minecraft Server you are building, it won&#8217;t display.  If you are installing this on an externally accessible server (non-NAT), then this may be of use to you.</li>
<li><strong>Show as public on server list</strong> &#8211; This controls whether or not your server is listed as public or private on McMyAdmin&#8217;s public server list.  Honestly, I&#8217;ve never seen this list nor do I see a link on the site so I&#8217;m not sure if it&#8217;s still an option. (If you know where this page is, please leave me a comment and I&#8217;ll update this post.)</li>
<li><strong>Permissions Exporting Mode</strong> &#8211; McMyAdmin makes it easy to export the permissions set in it to a plugin for permissions control.  This is where you can select from a list of popular Permissions plugins. <strong>NOTE:</strong> Although it seems to be pretty popular, countless threads on Reddit&#8217;s /r/admincraft strongly discourage the use of PermissionsEX.  Avoid this plugin to save yourself some plugin permissions hell later on.</li>
<li><strong>mChat Message Format</strong> &#8211; If you elect to use the mChat plugin on your server, you can set special formatting options here.  Since I don&#8217;t use mChat and am not familiar with it, I can&#8217;t advise further on it.</li>
<li><strong>Show Standard Greeting Message</strong> &#8211; This controls the &#8220;Welcome Message&#8221; being displayed when a user logs into the server.</li>
<li><strong>Display Warning on World Save</strong> &#8211; This controls whether or not the World Save broadcast message is displayed during world saves (both periodic saves and manual saves)</li>
<li><strong>Announce Group Changes</strong> &#8211; This controls whether or not a change in groups for users is displayed in-game.</li>
</ul>
<p>These settings control both McMyAdmin and Minecraft.  Depending on the options, you may need to restart McMyAdmin as well as Minecraft.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/serverfeatures.png"><img class="aligncenter size-medium wp-image-1286" alt="MC Server Features" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/serverfeatures-300x229.png" width="300" height="229" /></a></p>
<h3>Plugins</h3>
<p>The Plugins page allows you to enable and disable plugin modules. Since we&#8217;re not using plugins on our vanilla server, we are showing this just as a reference.  If you use plugins, you can disable and enable plugins, then restart the Minecraft server to apply the changes. If you are using CraftBukkit, you can search and add plugins on the &#8220;Install Plugins&#8221; sub-tab.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/plugins.png"><img class="aligncenter size-medium wp-image-1278" alt="MC Server Plugins" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/plugins-300x133.png" width="300" height="133" /></a></p>
<p><strong>Preferences</strong></p>
<p>This page affects only McMyAdmin in regards to the UI skin and changes some reporting methods for the server console.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/preferences.png"><img class="aligncenter size-medium wp-image-1280" alt="MCMA Preferences" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/preferences-300x137.png" width="300" height="137" /></a></p>
<p><strong>Login Users</strong></p>
<p>This page is for controlling access to McMyAdmin. You can define custom roles for any additional users if you need to add them. <strong>NOTE:</strong> This does not affect user access to the Minecraft game, only access to McMyAdmin is affected.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/loginusers.png"><img class="aligncenter size-medium wp-image-1247" alt="MCMA Login Users" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/loginusers-300x133.png" width="300" height="133" /></a></p>
<h3>Backups</h3>
<p>First rule of Minecraft Administration is don&#8217;t op the kids!  Second rule of Minecraft Administration is <strong>Backup, backup</strong> <strong>BACKUP!!!</strong><strong>  </strong> No, seriously.  Your world map is your biggest asset in the eyes of your players so you want to take care of it.  You can store a maximum of 7 backups and download them off-server later.  You can also restore the backup should you need to for whatever reason.  Alternatively, if you need to delete your current world, you can do that from here.  Please note, deleting the world will cause the Minecraft Server process to restart to create the new world.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/backups.png"><img class="aligncenter size-medium wp-image-1234" alt="Backups" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/backups-300x133.png" width="300" height="133" /></a></p>
<h3>Schedule</h3>
<p>This is where you can configure various scheduled tasks on the server such as world saves and server restarts.  It is highly recommended to take a look at the available options, there may be something you need later. Think of this like cron for Minecraft.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/schedule.png"><img class="aligncenter size-medium wp-image-1285" alt="MCMA Schedule" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/schedule-300x133.png" width="300" height="133" /></a></p>
<h3>Users</h3>
<p>Now we need to add at least one user. It is recommended to add one user (you) to the Administrators group to be able to issue server commands from within Minecraft.  To add your user, add your Minecraft username to the third column where the screenshot says &#8220;AdminUserHere&#8221; then click the + icon.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcusers.png"><img class="aligncenter size-medium wp-image-1266" alt="Minecraft Users" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcusers-300x177.png" width="300" height="177" /></a></p>
<p>Be aware that if you&#8217;re using a permissions plugin, you can add permissions to a group by clicking on the group, then adding permissions as needed using the textbox at the lower right column.  You can also add groups, or users to an existing group by this method.  Existing users can be removed by clicking the &#8220;x&#8221; that appears next to their name.</p>
<p>There are several chat options that are applied in conjunction with a user&#8217;s group membership. They can be adjusted in the lower half of this screen.  As a sidenote, be careful when setting your groups heirachy as MCMyAdmin works off the bottom-up principle.  Everyone has the least commands but will have the most users, then Regulars have access to more commands including what Everyone has access to, Moderators have access to more commands including what Regulars have access to, and finally Administrators have access to all commands.</p>
<h3>Console</h3>
<p>This is the server&#8217;s console and it shows status messages and chat activity.  You can also execute server commands here.  Since Minecraft Vanilla doesn&#8217;t have any permissions modules, you will need to &#8220;op&#8221; yourself from the console.  In this screen, I typed in &#8220;<strong>/op firestorm_v1</strong>&#8221; and the server console shows that I have opped (given admin rights to) myself.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/console.png"><img class="aligncenter size-medium wp-image-1236" alt="MC Server Console" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/console-300x133.png" width="300" height="133" /></a></p>
<h3>Restarting the server and preparing for the first player</h3>
<p>If you have made any changes to either McMyAdmin or to Minecraft, you will more than likely want to restart both processes to make sure your server reflects your settings.  To do this, SSH to the server as the mcserver user and then user <strong>screen -r</strong> to resume your screen session.  If all goes well, you&#8217;ll have a window like this:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart1.png"><img class="aligncenter size-medium wp-image-1263" alt="MC Server Restart" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart1-300x175.png" width="300" height="175" /></a></p>
<p>Type in the command &#8220;/quit&#8221; to save the world, stop the server and exit McMyAdmin.  You should see something similar to this screenshot:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart2.png"><img class="aligncenter size-medium wp-image-1264" alt="MC Server Restart 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart2-300x175.png" width="300" height="175" /></a></p>
<p>To start it back up again, just type in <strong>./MCMA2_Linux_x86_64</strong> and the McMyAdmin server process will restart.  Make sure that the Minecraft server process is started.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart3.png"><img class="aligncenter size-medium wp-image-1265" alt="MC Server Restart 3" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverrestart3-300x175.png" width="300" height="175" /></a></p>
<p>Now that we&#8217;ve configured the server and restarted the processes, let&#8217;s get to Minecraft.</p>
<h3>Section 3: Let&#8217;s give it a go, shall we?</h3>
<p>In the long section above, we performed initial configuration of the Minecraft server, added a user as Administrator and used the server console to op the user so we should be ready to try it out.</p>
<p>Fire up your Minecraft Server Client and login. Click on Multiplayer, then &#8220;<strong>Add Server</strong>&#8220;.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcaddserver.png"><img class="aligncenter size-medium wp-image-1251" alt="MC Add Server" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcaddserver-300x178.png" width="300" height="178" /></a></p>
<p>Click &#8220;OK&#8221; and you should see your Minecraft Server and the Server MOTD listed.  You can see the connection quality on the right (just like cell signal, more bars == better connection/low latency) and how many players are on. (0 players out of 8 slots)</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverlist.png"><img class="aligncenter size-medium wp-image-1262" alt="MC Server List" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverlist-300x178.png" width="300" height="178" /></a></p>
<p>Click on &#8220;Join Server&#8221; and you should be logged in and playing on your own server.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverfirsttime.png"><img class="aligncenter size-medium wp-image-1261" alt="MC Server First Time" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mcserverfirsttime-300x178.png" width="300" height="178" /></a></p>
<p>First thing you want to do is to try an Operator command.  I usually will either use <strong>/time set 0</strong> and see if the time changes, or if it&#8217;s already daytime, try <strong>/gamemode 1 playername</strong> (where playername is your player.  These kind of commands are reserved only for users that have been &#8220;opped&#8221; and we want to make sure that you are the first op on your new server.  If either command works, then you should be good to go. Feel free to start playing around on it.  You&#8217;ll probably want to have a decent bit of exploration under your belt for the next section because we will be installing the Map service next!</p>
<h1>IV: Installing and Configuring Minecraft Overviewer</h1>
<p>If you haven&#8217;t already, go ahead and use <strong>gamemode 1</strong> and fly around for a bit.  This will cause the world to generate some chunks for our next step which will be to configure the <a title="Minecraft Overviewer" href="http://overviewer.org" target="_blank">Minecraft Overviewer</a>, a very powerful mapping utility for generating Google Maps style maps of your world.    These next  steps are a highly condensed version of their installation and configuration pages as well as some other steps for configuring Nginx, a lightweight web server to serve the map to your players.</p>
<p>Log in to your Minecraft server via SSH, either as root or su to root for these steps.</p>
<p>First, we need to add the APT repository for Minecraft Overviewer to our sources list. Run <strong>echo &#8220;deb http://overviewer.org/debian ./&#8221; &gt;&gt; /etc/apt/sources.list &amp;&amp; apt-get update &amp;&amp; apt-get upgrade </strong> to insert the repo into your sources list, update APT, and then to make sure that all the software on the server is up to date.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-addupdate.png"><img class="aligncenter size-medium wp-image-1272" alt="Overviewer Add Update" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-addupdate-300x175.png" width="300" height="175" /></a></p>
<p>Next, run <strong>apt-get install minecraft-overviewer</strong> and let it install.  You will get an authentication warning for Overviewer, this is expected. Hit &#8220;y&#8221; to install.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-install.png"><img class="aligncenter size-medium wp-image-1274" alt="Overviewer Install" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-install-300x175.png" width="300" height="175" /></a></p>
<p>In order for Minecraft Overviewer to work properly, it has to have the original server .jar file in order to generate the textures for the map.  This is a required step as without it, Overviewer won&#8217;t have any textures to render.  To install the Minecraft .jar file, start a new SSH session to the Minecraft server (do not su to root) and run this command:  <strong>wget -N http://s3.amazonaws.com/MinecraftDownload/minecraft.jar -P ~/.minecraft/bin/</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-mcinstall.png"><img class="aligncenter size-medium wp-image-1275" alt="Overviewer Minecraft Install" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-mcinstall-300x175.png" width="300" height="175" /></a></p>
<p>This downloads the Minecraft .jar file to the server&#8217;s .minecraft/bin directory (as if the server itself had installed the Minecraft client.).  Once the installation has completed, you can exit your second session.</p>
<p>We&#8217;re going to skip Overviewer configuration right now, because some of our configuration options will be dictated by our next step, setting up the web server.</p>
<h3>Installing and configuring Nginx</h3>
<p>In order for Minecraft Overviewer to be of use to us, we need to install a web server.  We could install the Apache2 web server, but that&#8217;s the equivalent of using a tank to drive across the street.  While I like Apache2, it&#8217;s endless  configuration options make it a lot harder than what is really needed.  I use NginX on the Minecraft server as it is a small, lightweight, and easy to configure web server.  We&#8217;re not doing multi-hosts or fancy domain stuff here so there&#8217;s not a need for something as complex as Apache2.</p>
<p>First off, time for more apt-get commands:  <strong>apt-get install nginx</strong></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-install.png"><img class="aligncenter size-medium wp-image-1271" alt="Nginx Install" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-install-300x175.png" width="300" height="175" /></a></p>
<p>Now, we need to take a look at its default configuration in /etc/nginx/sites-available/default and remove some stuff.  There are three &#8220;location&#8221; stanzas defined in the default configuration.  We only need to keep the &#8220;location /&#8221; stanza, and delete the other two.  (&#8220;location /doc&#8221; and &#8220;location /images&#8221;).</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-conf1.png"><img class="aligncenter size-medium wp-image-1269" alt="Nginx Configuration" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-conf1-218x300.png" width="218" height="300" /></a></p>
<p>When you are done, save and exit, then restart nginx with <strong>/etc/init.d/nginx restart</strong>. This will ensure the updated configuration is in place and running.</p>
<p>For the last thing necessary to configure nginx, we want to make sure that the mcserver user has read and write access to the /var/www directory (the root of the / location that we left in the configuration file.).  In order to do that, we need to create the /var/www directory and then give the mcserver user owner access (read and write) so that Overviewer can write into that directory when it builds the map.  To do this, run <strong>mkdir /var/www; </strong><strong>chown mcserver /var/www</strong> and this will create the directory and set it&#8217;s owner as mcserver. Running <strong>stat /var/www</strong> should indicate it&#8217;s now owned by mcserver as shown below.<b><br />
</b></p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-conf2.png"><img class="aligncenter size-medium wp-image-1270" alt="Nginx Configuration 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/nx-conf2-300x151.png" width="300" height="151" /></a></p>
<p>Now, we have the destination for our generated map and we can start configuring Overviewer.</p>
<h3>Configuring Minecraft Overviewer</h3>
<p>We&#8217;re going to create a text file in mcserver&#8217;s home that will contain the configuration data for the Overviewer. This file is usually called overviewer.cfg and contains many stanzas of code. First, we&#8217;re going to cover the basics of the configuration file and generate our first map, then we&#8217;ll come back and cover how to set points of interest. If you are still logged in as root, use <strong>su &#8211; mcserver</strong> to switch to the Minecraft server user.<b><br />
</b></p>
<p>We&#8217;ll start off the configuration file by first specifying where to find the world data files that the Minecraft server uses for the players.  These are stored in /home/mcserver/mcmyadmin/Minecraft/World so our &#8220;worlds&#8221; stanza that tells Overviewer where the files are looks like the code below.  We are creating a &#8220;World1&#8243; definition and assigning the directory path to the World files. :</p>
<pre>worlds["World1"] = "/home/mcserver/mcmyadmin/Minecraft/world"</pre>
<p>In addition to that, we need a &#8220;render&#8221; stanza that sets some configuration options. These options affect how the Overviewer shows some items like the title of your world. To do this, we will create a render definition called &#8220;normal&#8221; and we will assign it an array of parameters as shown below:</p>
<pre>renders ["normalrender"] = {
      "world": "World1",
      "title": "My First Minecraft Server" }</pre>
<p>Please keep in mind, the &#8220;world&#8221; definition in your render, must match the worlds[] definition from the first stanza. Otherwise, the renderer won&#8217;t be able to find your world file to generate.</p>
<p>Next, we&#8217;re going to tell Overviewer where to put the completed files when it&#8217;s done.</p>
<pre>outputdir = "/var/www"</pre>
<p>We&#8217;re also going to place a default zoom level.  This is the level of zoom that the user first sees when they go to the Overviewer server.   The lower the zoom level, the smaller your map looks. You may need to adjust this as your map gets bigger over time.</p>
<pre>defaultzoom = 5</pre>
<p>Finally, if you want your renderer to go faster and you have a multi-core server, you can specify how many processes to spin up. <strong>Note:</strong> Do not exceed the maximum number of cores in your server, severe performance degradation can result if there are players on the server at the same time the Overviewer starts to run.  This server is a single core server so I will only spin up one process.<strong><br />
</strong></p>
<pre>processes = 1</pre>
<p>Compare your configuration file with the basic configuation file here. You should have these options:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-conf1.png"><img class="aligncenter size-medium wp-image-1273" alt="Overviewer config 1" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-conf1-300x151.png" width="300" height="151" /></a></p>
<p>Now, we&#8217;re ready to run Overviewer for the first time.</p>
<h3>Running Overviewer by hand</h3>
<p>Before you configure cron to automatically run Overviewer, it&#8217;s best to run it once by hand so you can see any issues that may be present such as config file errors, file not found errors or permissions issues that may be present.  To run Overviewer by hand, run <strong>overviewer.py &#8211;config /home/mcserver/overviewer.cfg</strong> and hit enter.  You should see output that resembles the following, or at least a description of a problem in red text.</p>
<p>Here is what Overviewer looks like when it has completed successfully:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-run1.png"><img class="aligncenter size-medium wp-image-1276" alt="Overviewer First Run" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-run1-300x151.png" width="300" height="151" /></a></p>
<p>Here is what an error in Overviewer looks like. In this case, I left off an ending curly bracket &#8220;}&#8221;.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-run2.png"><img class="aligncenter size-medium wp-image-1277" alt="Overviewer Failed Run" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/ov-run2-300x151.png" width="300" height="151" /></a></p>
<p>Open a new tab in your browser and type in your Minecraft server&#8217;s IP address.  Unlike when we connected to the McMyAdmin control panel, leave off the &#8220;:8080&#8243;, it&#8217;s not needed.  You should see the map you were playing on earlier with a yellow marker in the middle.  That marker is your spawn point in the Minecraft world.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/map-1.png"><img class="aligncenter size-medium wp-image-1248" alt="Map 1" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/map-1-300x133.png" width="300" height="133" /></a></p>
<p>If you want to make a change (like the default  zoom level or you want to change the name of the map) just change your overviewer.cfg and then re-run the overviewer.py script.  Here is a screenshot of the same map, but this time with a defaultzoom of &#8220;1&#8243;.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/map-2.png"><img class="aligncenter size-medium wp-image-1249" alt="Map 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/map-2-300x133.png" width="300" height="133" /></a></p>
<h3>Making things automatic</h3>
<p>Now that we have a working configuration file, we can set about having cron run the command for us.  As the mcserver user, run <strong>crontab -e</strong> and add the following line to the configuration file:</p>
<p>0 0 * * * /usr/bin/overviewer.py &#8211;config /home/mcserver/overviewer.cfg</p>
<p>Save and exit the crontab editor via <strong>Ctrl-X</strong> then <strong>Y</strong>. This will kick off the Overviewer to re-render the map every night at Midnight (00:00).  Your cron entry should look like the below:</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/cron-1.png"><img class="aligncenter size-medium wp-image-1237" alt="Cron Edit 1" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/cron-1-300x125.png" width="300" height="125" /></a></p>
<p>Now, we have the Overviewer&#8217;s basic configuration all set. Then, there&#8217;s Points of Interest markers&#8230;</p>
<h3>Get Fancy: Create custom Points of Interest flags</h3>
<p>A POI (or Point of Interest Marker) is an icon of some sort used to designate an associated point of interest like a mine, train station, village, etc.. and can be a good way to orient yourself in game.  It may also be useful to add POIs to your map so that new users know where to go for certain activities like shopping, mining, or to indicate where a home is of another user.  I won&#8217;t be telling you which POIs you will want to make and you can make as many as you have patience for so feel free to get creative.  On my sever, I have Train Stations, Villages, Player Homes, Player Structures and Mines all with their own custom Point of Interest.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/samplepoi.png"><img class="aligncenter size-medium wp-image-1284" alt="Sample POI" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/samplepoi-300x284.png" width="300" height="284" /></a></p>
<p>This is a point of interest taken off of my production server.  All mines have a red pickaxe symbol and when clicked on or pointed to will reveal a popup with the name of the mine.  It&#8217;s a good idea to go ahead and think about which kind of points of interest you will want to generate as well as what ideas you will want for a marker.  For a PVP arena, you might want a castle icon.  For Shopping, either a handbag icon or a dollar sign icon will work.  For a rail line, the train engine is popular and so forth.</p>
<p>A great resource for generating your own POI markers is <a title="Nicolas Mollet's Map Icons" href="http://mapicons.nicolasmollet.com/" target="_blank">http://mapicons.nicolasmollet.com/</a> who has a wide variety of &#8220;stock&#8221; icons which you are able to change the color on to your liking. When you have the color and the icon picked out, save it to the server in the /var/www directory. We will need that later.</p>
<p>To create a point of interest, you will need four things:</p>
<ul>
<li><span style="line-height: 13px;">Coordinates &#8211; Where is the actual point of interest in the Minecraft World.</span></li>
<li>POI Marker &#8211; Some kind of icon to place in the map (needs to be present in /var/www)</li>
<li>a definition for the POI description, e.g. &#8220;Temple of DOOM&#8221;</li>
<li>a dict marker for the POI type, e.g. &#8220;Desert Temples&#8221; (for Overviewer)</li>
</ul>
<p>To get your POI&#8217;s coordinates, fire up Minecraft and go into Creative mode.  Then start flying (double tap spacebar) to the area where you want to set your point of interest.  In my case, a desert temple was generated not far away from spawn, so we&#8217;ll use that.    When you get to your destination, hit <strong>F3</strong> to turn on Minecraft&#8217;s debug mode and take note of the X, Y and Z coordinates.  These are the coordinates we&#8217;ll need to put in Overviewer&#8217;s configuration so it can generate the POI.  In our sample below, the X coordinate is 106, Y is 74, and Z is 10 (whole numbers only).</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/getcoords.png"><img class="aligncenter size-medium wp-image-1242" alt="Get Coordinates" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/getcoords-300x168.png" width="300" height="168" /></a></p>
<p>Now that we have the coordinates, we need to get a marker.  Head over to Nicolas Mollet&#8217;s map icons site and find an icon for your POI.  Since this is a desert temple, I went with this temple icon:  <a title="nicolasmollet map icons site" href="http://mapicons.nicolasmollet.com/markers/tourism/monuments-structures/temple/" target="_blank">http://mapicons.nicolasmollet.com/markers/tourism/monuments-structures/temple/</a>   If you want to change the color of the icons, you can use the color picker to select your color, then hit the Generate button.  Right click on the icon you want, then click &#8220;Save Image As&#8221; and choose a name.    SCP it to the server using the mcserver user name and password and place it into /var/www.  In my case, the file is temple-2.png</p>
<p>Next, it&#8217;s time to open up an SSH session as the mcserver and edit the overviewer.cfg we created earlier.  First off, we&#8217;re going to add some code to read the description using some definitions (defs).  Basically this code will make it so that if you add a description, it will be read into the note that will be displayed when the POI is clicked on.  A sample def  is listed below:</p>
<pre>def templeFilter(poi):
     if poi['id'] == 'temple':
          try:
               return (poi['name'], 'Temple Name:\r\n' + poi['name'] + '\r\n' + 'Description:\r\n' + poi['description'])
          except KeyError:
               return poi['name'] + '\n'</pre>
<p>This definition creates a filter called &#8220;templeFilter&#8221; which attempts to read the name and description of a POI that is defined. If there is no description, it simply returns a name.  If there is a description, it returns &#8220;Temple Name&#8221; followed by a newline (\r\n), then the name along with a newline (\r\n), and then the word &#8220;Description:&#8221; followed by the description from the POI we&#8217;ll define next.  It is important that for every type of POI you want, you have a definition filter to read the name and description, otherwise the POI may not even generate. If you don&#8217;t plan on returning a description on your POIs, you must at least return the name.  The def filters must be placed between your &#8220;worlds&#8221; definition and your &#8220;renders&#8221; definition to ensure it&#8217;s read properly. (Don&#8217;t worry, I&#8217;ll include a full sample at the end.)</p>
<p>Along with the templeFilter, we need to create a dictionary (dict) of markers to establish some common parameters for the POIs. These parameters are the name of the poi that the dict will run for, the filterFunction to execute against the POI, the icon file to use and whether or not the POI type is displayed by default (checked=true).  In the sample dict below, we have declared that this dict will execute for all &#8220;Temples&#8221; and will execute the templeFilter we built earlier.  The file &#8220;temple-2.png&#8221; which is in our /var/www directory will be used by the POIs and the POIs with a &#8220;Temples&#8221; type are displayed by default.  Please note that the filter function must point to a vaild def Filter specified above.  This should be inserted after your render declaration and before your general options.</p>
<pre>     'markers': [dict(name="Temples", filterFunction=templeFilter, icon="temple-2.png", checked=True)]</pre>
<p>Now for the part that ties it all in.  We need to build a POI that will trigger the dict we just created, using the filter we just created.</p>
<pre>     'manualpois': [ {'id':'Temple','x':'106','y':'74','z':'10','name':'Spooky Temple','description':'This temple is deserted.\r\n Watch for traps!'}</pre>
<p>Like the dicts, the manualpois table must go in the   This POI has six fields, id (which determines the POI type), x,y,z (the coordinates from Minecraft), name (the name of the POI), and the description.  For the description of the poi, you must use \r\n if you want to insert a new line and you must escape single quotes (use \').</p>
<p>Here is the completed configuration file:</p>
<pre>worlds ["World1"] = "/home/mcserver/mcmyadmin/Minecraft/world"

def templeFilter(poi):
if poi['id'] == 'Temple':
     try:
           return (poi['name'], 'Temple Name:\r\n'
                + poi['name'] + '\r\n'
                + 'Description:\r\n'
                + poi['description'])
     except KeyError:
           return poi['name'] + '\n'

renders ["normal"] = {
          "world": "World1",
          "title": "My First Minecraft Server",
          'manualpois' : [ { 'id': 'Temple',
               'x' : '106',
               'y' : '74',
               'z' : '10',
               'name' : 'Spooky Temple',
               'description':'This temple is deserted.\r\n Watch for traps!'} ],
          'markers' : [dict(name="Temples",
               filterFunction=templeFilter,
               icon="temple-2.png",
               checked=True )]
}

defaultzoom = 1

outputdir = "/var/www"
processes = 1</pre>
<p>With the proper config options set, we can now run overviewer again, this time with a new parameter. Run this command<strong> </strong><strong>overviewer.py &#8211;config ./overviewer.cfg &#8211;genpoi</strong> to generate the points of interest, then open your browser to the Minecraft server&#8217;s IP.  If everything has gone well, you should now see two points of interest.  The yellow POI for spawn and the new POI we just defined.  You can click on it and read the description.  If the description is longer than the popup window, you&#8217;ll see a scrollbar.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mapwithpoi.png"><img class="aligncenter size-medium wp-image-1250" alt="Map with POI" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/mapwithpoi-300x133.png" width="300" height="133" /></a></p>
<p>Keep in mind that you can have multiple POIs with the same type, but for each type of POI, you need to create a dict for the icon and a filter for the POI data. As a method of keeping track of your dicts and your filter, keep your naming convention, the name of the dict should match the filter and should match the type of POI you&#8217;re building.   If a POI doesn&#8217;t match the actual location of the intended point of interest, check your coordinates and re-run the Overviewer with the <strong>&#8211;genpoi</strong> option.</p>
<p>The last thing to do now is to add it to our crontab. It is important to know that Overviewer is an incremental generator meaning that it will only render/rerender chunks that have changed since the last run.  If you are using an existing world, you will notice that your first render takes a long time, but subsequent renders (provided that you don&#8217;t purge the destination directory) are very fast.  That being said, we need to ensure that there is enough time between the first command (renderer) and the second command (generate POIs) to allow the renderer to finish.  I recommend anywhere between 30 minutes and an hour between runs.  Use <strong>crontab -e</strong> as your mcserver user and copy the first command we added earlier, this time changing the  first number from 0 to 30.  This will kick off the POI generator 30 minutes after midnight.  By then the render should be completed.  Below is what your crontab should look like with both commands entered.</p>
<p style="text-align: center;"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/cron-2.png"><img class="aligncenter size-medium wp-image-1238" alt="Cron Edit 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2013/03/cron-2-300x121.png" width="300" height="121" /></a></p>
<p>At this point, we have our vanilla Minecraft Server running with the McMyAdmin control panel and using Overviewer to generate a nice Google Maps style map.  We have set up Overviewer to automatically render the Minecraft map and generate POI markers.  We are done with the vanilla server and you should be clear to invite your friends to join in.</p>
<h2>V: Now what? (Website, plugins and other things)</h2>
<h3>Website</h3>
<p>As your server gets more popular, you will want a way of conveying messages to your players outside of Minecraft. There are many ways to do this including using Facebook and/or Twitter.  An alternative would be to use a dedicated website or forum group to post updates about the server and maintenances or outages.  Consider a website or Facebook page as your &#8220;storefront&#8221;, you want to entice players to join your server.  Post information about your server, any mods or plugins that are running, and provide a link to the map server.  These bits of information server to generate interest in the server and hopefully new players will be the result.</p>
<h3>Plugins</h3>
<p>As touched on earlier, there are multiple alternative core Minecraft installations available in McMyAdmin and just about all of the alternatives offer extensibility via plugins.  For example, there is a plugin for CraftBukkit that can allow only specific people to use  chests which have been locked.  This functionality is in a plugin called &#8220;SecureChests&#8221; and is not in the vanilla instance.</p>
<p>It is very easy to get sucked into loading up many plugins as possible in a modified server, but before you go reaching for them just yet, make sure you do your research first. Many plugins do more than one task (like an Economy plugin that also does PVP protection, or Factions plugins that also do land claim protection) and too many plugins can easily render a server unplayable either due to map corruption, feature overlap, or general flaky operation.  It is recommended to run a testing server so you can check plugins operation and compatibility before pushing the configuration to your production server.</p>
<p>As the owner of the server, it is important to remember that your players are your greatest asset.  When you make a change on the server, it affects them as well.  If you are thinking about adding plugins, ask your players what they want and consider any legitimate requests.</p>
<h3>Other things</h3>
<p>Now that you have your server running, you will want to consider setting up some behavior rules and guidelines.  Are you going to allow PVP (player versus player combat)?  Are you going to set any anti-griefing rules?  Are you going to set any  regions for free-build or any areas that should not be built in.  You will want to craft out your rules before your server goes accessible outside so there are no questions about gameplay.  If the server is for just you or a small group of friends, notification and rules may already be easy to establish.  The rule of thumb is to make your rules now while the server is still new rather than try to apply rules later after the server is established. If you are looking for a good guide, check out austindkelly&#8217;s post to /r/Admincraft: <a title="austindkelly's Reddit post on server rules" href="http://www.reddit.com/r/admincraft/comments/18zfh9/tutorial_server_rules_the_right_way/" target="_blank">[Tutorial] Server Rules, the right way</a>.</p>
<p>Since you&#8217;ve built a very capable Minecraft server, you may be thinking about asking for donations.  Before you do, you may want to read over PhonicUK&#8217;s link titled <a href="http://blog.phonicuk.com/post/2013/02/05/Paypal-and-Minecraft-Server-The-dos-and-donts-to-help-avoid-getting-bitten.aspx" target="_blank">Paypal, Money and Minecraft Servers &#8211; The do&#8217;s and don&#8217;ts to help avoid getting bitten</a>.</p>
<p>If you&#8217;re looking for an excellent resource for Minecraft Administration, definitely check out <a href="http://www.reddit.com/r/admincraft" target="_blank">/r/Admincraft</a> on Reddit. There are many active users with every Minecraft server type and configuration that you can think of and they are very helpful.  Of course, make sure you have your ducks in a row and <strong>make sure you have done research first</strong> because as helpful they are, they (and most forum members in general) frown on blatantly obvious questions.</p>
<h2>Welcome to Minecraft Administration. &#8212; Have fun!</h2>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2013/03/10/how-to-build-a-better-minecraft-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New threat to sobriety: Arduino powered JagerBomber costume!</title>
		<link>http://www.yourwarrantyisvoid.com/2012/11/02/new-threat-to-sobriety-arduino-powered-jagerbomber-costume/</link>
		<comments>http://www.yourwarrantyisvoid.com/2012/11/02/new-threat-to-sobriety-arduino-powered-jagerbomber-costume/#comments</comments>
		<pubDate>Sat, 03 Nov 2012 01:37:45 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1198</guid>
		<description><![CDATA[The challenge for this year&#8217;s Halloween party was to find a &#8220;B-rate&#8221; superhero or villan.  No superman, spiderman, ironman, or other mainstream nonsesne here. We had to come up with something unique and not-mainstream, so my answer was clear.  I present to you the Arduino powered Jagerbomber, complete with countdown timer. This costume served me [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_1199" class="wp-caption aligncenter" style="width: 235px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/2012-10-13-20.41.00.jpg"><img class=" wp-image-1199 " title="Arduino powered Jagerbomber!" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/2012-10-13-20.41.00-225x300.jpg" alt="Arduino powered Jagerbomber!" width="225" height="300" /></a><p class="wp-caption-text">Arduino powered Jagerbomber! (click to zoom)</p></div>
<p>The challenge for this year&#8217;s Halloween party was to find a &#8220;B-rate&#8221; superhero or villan.  No superman, spiderman, ironman, or other mainstream nonsesne here. We had to come up with something unique and not-mainstream, so my answer was clear.  I present to you the Arduino powered Jagerbomber, complete with countdown timer. This costume served me quite well, winning both the party&#8217;s &#8220;Best Male Costume&#8221; and later on at work, &#8220;Best Costume&#8221; so I&#8217;m sure it&#8217;ll give you some good ideas for next year!  Remember, only 363 Days till Next Halloween!<span id="more-1198"></span></p>
<h2>The challenge:</h2>
<p>Every year, a good friend of mine throws an invite-only Halloween party. This year&#8217;s theme was &#8220;B-rate Superheros and Villains&#8221; as outlined above.  The concept was simple enough, but we still had to figure out what I could do.  After talking with several friends, I decided on the Jagerbomber, mainly because I like to drink and since this was an alcohol-friendly party, I was sure that it would go over with a fair amount of success.</p>
<p>When I talked to my friend about the Jagerbomber idea, he thought it was good, but it didn&#8217;t look &#8220;bomber&#8221; enough for him.  He showed me some other pictures of other attempts (some decent) at the Jagerbomber and one stuck out.  He had wired up a lapel pin to blink at regular intervals to his shirt, then grabbed random crap from the junk drawer to make out the &#8220;bomb&#8221;.  Literally, random electronic crap.  I think we saw an old soundblaster, a keypad from a telephone, some odds and ends and some wire all mounted to a perfboard that was pinned to his shirt. (see pic below)</p>
<div id="attachment_1200" class="wp-caption aligncenter" style="width: 231px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/the-jagerbomber_20120607170455.jpg"><img class=" wp-image-1200 " title="Another jagerbomber" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/the-jagerbomber_20120607170455-221x300.jpg" alt="Another jagerbomber" width="221" height="300" /></a><p class="wp-caption-text">hAnother jagerbomber (click for zoom)</p></div>
<p>I thought the setup was good, but his design had something mine didn&#8217;t.  He had the lapel pin.  His actually looked like it was going to blow up someone&#8217;s liver.  My friend then said, &#8220;Yours looks cool, but you need something to take it over the edge, add some LEDs to it or something.&#8221;  So with that challenge (and a party in three days), I set off to see what I could muster up.</p>
<h2>The Jagerbomber Outfit:</h2>
<p>I didn&#8217;t want to feed any stereotypes with my Jagerbomber costume and felt the one above was a little too Middle-Easterner for me so I decided that I would use a standard hunting vest as a base and build off of that.  I was able to score a decent hunting vest at Academy for around $12.00 and found some black elastic banding at a sewing shop.  I decided that while the guy had used four small glasses, I would use two 1 Liter bottles (I ended using a 1L and a 1.5L bottle) and instead of four Red Bull cans, I would use ten.  I planned to drink myself to oblivion, so using empty redbull and jager bottles (like the photo above) was simply not an option.  What&#8217;s a jagerbomber with a non-functioning suit?</p>
<p>To secure the black elastic to the hunting vest, I used my wife&#8217;s sewing machine (and didn&#8217;t burn the house down).  I chose a &#8220;T&#8221; formation for the two jager bottles (one strap runs across, one strap runs from the other and secures at the bottom) for the two bottles since they were bulky and heavy.  The RedBull cans stayed well with just the single loop across the middle.  On each edge of the &#8220;T&#8221; straps and at each end of the Red Bull straps, I made sure the strap was secured by sewing in a box , with an X in the middle of it, to ensure that if the seam started to rip, it would have enough of a seam to hold at least through the party.   Below is the modified Jagerbomb vest with spices acting as placeholders for the Red Bull.</p>
<div id="attachment_1201" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/2012-10-11-23.15.04.jpg"><img class=" wp-image-1201 " title="Test load of the Jagerbomber Vest" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/11/2012-10-11-23.15.04-300x225.jpg" alt="Test load of the Jagerbomber Vest" width="300" height="225" /></a><p class="wp-caption-text">Test load of the Jagerbomber Vest (Click for zoom)</p></div>
<p>&nbsp;</p>
<h2>The Electronics:</h2>
<p>After getting some constructive feedback about no flashing lights, I decided to rig up a display.  Thankfully, my DealExtreme order came in from earlier and with it, came this <a title="Deal Extreme Display Module" href="http://dx.com/p/8x-digital-tube-8x-key-8x-double-color-led-module-81873?item=1" target="_blank">lovely item</a>. This is an eight digit seven segment display module that also includes eight pushbuttons and eight bi-color LEDs.  This is an absoloute steal at $6.99 and I highly recommend this module, even if you don&#8217;t need to make a Jagerbomber costume.</p>
<p>I also used an Arduino Uno to drive the display and a cellphone recharger battery pack. The battery pack and the Arduino would go in a pocket and would run indefinitely while the display would be sewn into the vest right at &#8220;name-badge&#8221; level on the left shoulder just above the bottle of Jagermeister.  A small cable (extended with jumper wire) would run from the Arduino to the display and would follow the seams for easy sewing.  I didn&#8217;t want wires going all over the place.</p>
<p>I managed to get the display and the wire soldered into place but I had no way of protecting the Arduino fully. If I were to do this again, i would get a temporary enclosure for the Arduino, even a small cardboard pocket box would work.</p>
<p>As far as battery consumption, the cell charger pack is three years old and it can still charge a phone from dead to mostly charged (high 80%) and during an 8 hour workday , it still had about 80% of its charge left.  I use it to charge my cellphones and it&#8217;s great, especially when I forget to plug my cellphone in.</p>
<h2>The code:</h2>
<p>The code for this is pretty simple thanks to the hookup information and library guide at <a title="Tm1638 connection and library use information" href="http://tronixstuff.wordpress.com/2012/03/11/arduino-and-tm1638-led-display-modules/" target="_blank">TronixStuff</a> and the TM1638 library located at <a title="TM1638 Arduino Library" href="http://code.google.com/p/tm1638-library/" target="_blank">Google Code</a>.</p>
<p>Basically, the counter has two modes:</p>
<p>- Attraction mode:  does what its name says, it counts up from power-on and keeps going. The bi-color LEDs on the front alternate red and green while it is counting.</p>
<p>- Countdown mode: This was the fun part.  Hitting any one of the leftmost 5 buttons when the bi-color LEDs are green started a counter that ran from a pre-set value to zero.  Once it hits zero, it starts flashing and displays &#8220;SHOTS&#8221;, and if you&#8217;re at the right party, everyone takes a shot.  The left 5 buttons are set up in 20 minute, 10 minute, 5 minute, 1 minute, and 10 second intervals.  The other three buttons do nothing.</p>
<p>The connections are pretty simple, three pins to the Arduino&#8217;s digital I/O pins, and two for power and ground.  Rather than attempt to paste the code so that it displays, I have provided a direct link to the source code I used for this project: <a href="http://www.yourwarrantyisvoid.com/downloads/files/TM1638_jagerbomber.txt" target="_blank">Download</a></p>
<h2>The end result:</h2>
<p>The end result was that the Jagerbomber costume was a complete success.  I ended up drunk at the end of the party and I also ended up winning the &#8220;Best Male Costume&#8221;.  Even better, I ended up winning &#8220;Best Costume&#8221; at my office Halloween party (even though my Jager bottles were empty, something about HR not liking alcohol in the workplace. <img src='http://www.yourwarrantyisvoid.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>Here is a video of the  Jagerbomber counter in action:</p>
<p><center><iframe src="http://www.youtube.com/embed/wWC8E65Mhyg" frameborder="0" width="420" height="315"></iframe></center></p>
<h2></h2>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2012/11/02/new-threat-to-sobriety-arduino-powered-jagerbomber-costume/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino: Basic Network Temp and Humidity monitor</title>
		<link>http://www.yourwarrantyisvoid.com/2012/08/23/arduino-basic-network-temp-and-humidity-monitor/</link>
		<comments>http://www.yourwarrantyisvoid.com/2012/08/23/arduino-basic-network-temp-and-humidity-monitor/#comments</comments>
		<pubDate>Fri, 24 Aug 2012 04:21:04 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[sparkfun]]></category>
		<category><![CDATA[temperature]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1181</guid>
		<description><![CDATA[The (albeit crooked) image above is a basic environmental monitor I built for the server rack that I keep my house&#8217;s servers in. This project features network connectivity via an Arduino Ethernet shield, an HTF3223 humidity sensor, a TMP36 temperature sensor and a Sparkfun serial LCD for a decent monitoring station that is self-reliant.  Read [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_1189" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1189" title="LCD display" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/08/effinglcd-300x225.jpg" alt="" width="300" height="225" /><p class="wp-caption-text">I don&#8217;t know why I can&#8217;t flip this image. It&#8217;s cursed.</p></div>
<p>The (albeit crooked) image above is a basic environmental monitor I built for the server rack that I keep my house&#8217;s servers in. This project features network connectivity via an Arduino Ethernet shield, an HTF3223 humidity sensor, a TMP36 temperature sensor and a Sparkfun serial LCD for a decent monitoring station that is self-reliant.  Read more for build details and the code to get it all working.<span id="more-1181"></span></p>
<h2>Foreword:</h2>
<p>I built this project to monitor the server rack temperature but being that it is in another room (and I&#8217;m a lazy bastard), I decided to work with the Ethernet shield to make it network accessible.  The cool thing about the Arduino Ethernet Shield is that as of Arduino 1.0, the Ethernet Shield now supports DHCP, making projects like this a breeze as far as getting on the network.  The added benefit of using an Ethernet Shield was that instead of just looking at it at a glance, I could now set up a script on one of the servers to &#8220;poll&#8221; the IP address (displayed conveniently on the LCD) and download the current temperature and humidity to a file for later processing.  This project allowed me to check the temperature and humidity from anywhere with Internet access using any web browser I wanted (of course with proper port-forwarding rules in place).</p>
<p>Granted, in the grand scheme of Arduino projects, this one is not very difficult nor is it very complex however this leaves a lot of room for improvement.  For instance, I could have a fan turn on if the temperature gets abnormally high and turn off again when the temperature dropped down to an acceptable level.  The humidity sensor was a last minute add, primarily because I was curious and had an extra sensor lying about.</p>
<h2>Requirements:</h2>
<p>For this project, you will need the following:</p>
<ul>
<li>An Arduino with Arduino IDE version 1.0.1 or better</li>
<li>A Sparkfun Serial LCD like this one - <a href="https://www.sparkfun.com/products/9395">https://www.sparkfun.com/products/9395</a></li>
<li>A TMP36 temperature sensor - <a href="https://www.sparkfun.com/products/10988">https://www.sparkfun.com/products/10988</a></li>
<li>An Arduino Ethernet Shield - <a href="https://www.sparkfun.com/products/9026">https://www.sparkfun.com/products/9026</a></li>
<li>An HF3223 Sensor with connection cable - <a href="http://www.emartee.com/product/41698/Humidity%20/Temperature%20Sensor%20Module%20HTF3223">http://www.emartee.com/product/41698/Humidity%20/Temperature%20Sensor%20Module%20HTF3223</a> (Note: I found mine in a laser printer. I have never used emartee and can not vouch for them.)</li>
<li>Connecting wires, USB cable and Ethernet jumper.  (Note: After uploading your code, your USB cable will only be used for device power.)</li>
</ul>
<h2>Hardware:</h2>
<p>My project is wired as follows:</p>
<ol>
<li>Serial LCD &#8211; Red lead to +5V, Black lead to GND, Yellow lead to <strong>Digital Pin 1(RX).</strong></li>
<li>TMP36  - Held with the flat part towards you &#8211; Left lead to +5V, Center lead to <strong>Analog Pin A0</strong>, Right lead to GND.</li>
<li>HF3223 &#8211; Held with the white sensor facing you and connector pointing to ground. &#8211; Pin 1 unconnected, Pin 2 to GND, Pin 3 to <strong>Digital Pin 7</strong>, Pin 4 to +5V.</li>
</ol>
<h2>Software:</h2>
<pre><code>
/*
This project requires the following items:
Arduino Ethernet Shield
TMP36 sensor - Sense attached to Analog 0
When held like a "D", top pin is GND, middle pin is Sense, Bottom pin is +5V

SparkFun Serial LCD display attached to GND, +5V and TX (pin 2)
Humirel HF3223 4 pin Humidity sensor
When held with the sensor facing you and the connector block on the right:
Pin 1 (topmost) = +5V
Pin 2 to pin D7
Pin 3 Vss
Pin 4 (float/NC)
---------------------
When running, the LCD will show the temperature in Fahrenheit and the Ethershield's IP
Browsing to that IP will give a simple "The tempearture is XX degrees F"
Code from this sample was used from the Temperature sketch part of the Arduino
Experimentation Kit Example Code CIRC-10 "Temperature" and from the Barometric
Pressure Server under Samples-&gt;Ethernet-&gt;"BarometricPressureWebServer" example.

Code for the Humirel sensor came from:

http://g7nbp.blogspot.com/2011/09/arduino-htf3223-humidity-sensor.html

*
#include &lt;SPI.h&gt;
#include &lt;Ethernet.h&gt;

const int temperaturePin = 0; //the analog pin the TMP36′s Vout (sense) pin is connected to
const int hpin = 7; //HTF323 sense pin

byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 }; // Ethernet shield MAC address
EthernetClient client;
EthernetServer server(80);
void setup()
{
delay(500);
pinMode(hpin, INPUT);
Serial.begin(9600); //Start Serial (needed for LCD)
Serial.write(0xFE); //ATTN LCD
Serial.write(0x01); //Clear LCD
Serial.write(0x7C); //ATTN
Serial.write(157); //Full Display Brightness
Serial.write(0xFE); //Attn
Serial.write(128); //Mv cursor to line 1, col 1 on LCD
delay(1000); // Do not f* with this line. It ensures that the LCD is ready to receive data.
Serial.print("Please Wait..."); // Wait message for DHCP request
if (Ethernet.begin(mac) == 0) {
Serial.write(0xFE); // Attn
Serial.write(128); // Mv to line 1, col 1
Serial.print("DHCP Address Failed - STOP"); // Print message and halt Arduino. We need an IP.
for(;;)
; //Endless loop.
}
server.begin(); // Start Web server.
Serial.write(0xFE); //Attn
Serial.write(0x01); //Clear Screen

}
void loop() // run over and over again
{
//Get the voltage reading from the temperature sensor
float temperature = getVoltage(temperaturePin);

//Convert it from 10 mv per degree wit 500 mV offset
//to degrees Fahrenheit(((volatge – 500mV) times 100) times 9/5 + 32 degrees)
temperature = ((temperature - .5) * 100) * 9/5 + 32 ;

//Get raw sensor frequency
long sensorValue = getFrequency(hpin); // get the raw sensor frequency
long humidity = convertToRH(sensorValue); // convert it to RH%

// Do some LCD stuff then print out our formatted lines.
Serial.write(0xFE); // LCDAttention
Serial.write(128); // Mv to Ln 1, col 1
Serial.print("H:");
Serial.print(humidity, DEC);
Serial.print("% T:");
Serial.print(temperature); //print the result to LCD and computer (if attached)
Serial.print("F");
Serial.write(0xFE); //Attention
Serial.write(192); //Mv to Ln 2 col 1
//This routine prints the IP address to the display.
for (byte thisByte = 0; thisByte &lt; 4; thisByte++) {
// print the value of each byte of the IP address:
Serial.print(Ethernet.localIP()[thisByte], DEC);
Serial.print(".");
}
// Monitors the Ethernet connection for a client request
listenForEthernetClients(temperature, humidity);
delay(1000); //waiting a second
}
/*
* getVoltage() – returns the voltage on the analog input defined by
* pin
*/
float getVoltage(int pin){
return (analogRead(pin) * .004882814); //converting from a 0 to 1023 digital range
// to 0 to 5 volts (each 1 reading equals ~ 5 millivolts
}
void listenForEthernetClients(int temp, int hum) {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' &amp;&amp; currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// print the current readings, in HTML format:
client.print("Temperature: ");
client.print(temp);
client.print(" degrees F");
client.print("&lt;br&gt;Humidity: ");
client.print(hum);
client.print(" percent");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
delay(1); // give the web browser time to receive the data
client.stop();
}
}

long getFrequency(int pin){
#define SAMPLES 4096
long freq = 0;
for(unsigned int j=0; j&lt;SAMPLES; j++) freq+= 500000/pulseIn(pin, HIGH, 250000);
return freq / SAMPLES;
}
long convertToRH(long sensorValue){
 long rh = (9740-sensorValue)/18;
 return rh;
}
</code></pre>
<h2>Hooking it all up:</h2>
<p>Once you flash your Arduino, you should be good to go.  Connect the Ethernet Shield to your network, then attach the USB cable from a nearby computer. It does not matter if it has the FTDI driver in it or not, we just need the USB port for its power. After a moment, you should see the Humidity (H:) and the Temperature (T:) on the LCD with the IP address of the device on the second line.</p>
<p>Browsing to the IP address should give you a simple page that shows Temperature and Humidity.</p>
<h2>Troubleshooting:</h2>
<p>If for some reason, the LCD stops updating and you get a connection time out trying to browse to the IP, take a look and make sure that Pin 7 is connected to the HF3223 In my testing, when I moved it around and the lead became disconnected, the Arduino would appear to freeze. Reconnecting it restored connectivity.</p>
<p>If you get the message &#8220;DHCP Address Failed &#8211; STOP&#8221;, then check your Ethernet shield and make sure that you have link. Also make sure that your router is handing out IP addresses.</p>
<p>If you want the temperature in degrees Celsius, remove the &#8220;<em>* 9/5 + 32</em>&#8221; from this line above in code:  <strong>temperature = ((temperature &#8211; .5) * 100)<em> * 9/5 + 32</em> ;</strong></p>
<p>&nbsp;</p>
<p>Well, that&#8217;s a quick one that might be interesting for you. Happy Temperature Monitoring!</p>
<p>&nbsp;</p>
<p>FIRESTORM_v1</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2012/08/23/arduino-basic-network-temp-and-humidity-monitor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IBM RS/6000 display repurposed for Arduino</title>
		<link>http://www.yourwarrantyisvoid.com/2012/07/23/ibm-rs6000-display-repurposed-for-arduino/</link>
		<comments>http://www.yourwarrantyisvoid.com/2012/07/23/ibm-rs6000-display-repurposed-for-arduino/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 01:53:15 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Embedded devices]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[LCD display]]></category>
		<category><![CDATA[microcontroller]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1169</guid>
		<description><![CDATA[We managed to unearth an old IBM RS/6000 server at work and decided that since the machine didn&#8217;t work, it was time for it to go away.  Right off the bat, one of the things I noticed about this machine was that it had a diagnostic LCD panel in the bezel presumably for showing POST [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_1170" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1170" title="I couldn't find a picture of an IBM server with the LCD so here are some squirrels." src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/jedi_squirrels_41k-300x199.jpg" alt="I couldn't find a picture of an IBM server with the LCD so here are some squirrels." width="300" height="199" /><p class="wp-caption-text">I couldn&#8217;t find a picture of an IBM server with the LCD so here are some squirrels.</p></div>
<p>We managed to unearth an old IBM RS/6000 server at work and decided that since the machine didn&#8217;t work, it was time for it to go away.  Right off the bat, one of the things I noticed about this machine was that it had a diagnostic LCD panel in the bezel presumably for showing POST error codes and warnings.  Since the machine was going to the scrap heap, I decided to relieve it of the LCD and managed to get it to work on an Arduino with minimal effort.  Read on for pictures and a wiring pinout.</p>
<p><span id="more-1169"></span></p>
<h2>About the LCD</h2>
<p>As stated, this LCD module came from an IBM RS/6000 server and has an  IBM FRU# 82G3614 as well as &#8220;DM110Y&#8221; imprinted into the LCD.  The module also features a dedicated backlight LED display that shows up amber when driven with +5V.  While it&#8217;s not the most attractive color, it will work quite well in a project. It was free, after all,</p>
<p>The LCD itself is driven by a Sanyo <a href="http://www.robotroom.com/LCD/Sanyo-LC7985NA.pdf" target="_blank">LC7985NA driver</a> chip which is HD44780 compatible. This works for us as the HD44780 protocol is very common and has pretty much become <a href="http://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller" target="_blank">its own standard</a>. The HD44780 gives us greater control over the LCD than simply displaying text. Using the HD44780 protocol, you can clear the screen and control the cursor blinking and position. You can even write your own characters and display them like any other character as needed.  The HD44780 even includes its own character map (font) so it&#8217;s the simplest type of display to get up and running.</p>
<p>An added benefit to the HD44780 display is the option to enable 4-bit mode.  Generally communications with an LCD display require 8 data lines (8bit) and three control lines (a total of 10 pins) to be able to send data to the module for display. In 4-bit mode, each character (or control code) is sent in two 4-bit nibbles then the display acts on the data as if it was a single byte.  This comes to the advantage of saving I/O pins (7 pins versus 10 pins) on a limited device while sacrificing a minimal amount of processing cycles.</p>
<p><strong>Editor&#8217;s Note:</strong> The LCD module is not Arduino specific. Be sure to perform research on your microcontroller prior to hooking up the LCD and to ensure compatibility.  This LCD will NOT work with 3.3v TTL devices.</p>
<p>The Arduino IDE comes with a library called &#8220;LiquidCrystal&#8221; which is written to make interfacing with a display easy.  It is preconfigured to work in 4-bit mode to save I/O pins on your project and the library already includes sample code.</p>
<div id="attachment_1173" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1173" title="LCD Display Panel - Front" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/frontoflcd-300x225.jpg" alt="LCD Display Panel - Front" width="300" height="225" /><p class="wp-caption-text">LCD Display Panel &#8211; Front</p></div>
<p>As shown in the above image, there are six LEDs and then the 2 row by 16 column LCD display.  The upper left hand corner shows the 26 pin header that we can use to talk to the various devices on board (LCD, LCD backlight, LEDs).</p>
<div id="attachment_1174" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1174" title="LCD Display Panel - Back" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/backoflcd-300x225.jpg" alt="LCD Display Panel - Back" width="300" height="225" /><p class="wp-caption-text">LCD Display Panel &#8211; Back</p></div>
<p>This shows the back side of the LCD panel, with the LEDs and the header on the right and the Sanyo LCD driver on the left.</p>
<h2>Pinouts and wiring</h2>
<p>The header has 26 pins because it also carries the signalling for the LEDs and the backlight is brought out into its own pins instead of running off of the +5V driver pin that some newer displays use.   If you are viewing the display with the LCD and LEDs towards you, pin 1 is the upper left most pin and pin 26 is the lower rightmost pin on the header.  If the LCD is facing away from you, pin 1 is the upper right most pin in the header, and pin 26 is the lower leftmost pin in the header. To orient properly for the LEDs and with the LCD facing you, the upper leftmost green LED is &#8220;A&#8221;, middle is &#8220;B&#8221;, lower is &#8220;C&#8221;. The upper right yellow is D, middle is E and lower right yellow is F.</p>
<div id="attachment_1175" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/LCDpinout.png"><img class="size-medium wp-image-1175" title="LCD Illustrated Pinout (click for larger image)" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/LCDpinout-300x225.png" alt="LCD Illustrated Pinout (click for larger image)" width="300" height="225" /></a><p class="wp-caption-text">LCD Illustrated Pinout (click for larger image)</p></div>
<p>Here is the pinout of the header:</p>
<ol>
<li>Vss (GND)</li>
<li>Vcc (+5V)</li>
<li>Contrast &#8211; Run this to the wiper (middle pin) of a 10K variable resistor to control the display&#8217;s contrast.</li>
<li>RS &#8211; Register Select &#8211; Arduino pin 12</li>
<li>R/W &#8211; Read/Write Character RAM &#8211; wired to GND unless needed.</li>
<li>E &#8211; Chip Enable &#8211; Arduino pin 11</li>
<li>D0 &#8211; Data pin 0 &#8211; Not connected in 4-bit mode.</li>
<li>D1 &#8211; Data pin 1 &#8211; Not connected in 4-bit mode.</li>
<li>D2 &#8211; Data pin 2 &#8211; Not connected in 4-bit mode.</li>
<li>D3 &#8211; Data pin 3 &#8211; Not connected in 4-bit mode.</li>
<li>D4 &#8211; Data pin 4 &#8211; Arduino pin 5</li>
<li>D5 &#8211; Data pin 5 &#8211; Arduino pin 6</li>
<li>D6 &#8211; Data pin 6 &#8211; Arduino pin 7</li>
<li>D7 &#8211; Data pin 7 &#8211; Arduino pin 8</li>
<li>Backlight Vss (GND)</li>
<li>Backlight Vcc (+5V)</li>
<li>Common Anode (+) for LEDs A,C,D,E,F</li>
<li>D cathode (-)</li>
<li>E cathode (-)</li>
<li>F cathode (-)</li>
<li>A cathode (-)</li>
<li>B cathode (-)</li>
<li>C cathode (-)</li>
<li>Not connected</li>
<li>Not connected</li>
<li>B anode (+)</li>
</ol>
<h2>End result:</h2>
<p>If you got the LCD wired up properly and you got the sample code uploaded to your Arduino, you should see the below show up on your LCD display.  The sample code can be retrieved from File -&gt; Examples -&gt; Liquid Crystal -&gt; HelloWorld in your Arduino IDE.</p>
<div id="attachment_1176" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1176" title="LCD Test Run" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/testrun-300x225.jpg" alt="LCD Test Run" width="300" height="225" /><p class="wp-caption-text">LCD Test Run</p></div>
<h2>Alternative Uses:</h2>
<p>Now that the LCD is up and running, you could write Arduino code for the LCD to display information from sensors, the serial port or any data source you desire.  Additionally, you can even direct-wire this LCD to a parallel port and use it as an information display.  Unfortunately, the LEDs won&#8217;t be able to work without some kind of microcontroller to interpret commands but that shouldn&#8217;t get in the way of using the LCD module for something fun.</p>
<p>Next time you hit the parts store, keep a sharp eye out for one of these displays.  They&#8217;re easy to come by and easier to control.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2012/07/23/ibm-rs6000-display-repurposed-for-arduino/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hardware: Remote Control your Arduino</title>
		<link>http://www.yourwarrantyisvoid.com/2012/07/10/hardware-remote-control-your-arduino/</link>
		<comments>http://www.yourwarrantyisvoid.com/2012/07/10/hardware-remote-control-your-arduino/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 22:01:13 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[How-To's]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[IR]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[parts]]></category>
		<category><![CDATA[remote control]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1143</guid>
		<description><![CDATA[Have a giant Arduino powered killbot, but can&#8217;t fancy being right next to it when you unleash it on the unsuspecting populace?  Want to change the mood-lights in your dorm without having to get up off the couch?  Why not use IR remote controls to do the walking for you?  In this article, I will [...]]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1144" title="Arduino Uno - Image courtesy of www.arduino.cc" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/arduino_uno_test-300x300.jpg" alt="Arduino Uno - Image courtesy of www.arduino.cc" width="300" height="300" /></p>
<p>Have a giant Arduino powered killbot, but can&#8217;t fancy being right next to it when you unleash it on the unsuspecting populace?  Want to change the mood-lights in your dorm without having to get up off the couch?  Why not use IR remote controls to do the walking for you?  In this article, I will be covering how to use the IRremote Library written by Ken Shirriff for the Arduino to control a seven segment display as a proof of concept.  Killbot not included.</p>
<p><span id="more-1143"></span></p>
<h2>A bit on IR remotes:</h2>
<p>Infrared remote controls work off the premise of modulation of a signal which is then demodulated and interpreted by the receiving unit, be it the TV, a cable box, or other device. When you hit a key on your remote, the remote&#8217;s microcontroller senses the keypress and then sends a code corresponding to that keypress to the receiver by way of an infrared LED.  The destination device on the other end receives the infrared light pulses and then translates that into a code that then performs an action such as turning off the TV or changing the channel, etc.</p>
<p>In order to prevent one remote from turning on ALL of your appliances with line of sight to the remote, different protocols are used.  This also helps to minimize infrared interference being received from other light sources like incandescent bulbs and the sun. For example, you have a Sony TV and a Motorola cable box, with a JVC DVD player.  When you hit the power button on the Sony remote, the TV sees the Sony protocol and decodes the power button then turns on the TV.  The JVC DVD player and the Motorola cable box disregard the pulses as noise and no action is taken.  Similarly, if you have a Sony remote and you go to the Sony TV store and hit the power button on the remote, you&#8217;re likely to get thrown out of the store as you will have turned off all their TVs. (Not recommended. )  For more information on the protocols and theory behind Remote Controls, please take a look at <a href="http://www.sbprojects.com/knowledge/ir/index.php">http://www.sbprojects.com/knowledge/ir/index.php</a></p>
<h3>Universal Remotes:</h3>
<p>The whole device specific protocol does make the use of a remote a lot easier however if you have many devices (like an AV cabinet with a VCR, DVD player, Blu-ray, Sound System, CD changer and a video streamer), your coffee table can quickly be overrun with remote controls.  The cure-all to this is a universal remote which can be programmed to control specific devices.  Using our earlier example, it can control your Sony TV, JVC DVD player and Motorola cable box by using function keys to switch which codes the remote sends out.  Universal remotes are a godsend when working with microcontrollers as you can then set the remote to the Sony protocol, arguably one of the most well documented protocols to date.</p>
<h2>Getting Started:</h2>
<p>In this how-to, we will be using the IRremote Library for the Arduino to test our remote, get the key codes for the keys we want to use, and finally testing it out with lighting up a seven segment LED display.  You will need the following items:</p>
<ul>
<li>An Arduino (I use an Arduino Uno</li>
<li>Breadboard (any size)</li>
<li>A USB A-B cable for the Arduino</li>
<li>Jumper wires</li>
<li>A three pin IR receiver module <a href="http://www.sparkfun.com/products/10266" target="_blank">like this one</a> from Sparkfun</li>
<li>An IR remote control  (If you don&#8217;t have a receiver or a remote control, I recommend using <a href="http://www.sparkfun.com/products/10783" target="_blank">this kit</a> instead as it comes with everything you need.)</li>
<li>A seven segment LED display (common cathode or &#8211; )</li>
<li>A 74HC595 shift register</li>
<li>Seven 220 ohm resistors (Red &#8211; Red &#8211; Brown)</li>
<li>An LED (any color)</li>
<li>(Optional) A camera with an LCD preview screen or camera phone.</li>
<li>(Optional) A breadboard power supply ( I recommend <a href="http://www.sparkfun.com/products/114" target="_blank">this one</a> )  If you don&#8217;t have one, you can use the Arduino&#8217;s 5V pin.</li>
<li>A PC with the Arduino software pre-loaded and operational.</li>
</ul>
<h2>Let&#8217;s get to testing.</h2>
<h4>Test the remote control</h4>
<p>In this test, we will do a basic check to ensure our  IR remote works. Nothing sucks worse than going through a howto wondering why it&#8217;s not working only to find out that a part&#8217;s busted. Turn on your camera and point your IR remote at it then press a key on your remote.  You should see something flashing in the front of the remote.  If you do, then the remote works and you can proceed with confidence.  If you don&#8217;t, check some other keys and replace the batteries in the remote just to be on the safe side.  You don&#8217;t have to take a picture of the remote to be able to see the IR light coming out of the remote.  In some remotes it may show up red and in others it may be purple.  If you have a remote that has multiple IR LEDs in the front, you may get a lot of white light.    My remote is a &#8220;mini&#8221; remote control and the IR LED is visible on the front.  In the picture below, I am holding down the POWER button, and you can see by the purple light that my remote is working.</p>
<p><img class="aligncenter size-medium wp-image-1145" title="IR LED remote testing" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/2012-07-10-10.23.37-300x225.jpg" alt="IR LED remote testing" width="300" height="225" /></p>
<p>If your camera doesn&#8217;t show the flashing LED and you replaced the batteries on it, try another camera or see if the remote operates the device it is supposed to work with.  Some cameras have an IR blocking film on the lens which will not allow the IR from the LED through.  Cameras in cellphones usually do not have this film.</p>
<h4>Testing the IR receiver</h4>
<p>Now we know that the IR remote works, it&#8217;s time to test the IR receiver. You will need to check your receiver&#8217;s datasheet to be sure however most three-wire IR receivers use the same wiring method.  With the bulb (curved part) of the receiver facing you, the left most pin is signal out.  The middle pin is Ground (Vss) and the rightmost pin is +5V (Vcc)  Set up your breadboard like the image below.  The right pin should go to your power rail on your breadboard, the middle pin should go to the ground rail on your breadboard.  The left pin goes to a resistor which goes to the cathode side (look for the flat part) of the LED while the anode side should go to your power rail.  Look at the image below for layout.<img class="aligncenter size-medium wp-image-1146" title="IR receiver testing" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/2012-07-10-10.34.51-300x225.jpg" alt="IR receiver testing" width="300" height="225" /></p>
<p>Now for the moment of truth. Turn on your power supply and the LED should stay off.  Point your remote control at the receiver and press a button.  The LED should blink rapidly as long as you hold down the button.  If it does not, shut off your power supply and check your connections.  In the image below, the LED is lit up however it was flashing when I took the image.</p>
<p><img class="aligncenter size-medium wp-image-1149" title="LED lit" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/2012-07-10-10.35.26-300x225.jpg" alt="LED lit" width="300" height="225" /></p>
<h2>Importing the Library</h2>
<p>Now that we have determined that the remote and the IR receiver work, it&#8217;s time to get the IR library.  Head over to <a href="http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html" target="_blank">Ken Shirriff&#8217;s Blog</a> and download the IRremote.zip file.  Look for the link under the image of the Arduino and Remote.</p>
<p>When you download the file, extract it and you should have a directory called &#8220;IRremote&#8221;.  You will want to copy this into your Libraries directory for the Arduino program:</p>
<ul>
<li>Windows users: Copy the directory into arduino-XXXX/Libraries (wherever you have copied the Arduino directory to). Since mine&#8217;s on the Desktop, it&#8217;s Desktop/Arduino-2200/Libraries.</li>
<li>Linux users:  Copy the directory into /usr/share/arduino/libraries</li>
<li>Mac users:  I don&#8217;t know.  If you figure it out, drop me a comment and I&#8217;ll add it here.</li>
</ul>
<h2>Connecting Hardware and getting your key codes</h2>
<p>Now that the library is imported, we need to hook up the IR receiver to the Arduino so we can read the codes for our remote.  If you haven&#8217;t already done so, bridge the +5V and the GND lines from the Arduino over to your breadboard, then hook up the center pin of the IR receiver to the GND rail and the right most pin to the +5V rail pretty much like we had it connected for testing. Instead of using a resistor and LED for the output pin, we will connect a jumper from the output pin to pin 11 of the Arduino. Use the above images as a guide.</p>
<p>Load the example code from File -&gt; Examples -&gt; IRremote -&gt; IRrecvDemo then click the &#8220;Upload&#8221; button. (second from the rightmost icon on the toolbar).  This will push the code to the Arduino.</p>
<p>Click the &#8220;Serial Monitor&#8221; button to bring up a window that will allow us to see the codes being returned to us by the Arduino.  Start mashing buttons and you should see a lot of numbers scroll by like in the image below.</p>
<p><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/Screenshot-dev-ttyACM1.png"><img class="aligncenter size-medium wp-image-1150" title="Serial Port Monitor" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/Screenshot-dev-ttyACM1-300x227.png" alt="Serial Port Monitor" width="300" height="227" /></a></p>
<p>In the above screenshot (click for larger image), you can see several codes.  The ones that start off with FF and then have numbers or letters are the codes we are after. A FFFFFFFF is a continuation code and the 0 on its own line is a read error.  This code will spit out the hex value of the protocol being used by your remote for the button you pressed.  It is recommended to &#8220;map out&#8221; all the buttons you plan on using for your project and write them down.</p>
<p>My remote has a total of 21 buttons however I am only interested in the keypad buttons (0-9) and power. In case anyone else has this same remote, here are the hex values for my remote (generic chinese knockoff, model number YK-001 ).</p>
<ul>
<li>POWER &#8211; FFA25D</li>
<li>MODE &#8211; FF629D</li>
<li>MUTE &#8211; FFE21D</li>
<li>PREV &#8211; FF22DD</li>
<li>NEXT &#8211; FF02FD</li>
<li>PAUSE &#8211; FFC23D</li>
<li>VOL &#8211; - FFE01F</li>
<li>VOL + &#8211; FFA857</li>
<li>EQ &#8211; FF906F</li>
<li>Digit 0 &#8211; FF6897</li>
<li>100+ &#8211; FF9867</li>
<li>Go Back &#8211; FFB04F</li>
<li>Digit 1 &#8211; FF30CF</li>
<li>Digit 2 &#8211; FF18E7</li>
<li>Digit 3 &#8211; FF7A85</li>
<li>Digit 4 &#8211; FF10EF</li>
<li>Digit 5 &#8211; FF38C7</li>
<li>Digit 6 &#8211; FF5AA5</li>
<li>Digit 7 &#8211; FF42BD</li>
<li>Digit 8 &#8211; FF4AB5</li>
<li>Digit 9 &#8211; FF52AD</li>
</ul>
<p>Your values will probably differ from what I&#8217;ve listed above.</p>
<h2>Now for something fun</h2>
<h3>Moar Hardware!</h3>
<p>Once we have obtained our key codes, we can then set about to do something with it. As an example, we will be using the 74HC595 shift register and the seven segment display to light up the corresponding digit when we press a key on the remote.  For those of you that have never used a shift register, it is a well known chip that allows you to use the arduino command shiftOut to send a sequence to the 74HC595 which will then show that sequence via the eight pins that form its output port.   For example, sending it &#8220;01001001&#8243; would cause the 595&#8242;s output pins 1,4 and 7 to go into a high state.   The advantage is that the shift register only requires three lines from the Arduino in order to be able to control 8 lines on the 595 making it an easy way to expand the Arduino&#8217;s limited pins.  For more details about daisy chaining the 74HC595, check out <a href="http://bildr.org/2011/02/74hc595/" target="_blank">http://bildr.org/2011/02/74hc595/</a> which describes the 74HC595 in detail. Below is a schematic diagram of a 74HC595.</p>
<p><img class="aligncenter size-medium wp-image-1153" title="74HC595 shift register" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/shift_register_09_sml-226x300.jpg" alt="74HC595 shift register" width="226" height="300" /></p>
<p>In order to connect the shift register to the Arduino, we will use pin 14 (Data), pin 12 (Latch) and pin 11 (Clock).  The output port (q0-q7, pin 15 and pins 1-7) are what we will hook up to the LED display. The Reset line (pin 10) must be connected to +5V in order for the chip to work and the output pin (Pin 13) should be sent to ground.  Your board will turn into a spaghetti bowl, however it will be worth it when the project is complete.</p>
<div id="attachment_1155" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1155" title="7 segment LED display" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/7segment-common-anoda-300x250.png" alt="7 segment LED display" width="300" height="250" /><p class="wp-caption-text">7 segment LED display</p></div>
<p>This is the pinout of a seven segment LED display.  Since the shift register has 8 output pins and the seven segment LED only has seven, (not counting the decimal point), we will be hooking up the pins one-to-one starting with Q0.  In the above two images, Q0 will go to element &#8220;a&#8221;, Q1 will go to element &#8220;b&#8221; and so on.  We will not be using Q7 or the decimal point, so you can allow these to float (not connected). Between each of the 74HC595 output pins and the pins of the 7segment LED display, we will need to add a 220 ohm resistor.  This will ensure that neither the 595 nor the LED display are damaged from overcurrent.  Because there are many different styles of LED displays with varying pinouts, I did not show my configuration however there are pictures below.</p>
<h3>Moar Software!</h3>
<p>With the hardware defined, we need to know what to shift out to the 595 in order to light the segments.  Since the 74HC595 works in binary but we are allowed to shift out a decimal number thanks to the arduino, the number to shift out is something that can be solved with some quick math.  This method of calculation applies to any device using a shift register, not just for this project so it may come in handy later on.    Each element has a value assigned to it that will light it.  &#8220;A&#8221; for example (top center) has the value of &#8220;1&#8243; while element &#8220;G&#8221; (center) has a value of 64 which gives us the following chart:</p>
<ul>
<li>A = 1</li>
<li>B = 2</li>
<li>C = 4</li>
<li>D = 8</li>
<li>E = 16</li>
<li>F = 32</li>
<li>G = 64</li>
</ul>
<p>In order to form the characters we want, we have to come up with a &#8220;truth table&#8221;  This table shows how we convert each number into a desired format, then convert that format into the elements desired, then we get the values we need to light the segments we want.   Below is the truth table for this project:</p>
<ul>
<li>(Triple dash) = Elements a,g,d = 1+64+8 =  73</li>
<li>0 = a,b,c,d,e,f = 1+2+4+8+16+32 = 63</li>
<li>1 = b, c = 2+4 = 6</li>
<li>2 = a, b, d, e, g = 1+2+8+16+64 = 91</li>
<li>3 = a,b,c,d,g = 1+2+4+8+64 = 79</li>
<li>4 = b,c,f,g = 2+4+32+64 = 102</li>
<li>5=a,c,d,f,g = 1+4+6+32+64 = 109</li>
<li>6=a,c,d,e,f,g = 1+4+8+16+32+64 = 125</li>
<li>7=a,b,c = 1+2+4 = 7</li>
<li>8=a,b,c,d,e,f,g = 1+2+4+8+16+32+64 = 127</li>
<li>9=a,b,c,f,g = 1+2+3+32+64 = 103</li>
</ul>
<p>The best way to use this truth table and the key values used earlier would be with a &#8220;switch&#8221; statement.  This is computationally faster than using a nested chain of if&#8230; then statements as shown below.  Copy and paste the below text into your Arduino environment and upload it.</p>
<pre>#include &lt;IRremote.h&gt;

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int latchPin = 4;
int clkPin = 3;
int dataPin = 2;
int digit = 0;

void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(clkPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  digit=73;
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin,clkPin,MSBFIRST,digit);
  digitalWrite(latchPin, HIGH);
}

void loop() {
  if (irrecv.decode(&amp;results)) {
    switch (results.value)  {
      case 0xFFA25D:
        digit=73;
        break;
      case 0xFF6897:
        Serial.println("DGT0");
        digit=63;
        break;
      case 0xFF30CF:
        Serial.println("DGT1");
        digit=6;
        break;
      case 0xFF18E7:
        Serial.println("DGT2");
        digit=91;
        break;
      case 0xFF7A85:
        Serial.println("DGT3");
        digit=79;
        break;
      case 0xFF10EF:
        Serial.println("DGT4");
        digit=102;
        break;
      case 0xFF38C7:
        Serial.println("DGT5");
        digit=109;
        break;
      case 0xFF5AA5:
        Serial.println("DGT6");
        digit=125;
        break;
      case 0xFF42BD:
        Serial.println("DGT7");
        digit=7;
        break;
      case 0xFF4AB5:
        Serial.println("DGT8");
        digit=127;
        break;
      case 0xFF52AD:
        Serial.println("DGT9");
        digit=111;
        break;
     }
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin,clkPin,MSBFIRST,digit);
     digitalWrite(latchPin, HIGH);
  irrecv.resume(); // Receive the next value
  }
}</pre>
<p>Once uploaded, your LED display should show the triple dash like in the image below</p>
<p><img class="aligncenter size-medium wp-image-1160" title="It lives!" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/2012-07-10-15.47.11-300x225.jpg" alt="It Lives!" width="300" height="225" /></p>
<p>If you get the triple dash, you should be able to hit any number on the keypad and change the number on the LED display.  In the below image, I&#8217;m hitting the digit 5, and the number 5 is displayed.</p>
<p><img class="aligncenter size-medium wp-image-1161" title="Remote Control Test" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2012/07/2012-07-10-15.47.25-300x225.jpg" alt="Remote Control Test" width="300" height="225" /></p>
<p>Currently, the code will allow you to hit any digit between 0 and 9 and the LED display will show the number you pressed. Pressing the POWER button will give you the triple dash again.</p>
<h4>Troubleshooting</h4>
<ul>
<li>If the LED display is disfigured but you get three segments lit, chances are you got two of the pins reversed. Cycle through the numbers on your remote and you should be able to identify the two pins that need to be swapped.</li>
<li>If you get nothing from the LED display, check your wiring.  Make sure you wired the 595 chip correctly to the LED display and to the Arduino.</li>
<li>If your LEDs are extremely bright, disconnect power immediately, you have shorted the LED display straight to the +5V rail and you may blow a segment.</li>
<li>If your LED display does not change from the triple dash, check your Serial Monitor and ensure that commands are being received by the Arduino.</li>
<li>If you are getting readouts on the Serial Monitor but nothing on the LED display, check that the Clock, Data and Latch pins are correct on the 74HC595.</li>
</ul>
<h3>Code Analysis</h3>
<p>The code is not very complex.  Basically, it checks to see if there is any data in the results from the irrecv.decode process (included in the library) and if so, it runs the switch statement against it.  If the code matches any of the case statements, it will set &#8220;digit&#8221; to that value and send out a small description of what button was pressed.  At the end of the switch statement, but still inside the if.. then statement, it will shift out the resulting digit, even if it&#8217;s the same.  Because of the if.. then statement, the Arduino will only shift out if there is something in the results variable and the digit will only change if the results variable matches any of the predefined case statements. This will eliminate the issue of noise interfering with the defined code values.  Be sure to <strong>not</strong> specify a default result in your case statement, as you do not want to process any erroneous or noisy IR signals.  The &#8220;Serial.println&#8221; statements can be removed, this is primarily a debugging and proof of concept code.</p>
<p>Keep in mind, after irrecv.decode has been called, you must restart the receiver by using the syntax &#8220;irrecv.resume();&#8221; otherwise your code will read once from the IR receiver and exit which would render your Arduino uncontrollable.</p>
<h2>What to do next?</h2>
<p>Now that you have the proof of concept and the library, you can do tons of things now.  The IRremote library we used has transmission capabilities as well as receiver capabilities so you could use your Arduino to control your TV and other appliances or perhaps, you could go with the idea in the summary and build a killbot to conquer Earth. Barring that, you could always use the remote to turn on and off appliances that don&#8217;t have a remote control.   Personally, I can see multiple applications, one specifically involving a light dimmer and an Arduino controlled servo. Instead of using VOL+ and VOL- for sound, it can control the lighting instead.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2012/07/10/hardware-remote-control-your-arduino/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Editorial:YWIV going dark for SOPA</title>
		<link>http://www.yourwarrantyisvoid.com/2012/01/17/editorial-ywiv-going-dark-for-sopa/</link>
		<comments>http://www.yourwarrantyisvoid.com/2012/01/17/editorial-ywiv-going-dark-for-sopa/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 03:59:25 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Site News]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1100</guid>
		<description><![CDATA[Ok, so here&#8217;s the deal.  I&#8217;ve been on the fence about whether or not to black out my site in formal protest of SOPA but after talking with several other website owners and operators and consulting with a lawyer friend of mine, I did confirm my worst fears.  While SOPA may be &#8220;well intentioned&#8221; to [...]]]></description>
				<content:encoded><![CDATA[<p>Ok, so here&#8217;s the deal.  I&#8217;ve been on the fence about whether or not to black out my site in formal protest of SOPA but after talking with several other website owners and operators and consulting with a lawyer friend of mine, I did confirm my worst fears.  While SOPA may be &#8220;well intentioned&#8221; to be a fight against piracy, the law is so vaguely written that it would allow anyone to shut down any website with little to no recourse or any due process.</p>
<p>As a self-generating content site, (I write my own articles and most of my images are hand-taken. Those that aren&#8217;t are linked and used with permission from the original content owners or with permission from the parent company.) this is seriously a threat to my sites&#8217; existences.  If I posted a bad review of a product didn&#8217;t like it, under SOPA,  they could scream that my site was enabling piracy and they could effectively steal my domain without any due recourse. I could not petition to get my domain back, nor could I do anything else legal about it.  All of my hard work on this site would have been wasted and even worse, under SOPA, they could even make it so I would lose all of my webhosting in its entirety.</p>
<p>I am opposed to any legislation that is written so vaguely and allows the indiscriminant shutdown of any website on the <strong><em>allegation</em></strong> of piracy.  I oppose any legislation that makes my ISPs the &#8220;police&#8221; of the Internet. I oppose any legislation that allows others to take control of my domains without due process.  If you are to charge me with something, you had best be prepared to defend yourself.</p>
<p>Other sites have taken notice.  Google, Reddit, The Electronic Frontier Foundation, Mozilla, and many others are joining in the protest tomorrow and I am going to be one of them.  We must send the warning to Congress that this must not be allowed to pass as it will destroy the Internet. Essentially, this will turn into a witch hunt, where everyone is guilty.</p>
<p>I understand that some of you may not understand and that some of you will be upset, however I will return on January 19th and I hope you will continue to read my site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2012/01/17/editorial-ywiv-going-dark-for-sopa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Networking: Bringing IPv6 into your network using pfSense</title>
		<link>http://www.yourwarrantyisvoid.com/2011/12/01/networking-bringing-ipv6-into-your-network-using-pfsense/</link>
		<comments>http://www.yourwarrantyisvoid.com/2011/12/01/networking-bringing-ipv6-into-your-network-using-pfsense/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 23:06:05 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[How-To's]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[pfSense]]></category>
		<category><![CDATA[router]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1047</guid>
		<description><![CDATA[The Internet as we know it is undergoing a significant change.  With the last IPv4 addresses being allocated out, the Internet has officially run out of address space.  IPv6 is the next-generation IP addressing system that aims to resolve this issue however the changes proposed are drastically different than the current IP schema currently in [...]]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1049" title="he-pfsense-ipv6-logo" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/he-pfsense-ipv6-logo.png" alt="Hurricane Electric, PfSense and IPv6" width="497" height="172" />The Internet as we know it is undergoing a significant change.  With the last IPv4 addresses being allocated out, the Internet has officially run out of address space.  IPv6 is the next-generation IP addressing system that aims to resolve this issue however the changes proposed are drastically different than the current IP schema currently in place and for most is quite a daunting task to switch. In this post, we will cover some basic IPv6 information and some fundamental differences between v4 and v6 (aside from tons of IPs), and finally we will build out a pfSense firewall with IPv6 using pfSense and a free IPv6 tunnel provided by Hurricane Electric. Read more to get started on the cutting-edge of Internet infrastructure.<span id="more-1047"></span></p>
<h1>IPv6 Introduction</h1>
<h2>First, the basics&#8230;.</h2>
<p>Understanding IPv6 networking may first come off as an extremely complicated endeavor however it&#8217;s not that much different from IPv4.  The biggest thing about IPv6 is the massive amount of IPs that are made available by the change in the network protocol.  To put it in perspective, the entirety of the existing IPv4 address space consists of approximately 4,228,250,625 addresses (from 0.0.0.0 to 255.255.255.255, or 255^4 including private network blocks and multicast addresses) An IPv6 network block (like the /64 network block that we&#8217;ll get from Hurricane Electric) contains  18,446,744,073,709,551,616 IPs.  The /64 network assigned to us from Hurricane Electric is only a minuscule fraction of the entire IPv6 address space.</p>
<p>An IP address in IPv4 uses four numbers in a dotted quad notation with numbers between 0 and 255, like 192.168.1.4 and will include a subnet mask like 255.255.255.0.  This is used to establish the &#8220;network&#8221; that an IP address is a member of. An IPv6 address is radically different, with 8 hexidecimal (from 0000 to FFF) numbers seperated by a colon (:), then following up with a subnet mask in CIDR notation. An example of an IPv6 address (in this case, ipv6.google.com) is 2001:4860:4002:0802:0000:0000:0000:1010.  Rather than spell all that out, you can use :: to represent one contiguous block of zeros, and leading zeros can be removed.  The formidable example address now becomes slightly less scary 2001:4860:4002:802::1010.  Another example of an IPv6 address in this &#8220;compressed&#8221; notation, would be the IP address for Facebook 2620:0:1cfe:face:b00c::3 (faceb00c, lol). Yet another funny IPv6 address is cisco.com, at 2001:420:80:1:c:15:c0:d06:f00d (c15co, f00d).</p>
<h2>Some differences in IPv4 and IPv6</h2>
<p>The biggest difference in IPv6 from a network standpoint is that it virtually eliminates the requirement for Network Address Translation.  Instead of proxying an IP address for multiple home networks/hosts, your IPv6 network is fully routable, meaning that you can access your home computer from the Internet without the need of using port forwarding or IP masquerading.  While you technically can NAT an IPv6 address, it&#8217;s no longer an absolute requirement for Internet access. Because the Internet can now access your network, it is especially important that your firewall is configured to deny incoming connections from the Internet and explicitly allow connections on an as-needed basis (like running a web server from home, etc..). We will establish a common ruleset later on, once we have completed the IPv6 configuration.</p>
<p>Another significant change in IPv6 is changes made to the DHCP protocol.  Instead of a DHCP server telling a host what the default gateway is for the attached network, the host will instead listen for a router advertisement and will use that in its internal routing table to know how to get to the public Internet.  This router advertisement is handled by radvd which announces the router&#8217;s IP address to the network.</p>
<h2>A few things to consider</h2>
<p>When <a href="http://www.worldipv6day.org/" target="_blank">World IPv6 Test Day</a> was enacted and executed last June, many major websites went online and started offering IPv4 and IPv6 dual stack websites for the purpose of testing the world&#8217;s readiness for IPv6.  Many important things were discovered that day including the fact that most CPE devices (like Linksys routers, DSL and Cable modems and other devices) were not IPv6 compatible.  This was later broadened to include many Internet-connected devices like DVRs, Media machines and other devices were also not ready for IPv6. While some sites maintain IPv6 connectivity, once World IPv6 Test Day closed, so did many sites on IPv6 connectivity.</p>
<p>Before you start out on bringing IPv6 into your network, it is important to understand that IPv6 is still regarded as being an experimental protocol. Most of the sites you are used to won&#8217;t work in a pure IPv6 environment so we are going to set up a dual-stack network.  This means that you will be able to bring in IPv6 connectivity for IPv6 only sites and still be able to access your IPv4 sites just like your network has done in the past.</p>
<p>It is also important to realize that most embedded class devices will not use IPv6.  Devices like embedded media players, game systems, WiFi access points, printers and the like  may not support IPv6 even with firmware updates from the manufacturer.  Some devices may get support later on through vendor updates however many devices will probably not work.</p>
<p>At the very least you will learn a lot about IPv6 deployment, and you will have plenty of time to test your equipment prior to IPv6 becoming mandatory.</p>
<h1>Enough of the theory already, Let&#8217;s get started.</h1>
<p>In order to bring IPv6 into your home, we will be using an IPb6 tunnel provided by Hurricane Electric&#8217;s <a href="http://tunnelbroker.net/" target="_blank">TunnelBroker.net</a> service.  The service is free, and they provide you with a full /64 IPv6 network to play with.  In addition, they provide a certification service to test your IPv6 knowledge and skills once your IPv6 connectivity is up and running.  They give you a series of goals to accomplish even after your tunnel is up and you&#8217;re routing away and plus, it makes for great bragging rights.</p>
<p>In order to pull this off, you&#8217;ll need the following:</p>
<ul>
<li>PfSense 2.0 installed and working at the edge router on your network.<strong></strong></li>
<li>A client computer for testing. ( Windows Xp, Windows Vista, Windows 7, Linux, etc..)</li>
<li>Network switch, etc to make sure your client computer is connected to your router.</li>
<li>A WAN Internet connection.  (DHCP, Static, PPPoE, etc does not matter as long as it&#8217;s broadband)</li>
</ul>
<p><strong>Please Note:</strong> Due to the fact that we are using git to sync experimental code, you <strong>cannot</strong> use pfSense Embedded.  I tried to find a way around this, but unfortunately even at the 4GB disk image size, I was never able to get it to fit and work.</p>
<p>The IPv6 configuration will be split up into six sections:</p>
<ol>
<li>Configuring your existing pfSense router to sync up the latest IPv6 code.</li>
<li>Registering for an IPv6 Tunnel from Hurricane Electric.</li>
<li>Configuring pfSense for the tunnel, and DHCPv6.</li>
<li>Configuring workstations for IPv6.</li>
<li>Performing website testing</li>
</ol>
<h2>1: Sync up the latest IPv6 code</h2>
<p>We&#8217;ll start off with our already established and running pfSense router. We will need to enable SSH on the router so we can get to the commandline.  This will be the only time you will need to access the commandline however I do recommend leaving it enabled so you can troubleshoot the IPv6 connection later on.</p>
<p>Start off by logging into the router.  Click on &#8220;System&#8221;, then &#8220;Advanced&#8221;.  Place a check box next to &#8220;Enable Secure Shell&#8221;.  If you don&#8217;t want to use the standard port of &#8220;22&#8243;, you can specify a different port below.  Scroll down to the bottom and hit &#8220;Save&#8221;.  Don&#8217;t worry about opening up your SSH port, this does not enable it on the WAN interface.</p>
<div id="attachment_1055" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/enablessh.png"><img class="size-medium wp-image-1055 " title="Enabling SSH" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/enablessh-300x196.png" alt="Enabling SSH" width="300" height="196" /></a><p class="wp-caption-text">Enabling SSH in pfSense</p></div>
<p>Open up PuTTY and type in the IP address of your router.  If you specified an SSH port, be sure to specify it here as well.  For reference, here is my PuTTY configuration.</p>
<div id="attachment_1056" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/enablessh2.png"><img class="size-medium wp-image-1056 " title="PuTTY settings" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/enablessh2-300x287.png" alt="PuTTY settings" width="300" height="287" /></a><p class="wp-caption-text">PuTTY settings</p></div>
<p>Upon successful connection, you will be prompted for a username.  Use the same username and password you use for the Web UI (admin/pfsense).  Once you have successfully logged in, you will get the same status screen like you see on the serial port showing the WAN and LAN statuses and a menu.</p>
<div id="attachment_1057" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession.png"><img class="size-medium wp-image-1057 " title="SSH menu" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession-300x240.png" alt="SSH menu" width="300" height="240" /></a><p class="wp-caption-text">SSH menu</p></div>
<p>Select option 8 (Shell) and then type in the following command:  <strong>pkg_add -r http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-8.1-release/Latest/git.tbz</strong>  This will install GIT and perform the update.  This will take several minutes to download and install all of the packages required to perform the sync.</p>
<div id="attachment_1058" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession2.png"><img class="size-medium wp-image-1058 " title="Installing Git" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession2-300x240.png" alt="Installing Git" width="300" height="240" /></a><p class="wp-caption-text">Installing Git</p></div>
<p>Once it has completed, type in <strong>exit</strong> or hit Ctrl-D to return to the SSH menu. At the SSH menu, type option <strong>12</strong> for the &#8220;pfSense Developer Menu&#8221;.</p>
<div id="attachment_1059" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession3.png"><img class="size-medium wp-image-1059 " title="Accessing the Developer Shell" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession3-300x240.png" alt="Accessing the Developer Shell" width="300" height="240" /></a><p class="wp-caption-text">Accessing the Developer Shell</p></div>
<p>Now we will do the GIT sync. It is important to follow these instructions exactly as this is where the current running pfSense code is synched up with the pfSense developer code.    At the pfSense developer shell prompt, type in <strong>playback gitsync</strong> and hit enter.</p>
<div id="attachment_1060" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession4.png"><img class="size-medium wp-image-1060 " title="Performing the Git sync" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession4-300x240.png" alt="Performing the Git sync" width="300" height="240" /></a><p class="wp-caption-text">Performing the Git sync</p></div>
<p>You will be prompted for the git branch to sync against.  Type in <strong>master</strong> and hit enter.  The next prompt will be for a custom RCS branch, just hit enter as we want to use the master branch only.  After you hit enter, the GIT Sync will begin.</p>
<div id="attachment_1061" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession5.png"><img class="size-medium wp-image-1061 " title="Specifying the Git Branch" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession5-300x240.png" alt="Specifying the Git Branch" width="300" height="240" /></a><p class="wp-caption-text">Specifying the Git Branch</p></div>
<p>Ok, now here&#8217;s the kicker.  <strong><em><span style="text-decoration: underline;">You must reboot!</span></em></strong> In the screenshot below, it looks like the upgrade has terminated and the device has restarted services however there are settings that have been changed that will only take effect on the next reboot.  The SSH Session should drop you back to the main SSH menu (what you saw when you initially logged in).  From here, select option <strong>5</strong> and answer <strong>y</strong> to reboot the device.</p>
<div id="attachment_1062" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession6.png"><img class="size-medium wp-image-1062 " title="Reboot after your SSH session gets terminated" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/sshsession6-300x240.png" alt="Reboot after your SSH session gets terminated" width="300" height="240" /></a><p class="wp-caption-text">Reboot after your SSH session gets terminated</p></div>
<p>When the router has successfully rebooted, check that your Internet connection works and that all is working well.  The one thing that remains is to set up an ICMP rule to allow Hurricane Electric to ping your WAN interface.  This is required as part of the tunnel setup. Login to your router, click on &#8220;<strong>Firewall</strong>&#8220;, then &#8220;<strong>Rules</strong>&#8220;.  Click the &#8220;+&#8221; add button at the bottom and add a new rule.  Set the interface to <strong>WAN</strong>, protocol to <strong>ICMP</strong>, and ICMP Type to <strong>Any</strong>.  (This can be modified later).  For the source, set the type to &#8220;<strong>Single Host or Alias</strong>&#8221; and enter the IP address of <strong>66.24.2.74</strong>.  This is the IP address of the IPv6 test endpoint.  Set the destination to &#8220;<strong>WAN Address</strong>&#8221; and lastly, enter a description.   Refer to the screenshot below if you need help.</p>
<div id="attachment_1063" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/wanping.png"><img class="size-medium wp-image-1063  " title="WAN Ping rule" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/wanping-300x257.png" alt="WAN Ping rule" width="300" height="257" /></a><p class="wp-caption-text">WAN Ping rule</p></div>
<p>Now that everything is in place in your router, it&#8217;s time to get your tunnel.</p>
<h2>2:Registering with Hurricane Electric</h2>
<p>Now that our router is prepped for the IPv6 installation, it&#8217;s time to register the account with Hurricane Electric.  Head on over to <a title="Hurricane Electric Tunnel Broker" href="http://tunnelbroker.net/" target="_blank">tunnelbroker.net</a> and register an account.  Once you&#8217;ve registered the account, you will get an email with the account information and a validation link.  After you validate, click on the &#8220;Create Regular Tunnel&#8221; on the left hand sidebar and you will be provided a form similar to the one in the screenshot below.  Be sure to select an endpoint that is as geographically close to you as possible or let the tool recommend the closest endpoint.  (Note: Hurricane Electric allows you to create up to five tunnels. If this is your first tunnel, you will not see the &#8220;You currently have 1 of 5 tunnels&#8221; message.)  Type your WAN IP address into the &#8220;IPv4 Endpoint&#8221; field, select the endpoint, then scroll down and hit &#8220;Create Tunnel&#8221;.</p>
<div id="attachment_1067" class="wp-caption aligncenter" style="width: 263px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel1.png"><img class="size-medium wp-image-1067 " title="Hurricane Electric Tunnel Setup" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel1-253x300.png" alt="Hurricane Electric Tunnel Setup" width="253" height="300" /></a><p class="wp-caption-text">Hurricane Electric Tunnel Setup</p></div>
<p>After your tunnel has been successfully created, you will get a page that shows your tunnel information.  At the bottom of the page, you will notice that the rDNS delegation fields are blank. Click the &#8220;delegate to dns.he.net&#8221; link to autofill the reverse nameservers with Hurricane Electric&#8217;s default nameservers.  Click &#8220;Save&#8221; to commit the changes, then print this page. You will need it for the pfSense page.  Keep in mind that the tunnel IP address and the Routed /64 are off by <strong><span style="text-decoration: underline;">one digit</span></strong>. This will be important later on.</p>
<div id="attachment_1068" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel2.png"><img class="size-medium wp-image-1068 " title="Tunnel Information Page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel2-300x286.png" alt="Tunnel Information Page" width="300" height="286" /></a><p class="wp-caption-text">Tunnel Information Page</p></div>
<p>If you are on a dynamic IP connection (DSL, Cable Internet, FiOS, etc&#8230;), there&#8217;s one more thing you need to be aware of.  Should your WAN IP change, you will need to update your tunnel. When you login to Hurricane Electric, you will get a page similar to the below, showing all of the configured tunnels on your account.</p>
<div id="attachment_1069" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel3.png"><img class="size-medium wp-image-1069 " title="Tunnel List Page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel3-300x205.png" alt="Tunnel List Page" width="300" height="205" /></a><p class="wp-caption-text">Tunnel List Page</p></div>
<p>To edit the tunnel, click on the tunnel name and you&#8217;ll be taken to the Tunnel Information page.  Click on the Client IPv4 address and make your IP change then simply click elsewhere on the page (not on a link) and wait for the text field to turn back to a link.  If it does not, it will provide an error message indicating the error (usually that it can not ping the WAN).</p>
<div id="attachment_1070" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel4.png"><img class="size-medium wp-image-1070 " title="WAN IP Setup Error" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/11/hetunnel4-300x297.png" alt="WAN IP Setup Error" width="300" height="297" /></a><p class="wp-caption-text">WAN IP Setup Error</p></div>
<h2>3: Configuring pfSense</h2>
<h3>Building up our tunnel endpoint</h3>
<p><strong>Note</strong>:  From here on out, I will be using the example IPs of <strong>2001:470:1234:567<span style="text-decoration: underline;">8</span>::</strong> for the IPv6 tunnel and <strong>2001:470:1234:567<span style="text-decoration: underline;">9</span>::</strong> for the Routed /64.  In your tunnelbroker.net configuration, you should have a similar offset (your tunnel is one IP less than your routed netblock).  Please keep this in mind as we go through the next steps as you can not get the two confused.</p>
<p>We have a synched router and we have our tunnel configuration. Now it&#8217;s time to start configuring pfSense.  We will start out by building out the tunnel endpoint. Login to the router and click on <strong>Interfaces &gt; Assign</strong> and click on the <strong>GIF</strong> tab.  We will be adding a GIF tunnel in order to bring in the IPv6 connectivity to our router. GIF uses <a href="http://www.ietf.org/rfc/rfc2893.txt" target="_blank">RFC2893</a> to encapsulate IPv6 into an IPv4 packet.  When we receive an encapsulated packet, pfSense will &#8220;unpack&#8221; it and reassemble it into an IPv6 packet before acting on it according to the firewall policy.  On the GIF tab, click the &#8220;<strong>+</strong>&#8221; link and enter your IPv6 tunnel endpoint information.</p>
<ul>
<li>Parent Interface should be set to WAN</li>
<li>GIF Remote Address should be the &#8220;Server IPv4 address&#8221;</li>
<li>GIF Tunnel Local Address should be the &#8220;Client IPv6 address&#8221;</li>
<li>GIF Tunnel Remote Address should be the &#8220;Server IPv6 address&#8221;</li>
<li>Description should be something descriptive but can be freeform.</li>
</ul>
<div id="attachment_1076" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense1.png"><img class="size-medium wp-image-1076" title="GIF interface page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense1-300x167.png" alt="GIF interface page" width="300" height="167" /></a><p class="wp-caption-text">GIF interface page</p></div>
<p>Once complete, hit &#8220;Save&#8221;. This will add the tunnel endpoint to the router. Click on <strong>Interface Assignments</strong> so we can assign it to a virtual interface.  To do this, click on the &#8220;<strong>+</strong>&#8221; icon and the GIF tunnel should show up as an OPT interface as shown in the screenshot below.</p>
<div id="attachment_1077" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense2.png"><img class="size-medium wp-image-1077" title="Interfaces page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense2-300x124.png" alt="Interfaces page" width="300" height="124" /></a><p class="wp-caption-text">Interfaces page</p></div>
<p>Now we need to configure the OPT interface. Click on <strong>Interfaces &gt; OPT1</strong>.  This will be the equivalent to the &#8220;WAN&#8221; of our IPv6 network.  Since it has never been used before, it is disabled by default. Place a checkbox next to &#8220;<strong>Enable Interface</strong>&#8221; which will add the IPv6 configuration section shown here. Set the <strong></strong></p>
<p>Click on the text &#8220;<strong>Add a new one</strong>&#8221; in the Gateway section and enter the configuration as shown.</p>
<ul>
<li>Default v6 Gateway should be <strong>Checked</strong>.</li>
<li>Gateway Name IPV6 is a brief one-word name to help you identify the gateway.  I have chosen &#8220;IPV6GW&#8221;.</li>
<li>Gateway IPv6 should be the <strong>Server IPv6 Address</strong>.</li>
<li>Description is an arbitrary length text to describe this gateway definition.</li>
</ul>
<p>When you&#8217;re done, you should have something similar to what is in the below screenshot.  For some reason, the gateway text showed up very small, so I increased the zoom so it was readable.</p>
<div id="attachment_1078" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense3.png"><img class="size-medium wp-image-1078" title="IPV6WAN setup" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense3-300x288.png" alt="IPV6WAN setup" width="300" height="288" /></a><p class="wp-caption-text">IPV6WAN setup</p></div>
<p>Click on &#8220;<strong>Save Gateway</strong>&#8221; first to commit the gateway information. You should see te IPv6 gateway show up in a dropdown.  Next, scroll down and click &#8220;<strong>Save</strong>&#8221; to save the Interface information.  Finally, click &#8220;<strong>Apply Changes</strong>&#8221; to apply the interface configuration and start the tunnel.  You can validate the tunnel&#8217;s operation by checking the dashboard (click on the pfSense logo).  If you don&#8217;t have the Interfaces and the Gateways windows, they can be added by clicking on the &#8220;<strong>+</strong>&#8220;  and selecting the relevant options.</p>
<div id="attachment_1079" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense4.png"><img class="size-medium wp-image-1079" title="Dashboard status page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense4-300x228.png" alt="Dashboard status page" width="300" height="228" /></a><p class="wp-caption-text">Dashboard status page</p></div>
<p>Now that the endpoint is up and running, it&#8217;s time to configure the LAN interface.</p>
<h3>Setting up the LAN interface</h3>
<p>Since we&#8217;re running in a dual-stack configuration, we are going to just add the IPv6 information to the existing IPv4 interface.  As an option, you could theoretically set up a VLAN and a new LAN interface and create an IPv6 only network.  This is something I&#8217;m planning on my network and something I&#8217;m sure I&#8217;ll cover in another article. Let&#8217;s start off by pulling up the LAN configuration via <strong>Interfaces &gt; LAN</strong>.</p>
<p>First thing to do is set the <strong>IPv6 Configuration Type</strong> to <strong>Static IPv6</strong>. This will show the IPv6 configuration section.  Enter the first IP address in the Routed /64 section from the tunnel information.  When complete, you should have something like the screenshot below.  Scroll down and hit <strong>Save</strong> to write the settings, then <strong>Apply</strong> to make the new settings active.</p>
<div id="attachment_1080" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense5.png"><img class="size-medium wp-image-1080" title="LAN configuration page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense5-300x279.png" alt="LAN configuration page" width="300" height="279" /></a><p class="wp-caption-text">LAN configuration page</p></div>
<h3>Setting up DHCPv6</h3>
<p>In order to bring the IPv6 configuration to your workstations, we will set up DHCPv6.  This is entirely optional as right now you could go ahead and set up static IPv6 addresses just as well as using DHCP however rather than typing insanely larger addresses into all of your workstations, it&#8217;s easier and faster to set up DHCPv6 and let the client OSes pull the DHCPv6 as needed.  To get started, click on <strong>Services &gt; DHCPv6 Server</strong> and then on the <strong>LAN</strong> tab.</p>
<ul>
<li>Set the <strong>Router Advertisements</strong> to <strong>Assisted</strong>.  This controls the radvd daemon mentioned earlier.  By setting the mode to &#8220;Assisted&#8221;, you are telling radvd to perform router advertisements on the local network. The radvd broadcasts are used by the DHCP client applications to set the default router.</li>
<li>Place a check next to <strong>Enable the DHCPv6 server on the LAN interface</strong>.</li>
<li>Enter the desired start and end addresses for your network DHCP range. Please note that unlike the &#8220;short notation&#8221; using the double colon, you must explicitly declare the zeroes for all octets.  In my example, I&#8217;m using 2001:470:1234:5679:0:0:0:100 as my start point and 2001:470:1234:5679:0:0:0:200 as my end point, allocating 256 addresses to DHCP (remember, IPv6 addresses are hexidecimal.)</li>
<li>Enter the Anycasted IPv6 DNS server from the Hurricane Electric tunnel configuration into the DNS server field.</li>
</ul>
<div id="attachment_1081" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense6.png"><img class="size-medium wp-image-1081" title="DHCPv6 configuration" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense6-300x282.png" alt="DHCPv6 configuration" width="300" height="282" /></a><p class="wp-caption-text">DHCPv6 configuration</p></div>
<h3>Configure some Firewall rules</h3>
<p>At this point, we have the router configured however without some firewall rules in place, we will not be able to route out or get a DHCP address. We will need to add a rule so that our IPv6 traffic can get out.  Click on <strong>Firewall -&gt; Rules</strong> then click on the <strong>LAN</strong> tab.  We are going to duplicate the outbound rule created for the LAN outbound.   In the rule listing, click on the &#8220;<strong>+</strong>&#8221; icon to the right of the IPv4 outbound rule and change the protocol from IPv4 to IPv6.  Once done, hit <strong>Save</strong> then <strong>Apply</strong>.  When you&#8217;re done, your LAN rules should look like the below.</p>
<div id="attachment_1082" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense7.png"><img class="size-medium wp-image-1082" title="Duplicated Firewall rules" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/pfsense7-300x109.png" alt="Duplicated Firewall rules" width="300" height="109" /></a><p class="wp-caption-text">Duplicated Firewall rules</p></div>
<h2> 4: Configure your workstations</h2>
<p>After you get the router configured, it&#8217;s time to set up a workstation.  For this test, I used a Linux box and a Windows 7 workstation.  For Windows, all that is needed is to make sure that the NIC has IPv6 support bound to it.  To do this, go to the Network and Sharing Center and click on the &#8220;Adapter Settings&#8221; on the left hand sidebar.  Right click the adapter and go to Properties.  Make sure that IPv6 is listed and checked as shown below:</p>
<div id="attachment_1085" class="wp-caption aligncenter" style="width: 248px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/ipv6nic.png"><img class="size-medium wp-image-1085" title="Windows 7 Network protocols list" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/ipv6nic-238x300.png" alt="Windows 7 Network protocols list" width="238" height="300" /></a><p class="wp-caption-text">Windows 7 Network protocols list</p></div>
<p>To test that it&#8217;s working properly, open up a command prompt and check to see that ipconfig is showing the proper IP address.  Disregard any fe80:: addresses as these are link-local and not routable for our purposes. Your output should look something similar to my output below:</p>
<div id="attachment_1086" class="wp-caption aligncenter" style="width: 289px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/ipconfig.png"><img class="size-medium wp-image-1086" title="Windows 7 ipconfig" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/ipconfig-279x300.png" alt="Windows 7 ipconfig" width="279" height="300" /></a><p class="wp-caption-text">Windows 7 ipconfig</p></div>
<p>In Linux, the setup is even easier.   Most Linux operating systems already have IPv6 enabled, so it&#8217;s just a matter of pulling an IP address.  Run <strong>sudo dhclient -6 -v {interface}</strong> where {interface} is your network interface.  In my output below, I am using wlan0.  The <strong>-v</strong> parameter is optional, this is only to show what dhclient is doing and that it picked up the address from pfSense.</p>
<div id="attachment_1088" class="wp-caption aligncenter" style="width: 217px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/Screenshot-Terminal.png"><img class="size-medium wp-image-1088" title="Linux dhcpcd output" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/Screenshot-Terminal-207x300.png" alt="Linux dhcpcd output" width="207" height="300" /></a><p class="wp-caption-text">Linux dhcpcd output</p></div>
<p>This next screenshot shows <strong>ifconfig</strong> with three IP addresses: One IPv4 address, one link local IPv6 address and the routeable IPv6 address.</p>
<div id="attachment_1089" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/Screenshot-Terminal-1.png"><img class="size-medium wp-image-1089" title="Linux ifconfig output" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/Screenshot-Terminal-1-300x131.png" alt="Linux ifconfig output" width="300" height="131" /></a><p class="wp-caption-text">Linux ifconfig output</p></div>
<p>If you want to make the IPv6 settings permanent, you can set this information in Network Manager.  Edit your existing network connection, click on <strong>IPv6 Network</strong>, set the &#8220;Method&#8221; dropdown to <strong>Automatic</strong> and hit <strong>Save</strong>.  I didn&#8217;t provide screenshots on this because it depends on the network type and connection name and it ended up being way more complex than necessary.  IPv6 connectivity should work on both wired and wireless Ethernet adapters.</p>
<h2>5: Time to test!</h2>
<p>There are several sites that are available that allow IPv6 testing and IPv6/v4 dual-stack testing. My favorite is <a href="http://test-ipv6.net" target="_blank">http://test-ipv6.net</a>.  The site does IPv6 and IPv4 dual stack testing and ensures that you are able to connect to IPv6 and IPv4 sites.  There is also test surfing to <a href="http://ipv6.google.com" target="_blank">http://ipv6.google.com</a> which is an IPv6 only site.   If all goes well, you should receive output like the below:</p>
<div id="attachment_1090" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/testipv6com.png"><img class="size-medium wp-image-1090" title="Test-ipv6.com test results" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/12/testipv6com-300x159.png" alt="Test-ipv6.com test results" width="300" height="159" /></a><p class="wp-caption-text">Test-ipv6.com test results</p></div>
<h1>So, what now?</h1>
<p>With IPv6 properly working on your network, you are good to go however there&#8217;s probably not much to look at.  Most of the sites I tested were IPv4 only and the few IPv6 sites I could find were mostly broken.    From a consumer-side standpoint, you will notice no difference in the operation of websites.  From a server standpoint, each IP address is routeable meaning that each and every IP in your netblock can run web-accessible services.  The thing now is to pay close attention to your firewall.</p>
<p><strong>Remember that all IPs are routeable!</strong>  Prior to this setup, your router implicitly &#8220;protected&#8221; your LAN by using network address translation. By default, the router would allow LAN connections to exit the router but any unsolicited connection from the Internet could not access the LAN workstations due to how NAT works.  We used port forwarding to allow outside Internet computers inside to access local services.  IPv6 has no such requirement and all IPv6 addresses are public.  You need to make sure that your router&#8217;s firewall is set up properly and only allows incoming connections to IPs as needed by your network.  Our firewall configuration is set up with a default deny policy with an explicit LAN outbound rule.  This means that inside IPv6 addresses can surf the Internet uninhibited but any unsolicited connection from the Internet is automatically blocked.</p>
<p><strong>Test your network devices!</strong> Test all of your devices, from your computers to your smartphones, printers and anything else that plugs into the network.  You&#8217;ll get a quick idea of what works on IPv6 and what doesn&#8217;t. You&#8217;ll also have a good idea of which manufacturers and what devices to look for firmware updates in order to get ready for when IPv6 goes live.</p>
<p>For further things to do with your tunnel, take a look at Hurricane Electric&#8217;s IPv6 certification test.  The IPv6 certification test will test your knowledge of IPv6 and setting up various services on an IPv6 server including email and a Web server.  It&#8217;s a good idea to give it a shot so you can get experience working with the new IPv6 network.</p>
<p>Hopefully all went well in your IPv6 configuration and you&#8217;re up and running. If not, post a reply and I&#8217;ll try my best to help out.</p>
<p>Happy Hacking!<br />
FIRESTORM_v1</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2011/12/01/networking-bringing-ipv6-into-your-network-using-pfsense/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Networking: Installing and configuring pfSense Embedded</title>
		<link>http://www.yourwarrantyisvoid.com/2011/11/11/networking-installing-and-configuring-pfsense-embedded/</link>
		<comments>http://www.yourwarrantyisvoid.com/2011/11/11/networking-installing-and-configuring-pfsense-embedded/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 02:54:03 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Embedded devices]]></category>
		<category><![CDATA[How-To's]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[pfSense]]></category>
		<category><![CDATA[router]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=969</guid>
		<description><![CDATA[After publishing the last post on networking and the security series, I felt it was necessary to go ahead and publish a piece on building a custom router.  I have been a fan of pfSense for the past four years and swear by it. It has the ease of use of a commercial GUI-driven router [...]]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-970" title="pfSense Logo" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/pfsenselogo.png" alt="pfSense Logo" width="300" height="110" /></p>
<p>After publishing the last post on networking and the security series, I felt it was necessary to go ahead and publish a piece on building a custom router.  I have been a fan of pfSense for the past four years and swear by it. It has the ease of use of a commercial GUI-driven router and unrivaled flexibility limited only by the hardware it is installed on.  In this howto article, we will cover installing pfSense on an embedded platform and initial configuration for getting your router up and running.</p>
<p><span id="more-969"></span></p>
<h3>First, an introduction to pfSense</h3>
<p>PfSense is a lightweight FreeBSD based distribution geared towards router and firewall installations. It has been around since 2004 when it was forked from the m0n0wall project and has since turned into an excellent stand-alone distribution for routing and firewalling.  Although pfSense is generally intended towards full-PC installations, they offer an embedded image for use without skimping on the features.  pfSense is well known in the Linux/Unix/BSD community and is very highly regarded for both it&#8217;s feature set and it&#8217;s flexibility.</p>
<p>A question I get asked a lot is &#8220;Why pfSense? Why not just buy a Linksys?&#8221;  The answer is about hardware and software.  While I do own a couple of Linksys routers and do admire Linksys for bringing NAT devices to the common user, their hardware is restrictive and is only usable in the standard configuration (1 WAN and 4 LAN/WIFI) Even though it has been proven several times that the hardware they use for the LAN portion can support advanced features like VLAN support, bridging, multiple interfaces/IP&#8217;s, they will never release this functionality to those that want it and will instead force the advanced user to look elsewhere. In Linksys&#8217;s view, the router dictates the network.  With pfSense, I can build a custom configuration however I deem fit, with multiple NICs for WAN and LAN, with custom configurations and with VLAN support.  Not to mention that &#8220;stock&#8221; pfSense even supports DHCP, Captive Portal (like &#8220;free wifi&#8221;) , DNS, VPN support, Fail Over mode and many other options that Linksys wouldn&#8217;t ever make available.  Even if I never use VPN support or use the Failover mode, it&#8217;s nice to know those features are there should I ever need them.</p>
<h3>Hardware Requirements:</h3>
<p>In order to use pfSense Embedded, you will need a computer that adheres to the below spec.  Of course more is better, but these are the minimum specs as posted on the pfSense website.</p>
<ul>
<li>CPU: 100MHZ x86 Pentium or equivalent.</li>
<li>RAM: 128 MB RAM</li>
<li>Serial Port</li>
<li>512MB Flash storage or 1GB hard drive</li>
<li>Two Network Adapters (NICs)</li>
</ul>
<p>Please note that some of the advanced features like VPN support, Captive Portal and some high-bandwidth connections may require faster processors than what is outlined below.  If you want to make sure your embedded platform matches spec, take a look at <a href="http://www.pfsense.org/index.php?option=com_content&amp;task=view&amp;id=52&amp;Itemid=49">pfSense&#8217;s hardware sizing guid</a>e which covers some of the items more in depth.</p>
<h3>A note on storage:</h3>
<p>The pfSense distribution comes in two flavors.  You have the &#8220;desktop PC&#8221; version for full-size computers with a CD ROM and a hard drive, and you have an &#8220;embedded&#8221; version which is for devices without a CDROM or hard drive and use some method of flash storage.  While you may be able to install the desktop PC version on the embedded device, it is not recommended as the distribution will be tailored for running on a hard drive, not a solid state memory device.  If you intend to use a hard drive, install the PC version.</p>
<p>You can use any IDE device for storage as long as it is recognized by your computer&#8217;s BIOS and is supported by FreeBSD.  I have not had a problem with either of these two stipulations, so you should not have any problems with it. One thing to consider is the use of an IDE to CF adapter <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822998003">like this one on Newegg</a>.  This particular device fits right into the IDE header on the motherboard and allows you to use a Compact Flash cartridge as an IDE hard drive which is perfect for installing and running pfSense.  The router in my home is a slightly different model, but is running on a Sandisk 4GB CF cartridge and has been doing so for the last two years without fail.</p>
<h3>My hardware:</h3>
<p>In this howto, I will be using a Transcend 1GB IDE solid-state device that I got on Ebay. This device plugs into the 40 pin IDE header and mimics a standard hard drive.  It is fast and will definitely get the job done.  The hardware I will be using is a set top box device I scavenged from a computer show a long time ago.  It has a 233MHz Cyrix processor , 512MB RAM, an onboard serial port, an IDE port, an onboard NIC and a single PCI riser slot where I will be installing a dual 10/100 Intel NIC.</p>
<h3>Getting Started:</h3>
<p>If you are using the CF to IDE adapter mentioned earlier, you can use a USB-CF reader and an application to burn the image to the CF cartridge.</p>
<p>In order to proceed, you will need the following items</p>
<ul>
<li>A Linux based computer with one free IDE port</li>
<li>An IDE-CF adapter with an appropriately sized CF card minimum 512MB, recommended 1GB, referred hereafter as flash cartridge.</li>
<li>The &#8220;target system&#8221; that will ultimately run pfSense with at least two NICs.</li>
<li>A third NIC (optional, for guest network, discussed in the &#8220;Advanced&#8221; section below).</li>
<li>A serial cable (Female to Female) and a Null Modem Adapter.</li>
<li>A pocket switch with a small patch cord.</li>
</ul>
<h3>Identify your Flash device</h3>
<p>First, attach your flash cartridge to your Linux PC and boot it.  Make sure that it boots your Linux distribution first and does not attempt to boot from the flash cartridge.  Once booted, login as root and run <strong>dmesg</strong>. Look for the /dev entry for your flash module.  You may be able to look for the manufacturer name as is the case in my output below:</p>
<div id="attachment_971" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/IDEhd.gif"><img class="size-medium wp-image-971 " title="IDE HDA dmesg output" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/IDEhd-300x128.gif" alt="My Transcend module is listed as hda" width="300" height="128" /></a><p class="wp-caption-text">My dmesg output.</p></div>
<p>In the output above, my Transcend module was recognized as hda (primary master HD), so my /dev entry is /dev/hda.  We will need this later on to burn the image.</p>
<h3>Download, validate, burn:</h3>
<p>Now that we know what device we need to burn to, it&#8217;s time to get the image.  Head on over to <a href="http://www.pfsense.org/mirror.php?section=downloads">the pfSense Mirror selection page</a> and pick a server that&#8217;s closest to you.</p>
<p>You should then be presented with a list of images named <strong>pfSense-1.2.3-RELEASE-XXXX-nanobsd.img.gz</strong> where XXXX is a choice of 512mb, 1g, 2g and 4g images.  In my particular case, I will be using pfSense-1.2.3-RELEASE-1g-nanobsd.img.gz as it is pre-built to a 1gig flash cartridge.</p>
<p>Use <strong>wget</strong> to download the image along with the accompanying .md5 file as shown in the sample output below. Note: URLs in the below image may differ depending on the mirror you are using, but the filenames will be the same.</p>
<div id="attachment_973" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wget.gif"><img class="size-medium wp-image-973 " title="wget download of files" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wget-300x153.gif" alt="wget download of files" width="300" height="153" /></a><p class="wp-caption-text">wget download of files</p></div>
<p>Once both files have downloaded, use <strong>md5sum -c </strong>to check the file for consistency against the provided md5 checksum as shown in the sample output below.</p>
<div id="attachment_974" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/md5sum.gif"><img class="size-medium wp-image-974 " title="md5sum validation" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/md5sum-300x153.gif" alt="md5sum validation" width="300" height="153" /></a><p class="wp-caption-text">md5sum validation</p></div>
<p>If the MD5 check returns <strong>OK</strong> then you are clear to proceed. If not, go back and re-download the file again. Make sure you downloaded the same file and md5 checksum.  In order to burn it, we will use <strong>zcat</strong> to cat the zipped image out to the /dev entry mentioned earlier.  My syntax will be <strong>zcat pfSense-1.2.3-RELEASE-1g-nanobsd.img.gz | dd of=/dev/hda bs=16k</strong>however, if your flash cartridge shows up at another location other than /dev/hda, be sure that you change the command above to point to the proper device.  Once the command completes, it should look like this:</p>
<div id="attachment_975" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/burncomplete.gif"><img class="size-medium wp-image-975 " title="Image Burn Completed" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/burncomplete-300x153.gif" alt="Image Burn Completed" width="300" height="153" /></a><p class="wp-caption-text">Image Burn Completed</p></div>
<p>Now that the image burn is done, shutdown the Linux box and pull your flash cartridge out and install it in the device that is going to run pfSense.  Go ahead and connect it up but do not attach any network cables to the interfaces just yet.  You will also need to connect the serial cable with a null modem adapter to the device to continue initial setup.</p>
<h3>Initial Configuration and Setup</h3>
<p>Now that we&#8217;ve burned the image, we are ready to do the initial setup.  This entails doing some NIC probing to find the network adapters in the system and to assign them to their respective duties (WAN, LAN, Optional Interface 1, etc).  You should only ever need to do this once as once the NICs are set up and the router is running, you can do everything including re-assign the interfaces from the web-based GUI.</p>
<p>Open up PuTTY, Hypertrm or your favorite terminal application and set the serial port parameters to 9600 baud, no parity 8 data bits, 1 stop bit.  Turn on the embedded device and after a moment, you should see some BSD boot stuff flash past.  Wait until it prompts you to set up VLAN information as shown below:</p>
<div id="attachment_976" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/vlaninfo.gif"><img class="size-medium wp-image-976 " title="Vlan Setup prompt" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/vlaninfo-300x167.gif" alt="Vlan Setup Prompt" width="300" height="167" /></a><p class="wp-caption-text">Vlan Setup Prompt</p></div>
<p>If you are lucky, you should see two interfaces, one for each NIC.  If you have three network cards in your system, you will see three different interfaces.  In the above screenshot, I have em0, em1 and fxp0.  Since we will not use VLANs for our basic or our advanced configurations, we will answer &#8220;N&#8221; here.</p>
<p>Now, we will do some network probing to figure out exactly which NIC  goes to which interface using the pocket switch and the patch cord.  Don&#8217;t plug anything in yet.</p>
<div id="attachment_977" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/probelan.gif"><img class="size-medium wp-image-977 " title="Probe for LAN interface" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/probelan-300x167.gif" alt="Probe for LAN interface" width="300" height="167" /></a><p class="wp-caption-text">Probe for LAN interface</p></div>
<p>With nothing plugged into the network interfaces, hit a and hit enter.  This will start the autodetection process. When prompted, attach the pocket switch to the interface you will use as the LAN interface and make sure that the LINK light on the switch and the NIC come on.  Hit Enter and you should see a message where it detected the LAN interface link come up.  It will then prompt you for the WAN interface.  Hit a then enter again and move the patch cord to the WAN interface and hit enter.  Repeat this process for the Optional interface (OPT1) or if your router only has two NICs, just hit enter.  Refer to the below output.</p>
<div id="attachment_978" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/assignednics.gif"><img class="size-medium wp-image-978 " title="Assigned NICs" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/assignednics-300x167.gif" alt="Assigned NICs" width="300" height="167" /></a><p class="wp-caption-text">Assigned NICs</p></div>
<p>Be sure that you only change the patch cord when it tells you to.  If you disconnect the cable at the &#8220;hit A for autodetect&#8221; prompt, it may not detect link when it should.  If you run into this issue, disconnect the patch cord and restart your router.  Allow it to boot up and start over.  Once you get done assigning interfaces, simply hit Enter to exit assignment.  It will print the current assignments of the interfaces and ask you to validate.  Answer Y if the displayed assignments are correct and hit Enter, otherwise hit N and start over or restart the device.</p>
<p>Assuming all went well, you will see it do a bunch of additional configuration.  Once you get to the menu as shown below, you can then disconnect the serial cable and proceed with the configuration of the pfSense router.</p>
<div id="attachment_979" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/configdone.gif"><img class="size-medium wp-image-979" title="Configuration completed" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/configdone-300x167.gif" alt="Configuration Completed." width="300" height="167" /></a><p class="wp-caption-text">Configuration Completed</p></div>
<p>&nbsp;</p>
<h3>Continuing the Configuration</h3>
<p>Connect the pocket switch up to the LAN port of the router and connect your router&#8217;s WAN port to your Internet connection.  Connect a computer to an unused port on the pocket switch and start it up. Once booted, you should have an IP address in the 192.168.1.x subnet and depending on whether or not your Internet connection is DHCP, you may already be able to surf.</p>
<p>Open a browser and go to http://192.168.1.1 and when prompted login with the username of <strong>admin</strong> and the password of <strong>pfsense</strong>.  If all goes well, you should see a screen that looks like the one below.</p>
<p>&nbsp;</p>
<div id="attachment_982" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard.gif"><img class="size-medium wp-image-982" title="pfSense Wizard" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard-300x181.gif" alt="pfSense Wizard" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard</p></div>
<p>&nbsp;</p>
<p>Click &#8220;Next&#8221;</p>
<p>On this screen, you will set some basic network configuration parameters like the pfSense&#8217;s hostname, local domain and the two DNS servers.  Use the ISP provided DNS servers here and click Next.</p>
<p>&nbsp;</p>
<div id="attachment_983" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard2.gif"><img class="size-medium wp-image-983" title="pfSense Wizard, page 2" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard2-300x181.gif" alt="pfSense Wizard, page 2" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page 2</p></div>
<p>&nbsp;</p>
<p>On this screen, we will set up the timeserver and the timezone of the firewall.  Set the timezone where appropriate and then either use the provided time server or set your own.  I left it default and have not noticed any issues with time reporting.</p>
<p>&nbsp;</p>
<div id="attachment_984" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard3.gif"><img class="size-medium wp-image-984" title="pfSense Wizard, page 3" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard3-300x181.gif" alt="pfSense Wizard, page 3" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page 3</p></div>
<p>&nbsp;</p>
<p>The next screen is where we will set up the WAN parameters.  Start off with selecting which type of WAN link you have.  Choices are DHCP (default),  Static IP, PPPoE and PPTP.  For each selection, there is a relevant section that must be completed.  Since I use DHCP, I left it as default.</p>
<p>&nbsp;</p>
<div id="attachment_985" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard4.gif"><img class="size-medium wp-image-985" title="pfSense Wizard, page 4" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard4-300x181.gif" alt="pfSense Wizard, page 4" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page 4</p></div>
<p>&nbsp;</p>
<p>Pay special attention to the bottom two options.  The first option &#8220;Block RFC1918 networks&#8221; prevents LAN IP addresses from the &#8220;private&#8221; networks from entering from the WAN interface. Private networks are 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16.  Unless you are using this router inside another NAT environment, this option is best left turned on.</p>
<p>The other option &#8220;Block Bogon Networks&#8221; should be left enabled. This prevents non-routed and not-assigned networks from being routed against from your WAN interface. Since these addresses are not routed and not assigned, they should never contact your router anyways.</p>
<p>&nbsp;</p>
<div id="attachment_986" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard5.gif"><img class="size-medium wp-image-986" title="pfSense Wizard, page 5" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard5-300x181.gif" alt="pfSense Wizard, page 5" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page4, Bogon networks and RFC1918 options</p></div>
<p>&nbsp;</p>
<p>Now we are at the LAN configuration.  This is where we can change the router&#8217;s internal IP address and subnet mask.  Please note that most of pfSense uses CIDR notation, so you may want to get familiar with it or have a <a href="http://www.subnet-calculator.com/cidr.php" target="_blank">CIDR calculator</a> at the ready.<strong><em></em></strong> Tip: a /24 is the same as 255.255.255.0</p>
<p>&nbsp;</p>
<div id="attachment_987" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard6.gif"><img class="size-medium wp-image-987" title="pfSense Wizard, page 5" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard6-300x181.gif" alt="pfSense Wizard, page 5" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page 5</p></div>
<p>&nbsp;</p>
<p>This screen allows us to change the default password of <strong>pfsense</strong>.  I highly recommend changing it to something memorable.  If you forget it, you can always reset it via a serial connection without resetting the router back to factory settings.</p>
<p>&nbsp;</p>
<div id="attachment_988" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard7.gif"><img class="size-medium wp-image-988" title="pfSense Wizard, page 6" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wizard7-300x181.gif" alt="pfSense Wizard, page 6" width="300" height="181" /></a><p class="wp-caption-text">pfSense Wizard, page 6</p></div>
<p>&nbsp;</p>
<p>Finally we have reached the end of the wizard.  Click &#8220;Reload&#8221; and wait a few minutes.  During this time, the router will reboot itself to get adjusted into the new environment.  Let the web page reload the router&#8217;s admin page and it should take you to a configuration page like the one below.</p>
<p>&nbsp;</p>
<div id="attachment_989" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/status.gif"><img class="size-medium wp-image-989" title="pfSense main status page" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/status-300x181.gif" alt="pfSense main status page" width="300" height="181" /></a><p class="wp-caption-text">pfSense main status page</p></div>
<p>&nbsp;</p>
<p>Once you are at this screen, you should be able to browse the Internet.</p>
<h3>Some basic tips:</h3>
<ul>
<li>Portforwarding can be set up under Firewall -&gt; NAT and works pretty much like you would expect a Linksys box to work.  Be sure to leave the &#8220;Auto Add a firewall rule to permit traffic through this NAT rule&#8221; at the bottom checked.  This will create a matching rule on the WAN side to allow traffic along with the rule to bring the traffic from the WAN to your destination computer.</li>
<li>You can see each interface&#8217;s status by going to Status -&gt; Interfaces.  If you are on a PPPoE or PPTP connection, you can disconnect and reconnect from this page.  If you are using DHCP, you can also release and renew your IP here.</li>
<li>If you run into trouble performing port forwarding, you can access the system firewall logs via Status -&gt; System Logs.  Be sure to turn on Logging on your rules so you can see new connections as they are being performed.</li>
<li>If you&#8217;re having problems with a specific host, you can access a packet capture utility via Diagnostics -&gt; Packet Capture</li>
<li>If you want to diagnose upstream Internet connectivity issues, you can access Traceroute via Diagnostics -&gt; Traceroute. and a ping utility via Diagnostics -&gt; Ping</li>
<li>Like numbers and graphs? Check out the system traffic graph (Status-&gt; Traffic Graph) and the system RRD graph (Status -&gt; RRD Graphs).  You may need to install the Adobe SVG viewer to view these graphs.</li>
<li>Unlike a Linksys box, it is recommended to halt the router before powering down and use the reboot function if a restart is needed.  Both options appear under Diagnostics with the labels &#8220;Halt system&#8221; and &#8220;Reboot system&#8221; respectively.</li>
</ul>
<h3>What&#8217;s next?</h3>
<p>Even in its basic configuration you already have a very powerful router on your hands.  The sky&#8217;s the limit. The pfSense installation can support a great many different configurations and options so don&#8217;t think that you&#8217;re locked into a single configuration.  Out of the box, pfSense has the software support for DHCP, DNS server, and other basic functionality as well as more things like CARP Failover, Open NTPD (Time server), OpenVPN, Remote Syslog, Traffic aggregation, and many other features that warrant exploration.</p>
<p>In a follow up article, I will explore setting up an advanced configuration, establishing a VLAN to isolate a wireless network from the wired network while still providing Internet access.  This is a useful configuration for you that like to share your Internet access but don&#8217;t want to make your home network vulnerable.</p>
<p>Happy Hacking!</p>
<p>FIRESTORM_v1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2011/11/11/networking-installing-and-configuring-pfsense-embedded/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Reviews: Sparkfun Inventor&#8217;s Kit at Mircocenter</title>
		<link>http://www.yourwarrantyisvoid.com/2011/09/09/reviews-sparkfun-inventors-kit-at-mircocenter/</link>
		<comments>http://www.yourwarrantyisvoid.com/2011/09/09/reviews-sparkfun-inventors-kit-at-mircocenter/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 00:07:25 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[parts]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=1012</guid>
		<description><![CDATA[After reading this post on Hack-a-day, I went to the local MicroCenter to see what all they had to offer in a brick-and-mortar store.  I remember when Parallax and RadioShack had joined together and while the new availability had made it easier to get started with microcontrollers, the most common expression recalled is one of [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_1013" class="wp-caption aligncenter" style="width: 198px"><img class="size-full wp-image-1013" title="Sparkfun logo" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/sparkfun.gif" alt="Sparkfun logo" width="188" height="105" /><p class="wp-caption-text">Sparkfun at Microcenter!</p></div>
<p>After reading <a href="http://hackaday.com/2011/09/07/need-something-in-a-pinch-sparkfun-products-now-at-micro-center/" target="_blank">this post on Hack-a-day</a>, I went to the local MicroCenter to see what all they had to offer in a brick-and-mortar store.  I remember when Parallax and RadioShack had joined together and while the new availability had made it easier to get started with microcontrollers, the most common expression recalled is one of sadness at the general disarray of the parts cabinets.  Thankfully Microcenter seems to have done Sparkfun right.  Read on for my initial impressions of Microcenter&#8217;s offerings and a full review of my first Arduino kit, the Sparkfun Inventor&#8217;s Kit.<span id="more-1012"></span></p>
<p>If you are interested solely in the review, scroll down to the &#8220;<strong>Finally, the review!</strong>&#8221; section below.</p>
<h3> Online Only stores and Brick and Mortar stores intersect, a bit of history.</h3>
<p>A lot of online-only stores have made offerings into brick and mortar retail stores  with varying amounts of success, unlike retail stores going into online offerings which anyone would say has been a huge success and convenience.  Unfortunately, the DIY/Hobbyist market hasn&#8217;t seen such a success and for the most part has remained largely an online-only affair.</p>
<p>Several years ago, Parallax announced that they would start offering some sensors and kits for sale at Radio Shack.  After hearing the news, I was tentatively excited however after seeing their initial offering, I don&#8217;t think Parallax was done right by Radioshack. They were given half of a disorganized &#8220;parts drawer&#8221;  and a couple of pegs to offer hanging merchandise.  Despite Parallax&#8217;s attempt, the move into retail ultimately floundered. It is my belief that if Radio Shack had given Parallax&#8217;s parts offering a bit more shelf space  and Parallax had made more of an initial offer in Parallax&#8217;s own packaging, they might have been able to make it more successful. Instead, Parallax&#8217;s limited offering (around 10 sensors and the &#8220;What&#8217;s A Microcontroller&#8221; kit) and Radio Shack&#8217;s shoddy mismanagement of the parts bins where the sensors were stored served to bury the Parallax name in the forgotten corners of the store.</p>
<p>Although there was a post several months ago with a shot of custom Parallax retail packaging, I can&#8217;t find the link now, nor did any searching reveal any information. Several other companies watched the Parallax and Radio Shack situation unfold and took notes, now it&#8217;s time to evaluate another initial transitional offering from online only to online/brick-and-mortar offerings.</p>
<h3>Now, to Sparkfun and Microcenter&#8230;</h3>
<p>Sparkfun Electronics has been well known in the Arduino community with their extensive offerings online. Chances are, if there&#8217;s a sensor out there, they have it either in kit form or as a complete pre-fab module.  When I heard that they are making an offering through Microcenter, I was thankful that I lived near Microcenter. Using Parallax and Radio Shack as an example of a failed attempt, I went to Microcenter to scope out their product  offerings.  I was very pleasantly surprised.  Sparkfun&#8217;s initial product offering outpaces Parallax&#8217;s offering by a significant margin as shown in the image below.  Not only do they offer a Getting Started kit (reviewed below), they also offer a wide variety of parts and shields for the Arduino platform.</p>
<div id="attachment_1014" class="wp-caption aligncenter" style="width: 235px"><img class="size-medium wp-image-1014" title="Sparkfun Offering at Microcenter." src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/IMG_20110909_105030-e1315601462879-225x300.jpg" alt="Sparkfun Offering at Microcenter." width="225" height="300" /><p class="wp-caption-text">Sparkfun Offering at Microcenter.</p></div>
<p>You can see in the above photo that they have a lot to offer. From my estimates, they had the Arduino platform as well as the Inventor&#8217;s kit and several other non-Arduino projects.  They also offered a wide array of sensors and components as well as several Arduino shields in kit form. Some of the shields they offer is the Arduino motor shield, Arduino Prototype Shield with microSD card reader and the Arduino Joystick Shield.  Their component offering is equally impressive with a multitude of sensors, both serial and parallel character LCD displays, breadboards and modules. Something I saw that I plan on getting later on is a dedicated 3.7V Lithium Polymer charging module with battery.  This module will charge off a USB port and will keep an Arduino running for 50 hours according to the box.  Having something like this is a big bonus when working on embedded hardware.</p>
<p>They also offer several kits like the X-Bee modules kit (which is probably my next purchase) which contain everything you need to get started.  You get a USB to Serial converter board, two X-Bee modules and an X-Bee to Arduino interface shield.  Their RFID kit also has the same level of thought put into it with the necessary adapter board, the RFID sensor and sample RFID cards to experiment with.</p>
<p>In addition to their parts and components, I found something I had been wanting personally. They had tool kits available in store. The kits were ranged according to skill level (easy, medium and complex) with the complex kit featuring a multimeter and soldering iron, while the medium kit only offered the soldering iron.  As the user&#8217;s skill level progresses, they can add to their kit as needed.</p>
<p>One thing that seemed to stand out about their Arduino offering is that they introduced three flavors of Arduino.  The Arduino Uno (which comes in the Inventor&#8217;s kit as well as individually), The Arduino Mini (and the related FTDI programming module) and the Breadboard Arduino (Arduino made on breadboard rather than the standard PCB board).</p>
<p>For those of you asking about cost, this was one of my concerns as well.  In my previous experience, anything in a brick-and-mortar store is usually more expensive.  I did a side-by-side comparison with my phone as I priced random components and kits and I found that the cost at the store was pretty much dead on, only varying by a few cents.</p>
<h3>Final thoughts</h3>
<p>I am thankful that Sparkfun and Microcenter teamed up and I am hoping that they continue to expand their product selection.  I have a feeling that there are a lot of people out there that are wanting to get into microcontrollers and embedded electronics however just aren&#8217;t convinced and need that one little push over from &#8220;Maybe&#8221; to &#8220;Definitely&#8221;.  I can&#8217;t wait to see what is &#8220;in store&#8221; next.  (That was a pun, laugh!)</p>
<p>And without more blathering about Sparkfun and Microcenter, finally we get to the review.</p>
<h2><strong>Finally, the Review!</strong></h2>
<p>The kit I picked up is the <a href="http://www.sparkfun.com/products/10339" target="_blank">Retail version of the SparkFun Inventor&#8217;s Kit (SIK)<strong></strong></a>which has everything one would need to get started with the Arduino and electronics. I won&#8217;t enumerate the full list of materials in the box, however I will present several pictures as shown below.</p>
<div id="attachment_1015" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1015" title="SIK kit cover" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2138-300x225.jpg" alt="SIK Kit cover" width="300" height="225" /><p class="wp-caption-text">SIK Kit cover</p></div>
<p>Most of the kits on the market have a hinge at one end however Sparkfun&#8217;s kit has a completely detached cover meant to be removed. This presents the bonus of not eating up twice the kit&#8217;s floor space on your desk.</p>
<div id="attachment_1016" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1016" title="Kit Contents" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2139-300x225.jpg" alt="Kit Contents" width="300" height="225" /><p class="wp-caption-text">Kit Contents</p></div>
<p>Inside the kit comes a nicely packaged assortment of parts in the right hand compartments and in the top compartment.  More on those in a bit.  The left hand compartment contains several pin jumpers for breadboarding and Arduino connections and the center large compartment holds the USB cable, the circuit flash cards, the Arduino in its own box and the mounting plate and breadboard.</p>
<div id="attachment_1017" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1017" title="Arduino Box" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2140-300x225.jpg" alt="Arduino Box" width="300" height="225" /><p class="wp-caption-text">Arduino Box</p></div>
<p>The Arduino Uno comes in its own little box, prepackaged and QC&#8217;ed from Italy where the Arduino was built and designed.</p>
<div id="attachment_1018" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1018" title="Unboxed Arduino" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2141-300x225.jpg" alt="Unboxed Arduino" width="300" height="225" /><p class="wp-caption-text">Unboxed Arduino</p></div>
<p>Along with the Arduino Uno comes a handful of stickers and a little pamphlet with more information about the Arduino.</p>
<div id="attachment_1019" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1019" title="Mounted Arduino and Breadboard" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2142-300x225.jpg" alt="Mounted Arduino and Breadboard" width="300" height="225" /><p class="wp-caption-text">Mounted Arduino and Breadboard</p></div>
<p>The mounted Arduino and breadboard on the included Sparkfun mounting plate.  This gives the user a good and stable place to work with the Arduino and the sample circuits in order to understand the Arduino&#8217;s capabilities.</p>
<div id="attachment_1020" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1020" title="Parts Pictures" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2143-300x225.jpg" alt="Parts Pictures" width="300" height="225" /><p class="wp-caption-text">Parts Pictures</p></div>
<p>The other parts of the SIK kit include:</p>
<ul>
<li> 74HC595 shift register (pictured)</li>
<li>Rotary Potentiometer</li>
<li>Photoresistor</li>
<li>Two pushbuttons</li>
<li>Piezo speaker</li>
<li>Several LEDs</li>
<li>Several Resistors in a few different values</li>
<li>two Diodes</li>
<li>Transistor (2N2222 variant)</li>
<li>Subminiature Hobby Servo</li>
<li>DC Motor</li>
<li>Flex sensor (top center)</li>
<li>Variable Flex resistor (under sensor)</li>
<li>Additional headers and pins</li>
</ul>
<p>The kit also includes a small booklet that has several circuits and sample code to get started.</p>
<div id="attachment_1021" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1021" title="Manual, flashcards and USB cable" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/09/DSCF2144-300x225.jpg" alt="Manual, flashcards and USB cable" width="300" height="225" /><p class="wp-caption-text">Manual, flashcards and USB cable</p></div>
<p>The booklet (pictured) contains several circuits and is intended to be used with the flash cards together in order to guide the novice through building the circuits and becoming familiar with the Arduino.  The flash cards each contain a circuit diagram that correlates to how the components should be connected to the Arduino and the book contains sample code with a brief explanation of how the code works.</p>
<h3>Thoughts on the booklet itself</h3>
<p>The book is targeted at new users to the Arduino platform however I quickly came to the conclusion that this kit is not targeted at beginners to electronics.   Coming from the &#8220;What&#8217;s A Microcontroller&#8221; world that explained everything including the basic 101&#8242;s of electronics, this may be a bit off-putting for some however with an understanding of some of the basics, this may serve to bridge the gap between building basic passive electronics projects and more advanced digital electronics projects.</p>
<p>Unlike the &#8220;What&#8217;s A Microcontroller&#8221; kit, there is no complete guide to the command reference included in the kit however the Basic Stamp and the Arduino both have extensive community support.</p>
<h3>Final Thoughts on the Kit</h3>
<p>The Sparkfun Inventor&#8217;s Kit appears to be well stocked with a typical selection of components fit for a beginner&#8217;s kit and will make a good start in working with the Arduino, even if you have never had any microcontroller experience.  While I can&#8217;t recommend this kit as a complete beginner&#8217;s guide to electronics, any newbie should be able to perform additional research to locate the answers they seek.  This is not a completely offline course but I do not consider this to be enough of a deterrent to stop from recommending the kit.  I feel that this kit will be a great addition to any electronics bench and will help anyone with even the most basic electronics experience get started with the Arduino.</p>
<p><strong>Verdict:  Buy!</strong></p>
<p>Cost: $99</p>
<p>Found at: Microcenter and sparkfun.com (sku: <a href="http://www.sparkfun.com/products/10339" target="_blank">RTL-10339</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2011/09/09/reviews-sparkfun-inventors-kit-at-mircocenter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reviews: WD TV Live Plus</title>
		<link>http://www.yourwarrantyisvoid.com/2011/08/26/reviews-wd-tv-live-plus/</link>
		<comments>http://www.yourwarrantyisvoid.com/2011/08/26/reviews-wd-tv-live-plus/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 17:06:02 +0000</pubDate>
		<dc:creator>firestorm_v1</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Product Reviews]]></category>
		<category><![CDATA[media center]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Small Form Factor]]></category>

		<guid isPermaLink="false">http://www.yourwarrantyisvoid.com/?p=992</guid>
		<description><![CDATA[In this post, I will review a recently acquired WD TV Live Plus purchased from Microcenter for around $100.  The quest was to find a media player solution that could read media from network shares and play them with minimal fuss.  Since this is going to be attached to the primary TV, it has to [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-993 aligncenter" title="WD logo" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/wdmonogramc-300x199.gif" alt="WD logo used with permission granted from wdc.com" width="300" height="199" /></p>
<p style="text-align: left;">In this post, I will review a recently acquired WD TV Live Plus purchased from Microcenter for around $100.  The quest was to find a media player solution that could read media from network shares and play them with minimal fuss.  Since this is going to be attached to the primary TV, it has to be &#8220;Girlfriend Approved&#8221; and easy to use.  I believe that the WD TV Live Plus fits this requirement adequately however the installation of the device could be easier.  Once done, the device is wonderful.  Read the full review after the break.</p>
<p style="text-align: left;"><span id="more-992"></span></p>
<h2 style="text-align: left;">Foreword</h2>
<p>One of the things that I&#8217;ve been keeping a close eye on is the development of the media center computer.  A non-PC PC that is used to play local network content and can provide other services through the TV and still maintain the ease of use of a standard DVD player.  I had previously experimented with XBMC and was pleased with it&#8217;s overall hardware support and the features it supported &#8220;out of the box&#8221; however the UI was a bit kludgy and having to predefine all media sources and items before it would show up.  It also didn&#8217;t help much that the only device that I had that would work properly was an old Averatec laptop which did work very well, even with the embedded Intel graphics.</p>
<p>I skipped the newer iterations of XBMC partially due to lack of time and due to the fact that I was still not looking forward to using the Averatec laptop as it required a mouse and I didn&#8217;t have the money to pony up for Windows Media remote (which would have been supported).  Time grew on and by then my needs for additional storage had exceeded a single drive.  I built a Windows based NAS server using a 3ware card donated by a friend and buit a 2Tb storage array.  Soon after that, I got to the point where looking at a media player began to become feasible again as now I had plenty of storage and lots of plans.  I ultimately wanted to rip and encode my DVDs so that I could play them without needing to swap disks endlessly.</p>
<p>I was already accustomed to using Netflix on the Xbox360, however I wanted the same convenience of couch-surfing with all my local media.  A bonus through work found me with extra cash to finally take a look at a media player.  My requirements were simple.</p>
<ul>
<li>It must support a variety of media in a variety of formats and codecs.</li>
<li>It must have a remote and be easily operated.</li>
<li>It must have a variety of outputs including HDMI and Component.</li>
<li>It must be able to read SMB shares easily and remember credentials.</li>
<li>It must be inexpensive.</li>
<li>The box, UI and remote have to not look fugly.</li>
</ul>
<h2>Research, research, research</h2>
<p>I started looking around at a lot of the common media players that are out there.  The Apple TV was too &#8220;hipster&#8221; and I really didn&#8217;t feel like dealing with iTunes after the fiasco that was my iPod.  The price was right and the Apple TV did have the right connectors, but dependence on the iTunes application really made it a deal killer.</p>
<p>Boxee was an attractive option and had high ratings however when I saw the <a href="http://www.boxee.tv/">final product and it&#8217;s cubelike design</a>, it was an instant turnoff. While the hardware was more than adequate, the box itself looked rather ugly. When I did some additional research, the price point (at almost $250 at initial research, now $199) it was still out of my price range. While Boxee did have the free software option like XBMC, I had no &#8220;decent&#8221; hardware on it to make it not suck. so unfortunately this option was nixed.</p>
<p>There were some other media devices that I had found however they were really proprietary and for various reasons, they don&#8217;t even merit mention.  That said, I reluctantly asked around work and several coworkers offered suggestions, most of which were either Apple TV, XBMC, Boxee.  A couple of guys mentioned the WDTV Live Plus so I started doing research.</p>
<p>The WD TV Live Plus appeared to support all of my requirements although several forum posts came up about difficulty with networking.  At $100 a unit, this appeared to be a viable option so I decided to gamble.</p>
<h2>Hardware</h2>
<p>Without further ado, let&#8217;s take a look at what we&#8217;re up against.</p>
<div id="attachment_994" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-994" title="WD TV Live Plus box" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2121-300x225.jpg" alt="WD TV Live Plus box" width="300" height="225" /><p class="wp-caption-text">WD TV Live Plus box</p></div>
<p>This is the outside of the box.  Inside the box, you get a remote, two AAA batteries, the WDTV Live Plus, a 1/4in to AV (Video, L and R Audio) cable, a 1/4in to Component (Y,Pb,Pr) cable and power supply adapter.</p>
<div id="attachment_995" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-995" title="WDTV size comparison" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2122-300x225.jpg" alt="WDTV size comparison" width="300" height="225" /><p class="wp-caption-text">WDTV size comparison</p></div>
<p>To put a size comparison on things, this thing is SMALL.  It&#8217;s about the size of a large pocket switch roughly 4inches deep, five inches wide and about an inch tall. The remote control is about three inches long  and an inch wide and roughly a half-inch deep. Although it is small, it does fit in either hand comfortably thanks in part to a finger wide notch cut into the bottom of the remote.</p>
<div id="attachment_996" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-996" title="Back ports" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2116-300x225.jpg" alt="Back Ports" width="300" height="225" /><p class="wp-caption-text">Back Ports</p></div>
<p>The rear of the WDTV contains several ports as shown above.  The ports from left to right are Power, USB, HDMI, Optical Audio TOSLINK, Ethernet, Component, Composite+Audio.</p>
<div id="attachment_997" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-997" title="Top view" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2117-300x225.jpg" alt="Top view" width="300" height="225" /><p class="wp-caption-text">Top view</p></div>
<p>The Top of the WDTV features an additional USB port and the always good-to-have reset pinhole.  In the event of a device failure, you can use the pinhole to factory reset the device and to perform software updates.</p>
<div id="attachment_998" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-998" title="My WDTV installed and running." src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2120-300x225.jpg" alt="My WDTV installed and running." width="300" height="225" /><p class="wp-caption-text">My WDTV installed and running.</p></div>
<p>Here is a picture of my WDTV installed and running.  To put it in persepective, that is a Netgear 8 port switch it is sitting on top of and the salt rock to the right is about the size of a 2 liter bottle of soda.</p>
<h3>Other things worth mentioning:</h3>
<ul>
<li>The two USB ports can support a variety of USB Mass Storage devices including cameras, USB Hard drives, Thumb drives and Media Card readers.  It can also support a limited range of <a href="http://wdc.custhelp.com/app/answers/detail/a_id/3805/~/list-of-compatible-devices-for-the-wd-tv-live-hd-media-player-and-wd-tv-live" target="_blank">wireless adapters, USB keyboards and other options</a>. Although Wireless options are available, my network does not run Wireless N and as stated in the link, Wireless G may be too slow for streaming.  I did not get the ability to test Wireless connectivity as my network is primarily wired 10/100 network.</li>
<li>There is no HDMI cable included with this kit so you will need to buy one if you intend to use HDMI.</li>
</ul>
<p>&nbsp;</p>
<h2>Software</h2>
<p>As mentioned earlier, I required that the device be easy to use and able to pick up SMB shares While the UI appeared to be quite usable, there were difficulties in getting the network shares to show up.  Several posts to the WD Customer Support forum complained about this very same issue however I was able to overcome the issue once I found out what the root issue was. If you want a further review of the software, skip this section.</p>
<h3>Not all SMB networks are the same</h3>
<p>As stated on the box, this device should be able to read content from SMB (MS Network) shares and play it however there was a significant issue with the implementation of the SMB protocol in the WD TV Live Plus.  My network is largely Windows clients seeing as how my NAS is a Windows XP computer with a storage array and that most of my computers are Windows XP based (except for my core networking equipment and my laptop which uses Ubuntu.)  This ended up causing more hell than I was expecting and I&#8217;ll explain.</p>
<h3>Oh master, where art thou?</h3>
<p>In a Windows network where there is no domain controller, Windows computers will get into an election process to attempt to establish a browse master.  This browse master is a Windows computer that maintains a list of active computers on the network.  This behavior is part of NetBIOS and SMB sharing and allows the computers to &#8220;discover&#8221; each other.  Once the browse master is established, additional computers will communicate with the master to &#8220;register&#8221; themselves, and once registered can discover each other&#8217;s network shares.  This share list is populated each time someone tries to browse the network.</p>
<h3>I&#8217;m talking, but no one&#8217;s listening!</h3>
<p>The WDTV on boot, will perform a broadcast to the network on UDP port 137 (NetBIOS Name service) which is according to the NetBIOS protocol.  It waits for a browse master to return the broadcast so it can then download the browse list. The issue is that Microsoft has altered the way NetBIOS works and in doing so, has altered the way NetBIOS operates.  One of the alterations is that Windows computers (whether browse master or not) is that the computers will no longer respond to broadcasts to port 137.  The result is that the WDTV will never receive the response it&#8217;s looking for and it&#8217;s server list will never get updated.</p>
<h3>You are my slave now!</h3>
<p>The workaround is to install NetBIOS (part of the SAMBA package) on a Linux box and set &#8220;local master = yes&#8221; in samba.conf.  This will also give you the added benefit of sped up network browsing on your computers and the installation of NetBIOS is very simple, requiring only one modification to a configuration file and a service restart.  In my testing of the WDTV,  I was unable to get the WDTV to show any network shares prior to the installation of the NetBIOS service.  Once I installed the NetBIOS service, it was a matter of seconds that the network shares listed out all of the active computers on the network.</p>
<h2>Carrying on&#8230;.</h2>
<p>Testing the UI under component, composite and HDMI cables showed little difference in the display resolution aside from the appreciable differences in the three connection technologues themselves. In each test, the UI was sharp and clear with menu options easily highlighted. The UI is a dark-blue theme and reminds me a lot of the Playstation 3 interface.</p>
<div id="attachment_999" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-999" title="UI main image" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2113-300x225.jpg" alt="UI main image" width="300" height="225" /><p class="wp-caption-text">UI main image</p></div>
<p>In the above image, I have highlighted the server &#8220;Zeus&#8221; from Videos -&gt; Network shares.   The icons scroll vertically to allow you to select options, while horizontal movement allows you to proceed or go back via the four way D-pad on the remote.  Hitting &#8220;OK&#8221; is only required on media titles, menu options (like Configuration Settings) and various sub-menus as needed.</p>
<div id="attachment_1000" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1000" title="Media List" src="http://www.yourwarrantyisvoid.com/wp-content/uploads/2011/08/DSCF2115-300x225.jpg" alt="Media List" width="300" height="225" /><p class="wp-caption-text">Media List</p></div>
<p>The Media List view shows up once a server has been selected and allows you to drill down to find the content you want.  On the &#8220;Zeus&#8221; server, I have several shares dedicated to each type of media that the WDTV supports.  This is the list of the &#8220;Movies&#8221; fileshare.  Photos and Music are other fileshares available.  In this view, you can simply highlight a movie and without further action, it will start playing in the preview window on the right.  If you want to play it fullscreen, just select the preview window and hit OK.  The display will then go full size without missing a beat.</p>
<p>All in all, the UI is simple to use, easy to navigate and offers a lot of functionality without cluttering up the display.</p>
<h3>It also has apps</h3>
<p>I hesitate to mention this as I didn&#8217;t purchase the WDTV for applications, but it does bear mentioning.  This device supports games and apps including Youtube, Facebook and Netflix support. While I did briefly try out the Netflix and Youtube options and they appeared to work as expected, I did not try the Facebook app and felt that the inclusion of Facebook on a media client to be in excess.  I can&#8217;t contemplate using my media client to check my Facebook as I have phones, laptops and full-size computers for that.</p>
<h2>Final Verdict</h2>
<p>To summarize the total experience of the WD TV Live Plus, let&#8217;s break down the experience into the Good and the Bad. It may be cliche to do it, but it works well.</p>
<h3>The Good</h3>
<ul>
<li>Small Form Factor</li>
<li>Includes remote, component and composite cables and battery</li>
<li>Supports HDMI, DVI (via HDMI to DVI cable), Composite and Component connections.</li>
<li>Includes TOSLINK optical audio out for connectivity to a surround sound system.</li>
<li>Plays a wide variety of video formats: AVI(Xvid, AVC, MPEG 1,2 and 4, WMV9, VC-1, MPEG/MPG, VOB (DVD), MKV, TS/TP/M2T, MP4/MOV, M2TS and WMV9.  I have not tested DivX format as I don&#8217;t have any DivX formatted media.</li>
<li>Plays a wide variety of audio formats: MP3, WAV, PCM, LPCM, WMA, AAC, FLAC, MKA, AIF/AIFF, OGG, Dolby Digital.</li>
<li>Picture is clear regardless of connector type</li>
<li>Menu navigation is easy and intuitive without clutter.</li>
</ul>
<h3>The Bad</h3>
<ul>
<li>No HDMI cable included in kit.</li>
<li>Networking requires NetBIOS browse master and setup can be daunting for non-Linux networks or unexperienced users.</li>
<li>Will not play DRM protected content.</li>
<li>No Web-based interface or control application.</li>
</ul>
<h3>My Thoughts</h3>
<p>The WDTV Live Plus is a great addition to the network and will work very well for playing media. After getting the network issue resolved, this device has flawlessly performed without issue for the last week.  I have started a project to rip all my DVDs to the NAS so I can watch all my movies and TV shows without having to touch a single DVD disc.  This product gets a firm thumbs up from me.</p>
<h3>My Girlfriend&#8217;s Thoughts</h3>
<p>Of course, being a geek means I have a high tolerance for making stuff work, but since I live with my girlfriend, it doesn&#8217;t get a thumbs up if she can&#8217;t use it.  In this particular case, she liked the menu configuration and ease of navigation.  She was able to look at video content with very little prompting from me unlike the initial case of the failed XBMC attempt. The WDTV Live &#8220;just worked&#8221; and she was very pleased with it.  She says it&#8217;s definitely Girlfriend Approved and she can&#8217;t wait until I get the DVDs ripped.</p>
<p>In the next month or so, I will provide a follow up on how to establish a NetBIOS browse master, rip and encode DVDs and how to set up fileshares in Windows to allow you to use your WDTV effectively.  Minus the initial configuration issue, this device is cheap on cost without being cheap on features. It is a well designed product that will help integrate computer media into your existing entertainment system without significantly impacting your wallet or your sanity.</p>
<p>&nbsp;</p>
<h2><strong>Verdict:  Buy!</strong></h2>
<p>Cost: around $100, sometimes on sale for around $70-80</p>
<p>Availability: Most Online Retailers, and some brick-and-mortar stores like Best buy, Fry&#8217;s, etc..</p>
<p>&nbsp;</p>
<p>Have fun!</p>
<p>FIRESTORM_v1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourwarrantyisvoid.com/2011/08/26/reviews-wd-tv-live-plus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
