Ubuntu 13.04 «Raring Ringtail» on a Lenovo T430s

I recently – finally – upgraded away from my old Lenovo B550 (which was merely meant as a gap-filler, but, well…) to a new, shiny Thinkpad T430s, model 2356LPG.

There’s a few essential things you need to watch out for when using Ubuntu 13.04. Personally, I’m using the Ubuntu GNOME variant, so there might be a few minor caveats not covered due to different frontend interfaces.

Network devices

The 3.8.0 kernel shipping with Ubuntu 13.04 isn’t entirely suitable for use with a T430s, mainly for two reasons:

  1. The WWAN driver for the Ericsson H5321 gw built into 3.8 doesn’t work particulary well with this device, in the sense that it won’t connect at all.
  2. The e1000e driver in 3.8 doesn’t handle coming out of suspend gracefully. You’ll at the very least need to reload the module.

In this case, you’ll most likely want to go and use the mainline kernel versions. I’m running 3.9.0 and it’s working fine.

Power management

Or, rather, saving uselessly wasted power.

TLP

First and foremost, install TLP. It’s an easily customizable suite of scripts that’ll give you a hand in the power management for your device.

On Ubuntu, you can add the ppa:linrunner/tlp and install tlp, tlp-rdw, acpi-call-tools. There’s a slew of self-explanatory options in /etc/default/tlp. My changes:

--- tlp.orig	2013-05-02 19:38:09.000000000 +0200
+++ tlp	2013-05-07 18:25:45.012467195 +0200
@@ -143 +143 @@
-RESTORE_DEVICE_STATE_ON_STARTUP=0
+RESTORE_DEVICE_STATE_ON_STARTUP=1
@@ -161 +161 @@
-#DEVICES_TO_ENABLE_ON_RADIOSW="wifi wwan"
+DEVICES_TO_ENABLE_ON_RADIOSW="wifi"
@@ -167,2 +167,2 @@
-#START_CHARGE_THRESH_BAT0=75
-#STOP_CHARGE_THRESH_BAT0=80
+START_CHARGE_THRESH_BAT0=75
+STOP_CHARGE_THRESH_BAT0=80
@@ -170,2 +170,2 @@
-#START_CHARGE_THRESH_BAT1=75
-#STOP_CHARGE_THRESH_BAT1=80
+START_CHARGE_THRESH_BAT1=75
+STOP_CHARGE_THRESH_BAT1=90
@@ -184 +184 @@
-#DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
+DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
@@ -189 +189 @@
-#DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"
+DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi"
@@ -195 +195 @@
-#DEVICES_TO_DISABLE_ON_DOCK=""
+DEVICES_TO_DISABLE_ON_DOCK="wwan"

Kernel command line options

In essence, this change to /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 i915.semaphores=1 acpi_backlight=vendor"

Long version:

i915.i915_enable_rc6=1
Enables RC6 power saving modes for the Intel chipset.
i915.i915_enable_fbc=1
Enables Framebuffer compression. Essentially reduces the stuff your power-intensive hardware needs to do, thus saving power.
i915.lvds_downclock=1
Allows your display to clock down when not used that intensively.
i915.semaphores=1
«Use semaphores for inter-ring sync.» Potentially saves power and stops screen interface corruption from happening. This may cause your video to stutter.
acpi_backlight=vendor
Doesn’t save power directly, but allows you to actually adjust the display brightness.

Bumblebee

Even if you’re not planning on using your discrete NVIDIA graphics card via Optimus, you should have a look at the Bumblebee project, which allows you to control the discrete card.

Especially, it allows you to turn it off, as there are circumstances where it’s actually active without you intending it to be.

For 13.04, you can find the requisite packages in ppa:bumblebee/stable. You should install bbswitch-dkms. After building, add bbswitch load_state=0 to /etc/modules and you’re good.

TODO

  1. Color management and profiles (uses TPLCD60.ICM, is there anything special to it?)
  2. ???