Waveshare 3,5 Touch screen calibration

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,
    Ich habe einen Pi 3 Model B mit einem 3,5 Display von Waveshare bekommen.
    Habe soweit alles gemacht Update Upgrade.
    Dann habe ich das Display, wie hier beschriebenhttp://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A) , Installiert. Nun ist aber der Mauszeiger nicht an der Stelle wo ich auf dem Display
    Touche ( Siehe Bilder im Anhang rote Markierung = Touchstelle ) was kann da falsch gelaufen sein ?

  • Wie sieht denn aktuell bei Dir /etc/X11/xorg.conf.d/99-calibration.conf aus? Und wie verhält sich der Mauszeiger, wenn Du den Finger nach unten bzw. rechts bewegst? Geht er dann ebenfalls noch unten bzw. rechts oder horizontal, vertikal oder entlang beider Achsen in die jeweils entgegengesetzte Richtung?

  • Die Datei /etc/X11/xorg.conf.d/99-calibration.conf
    sieht so bei mir aus.

    Section "InputClass"
    Identifier "calibration"
    MatchProduct "ADS7846 Touchscreen"
    Option "Calibration" "3919 208 236 3913"
    Option "SwapAxes" "1"
    EndSection


    Ja wenn ich nach oben gehe geht der zeiger nach links, runter nach recht, rechts nach oben und links nach unten.


  • Dann setze mal bei SwapAxes "0" statt "1". Isses dann besser?


    X11 (oder ersatzweise den Pi) neu gestartet hast Du aber? Was steht denn in /var/log/Xorg.0.log?

    diese Sieht so aus:

    [ 11.834]
    X.Org X Server 1.18.4
    Release Date: 2016-07-19
    [ 11.834] X Protocol Version 11, Revision 0
    [ 11.834] Build Operating System: Linux 4.4.26-v7+ armv7l Raspbian
    [ 11.834] Current Operating System: Linux raspberrypi 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l
    [ 11.834] Kernel command line: 8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1024 bcm2708_fb.fbheight=600 bcm2709.boardrev=0xa02082 bcm2709.serial=0x53e9190d smsc95xx.macaddr=B8:27:EB:E9:19:0D bcm2708_fb.fbswap=1 bcm2709.uart_clock=48000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=tty1 console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
    [ 11.834] Build Date: 11 November 2016 11:59:59AM
    [ 11.834] xorg-server 2:1.18.4-2+rpi1 (https://www.debian.org/support)
    [ 11.834] Current version of pixman: 0.33.3
    [ 11.835] Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
    [ 11.835] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    [ 11.835] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jan 24 11:14:20 2017
    [ 11.853] (==) Using config directory: "/etc/X11/xorg.conf.d"
    [ 11.853] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
    [ 11.889] (==) No Layout section. Using the first Screen section.
    [ 11.889] (==) No screen section available. Using defaults.
    [ 11.889] (**) |-->Screen "Default Screen Section" (0)
    [ 11.889] (**) | |-->Monitor "<default monitor>"
    [ 11.899] (==) No device specified for screen "Default Screen Section".
    Using the first device section listed.
    [ 11.899] (**) | |-->Device "Allwinner A10/A13 FBDEV"
    [ 11.899] (==) No monitor specified for screen "Default Screen Section".
    Using a default monitor configuration.
    [ 11.899] (==) Automatically adding devices
    [ 11.899] (==) Automatically enabling devices
    [ 11.899] (==) Automatically adding GPU devices
    [ 11.899] (==) Max clients allowed: 256, resource mask: 0x1fffff
    [ 11.926] (WW) The directory "/usr/share/fonts/X11/misc" does not exist.
    [ 11.926] Entry deleted from font path.
    [ 11.926] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
    [ 11.926] Entry deleted from font path.
    [ 11.950] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
    [ 11.950] Entry deleted from font path.
    [ 11.961] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
    [ 11.961] Entry deleted from font path.
    [ 11.961] (==) FontPath set to:
    /usr/share/fonts/X11/100dpi/:unscaled,
    /usr/share/fonts/X11/Type1,
    /usr/share/fonts/X11/100dpi,
    built-ins
    [ 11.961] (==) ModulePath set to "/usr/lib/xorg/modules"
    [ 11.962] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
    [ 11.962] (II) Loader magic: 0x54d70f20
    [ 11.962] (II) Module ABI versions:
    [ 11.962] X.Org ANSI C Emulation: 0.4
    [ 11.962] X.Org Video Driver: 20.0
    [ 11.962] X.Org XInput driver : 22.1
    [ 11.962] X.Org Server Extension : 9.0
    [ 11.964] (++) using VT number 7

    [ 11.964] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
    [ 11.964] (II) no primary bus or device found
    [ 11.983] (II) LoadModule: "glx"
    [ 12.048] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
    [ 12.256] (II) Module glx: vendor="X.Org Foundation"
    [ 12.256] compiled for 1.18.4, module version = 1.0.0
    [ 12.256] ABI class: X.Org Server Extension, version 9.0
    [ 12.256] (==) AIGLX enabled
    [ 12.256] (II) LoadModule: "fbturbo"
    [ 12.256] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
    [ 12.278] (II) Module fbturbo: vendor="X.Org Foundation"
    [ 12.278] compiled for 1.18.4, module version = 0.5.1
    [ 12.278] Module class: X.Org Video Driver
    [ 12.278] ABI class: X.Org Video Driver, version 20.0
    [ 12.278] (II) FBTURBO: driver for framebuffer: fbturbo
    [ 12.282] (WW) Falling back to old probe method for fbturbo
    [ 12.282] (II) Loading sub module "fbdevhw"
    [ 12.282] (II) LoadModule: "fbdevhw"
    [ 12.283] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
    [ 12.295] (II) Module fbdevhw: vendor="X.Org Foundation"
    [ 12.295] compiled for 1.18.4, module version = 0.0.2
    [ 12.295] ABI class: X.Org Video Driver, version 20.0
    [ 12.296] (II) FBTURBO(0): using /dev/fb1
    [ 12.296] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
    [ 12.296] (II) FBTURBO(0): Creating default Display subsection in Screen section
    "Default Screen Section" for depth/fbbpp 16/16
    [ 12.296] (==) FBTURBO(0): Depth 16, (==) framebuffer bpp 16
    [ 12.296] (==) FBTURBO(0): RGB weight 565
    [ 12.296] (==) FBTURBO(0): Default visual is TrueColor
    [ 12.296] (==) FBTURBO(0): Using gamma correction (1.0, 1.0, 1.0)
    [ 12.296] (II) FBTURBO(0): hardware: fb_ili9486 (video memory: 300kB)
    [ 12.296] (**) FBTURBO(0): Option "fbdev" "/dev/fb1"
    [ 12.296] (**) FBTURBO(0): Option "SwapbuffersWait" "true"
    [ 12.297] (II) FBTURBO(0): processor: Unknown
    [ 12.297] (II) FBTURBO(0): checking modes against framebuffer device...
    [ 12.297] (II) FBTURBO(0): checking modes against monitor...
    [ 12.297] (--) FBTURBO(0): Virtual size is 480x320 (pitch 480)
    [ 12.297] (**) FBTURBO(0): Built-in mode "current"
    [ 12.297] (==) FBTURBO(0): DPI set to (96, 96)
    [ 12.297] (II) Loading sub module "fb"
    [ 12.297] (II) LoadModule: "fb"
    [ 12.298] (II) Loading /usr/lib/xorg/modules/libfb.so
    [ 12.321] (II) Module fb: vendor="X.Org Foundation"
    [ 12.321] compiled for 1.18.4, module version = 1.0.0
    [ 12.321] ABI class: X.Org ANSI C Emulation, version 0.4
    [ 12.321] (II) FBTURBO(0): FBIOBLANK: Invalid argument (Screen blanking not supported by kernel - disabling)
    [ 12.363] (II) FBTURBO(0): using backing store heuristics
    [ 12.372] (II) FBTURBO(0): can't load 'g2d_23' kernel module
    [ 12.372] (II) FBTURBO(0): failed to enable the use of sunxi display controller
    [ 12.372] (II) FBTURBO(0): No sunxi-g2d hardware detected (check /dev/disp and /dev/g2d)
    [ 12.372] (II) FBTURBO(0): G2D hardware acceleration can't be enabled
    [ 12.372] (II) FBTURBO(0): enabled VFP/NEON optimizations
    [ 12.373] (==) FBTURBO(0): Backing store enabled
    [ 12.396] (==) FBTURBO(0): DPMS enabled
    [ 12.396] (II) FBTURBO(0): failed to enable hardware cursor
    [ 12.396] (II) FBTURBO(0): no 3D acceleration because the driver has been compiled without libUMP
    [ 12.396] (II) FBTURBO(0): if this is wrong and needs to be fixed, please check ./configure log
    [ 12.402] (==) RandR enabled
    [ 12.466] (II) SELinux: Disabled on system
    [ 12.477] (II) AIGLX: Screen 0 is not DRI2 capable
    [ 12.477] (EE) AIGLX: reverting to software rendering
    [ 14.985] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
    [ 14.987] (II) AIGLX: Loaded and initialized swrast
    [ 14.987] (II) GLX: Initialized DRISWRAST GL provider for screen 0
    [ 15.830] (II) config/udev: Adding input device ADS7846 Touchscreen (/dev/input/event0)
    [ 15.830] (**) ADS7846 Touchscreen: Applying InputClass "evdev touchscreen catchall"
    [ 15.830] (**) ADS7846 Touchscreen: Applying InputClass "libinput touchscreen catchall"
    [ 15.830] (**) ADS7846 Touchscreen: Applying InputClass "calibration"
    [ 15.831] (II) LoadModule: "libinput"
    [ 15.831] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
    [ 16.079] (II) Module libinput: vendor="X.Org Foundation"
    [ 16.079] compiled for 1.18.4, module version = 0.20.0
    [ 16.079] Module class: X.Org XInput Driver
    [ 16.079] ABI class: X.Org XInput driver, version 22.1
    [ 16.079] (II) Using input driver 'libinput' for 'ADS7846 Touchscreen'
    [ 16.079] (**) ADS7846 Touchscreen: always reports core events
    [ 16.079] (**) Option "Device" "/dev/input/event0"
    [ 16.079] (**) Option "_source" "server/udev"
    [ 16.080] (II) input device 'ADS7846 Touchscreen', /dev/input/event0 is tagged by udev as: Touchscreen
    [ 16.081] (II) input device 'ADS7846 Touchscreen', /dev/input/event0 is a touch device
    [ 16.120] (**) Option "config_info" "udev:/sys/devices/platform/soc/http://3f204000.spi/spi_master/spi…t/input0/event0"
    [ 16.120] (II) XINPUT: Adding extended input device "ADS7846 Touchscreen" (type: TOUCHSCREEN, id 6)
    [ 16.121] (**) Option "AccelerationScheme" "none"
    [ 16.121] (**) ADS7846 Touchscreen: (accel) selected scheme none/0
    [ 16.121] (**) ADS7846 Touchscreen: (accel) acceleration factor: 2.000
    [ 16.121] (**) ADS7846 Touchscreen: (accel) acceleration threshold: 4
    [ 16.122] (II) input device 'ADS7846 Touchscreen', /dev/input/event0 is tagged by udev as: Touchscreen
    [ 16.122] (II) input device 'ADS7846 Touchscreen', /dev/input/event0 is a touch device
    [ 16.123] (II) config/udev: Adding input device ADS7846 Touchscreen (/dev/input/mouse0)
    [ 16.123] (**) ADS7846 Touchscreen: Applying InputClass "calibration"
    [ 16.123] (II) No input driver specified, ignoring this device.
    [ 16.123] (II) This device may have been added with another device file.

  • Hab schon vergessen wi ichs genau gemacht habe aber es war ungefähr so:

    1) xrdp installiert damit ich vom PC auf die Grafikoberfläche zugreifen kann
    2) Dann das Programm zur Kalibrierung vom Hersteller runtergeladen und händisch installiert (google hat geholfen)
    3) Nach reboot konnte ich dann das Programm im Pixel-Menue sehen und aufrufen un den Touchscreen kalibrieren

    Frank

    Nach 35 Jahren im IT business hab ich mit Raspi mal selbst zum Programmieren begonnen...
    Habe auch einen 3D-Drucker, eine CNC-Fräse und etwas Elektronik-Bastelei als Hobby

  • Hallo,

    ich hab ebenfalls das Problem mit meinem Sunfounder Display. Der Zeiger ist immer woanders als der touch-Punkt. Wenn ich nach rechts ziehe, bewegt sich der Zeiger nach links. Die Installation & Kalibrierung habe ich nach dieser Anleitung durchgeführt, aber immer das selbe Ergebnis. :s

  • Hi,

    ich habe die Kalibrierung über das enthaltene Programm durchgeführt und den Code eingefügt.
    Meine /etc/X11/xorg.conf.d/99-calibration.conf hat diesen Inhalt:


    Code
    Section "InputClass"
           Identifier      "calibration"
           MatchProduct    "ADS7846 Touchscreen"
           Option  "MinX"  "5564"
           Option  "MaxX"  "62632"
           Option  "MinY"  "61882"
           Option  "MaxY"  "4266"
           Option  "SwapXY"        "1" # unless it was already set to 1
    EndSection


    Bewege ich den Finger oder Stift nach:
    rechts geht der Zeiger nach oben
    links gehts nach unten
    oben gehts nach links
    unten gehts nach rechts

    LG
    Micha

  • Bewege ich den Finger oder Stift nach
    rechts geht der Zeiger nach oben
    links gehts nach unten
    oben gehts nach links
    unten gehts nach rechts

    LG
    Micha

    Tach'chen,

    Du musst einfach nur die Zeile

    Code
    Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1"


    einfügen. (ich habe mein Display mit ./LCD-show 180 gedreht)

    und die Matrix wie im Link beschrieben anpassen:

    https://wiki.ubuntu.com/X/InputCoordinateTransformation

    Der Cursor folgt dann dem Touch-Punkt.

    Allerdings habe ich mit dem aktuellen Waveshare Treiber das Problem,
    dass der Mouse-Pointer nach rechts neben dem Touch-Point versetzt ist, wenn man am Rand des Displays
    etwas anklicken will. Wenn man z.B. auf die Himbeere des LXDE Startmenüs klickt, dann schwebt der Mouse-Cursor
    über dem Web-Browser Icon :wallbash: Ich habe versucht die Werte in der 99-calibration.conf
    einzustellen, aber je weiter man an den Rand kommt, desto größer wird der Versatz. Nur in der Displaymitte ist
    der Cursor direkt unter dem Touch-Point.

    Eine Option wie man das einstellen kann habe ich nirgends gefunden.

    /luetzel

  • rookie1

    Tach'chen,

    ja ich konnte das Problem inzwischen beheben, bin mir aber nicht sicher welche Einstellung letztendlich dafür verantwortlich war.
    Deshalb habe ich auch noch nichts Neues hier gepostet. Aber vielleicht hilft es dir, wenn ich die betreffenden Stellen der relevanten
    Dateien zum Besten gebe:

    /boot/config.txt

    Code
    dtoverlay=waveshare35a:rotate=270
    dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900

    /boot/cmdline.txt

    Code
    dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:1 fbcon=font:ProFont6x11 logo.nologo

    /etc/X11/xorg.conf.d/99-calibration.conf

    Ich hatte bisher noch keine Zeit zu prüfen, welche der Optionen wirklich notwendig sind, bzw.
    relevant für die Kalibrierung. Da kommt mir Vieles irgendwie redundant vor - aber weil es funktioniert
    habe ich es vorläufig so gelassen.

    Siehe auch: https://wiki.ubuntu.com/X/InputCoordinateTransformation

    Die folgenden Dateien waren verlinkt mit den Dateien in /usr/share/X11/xorg.conf.d.
    Ich habe die symbolic links entfernt und die Dateien nach /etc/X11/xorg.conf.d kopiert und verändert,
    weil ich das "Gefühl" hatte, dass die beim Starten von X.org einfach ignoriert oder nicht gelesen wurden:

    /etc/X11/xorg.conf.d/10-evdev.conf

    Gefehlt haben bei mir außerdem die Pakete:

    Code
    sudo apt-get install evtest tslib libts-bin

    Und ich habe auch noch eine /etc/pointercal mit folgendem Inhalt angelegt:

    Code
    -113 8630 -2152804 -5765 58 22114024 65536

    Und mit:

    Code
    sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_test

    überprüft (auf der Konsole, kein X.org gestartet).

    Auch wenn mein Display von Waveshare ist, bin ich Teilen der Adafruit-Anleitung gefolgt, die
    hier zu finden ist:

    https://learn.adafruit.com/adafruit-2-8-p…ive-touchscreen

    (Beim Adafruit Display ist lediglich ein anderer Controller-Chip verbaut ft6x06_ts d.h.
    es wird ein anderes Kernel-Modul geladen, ansonsten sieht die Konfiguration recht
    ähnlich aus.)

    Dort gibt es sogar einen "Python-Helper", der den Prozess der Kalibrierung automatisieren soll:
    https://raw.githubusercontent.com/adafruit/PiTFT…ft_touch_cal.py

    Wenn man das Skript mit dem Waveshare Display verwendet, wird natürlich nur der pointercal-Teil ausgeführt.
    Ich wollte es deshalb für das Waveshare Display anpassen, damit die korrekten Einträge in /etc/X11/xorg.conf.d/99-calibration.conf
    gemacht werden.

    Ich bin aus Zeitgründen aber noch nicht dazu gekommen.

    Beste Grüße,
    /luetzel

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!