In this blog post I’ll describe the process I went through while upgrading my desktop PC. Expect a comprehensive buildlog. It’s a bit late now, since I was shopping in December 2013, but at the time I was looking for this kind of a summary and couldn’t find one, so perhaps it still serves some purpose… Next time I’ll probably do a multi-part series of posts rather than collect everything in one that’s hard to finish.
I went back to this post, finished it and am now posting it to provide background context around a very recently accomplished goal, stay tuned..
- What do I want from my PC? Linux, Windows, web/email/office etc, coding (native and web), Virtual Machines (VMs), occasional but “non-casual” gaming, option to experiment with fun tech like CUDA (assuming I ever get around to it 🙂 ). Roughly in that order.
- Upgrade vs new: upgrade (well, initially at least that was the plan..). The trigger for this was my graphics card giving up, but I had thought about upgrading my 2.13GHz Core2Duo PC to something more recent for a while.
- Build vs Buy: build. I built my last PC myself, and it was overall a very positive experience. I had a few hard drive failures and 2 graphics card failures (one in warranty, one outside), and it would’ve been very inconvenient to ship the entire thing to make use of warranties.
- Budget: last time, I set my budget at 1000€, which resulted me a good mid-range machine. When choosing components, I typically chose the ones that provided the most “value for money”. I decided to make similar component choices this time.
- First/second hand: I considered 2nd hand for some components.
CPU & Graphics card brand: for me, that’s currently Intel & Nvidia. I think Intel currently makes the more advanced processors, and I know Nvidia’s Linux drivers work. I’m sure AMD would do the job as well though, and I will not claim that my reasoning is based on hard and current evidence :).
In order to determine the order in which I needed to buy components, I created a spreadsheet describing the dependencies between components. This allowed me to determine whether I could do a staged upgrade where I’d use some of my old components.
For example, the PSU doesn’t depend on anything, but the RAM and CPU depend on the mainboard. It turned out that the graphics card I chose also depended on a new PSU, though initially this wasn’t obvious to me.
In the end this wasn’t quite as useful as I had hoped, because everything depended on something new in non-obvious ways (like the graphics card on a bigger case..).
This component had failed in my old PC, so it was the first to be replaced. And that in the most atypical way possible: I was in Hong Kong on a stopover, and met a friend of mine there. We visited a shopping mall, I did some research on my phone there and then, and bought one.
Since I had limited time, I researched the current chipsets (it looked like GTX670 and GTX760 were the current best midrange value-for-money ones), and then picked one with that chipset from the shop. I ended up with MSI’s Nvidia GeForce GTX 760 OC Gaming 4GB DDR5 Twin Frozer IV. It was about £40 cheaper in HK than at home at the time. I just hope that I won’t have to RMA it :).
Choices to make: # of cores, clock speed, features. (Price is always one so I won’t explicitly state it).
I wanted at least a quad-core CPU, so that I’m not immediately stuffed if I want to run more than one VM, and because I expect more and more applications to take advantage of multithreading/parallel processing. If nothing else, I can run more compilers in parallel.
This brings me to the Intel Core i5 family of chips. For the first time, I considered buying a 2nd hand chip from Ebay. After reading some CPU guides, I had shortlisted a few chips.
While looking at Intel’s site, I discovered an interesting feature called VT-d, which apparently allowed passing peripheral (e.g. PCI-E) devices more “directly” through to VMs. At work, we use virtual routers regularly, so I had some idea about how this could be useful (networking performance). I decided I wanted this feature. It seems to have another interesting use-case.
VT-d support ruled out the K-chips. Now I was left with the Core i5 3470, 3750, and 4430 and 4570 (numbers demystified here). The prices were surprisingly close to each other (£131-143 or so), and Ebay didn’t exactly have great deals that would’ve made me jump on right away (most people seemed to buy & sell the overclockable -K chips), so after a little more research I ordered an i5-4570 (it had a higher clockspeed than the 4430 and a few extra features, and the next one up seemed less of an improvement). On a stricter budget, I probably would’ve picked the 3750, as the mainboard would’ve been cheaper.
Choices: Chipset, various features (# and type of ports etc…), form factor (ATX, mATX etc)
This needed to be chosen together with the CPU. Apparently, VT-d support was somewhat difficult to get. This thread highlighted some of the pitfalls – For the Haswell chipsets for example, Intel’s ARK page for example only lists VT-d as a supported feature on the Q87 chipset – good luck finding a consumer-grade Motherboard with that on it, the Z87 page doesn’t list it. Furthermore, it looks like some vendors have issues with the implementation (there are probably better examples than the link I provided). There are some lists that can help you though, and if you want to be extra sure, look for someone on the internet (just google) who claims to have it working with a motherboard you’re considering. After all this, I decided to go for this ASRock Z87 board. The UEFI (new “BIOS”) looks pretty nice by the way.
Choices: Size, speed, latency, price.
I just went for a reasonably priced, branded 8GB 1600MHz (that’s the max speed supported by my CPU) kit.
Choices: wattage, power efficiency, single/dual rail design, modular design, noise level
There exist various power supply wattage calculators (like this one) that let you input your components and give you a number in the end. Then, I went and looked what I could get on the low to mid-range end of the spectrum, and looked up some reviews. I got this one.
It needs to fit your graphics card(s) (check your card’s length!), and if you have some very large PSU maybe you should also check the maximum dimensions there. It also needs to have enough slots to fit all your 2.5″, 3.5″ and 5.25″ devices, look nice, keep your PC cool, not make too much noise, and not cost the earth. Last time round, I got some cheap case which ended up being very light and served me well, and if it would’ve fit my graphics card I probably would’ve continued using my old one. Again, there are plenty of reviews out there.. But in the end I had to compromise somewhere, as I couldn’t find one that ticked all the boxes. The Bitfenix Shinobi, which I ended up going for, scored well in most areas of the reviews, except cooling. Why? Firstly, as the AnandTech review noted in the Addendum, the hard drive placement in the review could influence the thermal characteristics, and experimenting with different HDD positions is something I’d be happy to do if necessary. Also, contrary to some of the reviewers, I was not planning on using multiple graphics cards or overclocking my CPU, so my setup would probably generate less heat. Furthermore, the case offered 7 fan mounts, so if necessary I could still populate a few more. I did however go for the window edition, since it allowed tool-less HDD installation and came with an extra fan compared to the windowless variant.
A close contender was the Antec One, and I also considered the Sharkoon T28 and the carbide series.
Optical disk drive
Choices: Blu-ray, DVD, write-speeds
I already have a blu-ray playing capable device, so I didn’t feel the need to get a blu-ray player. I was almost tempted to not install a disk drive in the first place, since these days you can install OSes using USB sticks, but I felt I had enough older software that shipped on CDs/DVDs to warrant spending £11.98 on a simple DVD drive. I would’ve used my old one if my mainboard had an IDE cable of course.. 😉
Choices: speed, capacity, durability/reliability.
I knew I wanted an SSD to speed up my OS and important applications, but I was a little surprised by the number of technologies that manufacturers had at their disposal to trade off speed/capacity/cost and durability. I thought it was worth spending some time on understanding them, because I’ve had multiple HDD failures in the past and it’s easy to imagine manufacturers advertising their SSDs speed, capacity and cost, but I wasn’t expecting durability aspect to be prominently featured in their product descriptions. Therefore, I thought it was a good idea to research the technologies’ tradeoffs (see SLC vs MLC for example). In the end I went with a Crucial M500.
Linux-only, or Windows, possibly dual-booted? (If you’re buying a Mac you wouldn’t be reading this anyway)
I chose to stick with ArchLinux + Windows Server 2008R2, which I got for free from Microsoft as a student, which I was already using on my old PC in “workstation mode”. For most practical intents and purposes, it’s basically Windows 7.
I wasn’t motivated to spend £100 on Windows 8 Pro. I wouldn’t get an edition without the remote desktop feature.
Building a PC is pretty simple IMHO. Most connectors have a unique shape, and for tricky bits, like mounting the CPU, Fan, and case buttons & LEDs you can follow the instructions in the various manuals.
Well, in theory you do something like this:
- Prepare your install media
- Put your install media into your PC
- Follow the on-screen installation instructions
- Boot into new OS
- Install drivers & applications
And, the last time round I remember this bit being fairly straightforward; it only took a while to download all the updates, drivers etc.
A tale about install media, GPT & UEFI, the installation process and SSD firmware
The Windows pain
If you chose not to buy an optical disk drive, you need to install your OS from a USB stick. It’s of course possible, but not quite as easy as burning an iso. This is especially if you want to do something like installing Windows 7 or Server 2008R2 and use GPT partitions and UEFI instead of MBR+BIOS. I believe the Windows 8 installer has better GPT and UEFI support than the older installers.
At least for me, it involved messing around with the command line on Windows, and at some point I was trying to manually patch my USB stick with files that I had to salvage from my old desktop’s HDD…
Here are some interesting links to things you probably hoped never needing to care about 😉 :
- How to create Windows 7 / Windows Server 2008 R2 bootable USB media for deployment on UEFI based systems
- Thread on How to clean install Windows 7 Professional 64-bit to a GPT partitioned hard drive
- Another thread on “If WIndows 7 supports GPT, why can’t I install the OS on GPT?”
The Linux formatting issues
With Arch Linux I didn’t have any trouble with creating the install media or booting it, but I couldn’t format the SSD.
Basically, when I tried to format the SSD as part of the installation process (mkfs -t ext4), I got lots of scary error messages (like “invalid chs sector 0”, timeouts, cgdisk errors – I unfortunately don’t have error logs leftover, since I couldn’t copy/paste them from the installer!) leading me to some threads where people tell you how their disks are dead. This was a new SSD that Windows didn’t seem to have formatting issues with, so I was a little suspicious about it being dead.
It turns out I “just” needed to upgrade the firmware. This involved either using a Windows utility or burning an iso image. Again, this is easier when you have an optical media drive and you don’t have to worry about creating bootable USB sticks based on their iso that don’t work with UEFI bootloaders, if I remember correctly…
Post install issues
Windows update stuck
for some reason Windows update wasn’t working properly. I found the solution via this thread.
Windows doesn’t boot with old HDD attached
I had some old spinny disks plugged into my PC. When they were attached, Windows would refuse to boot. After converting their MBR to a GUID partition table (using gdisk, see this wiki page) the problem went away.
Intel e100e/I217V NIC Windows driver installer couldn’t find an Intel Ethernet device
Apparently, they don’t like you using this chipset on Server OS-es, but you can fix that (you need to look up the vendor and device ID for your NIC and then modify the appropriate lines/files; the link provided solves it for a slightly different chipset but the method is the same). Ironically, Intel provides Linux drivers on their website and in fact my NIC worked out of the box on Linux, so I’m not quite sure why they do this to their customers. Take a look at these threads.
Photoshop install failed / applications running with administrator privileges can’t access My Documents etc.
I got the following error while trying to install Photoshop:
ERROR: Error 1327.Invalid Drive: H:\
ERROR: Install MSI payload failed with error: 1603 – Fatal error during installation.
MSI Error message: Error 1327.Invalid Drive: H:\
It turns out this is caused by UAC – applications running with administrator privileges see a different set of mounted drives to applications not running with administrator privileges. To fix this, I had to mount the drive as admin, which you can do by writing a little bat script that runs “net use H: …”, and running that as administrator.
The clue came from here. It turns out this also affects applications like FSX.
Post install non-issues
People new to SSDs should look at some of the optimisations that are possible. I found the Arch Linux wiki page on SSDs useful in this context.
I setup dual booting using Gummiboot. I boot into the linux kernel using the EFI boot stub mechanism.
One Reply to “[historic] Building a desktop PC for 2014”