Re: Missing release event for Synaptics touchscreen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 11, 2017 at 4:30 PM, Arek Burdach <arek.burdach@xxxxxxxxx> wrote:
>
>
> On 11.05.2017 14:50, Martin Kepplinger wrote:
>>
>>
>> On 2017-05-11 14:28, Benjamin Tissoires wrote:
>>>
>>> On Thu, May 11, 2017 at 1:47 PM, Martin Kepplinger
>>> <martin.kepplinger@xxxxxxxxxxxxx> wrote:
>>>>
>>>>
>>>> On 2017-05-11 13:28, Benjamin Tissoires wrote:
>>>>>
>>>>> On Thu, May 11, 2017 at 1:22 PM, Martin Kepplinger
>>>>> <martin.kepplinger@xxxxxxxxxxxxx> wrote:
>>>>>>
>>>>>>
>>>>>> On 2017-05-11 12:12, Arek Burdach wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 11.05.2017 11:48, Martin Kepplinger wrote:
>>>>>>>>
>>>>>>>> On 2017-05-10 11:36, Arek Burdach wrote:
>>>>>>>>>
>>>>>>>>> Hi Andrew,
>>>>>>>>>
>>>>>>>>> On 10.05.2017 01:47, Andrew Duggan wrote:
>>>>>>>>>>
>>>>>>>>>> HI Arek,
>>>>>>>>>>
>>>>>>>>>> On 05/09/2017 04:17 PM, Arek Burdach wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I've tried described by you solution:
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
>>>>>>>>>>> index 37084b645785..81f271554b6c 100644
>>>>>>>>>>> --- a/drivers/hid/hid-core.c
>>>>>>>>>>> +++ b/drivers/hid/hid-core.c
>>>>>>>>>>> @@ -2510,6 +2510,7 @@ static const struct hid_device_id
>>>>>>>>>>> hid_ignore_list[] = {
>>>>>>>>>>
>>>>>>>>>> You need to add this to the hid_have_special_driver[] and not the
>>>>>>>>>> hid_ignore_list[].
>>>>>>>>>
>>>>>>>>> Nice score for me - two lines and one bug :-)
>>>>>>>>>
>>>>>>>>>> But, if you do success in binding hid-rmi to a touchscreen it
>>>>>>>>>> won't
>>>>>>>>>> work. The firmware between touchpads and touchscreens are
>>>>>>>>>> different
>>>>>>>>>> enough that the hid-rmi driver will be looking for data which does
>>>>>>>>>> not
>>>>>>>>>> exist in touchscreen's HID report. These differences also mean
>>>>>>>>>> that it
>>>>>>>>>> really isn't a good idea to try to support touchscreens with
>>>>>>>>>> hid-rmi.
>>>>>>>>>> It would actually result in more transactions and be less
>>>>>>>>>> efficient
>>>>>>>>>> then simply using hid-multitouch. That's why hid-core checks for
>>>>>>>>>> the
>>>>>>>>>> HID_SCAN_FLAG_GD_POINTER in an attempt to make sure it's binding
>>>>>>>>>> to a
>>>>>>>>>> touchpad and not a touchscreen.
>>>>>>>>>
>>>>>>>>> It was just like you predict. On rmi, after first tap on screen,
>>>>>>>>> hidraw
>>>>>>>>> produced infinite number of events and it is not usable anymore.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>> On 09.05.2017 16:02, Benjamin Tissoires wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, May 9, 2017 at 2:51 PM, Arek Burdach
>>>>>>>>>>>> <arek.burdach@xxxxxxxxx> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 09.05.2017 14:20, Benjamin Tissoires wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, May 9, 2017 at 11:20 AM, Arek Burdach
>>>>>>>>>>>>>> <arek.burdach@xxxxxxxxx>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thank you for response.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 09.05.2017 10:35, Benjamin Tissoires wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sat, May 6, 2017 at 9:28 PM, Arek Burdach
>>>>>>>>>>>>>>>> <arek.burdach@xxxxxxxxx>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> A week ago I've reported a bug:
>>>>>>>>>>>>>>>>> https://bugzilla.kernel.org/show_bug.cgi?id=195625 Is there
>>>>>>>>>>>>>>>>> anybody
>>>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>>>> help me with it?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I can have a look at it.
>>>>>>>>>>>>>>>> Please attach the full outputs of hid-recorder and
>>>>>>>>>>>>>>>> evemu-record
>>>>>>>>>>>>>>>> in the
>>>>>>>>>>>>>>>> bugs, or it'll be difficult for us to debug it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I've attached full logs for two situations. More details in
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> issue.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks, looks like a firmware issue (I'll comment in the bug).
>>>>>>>>>>>>>
>>>>>>>>>>>>> Sorry for my noob questions, but do you suggest that it can't
>>>>>>>>>>>>> be
>>>>>>>>>>>>> fixed by
>>>>>>>>>>>>> changes in kernel modules and I need to report it to the
>>>>>>>>>>>>> manufacturer?
>>>>>>>>>>>>
>>>>>>>>>>>> Yes. Though Andrew, in CC, works for Synaptics and might give us
>>>>>>>>>>>> some pointers.
>>>>>>>>>>>>
>>>>>>>>>>>>> If it so, do you have an idea why it works well on Windows? Do
>>>>>>>>>>>>> they
>>>>>>>>>>>>> have
>>>>>>>>>>>>> some strange hacks in their drivers?
>>>>>>>>>>>>
>>>>>>>>>>>> I have no ideas how well it works under Windows, and I have no
>>>>>>>>>>>> ideas
>>>>>>>>>>>> if there are some strange hacks in the Windows nor in the
>>>>>>>>>>>> Syanptics
>>>>>>>>>>>> driver (I would assume so).
>>>>>>>>>>>>
>>>>>>>>>> We don't provide any drivers for touchscreens on Windows. So I
>>>>>>>>>> don't
>>>>>>>>>> know how Microsoft is handling a situation like this.
>>>>>>>>>
>>>>>>>>> Do you know what should be changed in firmware to make
>>>>>>>>> hid-touchscreen
>>>>>>>>> driver works correctly? Or maybe you know someone who is
>>>>>>>>> responsible for
>>>>>>>>> firmware for this device and whom I can call to gather this
>>>>>>>>> information?
>>>>>>>>>
>>>>>>>> In case there *really* is broken firmware out there, we can
>>>>>>>> specifically
>>>>>>>> identify via struct input_id's version number for example,
>>>>>>>
>>>>>>> I thought that Benjamin identified this as a broken firmware. I've
>>>>>>> attached hidraw log in the issue and there is no release event, so it
>>>>>>> looks like a firmware bug. How do you suggest to handle this
>>>>>>> situation
>>>>>>> in kernel? We can identify the device but what to do next if we have
>>>>>>> no
>>>>>>> information if user released finger or not?
>>>>>>>
>>>>>>>> I want to
>>>>>>>> point out that I would accept adding a workaround in tslib's
>>>>>>>> input-raw
>>>>>>>> module ( http://tslib.org ) if it won't be done in the kernel.
>>>>>>>>
>>>>>>>> So, in case you can and want to use tslib as a workaround here, feel
>>>>>>>> free to have a look and send the patches that make input-raw.c work
>>>>>>>> for
>>>>>>>> you over there.
>>>>>>>
>>>>>>> I want to be as handy as I can but I'm not sure how tslib could help
>>>>>>> in
>>>>>>> this situation. If we have too much data, it can filter out
>>>>>>> unnecessary
>>>>>>> events but I don't think that it can help when there is lack of
>>>>>>> events
>>>>>>> or I'm missing something?
>>>>>>
>>>>>> Might as well be, I might not have thought it all through, but in
>>>>>> tslib's module_raw input you can can get totally creative: Why not
>>>>>> start
>>>>>> *every* sync frame with BTN_TOUCH 1 and end it with BTN_TOUCH 0? You
>>>>>> *are* able to add stuff. Filters don't usually do it though.
>>>>>
>>>>> Ouch, please don't. You'll send an endless click/release sequence
>>>>> which will break drag and drop, double click and so on.
>>>>>
>>>> ah you're right, that's nonsense.
>>>>
>>>>> Also, this won't solve the issue because the multitouch slot will not
>>>>> be released.
>>>>>
>>>>> The only solution (which i believe the Windows driver does, but I
>>>>> believed only for Windows 7 compatible touchscreen), is to arm a timer
>>>>> for each slot, and when you don't receive an update after let's say 5
>>>>> seconds, you release the slot.
>>>>>
>>>>> It's awful and I always have been against adding such pain in the
>>>>> hid-multitouch driver.
>>>>
>>>> yes. still breaks "move after hold>5s" but would probably be the only
>>>> way to make this somewhat work.
>>>
>>> No, you won't have "move after hold>5s" broken. Because at the HID
>>> level, the device is supposed to send an update on every touch when
>>> reporting a touch (for Windows 8 devices). So if there are tiny
>>> movements filtered at the input level in the kernel, we will get those
>>> and I suspect the timeout will only appear when the finger actual
>>> leaves the surface.
>>
>> ok. sounds a little more like a solution in the kernel would be
>> justified. Isn't it? It still feels dangerously ugly.
>>
>> Mainly I wanted to point out that if you somehow have to stay with "no"
>> for such broken devices, tslib would be a garbage can for userspace
>> workarounds. (in this case, most probably a new device-specific hidraw
>> based module).
>
> Sorry for a stupid question, but do we still discussing a solution for this
> device until Synaptics will correct firmware? What do you understand by
> firmware? A code in C compiled to kernel's module handling IRQs? Or a BIOS?

The firmware is the piece of code that is embedded in the touchscreen
chip, so property of Synaptics. Everything we can do us developers
will be a workaround.
To upgrade the firmware, some times you need to upgrade the BIOS
(UEFI) of your laptop, sometimes there is a different (but poprietary)
way of doing it.

>
> Why we need to think about workarounds and not just solve the problem in the
> root? Will it take a long time and we want to have a quick fix for similar
> cases or for other reasons?

That's in Synaptics' hands. If they say, yes, there is a bug on our
side we will fix it in an upgrade, then we don't need to do anything.
But given that Windows somewhat manages to not be affected, I guess
Synaptics won't bother fixing this just for us, Linux users.

Cheers,
Benjamin
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux