Fedora 30@Lenovo ThinkPad T490s

Die folgende Tabelle gibt eine Übersicht darüber, wie gut sich das neue Lenovo ThinkPad T490s unter GNU/Linux am Beispiel von Fedora 30 schlägt.
Die folgenden Ausführungen beziehen sich dabei auf:

  • Lenovo ThinkPad T490s (i5-8265U, Low-Power-Full-HD), mit BIOS Version 1.7
  • Fedora 30 64bit
  • Kernel 5.1.7

Das Starten der Live Version von Fedora 30 funktioniert mit UEFI problemlos (nicht mit aktiviertem SecureBoot getestet). Die Out-of-the-Box Funktionsfähigkeit des ThinkPad T490s sieht unter Fedora 30 mit akutalisiertem Kernel gut aus, wie in der folgenden Tabelle zu sehen.

FunktionStand der Dinge
TouchpadTapToClick und TwoFingerScroll funktionieren.
PinchToZoom funktioniert (Dokumentenbetrachter)
Hardware Links-/Rechtklick funktionieren.
Separates Abschalten des Touchpad funktioniert (Abschalten im BIOS hat keine Auswirkung)
Handballenerkennung (palm rejection) funktioniert.
TastaturFunktioniert problemlos.
TrackPointFunktioniert problemlos.
TrackPoint TastenFunktioniert problemlos (inkl. scrollen über mittlere Taste).
USB-C AnschlussAufladen ohne Probleme (neben dem Originalnetzteil getestet mit Lenovo 45 Watt).
USB-C auf HDMI: problemlos (4k 60Hz).
Aufladen über USB-C Powerbank: funktioniert (getestet mit: Aukey).

USB-C auf VGA: nicht getestet.
USB-C auf USB-A: nicht getestet.

USB-C Festplatte: funktioniert.
USB-C Monitor/Dock: Aufladen, USB-Ports und Video problemlos (4k 60Hz an LG Monitor getestet).
USB-C Anschluss   (mit Thunderbolt 3) Aufladen ohne Probleme (neben dem Originalnetzteil getestet mit Lenovo 45 Watt).
USB-C auf HDMI: problemlos (4k 60Hz).
Aufladen über USB-C Powerbank: funktioniert (getestet mit: Aukey).

USB-C auf VGA: nicht getestet.
USB-C auf USB-A: nicht getestet.

Thunderbolt über USB-C: USB (Maus, Tastatur) und Video problemlos (4k 100Hz an Samsung C34J791 getestet).
USB-C Monitor/Dock: Aufladen, Video und USB-Ports funktionieren problemlos (an LG 27UD88  getestet).
KameraFunktioniert problemlos.
Fingerprint ReaderNicht getestet, soll nicht funktionieren.
SmartCard ReaderNicht getestet, soll funktionieren.
AudioSoundausgabe funktioniert problemlos.
Mikrofon funktioniert problemlos.
WLanFunktioniert problemlos.
BluetoothFunktioniert problemlos.
WWAN/ LTEnicht vorhanden (aber nachrüstbar, Antennen vorhanden).
USB-A AnschlussFunktioniert problemlos.
HDMI AnschlussFunktioniert problemlos.
RJ45-NetzwerkanschlussNicht getestet, nur über propritären Adapter.
KopfhöreranschlussFunktioniert problemlos.
MicroSD-KartenleserFunktioniert problemlos (Karte verschwindet durch Tray vollständig im Gehäuse).
Sleep/Wakeup   (beim Zuklappen) Funktioniert erst nach „Eingriff„.
StandbyFunktioniert erst nach „Eingriff„.
ShortcutsStand der Dinge
Bildschirmhelligkeit (F5+F6)Funktionieren problemlos.
Keyboard Backlight (Space)Funktioniert problemlos.
Lautstärke (F1+F2+F3)Funktionieren problemlos (lautlos inkl. Licht).
Mikrofon (F4)Funktioniert problemlos (stumm inkl. Licht).
Externer Bildschirm (F7)Funktioniert problemlos.
FnLock (F1)Funktioniert problemlos (inkl. Licht).
Flugmodus (F8)Funktioniert problemlos.
Einstellungen (F9)Funktioniert problemlos.
Bluetooth (F10)Funktioniert problemlos.
Keyboard (F11)Funktioniert nicht (xev zeigt kein Keyevent).
Lesezeichen (F12)Funktioniert problemlos.

Stromverbrauch (tlp installiert):

  • Im Standby verliert das ThinkPad T490s innerhalb von 24 Stunden etwa 15% Akkukapazität. Die Standbyzeit beträgt damit hochgerechnet etwas 6,7 Tage.
  • Bei leichter Arbeit (LibreOffice Writer, Firefox WordPress, Evolution) komme ich auf einen Verbrauch von um die 5 Watt (bei einer Bildschirmhelligkeit von Stufe 4 = 20%). Die Laufzeit liegt damit bei etwa 11 Stunden.

Fedora 30@ThinkPad T490s: Suspend Error

Nach der Installation von Fedora 30 und TLP auf dem Lenovo ThinkPad T490s funktioniert der Wechsel in den Standby (Suspend to RAM; STR) beim Schließen des Notebookdeckels oder Nutzung des Suspend-Buttons nicht. Stattdessen gibt es nur eine Fehlermeldung im Journal:

pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
dpm_run_callback(): pci_pm_suspend+0x0/0x170 returns -16
PM: Device 0000:00:14.0 failed to suspend async: error -16
PM: Some devices failed to suspend, or early wake event detected

Um diesen Fehler im xhci Controller zu beheben, muss nur eine Datei, etwa mit dem Namen „xhci.sh“, im Verzeichnis „/usr/lib/systemd/system-sleep/“ mit dem folgenden Inhalt angelegt werden:

#!/bin/sh

if [ "${1}" == "pre" ]; then
  # Do the thing you want before suspend here, e.g.:
  echo "Disable broken xhci module before suspending at $(date)..." > /tmp/systemd_suspend_test
  grep XHC.*enable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup
elif [ "${1}" == "post" ]; then
  # Do the thing you want after resume here, e.g.:
  echo "Enable broken xhci module at wakeup from $(date)" >> /tmp/systemd_suspend_test
  grep XHC.*disable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup
fi

Anschließend die Datei noch ausführbar machen:

sudo chmod +x /usr/lib/systemd/system-sleep/xhci.sh

Im Anschluss sollte sich das ThinkPad T490s normal in den Standby versetzen lassen. Der Batterieverbrauch liegt dann etwa bei 15% innerhalb von 24 Stunden, was zu einer Standbyzeit von etwa 6,7 Tagen führt.

Quellen:

GNU/Linux@Dell Latitude 7490: Scrollen mit mittlerer TrackStick-Taste

Im Gegensatz zu den TrackPoints bei Lenovo Notebooks kann der TrackStick des Dell Latitude 7490 nicht ohne Anpassungen in Kombination mit der mittleren TrackStick-Taste zum Scrollen benutzt werden. Es gibt aber sowohl für X11 als auch Wayland eine Möglichkeit, dem Latitutde middle-button-scroll beizubringen. Bei mir funktioniert beides unter Fedora 29.

Unter X11

Wer noch X11 nutzt, hat es am Einfachsten. Hier muss nur eine Konfiguration für libinput erstellt werden. Also einfach den folgenden Inhalt kopieren und als Datei unter „/etc/X11/xorg.conf.d/40-libinput-trackpoint.conf“ oder „/usr/share/X11/xorg.conf.d/40-libinput-trackpoint.conf“ speichern.

Datei „40-libinput-trackpoint.conf“

Section "InputClass"
        Identifier "Trackpoint Scroll"          
        MatchIsPointer "on"                    
        MatchDevicePath "/dev/input/event*"  
        Option "ScrollMethod" "button"
        Option "ScrollButton" "2"
        Driver "libinput"                          
EndSection

Wer statt libinput lieber evdev nutzen möchte, findet bei Francesco Provino eine alternative Konfiguration.

Credit/Quelle: askubuntu.com


Unter Wayland

Unter Wayland ist eine einfache Anassung per libinput Konfiguration nicht möglich. PeterCyx hat aber eine (vielleicht nicht unbedingt schönen, aber funktionierenden) Workaround gefunden. Dafür den folgenden Inhalt als Datei unter „/usr/lib/hook/hook.c“ speichern.

Datei „hook.c“

#define _GNU_SOURCE
#include <dlfcn.h>
#include <libinput.h>

typedef const char* (*orig_get_name_t)(struct libinput_device *device);

const char* libinput_device_get_name(struct libinput_device *device) {
  set_scroll_emulation(device); // Inject the code to set scrolling emulation
  orig_get_name_t orig_get_name;
  orig_get_name = (orig_get_name_t) dlsym(RTLD_NEXT, "libinput_device_get_name");
  return orig_get_name(device);
}

void set_scroll_emulation(struct libinput_device *device) {
  libinput_device_config_middle_emulation_set_enabled(device, LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED);
  libinput_device_config_scroll_set_method(device, LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN);
  libinput_device_config_scroll_set_button(device, 2);
}

Als nächstes müssen die zum Kompilieren noch fehlenden Dateien nachinstallierte werden. Anschließend den Kompilierbefehl ausführen.

sudo dnf install libinput-devel libudev-devel
sudo gcc -shared -ldl -linput -fPIC hook.c -o hook.so

Jetzt noch den folgenden Inhalt zum Einbinden der Library in der Datei „/etc/profile.d/libinput.sh“ speichern.

Datei „libinput.sh“

export LD_PRELOAD="$LD_PRELOAD /usr/lib/hook/hook.so"

Nach einem Neustart sollte jetzt das Scrollen mittels mittlerem TrackStick-Button problemlos funktionieren.

Credit/Quelle: PeterCyx