Sony Vaio Pro 11 with Ubuntu

TH05 eGPU

Update - 2013-09-15: Both the wireless changes and the intel_pstate changes are upstreamed in Linux 3.12 which is coming soon. Instead of patching the kernel yourself, you can just grab a build of 3.12 for your particular distro.

Just picked up a Vaio Pro 11 to replace my MacBook Air. Another interesting piece of hardware, one of the first Haswell ultrabooks to be released and in my preferred ~11" form factor. Following is some tips to getting Ubuntu running on these devices, the Pro 11 and Pro 13 are virtually identical, some of these probably apply to all Haswell laptops.

To install Ubuntu, you need to grab the Ubuntu 13.10 daily image. The 13.04 image doesn't correctly setup the GPU at boot. Before installing, easiest is to switch the device to legacy in the "advanced bios options menu". This will prevent you from running Windows 8 - EFI mode should work in theory but after a day of EFI installs I couldn't get one running. This system does have the option to disable secure boot. Format the disk to MBR (not GPT) when installing in legacy mode, syncing the MBR from the GPT layout doesn't work on this hardware.

Hopefully I can figure out how to get it running in EFI mode, allowing dual boot setups and generally saner disk layouts. Using BIOS mode and MBR feels like a huge hack these days.

Next up, no wireless. The Intel 802.11ac 7260 card included in the Pro 11 has a driver on the stock 13.10 kernel but no firmware or correct PCI IDs for this revision of the card. To solve this, build a kernel from Intel's iwlwifi git tree.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
cd iwlwifi
# Use your running Ubuntu kernel config
cp /boot/config-$(uname -r) .config
# Build packages and install them
make -j4 deb-pkg
sudo dpkg -i ../linux-headers* ../linux-image*

Firmware is pulled from the LKML mailing list as a patch to the linux-firmware git tree. I've mirrored it here, iwlwifi-7260-7.ucode and iwlwifi-3160-7.ucode following the license provided. Download the firmware and place it in /lib/firmware before rebooting on the new kernel.

Now the system works but you'll probably notice it's rather slow or running very inefficiently. On this kernel, Intel's new pstate CPU scaling driver is enabled but it isn't actually enabled for this CPU. The CPU will be stuck at 800MHz or 1.6GHz (not sure what controls which state you end up in but it seems either case can happen). A small change to the kernel will enable the pstate driver.

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 07f2840..1ce506a 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -522,6 +522,7 @@ static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
        ICPU(0x2a, default_policy),
        ICPU(0x2d, default_policy),
        ICPU(0x3a, default_policy),
+       ICPU(0x45, default_policy),
        {}
 };
 MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);

Save this patch and apply it with 'git apply haswell-pstate.patch'. Rebuild the kernel with make deb-pkg and install the new package. When you reboot, CPU scaling should work as normal but it may appear wrong in tools using the cpufreq interface still. You can check it's working by looking for the directory '/sys/devices/system/cpu/intel_pstate'. The actual speed of the CPU can be obtained with the i7z utility.

To apply this patch for other CPUs that may support pstate but do not have the driver enabled, add a new line with the model number from /proc/cpuinfo of your particular CPU. intel_pstate.c is using hex values and /proc/cpuinfo displays decimal, so be sure to get that right.

My experiences after that bit of kernel setup with the laptop has been pretty good. Thermal design seems much better than the 2012 MacBook Air it replaced. The screen has a slight amount of grain due to the touchscreen overlay that I find a little annoying, it will really bother some. Besides wireless and power management, the rest of the hardware works with no special configuration. Performance is good enough to run most of my Steam games at 1920x1080 with low or medium settings. Build quality seems less than perfect but acceptable. I'll post again how it holds up.

Comments