SuperMicro Beta BIOS supports Windows 8 and Server 2012

In a previous post I reported that my SuperMicro SuperWorkstation 7047A-T failed to install Windows 8 or Windows Server 2012 due to a ACPI_BIOS_ERROR. I contacted SuperMicro support, and I was informed that new BIOS releases are on their way that will support Windows 8 and Server 2012.

This morning I received an email from SuperMicro, with a new Beta BIOS for the X9DAi motherboard used in the 7047A-T. The new BIOS allowed me to install Windows 8 and Server 2012.

I used a DOS bootable USB key, and installed the new BIOS.

The 7047A-T has USB ports on the back and on the front of the case. The ports on the front are all USB3, and it is not possible to boot from these ports, at least I have not yet found a configuration that allows booting from USB3 ports. I tried using USB2 keys and, my newest Kingston DataTraveler HyperX 3.0 super fast USB3 keys, the BIOS does not list any boot devices in these USB3 ports. To boot from USB you have to plug the USB key in one of the rear USB2 ports.

The new BIOS version is “1.0 beta”, compilation date “7/23/2012”. The BIOS screen looks like the more modern AMI EFI BIOS’s I’ve seen in other devices, i.e. the thin font instead of the classic console font.

BIOS.Beta

I performed a “Restore Optimized Defaults”, and then went through the options to see what has changed and what is new.

The [Advanced] [Chipset Configuration] [North Bridge] [IOH Configuration] now sets all PCIe busses to GEN3, the old BIOS defaulted to GEN2.

The [Advanced] [SATA Configuration] now enabled hot plug on all ports, the old BIOS defaulted to hot plug disabled.

The [Advanced] [Boot Feature] ads a new power configuration item called “EuP”. This seems to be related to EU Directive 2005/32/EC:

EU Directive 2005/32/EC enacted by the European Union member countries dictates that after January 1, 2010, no computer or other energy using product (EuP) sold in the member countries may dissipate more than 1 Watt in the standby (S5) state.

I measured the power utilization, and the machine uses 2W when powered off, 140W at idle in Windows 8 desktop, and 7W while sleeping.

I updated my Windows 8 USB key to the latest build (I have access to), booted from the USB key, and installed Windows 8 without any major issues.

I had swapped the NVidia Quadro 4000 for a faster ATI FirePro V7900. The v1.0 BIOS worked fine with the Quadro 4000, but after installing the V7900, the screen powered on and Windows 7 started booting before I had a chance to see the BIOS screen. After installing the new Beta BIOS, the V7900 works as expected and I can see the BIOS screen during POST.

This is a note for ATI; please make sure your VGA driver install UI fits on a 640×480 display. When I swapped the Quadro 4000 for the V7900, and rebooted into Windows 7, I booted into a 640×480 16 color screen. Imagine my frustration trying to guess which button has focus when you can only see the top half of the ATI driver installer.

Windows 8 automatically installed drivers for the V7900.

The only driver Windows 8 did not automatically install is the C600 chipset SAS driver. I installed the Intel Rapid Storage Technology Enterprise (RSTe) drivers, and that solved that problem.

While running Windows 7 on this machine, and running the Windows Experience Index Assessment, the test would always crash. The same test in Windows 8 completed successfully.

Win8.EI

I found the 2D and 3D results to be disappointing, and I tried to replace the “ATI FirePro V (FireGL V) Graphics Adapter (Microsoft Corporation – WDDM v1.20)” driver with the ATI Windows 8 Consumer Preview driver. Although the release notes indicate that the V7900 is supported, the driver installation failed with an unsupported hardware error. I’ll have to wait for newer Windows 8 drivers from ATI to see if the test scores improve.

I’m quite happy that I can use my new machines with Windows 8.

I just wish SuperMicro solved the BIOS incompatibility problems long ago, after all, it has been almost two years since the Windows 8 pre-release program started, and almost a year since the release of the public developer preview.

Advertisements

XBMC for Android on Pivos XIOS DS

In my ongoing quest to find the perfect Home Theater PC platform, I was excited to read that XBMC had been ported to Android. This opens possibilities for XBMC on low cost, low power, low noise, small form factor hardware, with hardware accelerated media playback.

The XBMC Android development was done on a Pivox XIOS DS device, and I ordered one from Amazon. At $115 it is not exactly low cost, especially compared to mature platforms like the Roku 2 XS for $98 or Boxee Box for $180.

 

The XIOS DS is really small, here is a picture showing the size of a Roku 2 XS compared to a XIOS DS compared to a Zotac ZBOX Nano XS AD11, compared to a Pulse Eight Pulse Box:

Size.Compare

 

“Piovs” vs. “Pivos”; while unpacking the box I found this little gem printed on the box, one would think that spelling your company name correctly on the packaging is important:

Pivos.Box.Back

 

If you’re interested in an a full unboxing, look here.

 

I installed the box, powered it up, and it takes about 90s to power up, much longer compared to the Roku, Boxee or OpenElec.

Navigation using the included IR remote is a bit clunky, the UI has no indication of where the current focus is, and the Ok button sometimes needs to be pressed twice. I can’t really fault Android for this as the UI is intended for tablet use, not for remote use, but it is something that needs work. Here is a screenshot of the opening page:

Main.Screen

By default LAN and WiFi are both disable, if you click the down button, the settings icon will be active, and you can press the Ok button, once or a few times, and then enable the LAN card.

The box comes installed with Android Gingerbread 2.3.4. The auto update functionality reports everything is up-to-date, but you can get the firmware and app updates from the Pivos forum. I updated the firmware and apps, instructions are on the forum, here is a summary; download the firmware and apps RAR files, extract the contents to a microSD card, insert the microSD card in the box, navigate to [Privacy][Update System] and select update:

Firmware.Update

After several minutes the new launch screen will be up:

Boot.After.Firmware 

This screen is even less remote friendly. It took me several tries to figure out that I need to press the left and right buttons to see the different desktops, this would be equivalent to swiping left and right on the screen. After pressing the right button you will see a desktop with the settings icon:

Settings.After.Firmware

The updated version is Android Ice Cream Sandwich 4.0.3.

I again needed to enable the LAN port, and set the correct time zone. Again the remote vs. touch had me struggling to enable the LAN port, you need to select network, then Ok, then right, and then up, and then Ok to enable the LAN port, highlighted below:

Ethernet.After.Firmware

 

I had the box up, and updated, I wanted to install XBMC, and I discovered that the announcement for XBMC on Android support did not include the availability of official binary packages, just source code, and build instructions.

I was not really up for setting up a build environment myself, and knowing the community, I started looking for unofficial builds, and I found one at the Miniand Tech forums for the MK802, but I did not want to install it until I could find confirmation if it would work on the DS. This morning I noticed a new thread on the Pivos forum containing a pre-release APK file for the DS.

I downloaded the APK file to the microSD card, and I needed to get to the file browser to install it. I gave up on fiddling with the remote, and I attached a USB mouse, from here on I clicked the apps icon, top right on main page, launched the file browser, opened the APK file, and installed XBMC:

Pivos.XBMC

 

Once up and running, I wanted to add some network media, and this turned out to be a challenge, as NFS is not supported, yet SMB is. I normally allow anonymous/root NFS read-only access to my media files, all media players are happy with this. I do allow SMB access using a domain username and password, and most players are happy with this, just more typing. But, I was unable to enter any symbol characters, the standard XBMC remote control data entry box would not enable the symbol buttons. I tried a USB keyboard, but the “_” character resulted in a “-“ character, and the UI would not close, unless you hit the Ok button on the remote several times. Next I tried setting up a XP VM image with the guest account enabled to allow anonymous SMB network access, and just browsing to the share, that also didn’t work, as I was prompted for a username and password. I created a test account on the XP image, using a simple username and password, and that allowed me to access to the folder. The remember credentials option did not work, every time I access the folder I have to re-enter the credentials. I’m sure NFS support will be added, and these issues resolved over time.

I used the series of bird test videos to test network playback, I have MKV files ranging from 20mbps to 110mbps. I haven’t yet found a player that can play the 110mbps video without dropping frames. Unfortunately the OSD for XBMC on Android does not show frame statistics, but by visual observation stuttering started around the 38Mbps mark. Note that these MKV files only contains a video stream, no audio or other streams.

I was disappointed as I couldn’t get any of my AVC/H264/DTS/AC3/AAC based movie files to play. Since the video only files played ok, I assume it is due to the audio stream types, or a configuration option, but I’m not sure.

 

The platform is promising, but in its current Alpha state it still needs lots of work, both in terms of remote control based Android navigation, and XBMC on Android stability. I will definitely try again once a more stable version is released for direct deployment via the appstore.

Debugging Windows 8 Install BSOD

In my last post I described how to prevent Windows from automatically restarting when encountering a BSOD during the OS install process. This allowed me to see the  ACPI_BIOS_ERROR fault code while installing Windows 8 on my new SuperMicro workstation. The new Windows 8 BSOD page looks friendly, but no longer displays any error parameters other than the main fault code.

In order to get additional details of the crash, I had to hook up a kernel debugger to the machine. Windows 8 adds USB3 and TCPIP kernel debug support, and I will describe how I used the TCPIP network option to capture details of the crash.

 

First thing to do is prepare our tools, download the Windows 8 Debugging Tools for Windows package, and the Windows 8 Symbols.

Unfortunately the debugging tools are no longer available as a standalone download, and you need to install the SDK or WDK on a Windows 8 system in order to get them, but you can choose to only install the debugging tools. Once you installed the debugging tools on one machine, you can copy the MSI installers or the directory to any other machines, including Windows 7 systems. You will find the tools in the “C:\Program Files (x86)\Windows Kits\8.0\Debuggers” folder.

Microsoft is pretty good at publishing symbols for most released versions of their products to their public symbol server, but I prefer to extract the symbols to a working directory on my machine, or to upload the symbols to our internal symbol server. You can install the downloaded symbols MSI package directly, or use the following command to extract the symbols from the MSI file to a location on disk. Run an elevated (right click run as administrator) command prompt, and type:

msiexec /a [symbol msi file name] /qb targetdir="[output directory]"

 

Next we need to enable kernel network debugging in the BCD options. This needs to be done on a Windows 8 machine as the network debugging command is not supported in older versions of BCDEdit. I should also call out that network debugging support is required for hardware logo certification, but not all current adapters support it. Insert the bootable Windows 8 USB key, run an elevated command prompt, and type:

bcdedit –store [usb key drive]:\boot\bcd /dbgsettings net hostip:[IP of WinDbg machine] port:50000

BCDEdit will output the connection security key that is required by WinDbg.

 

Start WinDbg, and enable network kernel debugging, entering the port number and security key.

WinDbg.Network

 

Boot the target machine, you will see the target machine connecting to WinDbg:

Microsoft (R) Windows Debugger Version 6.2.8400.0 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...
Connected to target 192.168.1.106 on port 50000 on local IP 192.168.1.100.
Connected to Windows 8 8400 x64 target at (Fri Jul 20 11:07:21.583 2012 (UTC - 7:00)), ptr64 TRUE
Kernel Debugger connection established.

And then the ACPI_BIOS_ERROR crash:

25: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

ACPI_BIOS_ERROR (a5)
The ACPI Bios in the system is not fully compliant with the ACPI specification.
The first value indicates where the incompatibility lies:
This bug check covers a great variety of ACPI problems.  If a kernel debugger
is attached, use "!analyze -v".  This command will analyze the precise problem,
and display whatever information is most useful for debugging the specific
error.
Arguments:
Arg1: 0000000000000003, ACPI_FAILED_MUST_SUCCEED_METHOD
    ACPI tried to run a control method while creating device extensions
    to represent the ACPI namespace, but this control method failed.
Arg2: fffffa8019f2f288, The ACPI Object that was being run
Arg3: ffffffffc0000034, return value from the interpreter
Arg4: 00000000494e495f, Name of the control method (in ULONG format)

Debugging Details:
------------------

ACPI_OBJECT:  fffffa8019f2f288

DEFAULT_BUCKET_ID:  WIN8_DRIVER_FAULT

BUGCHECK_STR:  0xA5

PROCESS_NAME:  System

CURRENT_IRQL:  0

LAST_CONTROL_TRANSFER:  from fffff803ca1e617a to fffff803ca0e5870

STACK_TEXT: 
fffff880`053eb418 fffff803`ca1e617a : 00000000`00000000 00000000`000000a5 fffff880`053eb580 fffff803`ca16b930 : nt!DbgBreakPointWithStatus
fffff880`053eb420 fffff803`ca1e57d2 : 00000000`00000003 00000000`494e495f fffff803`ca168810 00000000`000000a5 : nt!KiBugCheckDebugBreak+0x12
fffff880`053eb480 fffff803`ca0eb044 : 00000000`c0000034 fffff880`01038255 fffffa80`1a50fe78 00000000`c0000034 : nt!KeBugCheck2+0x79f
fffff880`053ebba0 fffff880`01043949 : 00000000`000000a5 00000000`00000003 fffffa80`19f2f288 ffffffff`c0000034 : nt!KeBugCheckEx+0x104
fffff880`053ebbe0 fffff880`0103bded : 00000000`00000000 00000000`00000000 00000000`00008004 00000000`c0000034 : ACPI!ACPIBuildCompleteMustSucceed+0x39
fffff880`053ebc20 fffff880`010346bd : fffffa80`1a500000 00000000`00008000 00000000`00000000 fffffa80`37e80000 : ACPI!AsyncCallBack+0x7f
fffff880`053ebc50 fffff880`01034f56 : fffffa80`1a500000 fffff880`01072be0 00000000`00000000 00000000`00000002 : ACPI!RunContext+0x141
fffff880`053ebc90 fffff880`010386e3 : fffffa80`19b1c3a0 00000000`00000000 00000000`00000000 fffffa80`19a35258 : ACPI!InsertReadyQueue+0xd6
fffff880`053ebcc0 fffff880`0103862a : fffff803`ca2eb490 fffff880`01072be0 00000000`00000000 00000000`546c6d41 : ACPI!RestartCtxtPassive+0x2f
fffff880`053ebcf0 fffff803`ca0cb181 : fffffa80`19e06b00 00000000`00000080 fffff880`04ac6540 00000000`00000000 : ACPI!ACPIWorkerThread+0xea
fffff880`053ebd50 fffff803`ca0dae26 : fffff880`04aba180 fffffa80`19e06b00 fffff880`04ac6540 fffffa80`19a8f940 : nt!PspSystemThreadStartup+0x59
fffff880`053ebda0 00000000`00000000 : fffff880`053ec000 fffff880`053e6000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x16

STACK_COMMAND:  kb

FOLLOWUP_IP:
ACPI!ACPIBuildCompleteMustSucceed+39
fffff880`01043949 cc              int     3

SYMBOL_STACK_INDEX:  4

SYMBOL_NAME:  ACPI!ACPIBuildCompleteMustSucceed+39

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: ACPI

IMAGE_NAME:  ACPI.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4fe6a2b1

BUCKET_ID_FUNC_OFFSET:  39

FAILURE_BUCKET_ID:  0xA5_ACPI!ACPIBuildCompleteMustSucceed

BUCKET_ID:  0xA5_ACPI!ACPIBuildCompleteMustSucceed

Followup: MachineOwner

 

Even with all the crash details, it still doesn’t really help me make progress, as it has been two days since I logged the support request with SuperMicro, and no response yet.

Windows 8 and Server 2012 on SuperMicro results in ACPI_BIOS_ERROR BSOD

I ran out of disk space on my development workstation, all those VM images add up. The machine has four drive bays, and all four have 3TB drives. I can replace the 3TB drives with 4TB drives, but migrating the RAID5 array will be time consuming and risky. I can add an external SAS storage enclosure, but they do not power down when the machine goes to sleep. So I looked at buying a new machine with more drive bays.

I’ve been using DELL Precision Workstations for my development machines for many years, they are fast and very reliable. My current workstation is a T5500, and I specifically chose the T5500 over the T7600 because of its features to physical size ratio. The T7600 does offer five drive bays over the T5500’s four, but if I’m going to change machines, adding only one more drive is not really worth the cost and effort.

Rather than buying a pre-configured and tested machine, I opted for the more exciting, sometimes rewarding, often frustrating, option of building my own. In order not to spend too much time on the project, I opted to use a chassis and motherboard combo, and just add peripherals. I chose the SuperMicro SuperWorkstation 7047A-T, containing the X9DAi motherboard. I specifically picked this model because it has eight hot-swap drive bays, is low noise, has a high efficiency PSU, and supports dual Intel Xeon E5-2600 processors.

I used 32GB Kingston KVR1600D3D4R11SK4/32GI memory, two Xeon E5-2660 processors, and an NVidia Quadro 4000 graphic card.

I prepared a USB key with Windows 8 x64 Release Preview. Microsoft does provide a tool to convert ISO images to USB keys, but I’ve been doing this by hand since long before the tool existed, and it is really easy and ultimately quicker to update.

Mount the ISO install image as a virtual drive using Virtual CloneDrive. Launch an elevated (right click run as administrator) command prompt, and run:

diskpart

list disk
select disk [number]
clean
create partition primary
select partition 1
active
format fs=fat32 quick
assign
exit

robocopy [virtual cd drive]:\ [usb key drive]:\ /mir

Once the USB key has been properly formatted, you only have to repeat the robocopy steps for any new builds or bits you want to copy.

I booted from the USB key, black screen with spinning circle animation, blue screen of sad face death, and an immediate reboot.

The machine rebooted so quickly I didn’t get a chance to see what the error was.

I tried Windows Server 2012 RC, same problem. I tried later builds of Windows 8 and Server 2012 (we are part of the Windows 8 Pre-Release Program, I hope I can say that now, at some point I was not even allowed to say that, like the Fight Club rules).

I logged a support case with SuperMicro, and I posted on the Microsoft Windows Server support forum. No reply yet from SuperMicro, no useful reply yet from the forum.

I think it is really silly that the default configuration of Windows is set to automatically reboot after a BSOD, even more so for an install situation. BSOD’s are serious, users and administrators need to know something terrible happened, even if they don’t immediately know what the error codes mean or what to do about it. I do know how to change the reboot option from inside windows, but I don’t know how to change it in the installer.

I was looking for a BCD option to disable auto-reboot, and after quite a bit of searching, I found a BcdOSLoaderBoolean_DisableCrashAutoReboot WMI BCD option on MSDN. After some more searching I found a NOCRASHAUTOREBOOT BCDEdit option.

That was really unusually difficult to find. Try it yourself, search for “nocrashautoreboot” and restrict the results to microsoft.com, there was only one hit on a Microsoft site, in a Word DOC file. Try the search on the rest of the web, and you get more hits.

Now that I knew what option to set, the rest was pretty easy. Insert the bootable USB key back in a working machine, open an elevated command prompt, and set the BCD option:

attrib -r [usb key drive]:\boot\bcd
bcdedit -store [usb key drive]:\boot\bcd -set {default} nocrashautoreboot yes

Start the install again, wait for the crash, and this time we can see the error is ACPI_BIOS_ERROR:

ACPI_BIOS_ERROR

There are many reports on the web about ACPI_BIOS_ERROR and Windows 8, most resolved by updating the BIOS, but also several reports of this error with SuperMicro motherboards, and unfortunately it seems without a positive resolution.

To make sure the problem was not peripheral or hardware related, I also installed Windows 7 and Windows Server 2008 R2, both installed and ran ok.

I use a KVM switch, and as I switched back to the machine while it was applying Windows Updates, there was some screen corruption that went away after the reboot. I updated the NVidia driver and the problem has not resurfaced, this may be a driver issue, or it may be a hardware issue:

NVIDIA

I am very disappointed that my brand new machine can only run Windows 7 and not Windows 8. I have yet to hear from SuperMicro support, but I hope they can resolve the problem with a BIOS update before Windows 8 and Windows Server 2012 is released in August.

CrashPlan Memory Utilization

I’ve been using CrashPlan as an online backup solution for quite some time, and it works really well.

I like the fact that I can subscribe to the consumer plan, with almost 3.5TB of data backed up, and that the backup client installs on a server OS. Many of the other “unlimited” backup providers I tested have restrictions in place that makes such a setup impossible.

CrashPlan sends email notifications about backup status, and I noticed that something was wrong with the backup:
CrashPlan.Email

I logged onto the machine, opened the main UI, and after a few seconds the UI just closed. opened it again, same thing, after about 15s the UI closed.

My initial thoughts were that it is a crash, but on attaching a debugger, the exit call stack showed that the process was cleanly terminated after receiving a signal.

On looking at the NT eventlog I could see that the service was restarting about every 15s:

The CrashPlan Backup Service service entered the stopped state.
The CrashPlan Backup Service service entered the running state.
The CrashPlan Backup Service service entered the stopped state.
The CrashPlan Backup Service service entered the running state.
The CrashPlan Backup Service service entered the stopped state.
The CrashPlan Backup Service service entered the running state.

The service wasn’t crashing, it was externally being stopped and restarted. I looked in the CrashPlan directory, and I found several log files with a naming like restart_1342296082496.log. The contents of these files looked like this:

Sat 07/14/2012 13:01:22.53 : "C:\Program Files\CrashPlan\bin\restart.bat"
ECHO is off.
Sat 07/14/2012 13:01:22.53 : APP_BASE_NAME=CrashPlan
Sat 07/14/2012 13:01:22.53 : APP_DIR=C:\Program Files\CrashPlan
ECHO is off.
Sat 07/14/2012 13:01:22.53 : Stopping CrashPlanService
The CrashPlan Backup Service service is stopping.
The CrashPlan Backup Service service was stopped successfully.

Sat 07/14/2012 13:01:25.05 : Sleeing 15 seconds...

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 15, Received = 15, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Sat 07/14/2012 13:01:39.08 : Starting CrashPlanService

The CrashPlan Backup Service service was started successfully.

ECHO is off.
Sat 07/14/2012 13:01:39.13 : Exiting...

I looked for a newer version, but 3.2.1 was the latest version. I logged a support ticket with CrashPlan, but I continued my investigation. I found a log file service.log.0, several MB in size, and inside it I found this:

[07.14.12 12:32:39.480 ERROR   QPub-BackupMgr       backup42.service.backup.BackupController] OutOfMemoryError occurred...RESTARTING! message=OutOfMemoryError in BackupQueue!

So it seems that the service is running out of memory. I now had a few good keywords to search on, and I found this post of a user with the same problem. At about the same time I received a reply from CrashPlan support, not bad for weekend service, with the same solution.

The CrashPlan backup service and desktop applications are Java apps, and as such the maximum amount of memory they use are capped by configuration. I have had similar problems with other memory hungry Java apps, like Jaikoz, that simply fail unless you increase the memory limit.

To fix the problem, shutdown the service, open the CrashPlanService.ini file in the program directory, and increase the maximum memory utilization parameter to 2GB, the default is 512MB, and restart the service:

Virtual Machine Parameters=-Xrs -Xms15M –Xmx2048M

After upping the memory all seemed well, and the service has been running for more than a day. But, I wanted to know just how much memory is CrashPlan using, and it turns out to be insane.

Here are the current stats for the amount of data I backup, as well as the resource utilization by the backup service and desktop app:

CrashPlan.Size
CrashPlan.Memory.Desktop
CrashPlan.Memory.Service

As you can see, the desktop app’s peak private bytes exceed 250MB, and the service exceeds 1.3GB, that’s right 1.3GB of memory!

Those numbers are simply outrageous.

From Blogger to WordPress

I outlined my concerns with Blogger in my last post, and after much deliberation, I decided to move my blog from Blogger to WordPress.

There are two main choices; use WordPress.com for full service blog hosting, or use WordPress.org and host the WordPress application at a hosting provider. Here is a summary describing the differences.

I decided to try both options; I created a blog a WordPress.com, and I created a self-hosted blog using WordPress.org.

Creating the blog at WordPress.com was very quick and easy.

As with Blogger, you can pick any sub-domain name for the hosted blog, as long as it is unique. On Blogger my site is blogdotinsanegenius.blogspot.com, and on WordPress.com my site is blogdotinsanegenius.wordpress.com, not very imaginative, but descriptive and unique.

WordPress, like Blogger, allows you to point your own domain name to your hosted site using a CNAME record. But, unlike Blogger where it is free, WordPress.com charges $13 per year for this feature. WordPress.com offers additional paid domain services, including domain registration and DNS management.

WordPress supports importing from a variety of sites and formats, including Blogger, and my posts, settings, and comments were all imported in a few minutes.

Here is the screenshot of the various import options offered:
Tools.Import

There are certain restrictions in using WordPress.com vs. WordPress.org, and to a lesser degree Blogger, most notably no advertising of your own. WordPress.com will show their own ads, as that is their revenue model, similar to Blogger showing Google ads. But Blogger, as far as I know, does not restrict the use of other ads such as Amazon, nor do they restrict the use of affiliate links. WordPress.com specifically calls out that Amazon affiliate links are ok, as long as it is not the primary purpose of the site. WordPress.com offers a $30 option to remove all of their ads from your blog.

For self-hosted WordPress I needed a hosting provider, and WordPress.org offers some suggestions, probably with a revenue partnership. The world of low cost hosting is like the wild west; many brands owned by the same company, review sites owned by the hosting companies, referral programs leading to biased third party reviews, low cost signup high cost renewal, etc. I decided to try BlueHost and DreamHost, and I will give a brief review and overview of my signup and WordPress setup experience.

If you enter the BlueHost using http://www.bluehost.com/wordpress_hosting, the link from the WordPress.org hosting provider site, you are offered hosting at $3.95 a month, if you enter BlueHost using http://www.bluehost.com/ you are offered the same hosting at $4.95 a month.

BlueHost does not offer a trial, but they do offer a 30 day money back guarantee. Do read the terms, full refund less non-refundable fees, if cancelled within 3 days of signup.

When you go to the signup page, you have to enter a domain name, either a domain you own, or a domain you intend to buy. As I did not want restrict myself to a particular domain, I used the embedded support chat to contact support. After typing my question, and hitting the live chat button, I was redirected to a new page, where I had to select my contact option again, and then enter my question again. So basically the embedded support chat is bogus, whatever you type is thrown away, and you are directed to an outsourced chat provider.

When I finally managed to chat to an agent, they had to ask me what site I came from, another indication of the poor chat integration implementation. The agent assured me that I can change the domain any time, and their system just requires me to pick something. But, it turns out that this is not entirely true, once you remove the primary domain, you can never add it back again. I cannot imagine a technical reason for this restriction, so it may be related to avoiding a user creating a new hosting account vs. renewing an existing account at a much higher cost. To avoid any problems, I just used a domain I own but do not actively use.

The account creation and setup flow was optimized around taking my credit card information, once the account was created, it was rather confusing, starting with my login name being the domain name I selected in step one.

The first email I received, “Welcome to Bluehost! (redacted) – configure your account.”, told me that the fist step is to transfer my domain or to point my domain the the BlueHost DNS server, I did not want to do either of these. The email included links to the FTP server hosting the account, FTP username, and a link to change the password, but the change password link pointed to the main BlueHost site.

The second email I received, “Welcome to Bluehost! (redacted) – Get started now!”, included links to getting started tutorials.

The third email I received, “Welcome to Bluehost! (redacted)”, included a change your password link, and this URL was personalized, and let me create a new cPanel login password.

I proceeded to login to cPanel using my new password, and I was redirected to what I assume is the machine hosting the account, https://box835.bluehost.com:2083/frontend/bluehost/index.html. Notice that the port number is 2083, and this failed, as the network I was working on does not allow anything other that port 80 HTTP and port 443 HTTPS outbound traffic. I contacted support, who indicated I need to open port 2082 and 2083 outbound, no, I can’t do that. My own research into their own KB system gave this link, instructing me to use a different admin URL, and this worked, using standard SSL, and no host or port specific redirects.

I wanted to map a temporary domain name to the hosting account, so that I can install, configure, and test WordPress, before committing to point my blog’s DNS entry to BlueHost. There was no convenient way to do this, I either had to use the http://%5BIP%5D/%5Baccount%5D/ path format, or I had to map one of my own domain names to the hosting IP address, or I had to point one of my domains to use their DNS server. And, this other domain had to be an unused domain, as I don’t want to transfer a live site before having the destination ready.

At this point I decided to try DreamHost. The main DreamHost page lists the shared hosting as $8.95 a month, if you click on the WordPress link, you are offered the same hosting at $6.95 a month.

DreamHost offers a 2 week trial, you basically always sign up for the trial, and will only be charged if you do not cancel within 2 weeks.

The signup process is straightforward, the first thing you are asked is to create an account using your email address and select a password. After providing your credit card information, you are asked to provide a FTP username.

The first email I received, “[redacted] DreamHost Account Approval Notification!”, included the login information to the FTP server hosting the account, and indicated that the account is being created. The FTP password was system generated, and is different to the account password I already selected.

The second email I received, “[redacted] DreamHost FTP-only User Activated”, indicated that the FTP account had been successfully created.

Logging in to cPanel ran over standard HTTPS and I had no problems accessing the management portal.

The domain management portal allows you to create any number of domain to site mappings, and does not require the domain names to be mapped to or registered with DreamHost’s DNS. In order to create a sub-domain, you must first add the main-domain, even if you don’t intend to use or map it. DreamHost supports mirror domains, that allows you to use a dreamhosters.com sub-domain to point to your site. This was very convenient as it allowed me to register blogdotinsanegenius.dreamhosters.com, and use this domain for testing and configuration, and later I can use it as a CNAME for the blog’s DNS entry.

Installing WordPress was easy, DreamHost supports automatic deployment of a large number of popular applications.

Here is a screenshot of the available blogging applications:
DreamHost.Applications

I cannot speak to long term stability or performance, but judging based on the setup and administration process and experience, I think the $3 per month extra for DreamHost over BlueHost is well worth it.

As part of the blog migration I have to maintain existing permalinks, else search engines and users with links to content will not find the information.

As an example, consider the following permalinks:
Blogger: http://blogdotinsanegenius.blogspot.com/2012/06/looks-can-be-deceiving.html
WordPress.com: https://blogdotinsanegenius.wordpress.com/2012/06/19/looks-can-be-deceiving/

Blogger and WordPress.com uses different permalink formats. Blogger uses a yyyy/mm/title.html format, where WordPress.com uses a yyyy/mm/dd/title format. WordPress.org allows the permalink format to be changed, and also allows plugins to be used to convert between incoming and hosted formats.

I found many articles explaining the process of migrating from Blogger to hosted WordPress.org, but I could not find anything on similar functionality at WordPress.com. I asked about this on the WordPress user forum, and a forum user claimed that Blogger style permalinks are supported, yet I could find no information about it on WordPress site. I tested it, and it did indeed work. I contacted WordPress support to get an official answer, and they claimed it is not supported, and recommended that I use WordPress.org. The forum users’ comment was very insightful; “Most of the staff have less experience at WP.com than I do, but you can ask them.”

Another difference between Blogger and WordPress is the use of labels vs. tags and categories. On Importing the site from Blogger, all the labels were converted to categories. Most of the labels really needed to be tags, and fortunately WordPress offers a bulk tag to category, and category to tag converter.

Below are screenshots from Windows Live Writer showing Blogger style labels (categories) and WordPress style categories and tags:
WLW.Blogger
WLW.WordPress

 

WordPress.com supports all the features I need, and at $45 per year for no ads and a custom domain, it is cheaper than the cheapest self-hosting, and more importantly, maintenance free.

I am posting this directly to the WordPress.com sub-domain, next I will change the blog’s DNS CNAME to point to the WordPress.com sub-domain, and if all goes well, you are reading this post on blog.insanegenius.com.