Tuesday, August 27, 2013

Vostro-no! Wifi Issues with Dell Vostro 1710

I have been known to extol the virtues of a Linux desktop to PC owners who don't require any software that specifically requires Windows to run. Seeing how the average person uses their machines for web-based tasks (searching, email, Facebook, etc.), all they really need is a decent browser. Co-incidentally, this is the same reason tablets are selling so well and traditional PC sales are declining; why buy/upgrade when your current system handles these basic tasks without breaking a sweat?

Anyway, back on topic: I have always found, that the average user cannot, under any circumstances, be subjected to major changes in their desktop computing experience, much to my chagrin. However, I have found one Linux distribution that provides as close to a pre-Windows 8 experience as possible: Linux Mint, specifically the Cinnamon desktop release. Being based on Ubuntu, it pretty much works with most hardware out of the box, however, recently I ran into an issue with an old Dell Vostro 1710 whereby the wireless didn't work without some tweaking.

After I found the wireless device hadn't been initialised, I scanned through the output of dmesg to see what had gone wrong and happened across the following messages:

[ 10.338771] b43-phy0: Broadcom 4312 WLAN found (core revision 15)
[ 10.679089] b43-phy0 ERROR: Firmware file "b43/ucode15.fw" not found
[ 10.679094] b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
[ 10.679097] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

I could have simply visited the URL in that message, but I wasn't happy with the thought of manually installing the firmware for the device; after all, this system needed to be manageable by someone not familiar with the command line. Quickly searching around online revealed a post on the Ubuntu forums that suggested the firmware-b43-installer package would take care of this for me. However, during the package installation, I was greeted by the following message:

An unsupported BCM4312 Low-Power (LP-PHY) device was found.
Use b43 LP-PHY firmware (firmware-b43-lpphy-installer package) instead.

Trying the firmware-b43-lpphy-installer package resulted in success:

(Reading database ... 138948 files and directories currently installed.)
Removing firmware-b43-installer ...
Selecting previously unselected package firmware-b43-lpphy-installer.
(Reading database ... 138945 files and directories currently installed.)
Unpacking firmware-b43-lpphy-installer (from .../firmware-b43-lpphy-installer_1%3a015-14_all.deb) ...
Setting up firmware-b43-lpphy-installer (1:015-14) ...
No chroot environment found. Starting normal installation
--2013-08-26 14:14:58-- http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
Resolving downloads.openwrt.org (downloads.openwrt.org)... 78.24.191.177
Connecting to downloads.openwrt.org (downloads.openwrt.org)|78.24.191.177|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5986780 (5.7M) [application/octet-stream]
Saving to: `broadcom-wl-4.178.10.4.tar.bz2'

5,986,780 2.94M/s in 1.9s

2013-08-26 14:15:00 (2.94 MB/s) - `broadcom-wl-4.178.10.4.tar.bz2' saved [5986780/5986780]

Creating new firmware directory...
broadcom-wl-4.178.10.4/
broadcom-wl-4.178.10.4/config/
broadcom-wl-4.178.10.4/config/wlconfig_nomimo
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_apsta_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_wl_sdstd
broadcom-wl-4.178.10.4/config/wlconfig_lx_shared
broadcom-wl-4.178.10.4/config/diffupdate.sh
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap_sdstd
broadcom-wl-4.178.10.4/config/wl.mk
broadcom-wl-4.178.10.4/config/wltunable_lx_router.h
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_sta
broadcom-wl-4.178.10.4/config/wl_default
broadcom-wl-4.178.10.4/config/wltunable_lx_router_1chipG.h
broadcom-wl-4.178.10.4/config/wl_hnd
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_sta_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_apsta
broadcom-wl-4.178.10.4/config/wlconfig_apdef
broadcom-wl-4.178.10.4/README
broadcom-wl-4.178.10.4/linux/
broadcom-wl-4.178.10.4/linux/wl_sta.o
broadcom-wl-4.178.10.4/linux/wl.o
broadcom-wl-4.178.10.4/linux/wl_ap.o
broadcom-wl-4.178.10.4/linux/wl_apsta.o
This file is recognised as:
filename : wl_apsta.o
version : 478.104
MD5 : bb8537e3204a1ea5903fe3e66b5e2763
Extracting b43/ucode5.fw
Extracting b43/pcm5.fw
Extracting b43/b0g0bsinitvals5.fw
Extracting b43/a0g0bsinitvals5.fw
Extracting b43/b0g0initvals5.fw
Extracting b43/a0g1initvals5.fw
Extracting b43/a0g0initvals5.fw
Extracting b43/a0g1bsinitvals5.fw
Extracting b43/ucode9.fw
Extracting b43/a0g1initvals9.fw
Extracting b43/a0g0bsinitvals9.fw
Extracting b43/b0g0bsinitvals9.fw
Extracting b43/b0g0initvals9.fw
Extracting b43/a0g1bsinitvals9.fw
Extracting b43/a0g0initvals9.fw
Extracting b43/ucode11.fw
Extracting b43/n0bsinitvals11.fw
Extracting b43/n0absinitvals11.fw
Extracting b43/n0initvals11.fw
Extracting b43/ucode13.fw
Extracting b43/b0g0initvals13.fw
Extracting b43/a0g1bsinitvals13.fw
Extracting b43/a0g1initvals13.fw
Extracting b43/lp0bsinitvals13.fw
Extracting b43/b0g0bsinitvals13.fw
Extracting b43/lp0initvals13.fw
Extracting b43/ucode14.fw
Extracting b43/lp0initvals14.fw
Extracting b43/lp0bsinitvals14.fw
Extracting b43/ucode15.fw
Extracting b43/lp0bsinitvals15.fw
Extracting b43/lp0initvals15.fw
Extracting b43/ucode16.fw
Extracting b43/n0bsinitvals16.fw
Extracting b43/sslpn0initvals16.fw
Extracting b43/n0initvals16.fw
Extracting b43/lp0initvals16.fw
Extracting b43/sslpn0bsinitvals16.fw
Extracting b43/lp0bsinitvals16.fw

After a reboot (I probably could have reloaded the module with a modprobe -r b43 && modprobe b43), I was able to use the network applet to view local wireless networks. For reference, the chipset in use was the BCM4312; below is the relevant line from the output of lspci:

06:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

Friday, August 9, 2013

Cooler and the Gang: Introducing Rig Number 2

I have a secondary system in our house, which is a bit of a Frankenstein's monster; it comprises of spare parts, hand-me-downs from upgrades and basically anything I can get my hands on! It used run off an old Pentium D chip I had from a few years back and recently I managed to acquire an Intel Core 2 Duo E6400, which I thought would make an excellent upgrade to the system. Unfortunately, after I switched processors, I found the stock Intel cooler that shipped with the Pentium was clearly not able to dissipate the heat generated by Core 2 chip; temps were around 80°C while idling! I ended up abandoning the system for a while until yesterday when I installed the Arctic Freezer 7 Pro I had left over from installing an H80i in my primary rig. I also used the Arctic Silver 5 paste I had left over from that upgrade as well; I needed to try everything to help keep the CPU running cool, especially as I wanted to try my hand at overclocking the chip at some point.

The process took me a couple of hours in total, and I took plenty of pictures to document it all. Afterwards, I was extremely happy to see idle temps around 30°C and just over 55°C at full load. Please be kind; the poor system is still residing in an old biege box I used to have for my primary system years ago, before I built my current gaming system. A new case is probably the only thing I'm considering actually buying specifically for this rig; I've been eyeing up the Cooler Master HAF XB LAN Box.

Here's the system with the stock cooler installed:

A close up of the stock cooler:

The CPU, once I had removed the stock cooler and cleaned off the old thermal paste:

The Arctic Freezer Pro cooler mount, which is only used for Intel (LGA755 to be precise) installations:

A small blob of Arctic Silver 5 thermal paste on the CPU, before I commenced tinting:

Using an old BCS membership card, I smoothed out that blob across the CPU (tinting):

I did the same to the underside of the cooler:

For the E6400, Arctic Silver recommend the vertical line method for applying the paste, however, I think I may have got mixed up here and accidentally gone with a horizontal line method:

This is the new cooler in place:

A final shot of the case for comparison:

Wednesday, August 7, 2013

Unsuccessful Unlock: Sapphire 6950 HD

Back when I purchased my current graphics card, a Sapphire 6950 HD, I was intrigued by the possibility of being able to access the additional shader units locked out by AMD as part of the binning process. At the time, I had read about the possibility of AMD switching from disabling the shader units via the BIOS to physically cutting the electrical connections with a laser, so I understood that I wasn't guaranteed success. Turns out that my card was laser cut after all, which is disappointing. However, I did learn about GPU BIOS modding, got acquainted with some useful tools and made a couple of interesting observations during the process that I'd like to share.

Research

Following some research, I found there were two relatively simple methods that could be followed to try and access the additional shader units:

Initially, I thought the first option sounded the easiest to achieve and came with the added advantage of clocking the memory higher as well. However, after some further reading, it seemed that this should only be attempted with cards based on AMD's reference 6950, causing issues on cards that were not. So, I opted for the BIOS modification approach, for which there are many useful tools and guides that helped me along my way:

  • Unlocking Radeon HD 6950 Tested - HWLab (about half-way down they detail the instructions for modding the BIOS).
  • GPU-Z - tool to identify GPUs in a system, report their configurations and write out a copy of the BIOS to a file.
  • Mod_BIOS_HD_6950 - a small script that specifically only unlocks the additional shaders in a downloaded 6950 BIOS.
  • HD 6950 to HD 6970 Flashing Tools - the ATI WinFlash tool bundled can be used to flash a modified BIOS to a 6950.
  • Radeon BIOS Editor (RBE) - utility for viewing and tweaking the configuration of a BIOS.

While the HWLab article I mention does a great job of detailing the steps needed to unlock the shaders, I felt it necessary to include the basic method I intended to followed here, for completeness:

  1. Change the BIOS switch to position 1.
  2. Use GPU-Z to dump out the current BIOS to disk.
  3. Use the Mod_BIOS_HD_6950 tool to modify the shader parameter in the BIOS image.
  4. Flash the modified BIOS back to the 6950.
Problems

My first, if minor, issue was simply locating the BIOS switch on my Sapphire card. I'd performed many a Google Image search to see where I should be looking but at first glance I couldn't see it. It can be found near the CrossFire connector on most 6950 cards, but as you can see from this shot taken inside my case, it's not immediately obvious:

I had to look extremely closely to see the switch and had to use a small screwdriver to change it's position. Here's a better close up pic I managed to take:

The real issue that I ran into was that when I tried to mod the BIOS I obtained from my card, the Mod_BIOS_HD_6950 tool simply output the following message:

Given that the BIOS image was essentially a binary file, I assumed that the mod tool was simply scanning for a particular pattern (byte sequence) within the data and changing some values if found (a binary search and replace). The fact that my BIOS didn't have this byte sequence intrigued me, so I grabbed the RBE tool and loaded the (unmodified) BIOS file up to check it out. I was surprised to see the following:

It appears that the Sapphire card shipped with a pre-modded BIOS that could be accessed simply by changing the BIOS switch position, it's just a shame my card had a physically disabled GPU that couldn't take advantage of it! Just to confirm this, I shut down my PC, flipped the BIOS switch back and took a look at the BIOS I'd been running with previously. Sure enough, that BIOS image was completely unmodified:

Conclusion

So, while not the ideal outcome, I can't be too disappointed; I was essentially trying to get something for nothing, or at least minimal time investment. I can't say I've ever been let down by the card in it's stock configuration, this was more of an experiment to see what was possible. I've learnt new things in the process, which is always amazing and I hope some of this post proves interesting if not useful to others.

This whole experience did get me thinking though: what would be my next steps to adding some graphical performance to the system? So far, I've come up with three possibilities:

  • Simply overclocking the card using the Sapphire TriXX utility - this would be pretty easy to do, is free, but likely to produce the smallest improvement.
  • Buying another Sapphire 6950 HD and configuring the two cards in CrossFire - seems this card is difficult and expensive to buy new these days, which is to be expected, but can be found for around GBP 100.00 on Ebay. However, CrossFire has been known to complicate matters: game profiles and frame pacing on the software side, with the additional power requirements and heat dissipation to think about at the hardware level.
  • Upgrading the GPU to something more modern - the 6000-series GPUs are getting on a bit now, especially after Nvidia's recent release of it's 700-series line up. However, I would probably be looking at around GBP 200.00 if I opted to upgrade. I suspect this is a little out of my price range for now and perhaps I'll wait and see what AMD's rumoured 9000-series cards are like.

I'll most likely go ahead with the overclocking option for now, as my card seems to hit around 55°C when gaming, so there's potentially some headroom there. I'll be sure to post my experiences once I've got something to report!

Monday, August 5, 2013

New Keyboard: Ducky DK2108S

I just bought myself a new mechanical keyboard, as I had been using an old Dell keyboard for some time since my old Logitech wireless keyboard and mouse set died. After some extensive research, I opted for the Dk2108S , the "Zero Shine" model. It has many of the features of the Shine II keyboards Ducky produce, but was around GBP 20.00 cheaper. The features I desired were as follows:

The keyboard itself has an incredible build quality and came with a small manual/cheat sheet detailing all the key combinations for the various functions (LED brightness, for example).

For the short while I've had the keyboard, I've been very pleased with how it feels and in addition, with the blue LEDs illuminated, the keyboard is a perfect peripheral for my rig and existing devices:

SSD Upgrade

Around two months ago, I finally bought myself an SSD for my primary gaming rig: a 256GB Samsung 840 Pro. I had been holding out for 256GB drives to reach an acceptable price (around GBP 200.00) before I took the plunge. There were two reasons for opting for the 840 Pro:

I could have afforded a 128GB drive before this, but I considered this to be too small for purpose; I have previously tried living with Windows Vista on a relatively small partition (100GB) and I found I ran out of space on C: far too quickly. Windows 7 has slightly lower storage requirements, but I still felt more comfortable having the larger capacity drive, especially as I tend to install many other applications and utilities on the boot drive.

Installation Options

Despite my having hinted at the way I integrated the SSD into my system, I thought it would be worth detailing three possible solutions:

  1. The simplest option: just attach the SSD to your system as a secondary drive and install/migrate commonly used apps/games over to it.
  2. Configuring the SSD as the primary/boot drive, which involves a bit more work: either re-installing Windows, or using a migration/cloning tool to move your existing installation over to the SSD. As you may already have guessed, this is how I have mine configured.
  3. If you have a motherboard sporting a chipset that supports the Intel Smart Response feature, you can configure an SSD as a cache drive. This makes both your SSD and HDD appear as a single device to Windows and the controller handles the caching transparently. I think the largest size SSD supported for this method is 64GB though - larger drives may work, but you won't get the benefit of the additional space.
Migration

Rather than performing a full reinstallation of the OS, I opted to try out the Samsung SSD migration tool. My existing HDD was divided into two partitions:

  • C: - approximately 330GB, containing the OS and user data.
  • D: - approximately 660GB, containing my games library.

I was pleasantly surprised to see the migration tool gave me the option to clone only my boot/system (C:), as opposed to the entire drive. I kicked off the process and was soon rewarded with the message that I could reboot.

To test that the system would function correctly without the old boot drive, I used the Windows Disk Manager to remove any associated drive letters and rebooted again. Once I was satisfied that the migrated OS was working properly, I used the GParted tool (booted off a live CD) to delete my original boot partition from my HDD and resize the second partition (my games library) to use the available space at the front of the drive.

This left the SSD as my boot drive (C:), with Windows, Office and other basic software installed on it. Steam and all my games still reside on my HDD (D:, with around 300GB additional capacity), I know I could move some of my more used games over to my SSD, I just haven't taken this step yet. Something I have noticed is that games do load quicker and I think this is due to the Windows pagefile sitting on the SSD; when the OS needs to page stuff out of memory to make room for the loading game, this happens a lot quicker as it's writing to the SSD.

Real World Benchmarks

I didn't take the time to produce any synthetic benchmarks to compare the two storage devices, as I felt there are enough great reviews out there that show how amazing SSD access times over traditional HDDs. However, I was intrigued to see if the SATA II controller would prove to be any considerable bottleneck for the SSD, so I did a couple of real world tests:

I found the boot time comparison particularly interesting; the SSD didn't make nearly as much difference as it did when I jumped from an old 160GB SATA I drive to my 1TB SATA II drive. However, the 10GB file copy show just how much of a difference the SSD makes, throughput-wise, even over SATA II.