Ubuntu 19.04 auf dem Lenovo Miix 310-10 ICR

Nachdem Ubuntu 18.04 doch ein paar Baustellen zu viel für meinen Geschmack mit sich gebracht hat, habe ich mich entschlossen Ubuntu 19.04 zu installieren.

Workaround :
Korrektur der Touchscreen Eingaben

Scheinbar sind bei Ubuntu 19.04 die Eingabedaten des Goodix Capacitive TouchScreens falsch Konfiguriert bzw. werden fehlerhaft interpretiert.

Ubuntu bietet die Möglichkeit die Eingaben über die Coordinate Transformation Matrix anzupassen.

Im Script von Efrem Rensi wird die Touchscreen-Eingabe von dem Lagesensor abhängig gemacht.

Um das Script auf dem Lenovo Miix 310 zu verwenden, muss lediglich als „Pen“ das xinput device 14 konfiguriert werden (Zeile 18).

Ausserdem hat das Script eine Paket-Abhängigkeit: inotify, welches sich über den Befehl

sudo apt install inotify-tools 

installieren lässt.

Um es euch einfach zu machen habe ich hier direkt das fertige Script zum abschreiben 😉

#!/bin/sh
# Automatic stylus (pen) orientation for HP Spectre x360
# adapted by Efrem Rensi readapted by Zeiberspace
#  This is a fix for an apparent bug in Cinnamon whereby System Settings >> General >> Automatic Screen Rotation
#   Rotates the screen and touch functionality, but the pen orientation does not rotate

# Based on chadm's script at https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu.

# Receives input from monitor-sensor (part of iio-sensor-proxy package) and sets the touchscreen
# orientation based on the accellerometer position. We assume that the display rotation is 
# handled by Linux Mint 18.1, Cinnamon 3.2.7. If this is not the case, add the appropriate
# xrandr command into each case block.

# This script should be added to startup applications for the user.

#Goodix Input Device fürs Lenovo Miix 310

PEN=14

# The device number PEN=18 is obtained by running
#   xinput
# and reading the output, which for my HP Spectre x360 is:
# ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
# ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
# ⎜   ↳ ELAN2514:00 04F3:2592                     id=11   [slave  pointer  (2)]
# ⎜   ↳ ELAN2514:00 04F3:2592 Pen Pen (0)         id=18   [slave  pointer  (2)]
# ⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [slave  pointer  (2)]
# + other lines


# Kill any existing monitor-sensor instance, for example if manually invoking
# from a terminal for testing.
killall monitor-sensor

# Launch monitor-sensor and store the output in a RAM based file that can be checked by the rest of the script.
# We use the RAM based file system to save wear where an SSD is being used.
monitor-sensor > /dev/shm/sensor.log 2>&1 &

# Parse output of monitor sensor to get the new orientation whenever the log file is updated
# Possibles are: normal, bottom-up, right-up, left-up
# Light data will be ignored
while inotifywait -e modify /dev/shm/sensor.log; do

# Read the last few lines that were added to the file and get the last orientation line.
ORIENTATION=$(tail /dev/shm/sensor.log | grep 'orientation' | tail -1 | grep -oE '[^ ]+$')

echo "$ORIENTATION"
# Set the actions to be taken for each possible orientation
case "$ORIENTATION" in

bottom-up)
xinput set-prop $PEN 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1;;

normal)
xinput set-prop $PEN 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1;;

right-up)
xinput set-prop $PEN 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1;;

left-up)
xinput set-prop $PEN 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1;;

esac
done

# On stopping this script, don't forget that "monitor-sensor" is still running - hence the "killall" !

Wie bei Shellscripten üblich muss das Script mit dem Befehl

sudo chmod +x stylus-rotate.sh

ausführbar gemacht werden.

Im Anschluss muss das Script nur noch bei dem User in die Ubuntu „Startprogramme“ integriert werden.

Eintrag in den Ubuntu Startprogrammen

Wenn alles richtig gemacht wurde, sollte der Touchscreen ab dem nächsten Neustart richtig funktionieren.

Update: Wie ich gerade feststellen musste, wird werden die Werte erst nach der ersten 90° Rotation angepasst.

Hinweis: Scheinbar wird das Script erst beim Benutzer-Login geladen. Für den Lockscreen habe ich leider noch keine Lösung parat.

3 Replies to “Ubuntu 19.04 auf dem Lenovo Miix 310-10 ICR”

  1. Danke für das Script und deine Super Arbeit 🙂
    Und viel Erfolg bei deiner Bachelorarbeit 🙂

  2. Hallo zusammen,

    ich habe vor ein paar Tagen Elementary OS 5.1 erfolgreich auf meinem Lenovo 310-10 ICR installiert. Nach der Installation sollte man in die Display Settings gehen und Rotation Lock aktivieren, denn der Wechsel von Hochformat auf Querformat ist vertauscht. Sobald das eingestellt ist., ist das Gerät verwendbar. Es funktioniert ALLES bis auf die Webcam. Das Webcam Problem ist bereits in vielen anderen Foren vielfach diskutiert. Bis auf die Cam funktioniert wirklich alles tadellos. Ich hatte vorher Xubuntu 20.04, versucht da gab es aber Probleme mit dem Sound (Pulse Audio)

  3. ich würde auch gerne von Windows Abschied nehmen aber ich schaffe es noch nicht einmal ins Bootmenue der Ideapad! FN F2 und FN F12 lassen den kleinen PC kalt…

Comments are closed.