Thinkpad X240

Der Vorgänger X200 hat über fünf Jahre gehalten, trotz gewisser Schwierigkeiten.

Als Nachfolger kam lange nichts in Frage, weil ich nicht bereit war, den empfundenen Rückschritt von 1280x800 auf 1376x768 zu machen. Es sollte möglichst ein IPS-Panel mit Full HD oder besser sein, wieder 12-13 Zoll. Das X240 ist schon eine ganze Weile verfügbar, hat aber so seine Problemchen. Ganz vorne dabei das Touchpad. Deswegen habe ich mir sehr viel Zeit mit der Entscheidung genommen. Insgesamt bin ich jetzt aber nach fünf Tagen ziemlich zufrieden.

Hardwarekonfiguration:

  • Core i5 4200U
  • 8GB RAM
  • Full HD IPS Display
  • 500GB HD
  • 16GB m.2 Flashdisk
  • Intel 7260 acgn
  • 72Wh Akku

Aber gut, meine Notizen zum Setup. Ich wollte möglichst meine alte 128GB Samsung 840 Pro SSD weiterverwenden und die 500GB-Platte einer Zweitverwertung zuführen.

Installation

Zuerst habe ich das vorinstallierte Windows 8 gebootet und das BIOS aktualisiert. Für Windows gab es natürlich auch eine halbe Tonne Updates zu installieren, zusätzlich das Update auf 8.1. Da ich die m.2-Karte für die Linuxinstallation verwenden wollte, habe ich das Caching entsprechend abgeschaltet.

Anschließend habe ich Debian von einem USB-Stick (testing d-i mit Firmware für die WLAN-Karte) auf die m.2-Karte installiert. die 16GB reichen dafür locker. Auf dem Weg habe ich die Windows-Partition verkleinert um Platz für (temporäres) /home zu schaffen. Insgesamt belegt Windows bei mir nur ca. 25GB, die Partition habe ich auf 40GB verkleinert. Mit /home und den ganzen Recovery- und EFI-Partitionen bin ich unter 100GB geblieben, damit der Umzug auf die alte SSD klappt.

Mit gparted habe ich dann alle Partitionen möglichst weit nach "links" verschoben. Die ersten Partitionen bis einschließlich Windows habe ich dort gelassen, wo sie waren. Ich las irgendwo davon, dass es sonst Bootprobleme geben könnte. Übrigens sollte alles im UEFI-Modus klappen, natürlich mit deaktiviertem Secure Boot.

Für die Migration auf SSD habe ich leider zwei zeitraubende Anläufe gebraucht. Erfolgreich war letztendlich, einfach den Platteninhalt bis zum ENOSPACE per dd auf die SSD zu kopieren und danach mit gdisk im Expertenmodus das fehlende GPT-Backup am Ende der Disk wiederherzustellen (gdisk /dev/sdX, x, e, w). Danach haben Windows und Debian ohne Probleme gebootet. (Der erste Anlauf war eine Kopie der GPT mit sgdisks -R und anschließendem Umkopieren aller einzelnen Partitionen mit dd. Das Ergebnis ließ sich aber nicht booten. Windows-Meldung: 0x0000225, Grub hat sich gar nicht (sichtbar) geäußert.)

Der Austausch der Platte gehört übrigens doch eher zu den Lowlights. Statt einer Schraube wie beim X200 musste ich beim X240 acht lösen und die Bodenplatte auch noch aus den Klauen unzähliger Plastikclips befreien. Das will man nicht unnötig oft machen.

Mit Debian unstable funktioniert übrigens "im Prinzip" alles out-of-the-box. Sondertasten für Lautstärke, Bildschirmhelligkeit, WLAN, Tastaturbeleuchtung, Standby (mangels Swap kein Hibernate probiert). Ich habe allerdings nach einem Hinweis auf planet.debian.org xserver-xorg-video-intel (Version 2:2.99.912-1~exp1) und xserver-xorg-input-synaptics (Version 1.8.0-1~exp) aus experimental installiert.

Tweaks

Touchpad

Das ist noch nicht fertig, bisher komme ich aber mit dem hier in der ~/.xsession ganz gut klar:

synclient LockedDrags=1
synclient LockedDragTimeout=750
synclient TapButton1=1
synclient TapButton2=2
synclient TapButton3=3
synclient PamlDetect=1
synclient AreaTopEdge=2000
synclient MiddleButtonAreaLeft=3000
synclient MiddleButtonAreaRight=4049
synclient MiddleButtonAreaTop=0
synclient MiddleButtonAreaBottom=2000
synclient RightButtonAreaLeft=4050
synclient RightButtonAreaRight=0
synclient RightButtonAreaTop=0
synclient RightButtonAreaBottom=2000

Die ButtonAreas tun aber noch nicht komplett, was sie sollen. Wenn ich es richtig verstehe, wird das auch mit Kernel 3.15 (sid hat bisher nur 3.14) erst alles so richtig toll™ unterstützt. Der Trackpoint fühlt sich per default extrem "schwer" an. Dagegen habe ich das hier in /etc/rc.local:

echo 240 > /sys/devices/platform/i8042/serio1/serio2/sensitivity
echo 250 > /sys/devices/platform/i8042/serio1/serio2/speed

Damit ist der Trackpoint deutlich schneller, aber auch etwas unpräzise. Und leider fehlt mir noch der Linksklick mit der Ecke links oben auf dem Touchpad und das Scrolling mit Trackpoint+MiddleButton funktioniert leider auch nicht. Das wollte ich mit dieser vom X200 übernommenen xorg.conf wiederherstellen, hat aber nicht geholfen:

$ cat /etc/X11/xorg.conf.d/20-trackpoint.conf 
Section "InputClass"
    Identifier "Trackpoint Wheel Emulation"
    MatchProduct "TPPS/2 IBM TrackPoint"
    MatchDevicePath "/dev/input/event*"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "Emulate3Buttons" "false"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection

Display / Auflösung

Das Display hat eine Auflösung von ziemlich genau 175 DPI und macht einen sehr guten Eindruck. Anwendungen, die von 96 DPI ausgehen, sind damit aber für meine Augen deutlich zu klein. In der xorg.conf musste ich die Grüße des Displays angeben, damit X.org die Pixeldichte korrekt berechnet:

$ cat /etc/X11/xorg.conf.d/90-displaydimension.conf
Section "Monitor"
    Identifier "<default monitor>"
    DisplaySize 275 155 # mm
EndSection

Zusätzlich habe ich in der ~/.Xresources (die ich in der ~/.xsession per xrdb einlese) stehen:

Xft.antialias: 1
Xft.dpi: 175
Xft.hinting: 1
Xft.hintstyle: hintmedium

Firefox/Iceweasel braucht eine Extra-Einladung über die Einstellung layout.css.devPixelsPerPx. Ich habe das auf 1.3 gesetzt und bin mit dem Ergebnis leidlich zufrieden. Gruselig sehen damit natürlich Pixelgrafiken wie die von Munin aus. Da kann Firefox aber nichts für. Munin sollte vielleicht mal auf SVG umstellen. Ach Mensch, da gibt es sogar ein Ticket zu.

So sehen Gtk/Gnome-Anwendungen schon mal ganz ok aus.

Awesome WM

Nach dem Setzen des korrekten DPI-Werts sind auch die Textelemente von awesome groß genug, um lesbar zu sein. Ich musste allerdings ein paar meiner Widgets anpassen.

Batterie-Info

Da tp-smapi mit aktuellen Thinkpads nichts mehr anfangen kann, musste ich die Batterie-Infos anders einlesen und berechnen. Ich benutze jetzt diese Funktion um je eine Textbox für BAT0 und BAT1 zu füllen:

function batteryInfo(adapter, widget)
    local fcur = io.open("/sys/class/power_supply/"..adapter.."/energy_now")
    local fcap = io.open("/sys/class/power_supply/"..adapter.."/energy_full")
    local fdes = io.open("/sys/class/power_supply/"..adapter.."/energy_full_design")
    local fsta = io.open("/sys/class/power_supply/"..adapter.."/status")
    local fpow = io.open("/sys/class/power_supply/"..adapter.."/power_now")
    local cur = fcur:read()
    local cap = fcap:read()
    local des = fdes:read()
    local sta = fsta:read()
    local pow = fpow:read()
    fcur:close()
    fcap:close()
    fdes:close()
    fsta:close()
    fpow:close()
    local arrow = "→"
    local hours = "--"
    local minutes = "--"
    local percentage = math.floor(cur * 100 / des)
    if sta:match("^Discharging$") then
        minutes = string.format("%02i", math.floor(60*cur/pow % 60))
        hours = string.format("%02i", math.floor(cur/pow))
        arrow = "↘"
    elseif sta:match("^Charging$") then
        minutes = string.format( "%02i", math.floor(60*(cap-cur)/pow % 60) )
        hours = string.format( "%02i", math.floor((cap-cur)/pow) )
        arrow = "↗"
    end
    widget.text = adapter..": "..arrow.." "..percentage.."% ("..hours..":"..minutes..")"
end

Dabei kommt dann sowas raus:

BAT1: ↘ 19% (01:48) BAT0: → 101% (--:--)

Ja, die Kapazätit beider Akkus ist größer als deren "Design Capacity". Der Interne hat 23,7 Wh statt 23,2 und der große Externe hat sogar 75,8 Wh statt der versprochenen 71,1.

CPU-Frequenz

Mit dem X200 hatte ich auch in einem kleinen Graphen eine Kurve für die CPU-Frequenz. Die konnte man mit ondemand-Governor noch gut aus /sys auslesen. Haswell-CPUs benutzen aber das neue intel_pstates und die relevante Datei scaling_cur_freq ist nicht mehr world-readable Eine Alternative habe ich bisher nicht gefunden. Externe Programme will ich für das Malen einer Kurve nicht jede Sekunde aufrufen.

Munin

Für das alte Geräte hatte ich leider zu spät beschlossen, den Akkuzustand per Munin zu überwachen. Das Plugin dazu musste ich aus obigen Gründen leicht anpassen und sollte jetzt relativ universell sein:

#!/bin/sh

config() {
        echo "graph_title Battery Status $battery"
        echo "graph_vlabel battery capacity (mAh)"
        echo "energy_now.label remaining"
        echo "energy_full.label last full"
        echo "energy_full_design.label design"
        echo "graph_category system"
        echo "graph_args --base 1000 -l 0"
        echo "graph_scale yes"
        echo "graph_printf %6.0lf"
}

run() { 
        base="/sys/class/power_supply/$battery"
        if [ ! -d "$base" ]; then
                echo "Cannot read battery base directory: ${base}" >&2
                exit 1
        fi
        echo "energy_now.value $(cat ${base}/energy_now)"
        echo "energy_full_design.value $(cat ${base}/energy_full_design)"
        echo "energy_full.value $(cat ${base}/energy_full)"
}

battery=${0#*battery_}
if [ -z "$battery" ]; then
        battery="BAT0"
fi

case $1 in config)
        config
        exit 0;;
*)
        run
esac

Einfach als battery_BAT0 und battery_BAT1 in /etc/munin/plugins verlinken oder kopieren.

Sonstiges

Mit der gedankenlosen Installation von Gnome habe ich mir systemd-sysv und NetworkManager eingetreten. Ich habe das mal akzeptiert und erstmal keine Probleme. Wichtig ist mir nur diese Einstellung in der /etc/systemd/logind.conf:

HandleLidSwitch=ignore

Sowas stelle ich bevorzugt mit xfce4-power-manager ein.

Wpa_gui habe ich gegen nm-applet eingetauscht. Mal schauen, wie bequem das in Zukunft ist.

Fazit

Ich habe mich doch erstaunlich schnell mit der Kist angefreundet. Wahrscheinlich schneller, als sich $SWMBO nun an mein abgelegtes X200 gewöhnen wird. (Die hat noch einen EeePC benutzt, den sie heiß und innig liebt, der aber doch ein ganz klein wenig zu langsam ist …)

Ganz großes Plus ist auf jeden Fall das Display. Das war auch beim X200 (abgesehen von der damals ganz passablen Auflösung) das große Manko. Blinkwinkelstabil, recht satte Farben, ordentliches Schwarz und ausreichend hell/dunkel zu stellen.

Die Tastatur kenne ich von meinem Arbeitsrechner (T420s), finde die vom X240 aber noch angenehmer. Der Trackpoint ist aktuell unbenutzbar und ich habe wenig Hoffnung, dass sich das in der Zukunft noch legt. Das Touchpad ist ganz gut erträglich. Mehr hatte ich auch nicht zu hoffen gewagt.

Die Laufleistung mit 72+21 Wh ist atemberaubend. Ich hatte das Gerät letztens mit im Büro um nebenbei Windows Updates durchzuklicken. Also durchaus einiges zu tun (Downloads über WLAN, Plattengerödel, sicher auch CPU), dafür aber auch mal einige Zeit idle mit abgeschaltetem Bildschirm. Den Arbeitstag bin ich gut mit dem externen Akku ausgekommen. Ich habe vor, zu Hause nur noch auf Akku und mit Standby zu arbeiten. Mal schauen, wieviele Abende ich so durchkomme.

Comments? Use or send an e-mail.