ThinkPad Yoga 260 – Teil 4: Ubuntu 15.10 – Tablet Modus und Notizen mit dem Stylus

Die folgenden Ausführungen beziehen sich auf:

  • Lenovo ThinkPad YOGA 260 mit BIOS Version 1.14
  • Ubuntu 15.10 mit Kernel 4.4.0-040400

1. Tablet Mode

EDIT: Update

Um im Tablet Modus vernünftig mit dem Stift arbeiten zu können, kümmern wir uns zunächst darum, dass Ubuntu den Tablet-Modus überhaupt erkennt. Dafür legen wir zunächst im Verzeichnis „/etc/acpi/events/“ drei neue Dateien an:

1. „tabletModeYoga260“ mit folgendem Inhalt:

event=ibm/hotkey LEN0068:00 00000080 000060f0
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/tabletModeYoga260.sh

2. „openLidYoga260“ mit folgendem Inhalt:

event=button/lid LID open
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh open

3. „closeLidYoga260“ mit folgendem Inhalt:

event=button/lid LID close
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh close

Im Verzeichnis „/etc/“ legen wir

4. „thinkpad_state“ mit folgendem Inhalt an:

laptopMode

Im Verzeichnis „VOLLSTAENDIGER_PFAD_ZUM_SCRIPT“ kommen jetzt beide Scripte:

5. „thinkpadState.sh“ mit folgendem Inhalt:

#!/bin/bash
if [ $1 = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
elif [ $1 = "close" ]
then
	echo "closing" > /etc/thinkpad_state
fi

6 „tabletModeYoga260.sh“  mit folgendem Inhalt (meine Version, die im TabletModus sowohl Touchpad als auch Trackpoint ausschaltet (den Touchscreen aber an lässt), den Bildschirminhalt um 90 Grad nach links dreht und die Touchscreen-Eingaben entsprechend anpasst. Außerdem wird die Touchtastatur „onboard“ gestartet):

# tabletMode script for ThinkPad Yoga 260
#
# Version 0.7
# by SaGrLand with special thanks to djahma
#
# Best to use with acpi hindge event "ibm/hotkey LEN0068:00 00000080 000060f0"
# Events "button/lid LID close" and "button/lid LID open" must be handled (they trigger hindge event too)
# In tabletMode touchpad and trackpoint are disabled, screen and touchscreen are rotated 90 degrees counterclockwise, and onboard keyboard is started.
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

#!/bin/bash

# get currentState 
read -r currentState < /etc/thinkpad_state

# get correct XAUTHORITY and DISPLAY (acpid started by root)
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

# get touchpad state (maybe use trackpoint state if your touchpad is disabled by default)
touchpad=$(xinput list-props "ETPS/2 Elantech Touchpad" | grep "Device Enabled" | awk -F ":" '{print $2}')

if [ $currentState = "laptopMode" ]
then
	# disable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 0
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 0

	# disable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 0
	
	# rotate screen and touchscreen to the left
	xrandr -o left
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate ccw

	# start onboard keyboard
	sudo -b -u #1000 onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-default.png "TabletMode" "ON"
	echo "tabletMode" > /etc/thinkpad_state

elif [ $currentState = "tabletMode" ]
then
	# enable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 1
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 1

	# enable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 1

	# rotate screen and touchscreen to the right
	xrandr -o normal
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate none

	# stop onboard keyboard
	killall onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-unreadable.png "TabletMode" "OFF"
	echo "laptopMode" > /etc/thinkpad_state
fi

7. Nicht vergessen, die Dateien 5 und 6 mit „chmod +x“ noch ausführbar zu machen.

8. Systemd das Behandeln des LidSwitchEvents abgewöhnen: Dafür die Datei „/etc/systemd/logind.conf“ öffnen, die Zeile „#handleLidSwitch=“ suchen und wie folgt ändern:

#HandleLidSwitch=ignore

9. Den logind-Dienst neu starten:

sudo systemctl restart systemd-logind

10. Dann noch zur Sicherheit systemd mitteilen, das es acpid beim nächsten Neustart starten soll:

sudo systemctl enable acpid

11. Damit die Scripte ohne Neustart funktionieren, starten wir auch acpid einfach nochmal neu:

sudo systemctl restart acpid

12. Update: Direkt nach dem (Neu)Start des Yoga, steht jetzt thinkpad_state immer auf closing oder opening. Wir müssen also beim Anmelden thinkpad_state noch auf laptopMode setzen (außer des Yoga ist angdockt und daher der Displaydeckel geschlossen. Dafür können wir einfach thinkpad_state mit „sudo chown BENUTZERNAME:BENUTZERNAME /etc/thinkpad_state“ für den aktuellen Benutzer beschreibbar machen. In die beim Anmelden ausgführten Datei „/home/BENUTZERNAME/.xsessionrc“ muss dann nur noch der folgende Code eingetragen werden:

#!/bin/bash
lidState=$(cat /proc/acpi/button/lid/LID/state | sed 's/^state: *//g')

if [ $lidState = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
fi

Eigentlich müsste man hier auch noch thinkpad_state abfragen, falls man das Yoga im Tabletmodus ausgeschaltete hat…

2. Stylus und Xournal

Kümmern wir uns als nächstes um den Stift. Ich habe mich für Xournal als Schreibprogramm entschieden, weil damit auch problemlos PDFs annotiert werden können. Hier lässt sich unter „Option->Pen und Touch“ nicht nur die Druckstärkeerkennung einschalten, sondern auch „Touchscreen as Hand Tool“. So kann man mit den Fingern über die Nutzung des Touchscreen etwa scrollen und mit dem Stift schreiben/malen (sonst würde standardmäßig auch der Finger auf dem Touchscreen ein Schreib/Malevent auslösen). Damit das funktioniert, muss aber noch das richtige XInput-Device für den Touch ausgewählt werden. Einfach unter „Option->Pen und Touch: Designate as Touchscreen…“ den Eintrag „Wacom … Finger Touch“ auswählen. Vor dem Beenden nicht vergessen, über „Option->Einstellungen speichern“ die Änderungen zu sichern, sonst darf man sich bei jedem neuen Programmaufruf durch die Einstellungen hangeln.

So weit, so gut. Allerdings gibt es in Xournal Version 0.4.8 einen nervigen Bug: ein übereifrige Internationalisierung macht es unmöglich, dass Xournal beim nächsten Start das gespeicherte Touchscreen Device richtig zuordnet. Mit dem Finger wird daher wieder munter gemalt… Bis es einen Patch gibt, hilft es, einfach nach dem Speichern die Config-Datei „~/.xournal/config“ per Hand zu ändern. Einfach ein fälschlicherweise durch einen Punkt ersetztes Komma vor Ltd beim Touchscreen Device wieder einfügen. So sieht die entsprechende Zeile richtig aus:

touchscreen_device_name=Wacom Co.,Ltd. Pen and multitouch sensor Finger touch

Über „Optionen->Belegung Taste 2“ kann die Funktion der oberen Taste in der Mitte des Stiftes eingestellt werden. Es existiert zwar ein Punkt „Optionen->Belegung Taste 3“, dieser hat bei mir allerdings keine Auswirkungen auf die untere Taste in der Stiftmitte (das scheint an Xournal zu liegen, denn bei MyPaint werden beide Button mit unterschiedlichen Funktionen erkannt).

ThinkPad Yoga 260 – Teil 3: Ubuntu 15.10 – Was geht?

Die folgenden Ausführungen beziehen sich auf:

  • Lenovo ThinkPad YOGA 260 mit BIOS Version 1.14
  • Ubuntu 15.10 mit Kernel 4.4.0-040400

Nachdem man die Installationsprobleme ausgeräumt und Kernel 4.4 installiert hat, sieht es wie folgt mit der Funktionsfähigkeit des YOGA 260 unter Ubuntu 15.10 aus:

Funktion Stand der Dinge
Touchpad TapToClick und TwoFingerScroll funktionieren problemlos.
Touchscreen Funktioniert problemlos (keine Gesten getestet).
Tastatur Funktioniert problemlos.
TrackPoint Der TrackPoint und seine drei Tasten, sowie Scroll funktionieren problemlos.
ThinkPad Pen Pro/Stylus Test mit Xournal: Druckstärke wird erkannt. Nur einer der beiden Zusatzubuttons funktioniert.
HDMI Externer FullHD Monitor funktioniert problemlos.
DisplayPort Beim Anstecken während des Betriebs friert das System ein. Ist der Monitor bereits beim Booten verbunden, funktioniert er im extended und mirror-Betrieb, beim weiterem Durchschalten der Modi friert dann wieder das System ein.
Gyroskop/Displayinhalt drehen Displayausrichtung ändert sich nicht (Sensor/Eventüberwachung noch nicht getestet).
Tabletmodus/Input sperren Die Tastatur wird beim Umklappen des Displays mechanisch gesperrt. TrackPoint, Touchpad und Maustasten bleiben aktiv. Dies kann man aber einfach mit einem Skript nachholen, das durch das beim Umklappen ausgelöst ACPI Event (ibm/hotkey LEN0068:00 00000080 000060f0) ausgelöst wird.
MicroSD-Kartenleser Funktioniert problemlos.
Kamera Kamera und Status-LED funktionieren problemlos.
Fingerabdruckscanner Nicht getestet.
SmartCard-Reader Nicht getestet.
OneLink+ Dock Stromversorgung und USB-Ports funktionieren.
Ethernet, VGA, Sound nicht getestet.
DisplayPorts funktionieren nicht. DisplayPort auf Mini-DP Kabeln wurde gar nicht erkannt. Ein DisplayPort auf HDMI Adapter mit HDMI Kabel führt sofort beim Einstecken zum Absturz (Kernel-Panic).
Audio Soundausgabe funktioniert problemlos. Mikrofon ebenfalls.
Seitliche Lautstärketasten Die seitlichen Lautstärketasten für den Tabletmodus funktionieren problemlos.
WLan Funktioniert wie gesagt nur nach Installation von Kernel 4.4.
Bluetooth Funktioniert problemlos.
Standby Standby beim Schließen des Notebookdeckels funktioniert (inkl. pulsierendem ThinkDot im Display. Allerdings ist der Stromverbrauch, wahrscheinlich aufgrund des nötigen Kernelparameters „intel_pstate=no_hwp“, zu hoch. Ein voll geladener Akku wäre im Standby nach etwas 5,6 Tagen leer.
Shortcuts Stand der Dinge
Bildschirmhelligkeit F5/F6 und einstellen der Helligkeit über Menü funktionieren problemlos.
Keyboard Backlight Fn+Leertaste funktioniert.
Lautstärke F1/F2/F3 funktionieren.
Mikrofon stummschalten F4 (und LED) funktionieren.
Fn-Lock Fn+Esc schaltet FN-Lock an/aus (und LED).
Suche F10 erstmal funktionslos. Wenn man allerdings unter Systemeinstellungen->Tastatur->Tastaturkürzel:Starter das Kürzel für Suchen auf „Strg+F10“ ändert, geht der Aufruf der Suche auch einfach nur mit F10…
Flugmodus F8 schaltet nur WLan an/aus, nicht Bluetooth.
Externer Bildschirm F7 funktioniert am HDMI und DisplayPort-Anschluss (schaltet erweitert, mirror, nur extern, nur intern durch).
Tools/Einstellungen/Systemsteuerung F9 erstmal funktionslos. Einfach über Systemeinstellungen->Tastatur->Tastaturkürzel ein eigenes neues Kürzel mit dem Befehl „unity-control-center“ anlegen und dann F9 zuweisen.
F11 F11 erstmal funktionslos. Um z.B. Compiz-Scale (ähnliche OS X Expose) auf die Taste zu legen, einfach „compizconfig-settings-manager“ installieren, nach „scale“ suchen und unter Bindings etwa für „Fensterauswahl für alle Fenster initialisieren“ F11 als Taste auswählen.
F12 F12 öffnet den Persönlichen Ordner in Nautilus.

ThinkPad Yoga 260 – Teil 2: Ubuntu 15.10 – Installation & Treiber

Wer Ubuntu 15.10 auf dem Lenovo ThinkPad YOGA 260 installieren möchte, stößt bereits beim Versuch, ein Linux-Live-Medium zu booten, auf das erste Problem: einen schwarzen Bildschirm nach der Auswahl im Grub Bootmenü. Verursacher ist der verbaute 6th Gen Intel-Prozessor der Skylake-Generation, dessen neuer Stromsparmechanismus (noch) nicht unterstützt wird. Um dennoch Ubuntu 15.10 booten und installieren zu können, muss im Auswahlmenü mittels der Taste „e“ ein Bootparameter (z.B. nach dem Parameter „quiet“) ergänzt werden:

 intel_pstate=no_hwp

Mit Strg+x booten wir die veränderte Konfiguration. Jetzt funktioniert zwar der neue Stromsparmechanismus nicht, aber immerhin läuft GNU/Linux. Damit das Parameter nicht bei jedem Boot von Hand eingegeben werden muss, trägt man den Parameter entsprechend in „/etc/default/grub“ ein und lässt das Grub-Menü neu erstellen:

sudo grub-mkconfig -o /boot/efi/grub/grub.cfg

Mit der Standardinstallation von Ubuntu 15.10 wir die Intel WLan-Karte 8260 leider nicht erkannt. Abhilfe schafft das Nachinstallieren von Kernel 4.4. Dafür einfach die Pakete linux-image-4.4-generic, linux-headers-4.4-generic und linux-headers-4.4-all herunterladen und installieren

sudo dpkg -i *.deb

Nach einem Neustart läuft die WLan-Karte dann problemlos. Allerdings zeigt uns journalctl immer noch Firmware Fehlermeldungen: es fehlen die ucode Dateien von iwlwifi-8000C-14 bis iwlwifi-8000C-19. Um an die Dateien zu kommen, einfach mehrmals den folgenden Downloadlink benutzen und die Nummer vor „.ucode“ jeweils anpassen: https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/linux-firmware.git/plain/iwlwifi-8000C-19.ucode. Dann alle ucode-Dateien nach „/lib/firmware/“ verschieben.

Das Journal zeigt auch für die Grafikkarte eine noch fehlende Firmware-Datei: „i915/skl_guc_ver4.bin“. Zwar kann man auch diese einfach downloaden und nach „/lib/firmware/i915“ verschieben. Die Fehlermeldung bleibt bei mir aber sowohl mit „*ver4.bin“ als auch einer als ver4.bin mit Symlink verknüpften „*ver4_3.bin“ bestehen.