Bug 86347 - Synaptics Touch Digitizer Matrix Transform Broken
Summary: Synaptics Touch Digitizer Matrix Transform Broken
Status: RESOLVED MOVED
Alias: None
Product: xorg
Classification: Unclassified
Component: App/xinput (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-16 19:43 UTC by Andrew Sherman
Modified: 2018-08-10 20:31 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Sherman 2014-11-16 19:43:23 UTC
Axes swapping/matrix transforming incompatibility (screen becoming garbled, touchscreen becoming non-functional) with touchscreen device "SYNAPTICS Synaptics Touch Digitizer V04", as on the recently released Lenovo Thinkpad Yoga 14. Seems to occur primarily when switching between standard and 180 degree rotated configurations. I assume this is a problem like the one with ELAN Touchscreens detailed here -->(http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/), but I should already have the version of xf86-input-evdev containing the ELAN Touchscreen bug fix, so this is separate.

I'm running version 2.9.0 of the arch linux evdev driver and xorg-server 1.16.0.

Here is the relevant portion of my output running xinput:
Virtual core pointer id=2	[master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4	[slave pointer (2)]
⎜ ↳ SYNAPTICS Synaptics Touch Digitizer V04 id=10	[slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13	[slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14	[slave pointer (2)]
And the relevant portion of output on xrandr:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
1920x1080 60.0*+ 59.9 
1680x1050 60.0 59.9 
1600x1024 60.2 
1400x1050 60.0 
1280x1024 60.0 
1440x900 59.9 
1280x960 60.0 
1360x768 59.8 60.0 
1152x864 60.0 
1024x768 60.0 
800x600 60.3 56.2 
640x480 59.9
Comment 1 Peter Hutterer 2014-11-17 08:03:17 UTC
what's actually happening in detail? and what command are you running to trigger the rotation?
Comment 2 Andrew Sherman 2014-11-17 23:16:46 UTC
(In reply to Peter Hutterer from comment #1)
> what's actually happening in detail? and what command are you running to
> trigger the rotation?

The script rotates the touchscreen and the display, so first it runs
xrandr -o inverted
and then it runs:
xinput set-prop "SYNAPTICS Synaptics Touch Digitizer V04" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1'

What happens is that the screen basically displays what was on the bottom half of the screen twice, first upside down on the top half of the display and second right side up on the bottom half. There's also some artifacts thrown in there, mostly bar shaped and across the screen horizontally if I remember properly. Mouse input seems to stop functioning and touchscreen input definitely does, and the cursor is not displayed. Rotating first to the left orientation then to inverted usually seems to stop this bug from occurring, but not always. As a side note, and maybe this should be reported separately, going to left and back will usually cause the cursor to double-display, with a second cursor sprite below the first one and rotated 90 degrees CCW.

Let me know if you need more info, I can reproduce it fairly consistently.
Comment 3 Peter Hutterer 2014-11-17 23:50:27 UTC
(In reply to Andrew Sherman from comment #2)
> xinput set-prop "SYNAPTICS Synaptics Touch Digitizer V04" "Coordinate
> Transformation Matrix" 0 1 0 -1 0 1 0 0 1'

if you just run this command, does it invert the input correctly?
 
> What happens is that the screen basically displays what was on the bottom
> half of the screen twice, first upside down on the top half of the display
> and second right side up on the bottom half.

ok, you have a problem with your video driver, you need to file a separate bug for that, this is not caused by any input bits. lenovo's website says the yoga 14 has a nvidia chipset - are you running noveau?
Comment 4 Andrew Sherman 2014-11-18 04:06:51 UTC
(In reply to Peter Hutterer from comment #3)
> (In reply to Andrew Sherman from comment #2)
> > xinput set-prop "SYNAPTICS Synaptics Touch Digitizer V04" "Coordinate
> > Transformation Matrix" 0 1 0 -1 0 1 0 0 1'
> 
> if you just run this command, does it invert the input correctly?
>  
> > What happens is that the screen basically displays what was on the bottom
> > half of the screen twice, first upside down on the top half of the display
> > and second right side up on the bottom half.
> 
> ok, you have a problem with your video driver, you need to file a separate
> bug for that, this is not caused by any input bits. lenovo's website says
> the yoga 14 has a nvidia chipset - are you running noveau?

The touchscreen does invert correctly when the proper matrix is inputted -- turns out the one in the script was wrong. The computer has a nvidia chipset but it is intended to do graphics switching between that and Intel integrated graphics (HD Graphics 4400), and I'm not really sure which one is active, I haven't enabled anything to do switching so I'm assuming it's one or the other consistently, but not sure which. Are these video drivers from X or linux?

Thanks a lot, sorry I'm a bit of a newbie here.
Comment 5 Peter Hutterer 2014-11-20 06:25:51 UTC
post your xorg.log please, thanks
Comment 6 GitLab Migration User 2018-08-10 20:31:26 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/app/xinput/issues/3.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.