It's back to school season again, and I've decided to splurge some money on a new laptop a week or two ago. And of course, a new laptop means that I have to make sure that all the hardware components inside work with Linux, which is never a sure thing...
First things first, exactly what type of laptop was I looking for? Here's what I had after a quick brainstorming session:
- Something within a $500-$1000 CAD/USD price range. Optimally somewhere in the middle.
- Screen size 15"-16". (15.6" widescreen is preferred, minimum resolution I want is 1366x768)
- Keyboard has numpad.
- Intel CPU (i5/i7; ivy bridge should be affordable with budget < $1k) + dedicated Nvidia GPU combo. Entry-level Nvidia GPU is fine, just something with more oomph than an integrated Intel GPU. Of course, this means that I'm very likely going to end up with an Optimus-capable laptop, which had me somewhat worried at first due to Nvidia's non-existent support of Optimus on Linux. More on this later.
- A wireless NIC that works out of the box on Linux. Most likely Intel/Atheros, but I'm fine with other brands as well. Preferably a card that doesn't require proprietary firmware, although I'm fine if it does just so long as it works.
- Hard drive: I don't really care about capacity. Faster hard drive (e.g. 7200 rpm) ranks higher to me than capacity. Although SSDs are too expensive...
- DVD+RW drive.
- Everything else - ethernet, bluetooth, mobile broadband, webcam, mic, audio, USB ports and other peripherals, bulkiness/weight of laptop, battery life/power supply, warranty, pre-installed Windows OS + crapware, etc. - don't care. (Ok, battery life should be semi-decent though.)
I'm definitely not a hardware enthusiast, but I did intend to stretch my money as much as possible and try to get hardware that's recent and still affordable. I also wanted to avoid having to deal with too many Linux hardware compatibility issues...my old laptop (LG R580) was a pain to work with at first, given that e.g. suspend & resume regularly caused kernel panics (fixed by a BIOS update), very flaky wireless with my Ralink card (which was no longer an issue once rt2800pci matured enough, Linux >= 2.6.38), and display brightness couldn't be altered (leading to very poor battery life, but fixed with an out-of-tree kernel module, nvidiabl), and some other less important issues. This time around, I wanted everything to "just work" as much as possible.
The first laptop that I ended up buying was an Acer Aspire V5-571G, w/ Intel i5-3317U (ivy bridge), Nvidia GT 620M, 8 GB of DDR3 RAM, a 5400 rpm 500 GB HDD, and a 15.6" LED-LCD display (with a resolution of 1366 x 768), for a grand total of $699.99 CAD before tax, and which I returned a few days after. There were two "show-stoppers" with that laptop on Linux:
- The laptop would always reboot when I told it to shut down from
Linux, regardless of whether I powered off my laptop within a GNOME
Shell session or with
shutdown -h nowin a console.
- The Atheros wireless NIC that came with the laptop would frequently disconnect from my home wireless network, and unfortunately my google-fu turned up nothing fruitful in my search to make it just work. For future reference:
$ lspci -knn 04:00.0 Network controller : Atheros Communications Inc. AR9462 Wireless Network Adapter [168c:0034] (rev 01) Subsystem: Lite-On Communications Inc Device [11ad:6621] Kernel driver in use: ath9k
I couldn't find a fix for either of these issues before I ran out of patience and decided to try my luck with another laptop.
The second laptop I bought was a Toshiba Satellite P850, which I've had a much more pleasant experience with. Brief specs: Intel i7-3610QM (again, ivy bridge), Nvidia GT 630M, 8 GB of DDR3 RAM, a 5400 rpm 640 GB HDD, and a 15.6" LED-LCD display (with a resolution of 1366 x 768), which set me back $799.99 CAD.
First off, a quick Linux compatibility overview (with Debian 7.0 Wheezy, which is at the time of writing, testing and not yet released).
$ lspci -knn 02:00.0 Ethernet controller : Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 09) Subsystem: Toshiba America Info Systems Device [1179:fb30] Kernel driver in use: r8169
Works perfectly out of the box. No additional non-free (proprietary) firmware needed.
$ lspci -knn 03:00.0 Network controller : Intel Corporation Centrino Wireless-N 2230 [8086:0887] (rev c4) Subsystem: Intel Corporation Centrino Wireless-N 2230 BGN [8086:4062] Kernel driver in use: iwlwifi
Works perfectly once the required firmware is installed (for Debian, that's the firmware-iwlwifi package available in the non-free repository). Without the firmware, no wireless connections are detected (and you'll see "missing firmware" messages with dmesg), so if you're installing Debian, do so while hooked up with ethernet. It works out of the box on distros (e.g. Ubuntu) where the required firmware is available from the get-go.
Bluetooth: works perfectly fine. However, I don't use it regularly and
unfortunately there's no BIOS switch to turn it off, so in order to stop
it from wasting battery power, unload and blacklist the
bluetooth kernel modules.
Webcam: works perfectly fine.
Internal mic: works perfectly fine.
Audio (through speakers): does NOT work out of the box with Ubuntu 12.04 LTS. When I installed Debian testing, it didn't work either. (However, it now works in both Debian and Ubuntu with updated kernels available from the repositories as of mid-August 2012). In order for audio to work out of the box, you must be running Linux >= 3.2.22 or >= 3.4. Launchpad bug report #1017017 addresses this issue; patch can be found on the LKML as well if you want to backport it to an older kernel.
Audio (through headphones): works perfectly fine.
CPU: it's a quad-core, 2.3 GHz i7 monster. 8 threads with Hyper Threading enabled, and hardware virtualization works, unlike my old laptop...that means I can finally use kvm (qemu is ridiculously slow without it).
Touchpad (actually a clickpad): works perfectly fine for me. I believe it's multi-touch capable, but I've never investigated it since I don't use multi-touch gestures.
USB slots: work perfectly fine. The Satellite P850 comes with 4 USB 3.0 slots, 2 on each side, which is convenient.
Suspend & resume: works perfectly fine.
Hibernate: works perfectly fine.
Graphics: Intel HD 4000 (again, ivy bridge) + Nvidia GT 630M in a mux-less Optimus setup. This, of course, means that you'll have to make do with Bumblebee and bbswitch which work perfectly fine if you follow the steps provided on the Debian Wiki, or make do without, which means you'll only be able to use the integrated Intel card (which I must say is already quite capable, and is able to compete with lower-end discrete ATI/Nvidia cards). Even if you don't intend on using the Nvidia card, install bbswitch so that it doesn't just sit there, eating up your battery life; the BIOS doesn't even give you the option of switching between Integrated and Optimus setups; you're stuck with both cards powered on by default.
Display brightness: works perfectly fine, either using GNOME's control center, or by manually inserting a value into /sys/class/backlight/intel_backlight/brightness.
Function keys: first thing you need to do is to go into the BIOS, and switch "Special" Fn keys to "Standard" Fn keys. This reverts the Fn keys to what most people would be more comfortable with. By default, since "Special" is activated, that means that pressing a F# key = implicitly pressing the Fn button as well, so the first time you try pressing F5 to refresh your page, what really ends up happening is that your laptop interprets it as Fn+F5 and disables your touchpad instead. This frustrated me to no end until I figured out I could switch this in the BIOS. I mean, honestly, when I press Alt + F4, I expect my current window to close, not for a projector screen to be activated, and I sure as hell don't want to press Alt + Fn + F4 to close windows. That's just stupid. And when I press F11, I want my browser to go fullscreen, not for my audio to get muted (with the implicit Fn key activated)...
Anyways, aside from the mess that is known as Nvidia Optimus, and audio with older kernels, this Toshiba Satellite P850 works great with Linux. :)
One last note: for Debian users like me who want to use the latest (beta1) installer to install Debian wheezy/testing on a Toshiba Satellite P850, you'll encounter lockups during the network detection step and while partman is launched; #683889 and #684309 respectively. This will prevent you from using the installer to install Debian (you'll be stuck with the pre-installed Windows, heh), and until those bugs are fixed, there's a working workaround available in #681656 (i.e. switch to another console and insert "exit 0" into /bin/check-missing-firmware before the network detection step, which automagically fixes the partman lockups as well...don't ask me how, I have no clue).
And to wrap things up, here's a photo of my shiny new laptop:
...And it turns out that 2 months after this post, I just realized that my laptop's SD card reader slot doesn't work, or at least not out of the box. I knew I was missing something...more on this in a follow-up post.