<?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"
	>

<channel>
	<title>Geekdom</title>
	<atom:link href="http://geekdom.wesmo.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://geekdom.wesmo.com</link>
	<description>Geeks of the World Unite!</description>
	<pubDate>Sat, 04 Oct 2008 19:07:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>AIX Integration in to Active Directory</title>
		<link>http://geekdom.wesmo.com/2008/09/25/aix-integration-in-to-active-directory/</link>
		<comments>http://geekdom.wesmo.com/2008/09/25/aix-integration-in-to-active-directory/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 19:06:39 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
		
		<category><![CDATA[Technical]]></category>

		<category><![CDATA[active directory]]></category>

		<category><![CDATA[ad]]></category>

		<category><![CDATA[aix]]></category>

		<category><![CDATA[samba]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[unix]]></category>

		<category><![CDATA[winbind]]></category>

		<guid isPermaLink="false">http://geekdom.wesmo.com/?p=92</guid>
		<description><![CDATA[Integrating an AIX system in to Active Directory is not entirely straight forward.  Integration in to an Active Directory domain for user authentication can be done utilizing the following steps (similar to that found in http://us1.samba.org/samba/ftp/Binary_Packages/AIX/README):

Download and install the krb5.client.rte package for AIX.
Download the pre-built AIX 5.2 (compatible with AIX 5.3) binaries from the SAMBA [...]]]></description>
			<content:encoded><![CDATA[<p>Integrating an AIX system in to Active Directory is not entirely straight forward.  Integration in to an Active Directory domain for user authentication can be done utilizing the following steps (similar to that found in <a href="http://us1.samba.org/samba/ftp/Binary_Packages/AIX/README">http://us1.samba.org/samba/ftp/Binary_Packages/AIX/README</a>):</p>
<ol>
<li>Download and install the krb5.client.rte package for AIX.</li>
<li>Download the pre-built AIX 5.2 (compatible with AIX 5.3) binaries from the SAMBA web site (<a href="http://us1.samba.org/samba/ftp/Binary_Packages/AIX/">http://us1.samba.org/samba/ftp/Binary_Packages/AIX/</a>) to a temporary location.
<ol>
<li><a href="http://us1.samba.org/samba/ftp/Binary_Packages/AIX/opt-samba-base.tar.gz">opt-samba-base.tar.gz</a></li>
<li><a href="http://us1.samba.org/samba/ftp/Binary_Packages/AIX/opt-samba-3.0.28-AIX5.tar.gz">opt-samba-3.0.28-AIX5.tar.gz</a></li>
</ol>
</li>
<li>Use &#8220;gunzip&#8221; to decompress each of the files (eg: gunzip opt-samba-base.tar) in the same directory. The result will be a bunch of *.bff files. These are considered &#8220;backup files&#8221; in AIX, but, essentially, are the same thing as if they were archives.</li>
<li>Use either:
<ol>
<li>installp -agYX -d. all</li>
<li>Start up &#8220;smit&#8221; and navigate to &#8220;Software Installation and Maintenance&#8221;-&gt;&#8221;Install and Update Software&#8221;-&gt;&#8221;Install Software&#8221;
<ol>
<li>Enter in the full path to the temporary directory that the .bff files are stored in and hit &#8220;enter&#8221;</li>
<li>On the new menu, use the arrow keys to navigate down to the line for &#8220;ACCEPT new license agreements&#8221; and hit &#8220;tab&#8221; to change the value to &#8220;yes&#8221;. Hit enter to start the install.</li>
</ol>
</li>
</ol>
</li>
<li>Install the <a href="http://ncc.chahq.local/wp-content/uploads/2008/09/smb.conf">/opt/pware/samba/3.0.28/lib/smb.conf</a> file which has all of the configuration necessary to properly join to the domain.</li>
<li>With the packages now installed, edit <a href="http://ncc.chahq.local/wp-content/uploads/2008/09/krb5.conf">/etc/krb5/krb5.conf</a> to look like:
<ol>
<li>[libdefaults]<br />
default_realm = AD.DOMAIN<br />
default_keytab_name = FILE:/etc/krb5/krb5.keytab<br />
default_tkt_enctypes = des-cbc-crc des-cbc-md5<br />
default_tgs_enctypes = des-cbc-crc des-cbc-md5[realms]<br />
AD.DOMAIN= {<br />
kdc = ad.server.ad.domain:88<br />
admin_server = ad.server.ad.domain:464<br />
default_domain = AD.DOMAIN<br />
}</p>
<p>[domain_realm]<br />
.AD.DOMAIN = AD.DOMAIN<br />
ad.server.ad.domain=AD.DOMAIN</p>
<p>[logging]<br />
kdc = FILE:/var/krb5/log/krb5kdc.log<br />
admin_server = FILE:/var/krb5/log/kadmin.log<br />
default = FILE:/var/krb5/log/krb5lib.log</li>
</ol>
</li>
<li>Run : kinit Administrator@AD.DOMAIN to get a kerberos ticket. You will be prompted to enter the domain administrator account password.</li>
<li>Join the computer to the windows domain: /opt/pware/samba/3.0.28/bin/net ads join -U Administrator , and enter the domain administrator account password when prompted.</li>
<li>Start winbind: /opt/pware/samba/3.0.28/sbin/winbindd</li>
<li>Confirm that you are able to see the active domain users via: wbinfo -u</li>
<li>To enabled command line login access, edit <a href="http://ncc.chahq.local/wp-content/uploads/2008/09/user">/etc/security/user</a>.  Look for the link that reads &#8220;SYSTEM =&#8221; in the default: settings.  Change it to look like : SYSTEM = &#8220;WINBIND&#8221;.</li>
<li>To complete the process, edit /usr/lib/security/user to include the following code at the end:
<ol>
<li>WINBIND:<br />
program = /usr/lib/security/WINBIND<br />
options = authonly</li>
</ol>
</li>
<li>Copy the WINBIND security binary in to place: cp /opt/pware/samba/3.0.28/lib/security/WINBIND /usr/lib/security/WINBIND</li>
</ol>
<p>At this point, without restarting any daemons or anything, you should be able to access and log in as any active directory user. Your home directory probably won&#8217;t mount, but you should be able to successfully log in anyhow:</p>
<blockquote>
<pre>]# telnet aixserver</pre>
<pre>Trying 10.10.10.75...</pre>
<pre>Connected to aixserver.</pre>
<pre>Escape character is '^]'.</pre>
<pre>telnet (aixserver)</pre>
<pre>AIX Version 5</pre>
<pre>Copyright IBM Corporation, 1982, 2007.</pre>
<pre>login: myadaccount</pre>
<pre>myadaccount's Password:</pre>
<pre>*******************************************************************************</pre>
<pre>*                                                                             *</pre>
<pre>*                                                                             *</pre>
<pre>*  Welcome to AIX Version 5.3!                                                *</pre>
<pre>*                                                                             *</pre>
<pre>*                                                                             *</pre>
<pre>*  Please see the README file in /usr/lpp/bos for information pertinent to    *</pre>
<pre>*  this release of the AIX Operating System.                                  *</pre>
<pre>*                                                                             *</pre>
<pre>*                                                                             *</pre>
<pre>*******************************************************************************</pre>
<pre>3 unsuccessful login attempts since last login.</pre>
<pre>Last unsuccessful login: Thu Sep  4 15:20:34 EDT 2008 on ssh from yourmachine.ad.domain</pre>
<pre>Last login: Thu Sep  4 14:23:23 EDT 2008 on /dev/pts/1 from yourmachine.ad.domain</pre>
<pre>3004-614 Unable to change directory to "/home/ADDOMAIN/myadaccount".</pre>
<pre>        You are in "/" instead.</pre>
<pre>-bash-3.00$</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://geekdom.wesmo.com/2008/09/25/aix-integration-in-to-active-directory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cacti + RRDTool 1.3.x = No Graphs</title>
		<link>http://geekdom.wesmo.com/2008/09/15/cacti-rrdtool-13x-no-graphs/</link>
		<comments>http://geekdom.wesmo.com/2008/09/15/cacti-rrdtool-13x-no-graphs/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 20:44:22 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Technical]]></category>

		<category><![CDATA[cacti]]></category>

		<category><![CDATA[rrdtool]]></category>

		<guid isPermaLink="false">http://geekdom.wesmo.com/?p=91</guid>
		<description><![CDATA[I found out the hard way that the monitoring tool Cacti does not really support rrdtool 1.3.2.  Fortunately, there is an easy workaround.
Edit cacti/lib/rrd.php and comment out line 1685:
//      return &#8220;&#8211;font &#8221; . strtoupper($type) . &#8220;:&#8221; . $size . &#8220;:&#8221; . $font . RRD_NL;
]]></description>
			<content:encoded><![CDATA[<p>I found out the hard way that the monitoring tool <a title="Cacti" href="http://www.cacti.net">Cacti</a> does not really support <a title="Round Robin Database Tool" href="http://oss.oetiker.ch/rrdtool/">rrdtool</a> 1.3.2.  Fortunately, there is an easy workaround.</p>
<p>Edit <strong>cacti/lib/rrd.php</strong> and comment out line <strong>1685</strong>:</p>
<blockquote><p>//      return &#8220;&#8211;font &#8221; . strtoupper($type) . &#8220;:&#8221; . $size . &#8220;:&#8221; . $font . RRD_NL;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://geekdom.wesmo.com/2008/09/15/cacti-rrdtool-13x-no-graphs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MythTV Tweaks</title>
		<link>http://geekdom.wesmo.com/2008/07/02/mythtv-tweaks/</link>
		<comments>http://geekdom.wesmo.com/2008/07/02/mythtv-tweaks/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 18:22:02 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Movies]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://geekdom.wesmo.com/?p=62</guid>
		<description><![CDATA[After using and tinkering with MythTV for over a year, a small pile of adjustments have stacked up that have been made to both the backend and the frontend that have improved performance.  These can&#8217;t be listed as must have&#8217;s, but they definitely are good to have. Some of these may seem obvious, but [...]]]></description>
			<content:encoded><![CDATA[<p>After using and tinkering with MythTV for over a year, a small pile of adjustments have stacked up that have been made to both the backend and the frontend that have improved performance.  These can&#8217;t be listed as <span style="text-decoration: underline;">must have&#8217;s</span>, but they definitely are <strong>good to have.</strong> Some of these may seem obvious, but not everyone sees things the same way.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/1.png" alt="1" /> Store Your Recordings on a Separate Drive (or drives)</p>
<p>The installation of mythtv recommends storing your recordings on a separate partition from the rest of the operating system.  This is done to insulate the recordings files from the key operating system files, and, in general, it is a Best Practice.  However, for optimal performance, this should be taken a step further: Set up a separate drive or drives to hold your recordings.  This will separate all of the disk interaction between the OS and its related files from mythtv and its recordings.  The result will be a smoother end user experience.</p>
<p>An internal SATA drive is probably the best and least expensive solution.  An external SATA drive is good, too, but more expensive.  A PATA drive would work well, but it is best to keep that drive on a different controller than the drive that your OS is on.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/2.png" alt="2" /> Reduce The Size Of Your Guide</p>
<p>By default, MythTV will collect 14 days of guide data to get information about future shows.  This is actually great for searching for shows, and performing other user-related options, but it can wreak havoc on the system performance.  A dead give-away is in th mythbackend.log file:</p>
<blockquote><p>2007-12-23 09:31:54.099 Scheduled <strong>871</strong> items in 12.4 = 0.20 match + 12.17 place</p></blockquote>
<p>If the scheduled items creeps up too high (typically greater than 700), then your system is working pretty heavily to schedule a lot of shows based upon the 14 days of guide data.  This can cause the database to become rather large and slow down all database queries, which, in turn, slows down the end user experience.</p>
<p>A happy medium is reducing the number of days of guide data from 14 to 9.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/3.png" alt="3" /> Optimize the IVTV Paramaters</p>
<p>The default kernel parameters for the IVTV based cards do not take advantage of the buffers on the cards.  This means that you will see a lot of logged error messages referring to &#8220;application not reading fast enough&#8221;.  This could result in choppy recorded video which is a Bad Thing(tm).</p>
<blockquote><p>options ivtv enc_yuv_buffers=8 enc_mpg_buffers=32 enc_vbi_buffers=8 enc_pcm_buffers=8</p></blockquote>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/4.png" alt="4" /> Know Your Hardware</p>
<p>One of the largest problems is that the underlying nature of MythTV is to take full use of the hardware it has at hand.  One cannot help but try to squeeze everything (and more) out of their hardware.  However, keep in mind that if you have a single processor frontend/backend system, you don&#8217;t want to be recording too many shows at any one time or running too many concurrent commercial flagging processes because the single processor just cannot handle it.</p>
<p>The most optimal set up is to have a fully networked frontend/backend system:</p>
<ul>
<li>Have a frontend (client) system for each television in the house.  It is probably best to have these as identical systems with minimal hardware requirements since they will only be acting as display systems.
<ul>
<li>NFS mounting of videos, mp3&#8217;s, photos, etc.</li>
</ul>
</li>
<li>Have a backend (server) system stowed away in a closet.  This will be the system that you will end up beefing up.  A dual-processor system is recommended since it will be performing all of the work (recording, streaming to the frontend processes, commercial flagging, etc).
<ul>
<li>SATA storage for recordings</li>
<li>Separate storage for video, mp3s, photos, etc.</li>
</ul>
</li>
<li>100MB networking from the backend system to each of the frontend systems.</li>
</ul>
<p>By having the same frontend systems, if you ever have a failure of a frontend, you can always easily shuffle them around while you repair or replace the failed components.</p>
<p><strong>The same goes for remote controls.</strong> Although the temptation is to just reuse the multifunction remote you already have for your TV, cable box, Tivo, etc, it just isn&#8217;t worth the hassle.  Simplicity in the setup will definitely improve everyone&#8217;s WAF (Wife Approval Factor).  If each frontend has the same remote (although configured specifically for the equipment attached to that frontend), then, as a user (not the admin), you just have to learn the buttons on the one remote, and it applies to all of the frontends.</p>
<p>Grab yourself an inexpensive multi-function remote like the OneForAll (<a title="OneForAll URC6131" href="http://www.amazon.com/gp/product/B0000ALPBA">http://www.amazon.com/gp/product/B0000ALPBA</a>) for each of your frontend systems.  I was very hesitant at buying a remote I couldn&#8217;t test out since many multi-function remotes disable certain buttons based upon the mode you are in.  However, this remote specifically has a PVR mode <strong>and</strong> you can move button functions from one mode to another.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/5.png" alt="5" /> Know What You Are Displaying To</p>
<p>The K.I.S.S. (Keep It Simple, Stupid!) <span>Principle </span>really helps when maintaining your MythTV systems.  By having your frontend system as similar as possible, the level of administration needed on those system drops.  In other words, if you tinker with one, you know you just have to make that same change on all of the others.   Unfortunately, it is harder to control what types of televisions you are displaying to.</p>
<p>Remember: essentially, your expensive TV screen is just a simple computer monitor at this point.  You are <strong>not</strong> using the internal tuner and you are not using all of the various input (DVD player, Antenna, Cable, etc) connections.  You are just using the one input on the TV that is coming out from the computer.  It is nice and simple.</p>
<p>IF it is possible, try to stick to the same kind of input, even though you will end up with different TV&#8217;s throughout your home.  For example, if your TVs all have component input as the best quality input, then make sure that all of your frontend systems can output component video.</p>
<p><strong>Try to avoid using any of the &#8216;PC&#8217; inputs on TV&#8217;s</strong>.  Component, HDMI, Composite, S-Video, and coaxial are all bound by TV broadcast standards.  Once you start fiddling with the PC inputs, you have a lot of extra work to perform in order to get it to properly display the broadcast video on the screen.  Stick with the standards, and you will be satisfied.</p>
<p>In my case, all of ours have HDMI connections on them.  Some video HDMI as evil, but that&#8217;s another topic all together.  I got away with purchasing some inexpensive DVI to HDMI cables (10ft, ~$10ea. on-line).</p>
<p>By keeping things similar or the same, the X configuration for each of the frontend systems will be the same.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/6.png" alt="6" /> Optimize the database</p>
<p>The MySQL database behind MythTV takes an enormous beating as shows are recorded, scanned for commercials, watched, bookmarked, and deleted, just to name a few causes.  It does not take a very long time for the database to become more &#8216;fragmented&#8217; and provide slower responses due to the increasing level of &#8216;fragmentation&#8217;.  This has a direct impact on the user experience in a very negative way.</p>
<p>The solution to this is to periodically optimize the database.  The problem with optimizing the database is that it is intensive and will only make things worse before it makes it better.  So, it is much better to run this off-hours.</p>
<p>The easiest solution is to run a wrapper around mythfilldatabase which optimizes the database.  But, because mythfilldatabase is run according to the grabber&#8217;s suggested schedule, this might end up running in the middle of the day.</p>
<p>What I found as the happy medium between the two was to craft the wrapper such that the database gets optimized only one day a week:</p>
<blockquote><p>#!/bin/sh<br />
# mythoptdb - Call this in mythfilldatabase&#8217;s place in<br />
# mythtv-setup</p>
<p>if [ `date +%a` = "Sun" ]; then<br />
optimize_db.sh<br />
fi</p>
<p>/usr/bin/mythfilldatabase &#8211;remove-new-channels &#8211;quiet &#8211;max-days 9 $*</p></blockquote>
<p>The &#8220;optimize_db.pl&#8221; script that comes as part of the contrib from MythTV has one shortcoming: it doesn&#8217;t always work properly.  It worked for me for a long time, then started hanging on the optimization/repair when my database grew rather large.  I ended up replacing it with <a title="optimize_db.sh" href="http://geekdom.wesmo.com/wp-content/uploads/2008/01/optimize_dbsh.txt">optimize_db.sh</a> which does the job more efficiently.  Still, you must keep in mind that the database will be unavailable during the optimization/repair of all tables.  The goal is to keep this (very) short.</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/7.png" alt="7" />Understand the order of your inputs</p>
<p>Setting up MythTV can be very confusing: there are so many options in the mythtv-setup screens that is can be easy to either miss an important option or be unable to find that elusive option later on.  Add in to the equation the fact that there are easily just as many (if not more) options in the frontend setup menus, it becomes almost overwhelming.</p>
<p>One item that took a couple of emails to the mailing list to figure out is the ordering of the tuners.  When recording, the backend server process is set up to select the first available tuner, and when you go to watch live tv (which I almost never do now-a-days), it also is set up to select the first available tuner.  Additionally, if you are watching live TV and mythtv needs to record something, you get the expected warning that it needs the tuner for that recording.</p>
<p>All of that sounds normal, and it is.  However, you can change the settings to have mythtv&#8217;s backend select the tuners in reverse order so as to avoid conflict</p>
<p><img src="http://geekdom.wesmo.com/wp-content/uploads/2007/12/8.png" alt="8" /> High Definition recordings vs Standard Definition recordings</p>
<p>Standard Definition (SD) recordings, when displayed via MythTV on that nice screen just don&#8217;t look as good as that old 4:3 tube television.  The problem there is that SD is broadcast as interlaced video, and the computer (the mythtv box) only displays in progressive mode (see <a href="http://alvyray.com/DigitalTV/Naming_Proposal.htm">this great description</a> of the differences).  That, and the quality of SD is so low, many of the artifacts that you didn&#8217;t notice previously now show up amplified because of the larger screen size, the better screen quality, and the MPEG2 encoding.  However, SD has one advantage: it is <strong>small</strong>.  Typical hour-long shows run about 300-500MB.</p>
<p>High Definition (HD) recordings are an entirely different beast, and they come in many different flavors.  Aside from an awesome increase in picture quality, they all have one important factor in common: they are <strong>huge</strong>.  A typical 1 hour recording can run between 3 and 6 gigabytes.</p>
<p><strong>PLAN YOUR STORAGE ACCORDINGLY.</strong></p>
<p>My experience is limited to only Over-The-Air (OTA) HD transmissions from the local affiliate stations, but I definitely recommend the HDHomeRun for an OTA setup.  MythTV supports it right out of the box, it is easy to configure, and you can get HD recordings set up within minutes.</p>
<p>Obtaining HD recordings off of your cable/satellite box is an entirely different beast, and, unfortunately, I have not gone down that route just yet.</p>
<h2>BE PREPARED TO ADMINISTER THIS SETUP</h2>
<p>MythTV is still in a beta phase, and, although there are a lot of people who are using it, it still is not entirely ready for prime-time; the system isn&#8217;t made to run entirely on its own and it does need some tlc.  I cannot stress this enough: don&#8217;t go cheap on your backend system&#8217;s motherboard.  Make sure that it is a solid board with well supported chips.  Some inexpensive, and tempting, motherboards use chipsets that work well as windows systems, but perform with numerous problems under Linux (some Jetway, PCChips, MSI, and some via-based motherboards) which will only give you major headaches.</p>
<p>This is not to say that you couldn&#8217;t have a successful system that you don&#8217;t need touch for weeks on end, but it is likely that things may creep up that you, and no one else, expected.  Besides, you will want to tinker with it over time to fully optimize the system.</p>
<p><strong>A great example is the impact of cpu frequency scaling on a MythTV backend: <span style="text-decoration: underline;">don&#8217;t do it</span>.</strong> If you have multiple cards and a couple of drives (OS and video), cpuscaling can wreak havoc on the system: ivtv drivers have been known to stop responding (requiring the backend to be shut down and the drivers unloaded and reloaded) and active/busy SATA interfaces have been known to falsely believe that there are ext3 journal errors which results in the drive being put in to read-only mode.</p>
<p>With all of the above said, you can create an excellent home-wide DVR system using COTS (Common Off The Shelf equipment) that is DRM-free, completely customizable to your liking, and extremely versatile.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekdom.wesmo.com/2008/07/02/mythtv-tweaks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Openvpn + Windows = One Awesome VPN Setup (Quick and Easy!)</title>
		<link>http://geekdom.wesmo.com/2008/07/02/openvpn-windows-one-awesome-vpn-setup-quick-and-easy/</link>
		<comments>http://geekdom.wesmo.com/2008/07/02/openvpn-windows-one-awesome-vpn-setup-quick-and-easy/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 18:06:12 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Technical]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://geekdom.wesmo.com/?p=87</guid>
		<description><![CDATA[While at a previous employer, I came across an interesting article in the now-defunct SysAdmin magazine which covered, soup-to-nuts, setting up a rather basic OpenVPN server and NSIS-based Windows client package.  It wasn&#8217;t long before I got hip deep in to customizing the Windows installer NSI script, and tweaking the server configuration.  Eventually, [...]]]></description>
			<content:encoded><![CDATA[<p>While at a previous employer, I came across an interesting <a title="Openvpn" href="http://www.samag.com/documents/s=9766/sam0506a/0506a.htm">article</a> in the now-defunct <a title="SysAdmin Magazine" href="http://www.samag.com/">SysAdmin</a> magazine which covered, soup-to-nuts, setting up a rather basic OpenVPN server and NSIS-based Windows client package.  It wasn&#8217;t long before I got hip deep in to customizing the Windows installer NSI script, and tweaking the server configuration.  Eventually, I configured up a Solaris 8 system in our data center to act as a secondary openvpn server (using the &#8220;tun&#8221; package), and all of the adminstrators/dba&#8217;s were very happy with the results.</p>
<p>Nearly two years and two employers have passed by, and I find myself going through a similar setup.  Unfortunately, i discovered that the backup of the files I took when I left my employer did not contain some of the key files, so I had to start back at square one.  The article was a great starting point, but I was worried that, since the magazine was now defunct, the article might not be around for much longer (although, as a subscriber, I received a CDROM containing all of the issues).</p>
<p>The article was also rather basic, and not very security conscious.  Additionally, some key steps (such as managing client certificates) were completely left off.  I&#8217;ve attached the original article for posterity.</p>
<h3><strong>The Server</strong></h3>
<p>To start off, the server needs to be set up and configured.  Some key items to keep in mind:</p>
<ul>
<li>The standard OpenVPN port is 1194.  However, there is nothing stopping you from running it at a different port.</li>
<li>Decide between a &#8220;bastion host&#8221; setup versus a &#8220;completely integrated setup&#8221; (I&#8217;ll cover these in a moment).</li>
</ul>
<p>On an RPM based distro, install the openvpn package.  In addition to the core openvpn components, it will also install a series of SSL/cert management tools in a directory at /usr/share/doc/openvpn-&lt;version&gt;/easy-rsa.  Copy that entire directory to /etc/openvpn/easy-rsa.  Now, cd to /etc/openvpn/easy-rsa, and take a look at the README file to familiarize yourself with the steps.  The general breakdown is:</p>
<ul>
<li>cd /etc/openvpn/easy-rsa</li>
<li>edit the &#8220;vars&#8221; file to your liking.  The only things I changed were the KEY_SIZE to make it 2048, and the KEY_ values to reflect the company&#8217;s information.  Save the file.</li>
<li>export KEY_CONFIG=/etc/openvpn/easy-rsa/openssl.cnf</li>
<li>export KEY_DIR=/etc/openvpn/easy-rsa/keys</li>
<li>. vars</li>
<li>./clean-all</li>
<li>./build-ca</li>
<li>./build-dh</li>
<li>Build a key for the server: ./build-key myserver</li>
</ul>
<p>Now that the certificate and keys have all been made for the server, there are a few additional steps to set up the directory structure and generate a server port key:</p>
<ul>
<li>cd /etc/openvpn</li>
<li>ln -s /etc/openvpn/easy-rsa/keys keys</li>
<li>openvpn &#8211;genkey &#8211;secret port1194.key</li>
<li>useradd openvpn (if the account hasn&#8217;t been created already)</li>
<li>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</li>
</ul>
<p>At this point, all of the security components are set up and actual configuration of openvpn is necessary.  I&#8217;ve attached a modified version of the sample server configuration file, but the highlights of the file include forcing out DHCP entries, setting routes, communicating via UDP only (<strong>UDP is much more efficient than TCP in this situation, so use it if you can</strong>), and logging.</p>
<p>Openvpn can handle multiple port configurations as it will read the /etc/openvpn directory and look for all files ending in &#8220;.conf&#8221;.  In most cases, you will only be working with one, but it is nice to know it supports multiple.</p>
<p>Once the configuration file is in place (<a href="http://geekdom.wesmo.com/wp-content/uploads/2008/07/port1190.conf">openvpn Port Configuration File</a>) in /etc/openvpn, start up openvpn via /etc/init.d/openvpn start and check the log files in /var/log/openvpn for information.  The server is up, and now on to the clients.</p>
<h3><strong>The Clients</strong></h3>
<p>The poor-man&#8217;s way of doing things is to create one client certificate and hand it out to everyone.  While this works, the down side is that it makes it next to impossible to seamlessly deactivate any one person&#8217;s access.  The best practice is to create individual certificates for each user, and provide them to the individual users.  Since the server has a copy of the user&#8217;s certificate, you can easily (re)move a certificate to disable a given user.</p>
<p><span style="text-decoration: underline;">Server Side Configuration</span></p>
<p>Create a user certificate via:</p>
<ul>
<li>cd /etc/openvpn/easy-rsa</li>
<li>. vars</li>
<li>export KEY_CONFIG=/etc/openvpn/easy-rsa/openssl.cnf</li>
<li>export KEY_DIR=/etc/openvpn/easy-rsa/keys</li>
<li>./build-key clientname</li>
</ul>
<p>At the end, there will be three files created:</p>
<ul>
<li>clientname.crt</li>
<li>clientname.csr</li>
<li>clientname.key</li>
</ul>
<p>Remember these.  We&#8217;ll need two of them (the .crt and the .key) for later use when they get copied over to the client.</p>
<p><span style="text-decoration: underline;">Client Side</span></p>
<p>The article has some good coverage of the steps necessary on building the Windows client via NSIS, and, personally, I think it (NSIS) is awesome.  After installing NSIS and downloading the openvpn gui (from the link in the article), I was testing the installer in no time.  Now, I did have to tweak the nsi file a number of times, just to get the default version working since it seems that the NSIS plugins have been updated to conflict with some settings in the default NSI.  So, I modified that NSI to get the <a href="http://geekdom.wesmo.com/wp-content/uploads/2008/07/openvpn-gui.nsi">final version of the openvpn.nsi file</a> that is fully branded, installs our ca.crt (which was copied over from /etc/openvpn/keys/ca.crt), sets up all of the start menu items, and installs our <a href="http://geekdom.wesmo.com/wp-content/uploads/2008/07/vpn.ovpn">client configuration file</a>.</p>
<p>With the installer package built and tested, it can now be supplied to the user, along with the clientname.key and clientname.crt files and instructions as to where to place those two files.</p>
<p><strong>Bastion host versus Complete Integration</strong></p>
<p>Getting the user(s) access to the network via VPN is a good chunk of the battle, but you really have to decide how you want to support this new VPN network.  Right now, the only access they really have is to the server running the openvpn process.  The other machines on your network do not know how to communicate back to this new network you created (remember, you&#8217;ve just turned this server in to a router).</p>
<p>A bastion host is a host that sits within your network that your VPN user(s) can log in to, and, from there, jump around to the rest of the network.  It is essentially a terminal server for those Windows folks out there.</p>
<p>However, if you would rather provide direct access from the machines coming in via the VPN, you would have to either:</p>
<ul>
<li>On each host on your network, add a route to your new vpn network with your openvpn server as the gateway, or</li>
<li>On each router in your network, add a route to your new vpn network with your openvpn server as the gateway.</li>
</ul>
<p><span id="more-87"></span></p>
<h1><strong>Branded VPN Deployment and Seamless Remote Management</strong></h1>
<p><em>Adam Olson</em></p>
<p>Bridging the gap between production network systems and remote users has always<br />
posed challenges. Initial infrastructure design, access privileges, and client<br />
software needs all must be addressed to ensure that network capacity and maintenance<br />
issues remain manageable as the user base grows. Perhaps the most important<br />
consideration is ease of use for the end user. Software, in general, is becoming<br />
more and more intuitive and end users expect a certain level of usability and<br />
aesthetic quality.</p>
<p>In this article, I will discuss a VPN system that overcomes these technical<br />
challenges while also providing an easy-to-use, attractive interface to the<br />
user. The solution is based on multiple open source tools. These open source<br />
projects are OpenVPN, OpenVPN GUI, Nullsoft Scriptable Install System (NSIS),<br />
and TightVNC (see Resources). TightVNC is added to provide seamless remote management<br />
that is not provided by the VPN solution itself.</p>
<p>The result will be a company-branded Windows 2000/XP installer that not only<br />
includes all client-side VPN configuration and key information, but also provides<br />
an integrated VNC server for remote management and assistance upon starting<br />
the VPN instance.</p>
<p><strong>Open Source Tools</strong></p>
<p>OpenVPN is a robust and flexible VPN solution that enables most Unix/Linux,<br />
Windows 2000/XP, and Mac OSX platforms to securely build encrypted tunnels to<br />
one another. These tunnels can be configured in a variety of ways, but in this<br />
article, I will focus solely on a point-to-point network design that will be<br />
one small or large hub and spoke deployment.</p>
<p>OpenVPN GUI is a very handy front end to managing VPN instances for Windows<br />
2000/XP. This is usually the most prominent end-user operating system within<br />
the organization, so an easy-to-use System Tray icon is a must. OpenVPN GUI<br />
allows for easy VPN access for most users.</p>
<p>The Nullsoft Scriptable Install System (NSIS) is a great open source project<br />
that enables you to create company-branded client installer packages. End-user<br />
perception is greatly enhanced when the install process has an in-house look<br />
and feel.</p>
<p>You may be familiar with Virtual Network Computing (VNC), and TightVNC is<br />
another open source package based on Real VNC. I began using TightVNC over its<br />
counterparts about five years ago, so I&#8217;ve stuck with it in this deployment.<br />
It is very reliable and carries a small footprint. The same result could probably<br />
be attained with a different VNC package if you want to experiment after reading<br />
this article.</p>
<p><strong>Data Center Requirements</strong></p>
<p>This article is primarily focused on simplifying the end-user side of things,<br />
but it would be incomplete if the data center needs were left unaddressed. In<br />
your data center, you will need a dedicated and hardened server running a popular<br />
Unix/Linux operating system. Please note the words &#8220;dedicated&#8221; and &#8220;hardened&#8221;,<br />
because this is one machine that you do not want to be compromised. Any remote<br />
nodes that require VPN access are inherently passing sensitive data, so take<br />
extra caution in this area. Strip down the network services to nothing but SSH<br />
and OpenVPN, if possible, and maintain strict firewall rules. For additional<br />
information, check out the many online documents on this subject.</p>
<p>The following examples will be based on a system running Red Hat Fedora Core<br />
2.</p>
<p>To compile OpenVPN, run the standard:</p>
<pre># gzip -d openvpn-2.0_rc6.tar.gz
# tar xf openvpn-2.0_rc6.tar
# cd openvpn-2.0_rc6
# ./configure
# make
# make install</pre>
<p>If you have any problems compiling, make sure you have LZO compression libraries<br />
installed. Please refer to the OpenVPN documentation for details on this.</p>
<p><strong>OpenVPN Server Configuration</strong></p>
<p>To begin, create a directory to house your VPN configuration files and keys:</p>
<pre># cd /etc
# mkdir openvpn
# chmod 700 openvpn
# cd openvpn</pre>
<p>Here is a straightforward configuration file for your first server instance that<br />
should be named port5023.conf:</p>
<pre>### Start Config File Port 5023 ###

# local tun device
dev tun23

# interface addresses
ifconfig 10.23.0.1 10.23.0.2

# key location
secret /etc/openvpn/port5023.key

# port to listen on
port 5023

# user to run as
user nobody
group nobody

# options
comp-lzo
ping 15
verb 1

### End Config File Port 5023 ###</pre>
<p>This file has very few options that require changing for each server instance,<br />
mainly the tunnel interface on which to bind, the UDP port on which to listen,<br />
the location of the key file, and the point-to-point addressing for the VPN connection.</p>
<p>Please note that the example configuration above instructs OpenVPN to switch<br />
user and group IDs to the account &#8220;nobody&#8221;. This is ideal if your VPN server<br />
is running only OpenVPN daemons as nobody. If the VPN server is running other<br />
services under the user and group IDs of nobody, it is best to run OpenVPN as<br />
a different user and group ID.</p>
<p>To create the static key for this VPN instance, run this command from within<br />
/etc/openvpn:</p>
<pre># /usr/local/sbin/openvpn --genkey --secret port5023.key</pre>
<p>At this point, don&#8217;t forget to add the necessary rule permitting UDP traffic destined<br />
to port 5023 within IPTables or your respective firewall software. Also note that<br />
a simple Perl script run via cron should be set up to monitor failed attempts<br />
at making a connection to this port for security auditing purposes.</p>
<p>You should now be able to start your VPN instance by executing:</p>
<pre># /usr/local/sbin/openvpn --daemon --disable-occ --config \
/etc/openvpn/port5023.conf</pre>
<p>The options passed to OpenVPN are as follows:</p>
<pre>--daemon -- Run as a daemon.</pre>
<p><strong>&#8211;disable-occ</strong> &#8212; This option allows, among other things, two different<br />
versions of OpenVPN to communicate. This is very handy when you are supporting<br />
true telecommuters who don&#8217;t receive software updates on a routine basis.</p>
<p><strong>&#8211;conf</strong> &#8212; Specify the location of the configuration file.</p>
<p>You should now have a basic VPN server instance listening on port 5023. If<br />
you experience any problems, please review the OpenVPN documentation. It is<br />
straightforward to configure, so any issues should be easily resolved.</p>
<p><strong>Building the VPN Installer</strong></p>
<p>VPN clients in this configuration need to know where the VPN server is located,<br />
which port to connect to, which statically assigned key to use, and more. This<br />
is all accomplished by providing a complete configuration file and key within<br />
the company-branded VPN installer. End users will not need nearly as much assistance<br />
in remotely accessing the more sensitive resources within the company with an<br />
easy-to-use installer executable.</p>
<p>Because we are creating our own Windows 2000/XP installer, the opportunity<br />
exists to introduce otherwise totally separate program binaries into the installation<br />
process. Instead of simply installing a VPN client with a prearranged key and<br />
configuration file, we will also be including TightVNC binaries for both the<br />
client and server instance of the VNC protocol.</p>
<p>Download and install the NSIS package on a Windows XP development system at:</p>
<pre>http://www.openvpn.se/files/nsis/nsis20b3.exe</pre>
<p>Since the release of my production rollout, a newer version of NSIS has been released.<br />
Make sure you are using the version linked to above for demonstration purposes,<br />
but each principle covered here is applicable to the later versions. However,<br />
I have noticed that the latest version of NSIS does require a little bit of tweaking<br />
with the following install source zip file, so you will find it easier to use<br />
the above version of NSIS anyway.</p>
<p>Next, download the installation source to the same Windows XP development<br />
system at:</p>
<pre>http://www.openvpn.se/files/install_packages_source/ \
openvpn_install_source-2.0-rc6-gui-1.0-beta26.zip</pre>
<p>This file was put together by Mathias Sundman and includes all of the necessary<br />
files for OpenVPN, OpenVPN GUI, and NSIS configuration to build the standard OpenVPN<br />
Windows installer package. Unzip this file to your desktop and name the folder<br />
&#8220;VPN Sources&#8221; for now.</p>
<p>To get an idea of what will result from the overall process, open the VPN<br />
Sources folder, right-click openvpn-gui.nsi, and left-click &#8220;Compile NSI&#8221;. A<br />
few seconds later you should see an OpenVPN installer executable in the &#8220;VPN<br />
Sources&#8221; folder. If you were to execute this installer, the standard version<br />
of OpenVPN would be installed. If you ran into any problems creating this executable,<br />
please refer to the documentation located at:</p>
<pre>http://openvpn.se/files/howto/ \
openvpn-howto_roll_your_own_installation_package.html</pre>
<p>or:</p>
<pre>http://nsis.sourceforge.net</pre>
<p><strong>Building the Company-Branded VPN Installer</strong></p>
<p>We now have a basic VPN server instance and a standard Windows installer for<br />
OpenVPN, but we want to make it custom built for easy deployment. We also want<br />
to add TightVNC binaries for instant remote administration and assistance.</p>
<p>Download the complete set of TightVNC 1.3dev6 executables without the installer<br />
at:</p>
<pre>http://www.tightvnc.com/download.html</pre>
<p>For now, unzip and save the included files to your desktop. We will be concerned<br />
with the files VNCHooks.dll, vncviewer.exe, WinVNC.exe, and LICENCE.txt. Copy<br />
these files to the openvpn folder within the &#8220;VPN Sources&#8221; folder.</p>
<p>Save the following client-side example configuration file to openvpn/config/VPN.ovpn<br />
within your &#8220;VPN Sources&#8221; folder as well:</p>
<pre>### BEGIN CLIENT SIDE CONFIGURATION FILE ###

# vpn server to contact
remote 192.168.10.10

# port to establish connection on
port 5023

# local tunnel device
dev tun

# interface addresses
tun-mtu 1500
ifconfig 10.23.0.2 10.23.0.1
route 10.0.0.0 255.0.0.0 10.23.0.1

# key location
secret "c:\\program files\\company branded vpn\\config\\key.txt"

# enable LZO compression
comp-lzo

# moderate verbosity
verb 0
mute 10

;fragment 1300
;mssfix

; ping-restart 60
; ping-timer-rem
; persist-tun
; persist-key
; resolv-retry 86400

# keep-alive ping
ping 10

# enable LZO compression
comp-lzo

# moderate verbosity
verb 4
mute 10

### END CLIENT SIDE CONFIGURATION FILE ###</pre>
<p>You will see a number of options in the above example configuration, and I encourage<br />
you to test different settings. For now, a reasonable number of options are enabled,<br />
and the rest are commented out with a leading semicolon. The most important options<br />
will be the IP address of your VPN server, the port number on which to connect,<br />
the location of the key file, and the addressing assignments of the VPN interface.<br />
Also, note the route command listed above. You have control over establishing<br />
entries in the end user&#8217;s routing table upon successful completion of the VPN<br />
tunnel creation. This comes in handy in a number of situations.</p>
<p>Before moving on, you will also need to copy the contents of /etc/openvpn/port5023.key<br />
on your VPN server to openvpn/config/key.txt within the &#8220;VPN Sources&#8221; folder.<br />
This step ensures the new VPN installer will have the correct key when establishing<br />
the encrypted tunnel.</p>
<p>To wrap up the company-branded VPN installer portion, open the &#8220;VPN Sources&#8221;<br />
folder and edit openvpn-gui.nsi. Replace the first section of code with this:</p>
<pre>!include "MUI.nsh"
!include "setpath.nsi"

!define MASTER "x:\openvpn\exp\openvpn"

!define HOME "openvpn"
!define BIN "${HOME}\bin"

!define MUI_PRODUCT "Company Branded VPN"
!define OPENVPN_VERSION "2.0"
!define GUI_VERSION "2.0"
!define MYCERT_VERSION "0.3.2b"
!define MUI_VERSION "-"
;!define MUI_VERSION "${OPENVPN_VERSION}-gui-${GUI_VERSION}"

!define TAP "tap0801"
!define TAPDRV "${TAP}.sys"</pre>
<p>Now find the line that starts with &#8220;OutFile&#8221; and replace it with:</p>
<pre>OutFile "Company Branded VPN.exe"</pre>
<p>Next, locate the line:</p>
<pre>File "${HOME}\openvpn.exe"</pre>
<p>And add directly below it (overwriting the identically named sections):</p>
<pre>  SetOutPath "c:\program files\TightVNC"

nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -kill'

File "${HOME}\vncviewer.exe"
File "${HOME}\WinVNC.exe"
File "${HOME}\LICENCE.txt"
File "${HOME}\VNCHooks.dll"

nsExec::ExecToLog '"c:\program files\TightVNC\winvnc.exe" -reinstall'
nsExec::ExecToLog 'net start winvnc'

SectionEnd

Section "OpenVPN GUI" SecGUI

SetOverwrite on
SetOutPath "$INSTDIR\bin"
File "${HOME}\openvpn-gui.exe"

SetOutPath "$INSTDIR\config"
File "${HOME}\config\VPN.ovpn"
File "${HOME}\config\key.txt"

CreateDirectory "$INSTDIR\log"

SectionEnd</pre>
<p>Next, locate the following lines:</p>
<pre>Delete "$INSTDIR\config\README.txt"
Delete "$INSTDIR\config\sample.${SERV_CONFIG_EXT}.txt"</pre>
<p>and replace them with:</p>
<pre>Delete "$INSTDIR\config\key.txt"
Delete "$INSTDIR\config\README.txt"
Delete "$INSTDIR\config\VPN.ovpn"</pre>
<p>This step ensures removal of the key and configuration file in the event the user<br />
uninstalls the company-branded VPN package.</p>
<p>Finally, in the &#8220;VPN Sources\openvpn&#8221; folder, rename openvpn-2.0_rc6.zip to<br />
openvpn-2.0.zip and openvpn-gui-1.0-beta26.zip to openvpn-gui-2.0.zip. I do<br />
this to keep the version of the primary application OpenVPN simple; feel free<br />
to address this issue as desired.</p>
<p>Return to the &#8220;VPN Sources&#8221; folder, right-click openvpn-gui.nsi and left-click<br />
compile NSI. If you made all the changes correctly, you will now see a &#8220;Company<br />
Branded VPN.exe&#8221; in the &#8220;VPN Sources&#8221; folder. It will include a complete example<br />
configuration, the appropriate key, and a company-branded look and feel to the<br />
installer. It will also install TightVNC, register it as a Windows Service,<br />
and start you on your way to easier remote user administration with secure remote<br />
access.</p>
<p><strong>Where You Can Go from Here</strong></p>
<p>The general ideas outlined in this article enable systems and network administrators<br />
to deploy a company-branded VPN solution for the Windows 2000/XP platform, which<br />
can be extended to other client platforms with additional work. This solution<br />
allows administrators to control what the end user&#8217;s workstation knows about<br />
(routing table additions), what the end user is permitted to access (VPN server&#8217;s<br />
firewall configuration), and utilizes open source tools, thereby allowing a<br />
company to deploy cost-effective and branded solutions to its users.</p>
<p><strong>Resources</strong></p>
<p>NSIS Web site &#8212; <strong>http://nsis.sourceforge.net</strong></p>
<p>OpenVPN Web site &#8212; <strong>http://www.openvpn.net</strong></p>
<p>OpenVPN GUI Web site &#8212; <strong>http://openvpn.se</strong></p>
<p>Real VNC Web site &#8212; <strong>http://www.realvnc.com</strong></p>
<p>TightVNC Web site &#8212; <strong>http://www.tightvnc.com</strong></p>
<p><em>Adam Olson lives in Northern California. He&#8217;s been active in network design,<br />
systems administration, and systems programming for more than nine years with<br />
various companies like MCI WorldCom and small Bay Area startups. He has now<br />
co-founded a relatively new company serving the needs of small and medium-sized<br />
businesses that is called Office Appliance (<strong>http://officeappliance.com</strong>).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://geekdom.wesmo.com/2008/07/02/openvpn-windows-one-awesome-vpn-setup-quick-and-easy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Save Those BlackBerry SMS Messages</title>
		<link>http://geekdom.wesmo.com/2008/06/19/save-those-blackberry-sms-messages/</link>
		<comments>http://geekdom.wesmo.com/2008/06/19/save-those-blackberry-sms-messages/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 17:49:31 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://geekdom.wesmo.com/?p=86</guid>
		<description><![CDATA[Backup a Blackberry using barry and How To Wipe A Blackberry]]></description>
			<content:encoded><![CDATA[<p>The party line from both RIM (makers of the Blackberry) and Verizon was that there was no way to move SMS messages from one Blackberry to another.  The provided software from both parties only allowed backing up the contacts, email, and any related data (photos, video, etc), but they both stood hard and fast stating that those were the limits.</p>
<p>Unfortunately, we had a user who absolutely needed to have the SMS messages copied from their 8830 to their new Blackberry Curve, and they wouldn&#8217;t give up the old phone until the messages were moved over.</p>
<p>Linux to the rescue!  Using the tool called <a title="Barry" href="http://www.netdirect.ca/software/packages/barry/" target="_self">barry,</a> we managed to perform a full backup of the 8830 and successfully restore it to another 8830.  Unfortunately, we couldn&#8217;t restore it to the Curve because barry wouldn&#8217;t recognize the curve with the version of barry that we had (0.12).  Additionally, we couldn&#8217;t modify the backup file (a tar.gz file containing directories and binary files of the messages) in any way (not even a simple untar/uncompress and immediate tar and re-compress) since barry would immediately complain about the contents.</p>
<p>So.. here we had a backup, but couldn&#8217;t get it on to the curve.  Some browsing through the mailing list archives for barry turned up an obscure reference to the CVS repository for another fix, so we checked out the CVS repository, built and installed, and gave it a shot.</p>
<p>It worked to a certain level.. It transferred 78 of the 128 SMS messages, then hung.  A second attempt (after killing off barry) got to 108 messages before hanging, and the end user was happy with the 108 messages (they included the ones they wanted to save) and we left it at that.</p>
<p>Wiping the blackberry was easy:</p>
<ol>
<li>Go To <strong>Options</strong></li>
<li>Select <strong>Security Options</strong></li>
<li>Select <strong>General Settings</strong></li>
<li>Click the <strong>Menu</strong> key and select <strong>Wipe Handheld</strong></li>
<li>Click <strong>Continue</strong> and follow the prompt by entering the word <strong>blackberry</strong></li>
</ol>
<p>The unit will then wipe itself and it will be back to factory defaults.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekdom.wesmo.com/2008/06/19/save-those-blackberry-sms-messages/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
