A couple of months ago, I bought a flat black new Lenovo T431s Ultrabook. It came with a i7 quad core processor, 8 gigs of RAM, and a 256 gig SSD. A nice machine.
It also came with windows, which I don’t deal well with, so one of the first things I did was put Kubuntu 13.10 onto it, ditching the Windows 7 partition entirely.
It worked out of the box, mostly, but there were a few issues I had to sort out to really get it working. Now that I have, I thought I’d pass on the info, because I’m really pretty happy with it.
One of the first things I did after un-boxing it, was to play with the power controls. Being involved peripherally in the electric car industry, and writing battery charging software in the past, I’m acutely aware of battery life, charge cycles, etc.. there’s a lot of FUD out there, and I found it interesting that the power control utility in the system tray allowed you to restrict the battery from charging above a certain amount, or discharging below another.
So you can set it to only charge to 80% for example, and then discharge to only 20%. This of course limits you to 60% of your total charge, but I know that this can increase the effective charge cycles for lithium batteries significantly. So I tried setting it to 80% max. It worked. Cool.
Then I installed Kubuntu. I quickly noticed that the laptop would not charge past 49%. There was no control that I could find in Linux to modify the settings, and the older thinkpad battery controls through /sys/ filesystem didn’t work at all.
So I had to install another laptop drive I had laying around, install windows on it, and install the battery utility. Then I could change the settings there, and then switch back to my Kubuntu install and it worked.
I ended up switching the settings to 95% in windows, which gives me about 5 hours of battery life in Kubuntu (Wifi, 50% screen brightness, programming, surfing, etc..) which is pretty good for me.
Don’t forget that you’re hosed once you’re in Linux until someone writes a driver. (Update: See Comments below, Julian has written a patch for this. Thanks Julian!)
The touchpad default settings make it essentially useless in Kubuntu. With the touchpad utility in settings it gets a little better, but a lot of things still don’t work like coasting and the no-scroll areas. After reading a few other experiences, and tweaking on my own, I came up with this bash script which sets things fairly well:
#!/bin/bash synclient ClickPad=1 synclient ClickFinger1=1 synclient ClickFinger2=3 synclient ClickFinger3=2 synclient EmulateMidbuttonTime=0 synclient PalmDetect=1 synclient PalmMinWidth=5 synclient PalmMinZ=40 synclient HorizHysteresis=50 synclient VertHysteresis=50 synclient HorizTwoFingerScroll=1 synclient HorizScrollDelta=2000 synclient VertTwoFingerScroll=1 synclient VertScrollDelta=-111 synclient CoastingSpeed=20 synclient CoastingFriction=10 synclient CornerCoasting=0 synclient MaxSpeed=40 synclient MinSpeed=.1 synclient AccelFactor=.05 synclient AreaBottomEdge=3700 synclient TapButton1=1 synclient TapButton2=3 synclient TapButton3=2 synclient MaxTapTime=250 synclient RTCornerButton=2 synclient RBCornerButton=2 synclient LTCornerButton=1 synclient LBCornerButton=1 synclient RightButtonAreaLeft=3914 synclient RightButtonAreaRight=0 synclient RightButtonAreaTop=3918 synclient RightButtonAreaBottom=0 synclient MiddleButtonAreaLeft=3100 synclient MiddleButtonAreaRight=3873 synclient MiddleButtonAreaTop=3918 synclient MiddleButtonAreaBottom=0
More details on what these actually do are here: http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html
Update: Desktop Switching Gesture
I also configured XbindKeys to recognize the left/right scroll buttons (when you tip the mouse wheel on some mice) to switch virtual desktop left and right. Then combined with horizontal scrolling for the touchpad above, I can do two-finger swipe gestures left and right to switch desktops like on a Mac, which is pretty handy when dealing with smaller screens.
Here’s my ~/.xbindkeysrc
# Bind "left" mouse button to desktop left "xte 'keydown Super_L' 'key Right' 'keyup Super_L'" b:7
# Bind "forward" mouse button to Ctrl+F9 "xte 'keydown Super_L' 'key Left' 'keyup Super_L'" b:6
Then in KDE shortcuts I bound the windows-Left Arrow and windows-Right Arrow to switch desktops. As long as you turn up the HorizScrollDelta pretty high so you’re not switching desktops ever time you get the coffee jitters, it seems to work okay.
This can be configured using the fprint library and the handy fingerprint-gui package in Ubuntu. Nothing installed out of the box, but easy to get working. Works great, and allows sudo access via the fingerprint reader. It will not work with KDM logins, but supposedly should work with lightDM logins although I haven’t gotten it to work.
Essentially it seems to tie into PAM, so whenever a sudo request comes up, it will pop up a little window, or a message in the shell to use the reader if you want. You can still enter a password if you like. Pretty slick, but honestly I don’t use it that much.
The old school thinkpad power control drivers don’t work. There’s lots of tips here: http://www.thinkwiki.org/wiki/How_to_reduce_power_consumption but I’ve noticed it’s hit and miss on a few because this ultrabook is a big redesign, so a lot of the old thinkpad tricks just don’t apply.
What did really help was running thermald. This will jockey the CPU to keep heat down, and power ~= heat. So if your system is cool, you’re saving battery life. This worked much better than the standard approach of using CPU frequency scaling, so now I only have this running instead of frequency tweaks.
Overall works really well. Multiple screen support in KDE is pretty good, the displayport works well, so I can get several big screens going if I want. KDE doesn’t seem to want to remember taskbar settings per-screen, so if your external monitor has a taskbar, and you unplug it, that taskbar gets tossed onto your laptop screen, so there’s always a manual process of moving taskbars around if you switch monitor configuration a lot.
It’s recommended to change some default options if you run an SSD, so I did in /etc/fstab:
UUID=d03ab1 / ext4 noatime,nodiratime,discard,errors=remount-ro 0 1
This seems to work a little faster (probably due to the noatime/nodiratime setting) although I didnt’ benchmark it, so it could be me dreaming. The discard settings helps the drive keep free blocks from slowing things down over time, and the rest is normal.
Love the speed of the SSD.
Hope the helps someone. If you have any additional tips, let me know. I’m still playing with the touchpad settings to get the top buttons to work optimally. If you’ve sussed this out, please let me know.