2021-11-12 14:00:50

by Ondrej Zary

[permalink] [raw]
Subject: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

Iiyama ProLite T1931SAW does not work with Linux - input devices are
created but cursor does not move.

It has the infamous 0eef:0001 ID which has been reused for various
devices before.

It seems to require export_all_inputs = true.
Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
Hopefully there are no HID devices using this ID that will break.
It should not break non-HID devices (handled by usbtouchscreen).

Signed-off-by: Ondrej Zary <[email protected]>
---
drivers/hid/hid-multitouch.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index e1afddb7b33d..099daf590392 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
USB_DEVICE_ID_CVTOUCH_SCREEN) },

+ /* eGalax devices (SAW) */
+ { .driver_data = MT_CLS_WIN_8,
+ MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
+ USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
+
/* eGalax devices (resistive) */
{ .driver_data = MT_CLS_EGALAX,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
--
Ondrej Zary



2021-11-12 15:18:15

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

Hi Ondrej,

On Fri, Nov 12, 2021 at 3:00 PM Ondrej Zary <[email protected]> wrote:
>
> Iiyama ProLite T1931SAW does not work with Linux - input devices are
> created but cursor does not move.
>
> It has the infamous 0eef:0001 ID which has been reused for various
> devices before.
>
> It seems to require export_all_inputs = true.
> Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
> Hopefully there are no HID devices using this ID that will break.
> It should not break non-HID devices (handled by usbtouchscreen).

Hmm, this is worrisome. I am pretty sure there were some eGalax 0001
devices that were Win 7 compatible and I am not sure if they are
compatible with Win8...

I guess that if you have to set MT_CLS_WIN_8, the device is not
detected as such. so how about you use:
MT_CLS_EXPORT_ALL_INPUTS instead, (to keep MT_CLS_DEFAULT for those
devices), and restrict the VID/PID matching to the non Win8 devices:

HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_DWAV,
USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)

?

Cheers,
Benjamin

>
> Signed-off-by: Ondrej Zary <[email protected]>
> ---
> drivers/hid/hid-multitouch.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index e1afddb7b33d..099daf590392 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
> MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> USB_DEVICE_ID_CVTOUCH_SCREEN) },
>
> + /* eGalax devices (SAW) */
> + { .driver_data = MT_CLS_WIN_8,
> + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> +
> /* eGalax devices (resistive) */
> { .driver_data = MT_CLS_EGALAX,
> MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> --
> Ondrej Zary
>


2021-11-15 08:37:59

by Ondrej Zary

[permalink] [raw]
Subject: Re: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Friday 12 November 2021, Benjamin Tissoires wrote:
> Hi Ondrej,
>
> On Fri, Nov 12, 2021 at 3:00 PM Ondrej Zary <[email protected]> wrote:
> >
> > Iiyama ProLite T1931SAW does not work with Linux - input devices are
> > created but cursor does not move.
> >
> > It has the infamous 0eef:0001 ID which has been reused for various
> > devices before.
> >
> > It seems to require export_all_inputs = true.
> > Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
> > Hopefully there are no HID devices using this ID that will break.
> > It should not break non-HID devices (handled by usbtouchscreen).
>
> Hmm, this is worrisome. I am pretty sure there were some eGalax 0001
> devices that were Win 7 compatible and I am not sure if they are
> compatible with Win8...
>
> I guess that if you have to set MT_CLS_WIN_8, the device is not
> detected as such. so how about you use:
> MT_CLS_EXPORT_ALL_INPUTS instead, (to keep MT_CLS_DEFAULT for those
> devices), and restrict the VID/PID matching to the non Win8 devices:

It works with MT_CLS_EXPORT_ALL_INPUTS.

> HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_DWAV,
> USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)

But does not match HID_GROUP_GENERIC.

>
> ?
>
> Cheers,
> Benjamin
>
> >
> > Signed-off-by: Ondrej Zary <[email protected]>
> > ---
> > drivers/hid/hid-multitouch.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> > index e1afddb7b33d..099daf590392 100644
> > --- a/drivers/hid/hid-multitouch.c
> > +++ b/drivers/hid/hid-multitouch.c
> > @@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
> > MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> > USB_DEVICE_ID_CVTOUCH_SCREEN) },
> >
> > + /* eGalax devices (SAW) */
> > + { .driver_data = MT_CLS_WIN_8,
> > + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> > +
> > /* eGalax devices (resistive) */
> > { .driver_data = MT_CLS_EGALAX,
> > MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > --
> > Ondrej Zary
> >
>
>



--
Ondrej Zary

2021-11-16 09:12:15

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Mon, Nov 15, 2021 at 9:37 AM Ondrej Zary <[email protected]> wrote:
>
> On Friday 12 November 2021, Benjamin Tissoires wrote:
> > Hi Ondrej,
> >
> > On Fri, Nov 12, 2021 at 3:00 PM Ondrej Zary <[email protected]> wrote:
> > >
> > > Iiyama ProLite T1931SAW does not work with Linux - input devices are
> > > created but cursor does not move.
> > >
> > > It has the infamous 0eef:0001 ID which has been reused for various
> > > devices before.
> > >
> > > It seems to require export_all_inputs = true.
> > > Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
> > > Hopefully there are no HID devices using this ID that will break.
> > > It should not break non-HID devices (handled by usbtouchscreen).
> >
> > Hmm, this is worrisome. I am pretty sure there were some eGalax 0001
> > devices that were Win 7 compatible and I am not sure if they are
> > compatible with Win8...
> >
> > I guess that if you have to set MT_CLS_WIN_8, the device is not
> > detected as such. so how about you use:
> > MT_CLS_EXPORT_ALL_INPUTS instead, (to keep MT_CLS_DEFAULT for those
> > devices), and restrict the VID/PID matching to the non Win8 devices:
>
> It works with MT_CLS_EXPORT_ALL_INPUTS.
>
> > HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_DWAV,
> > USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)
>
> But does not match HID_GROUP_GENERIC.

Sorry, it should have been HID_GROUP_MULTITOUCH

Cheers,
Benjamin

>
> >
> > ?
> >
> > Cheers,
> > Benjamin
> >
> > >
> > > Signed-off-by: Ondrej Zary <[email protected]>
> > > ---
> > > drivers/hid/hid-multitouch.c | 5 +++++
> > > 1 file changed, 5 insertions(+)
> > >
> > > diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> > > index e1afddb7b33d..099daf590392 100644
> > > --- a/drivers/hid/hid-multitouch.c
> > > +++ b/drivers/hid/hid-multitouch.c
> > > @@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
> > > MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> > > USB_DEVICE_ID_CVTOUCH_SCREEN) },
> > >
> > > + /* eGalax devices (SAW) */
> > > + { .driver_data = MT_CLS_WIN_8,
> > > + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> > > +
> > > /* eGalax devices (resistive) */
> > > { .driver_data = MT_CLS_EGALAX,
> > > MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > --
> > > Ondrej Zary
> > >
> >
> >
>
>
>
> --
> Ondrej Zary
>


2021-11-16 11:07:19

by Ondrej Zary

[permalink] [raw]
Subject: Re: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Tuesday 16 November 2021, Benjamin Tissoires wrote:
> On Mon, Nov 15, 2021 at 9:37 AM Ondrej Zary <[email protected]> wrote:
> >
> > On Friday 12 November 2021, Benjamin Tissoires wrote:
> > > Hi Ondrej,
> > >
> > > On Fri, Nov 12, 2021 at 3:00 PM Ondrej Zary <[email protected]> wrote:
> > > >
> > > > Iiyama ProLite T1931SAW does not work with Linux - input devices are
> > > > created but cursor does not move.
> > > >
> > > > It has the infamous 0eef:0001 ID which has been reused for various
> > > > devices before.
> > > >
> > > > It seems to require export_all_inputs = true.
> > > > Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
> > > > Hopefully there are no HID devices using this ID that will break.
> > > > It should not break non-HID devices (handled by usbtouchscreen).
> > >
> > > Hmm, this is worrisome. I am pretty sure there were some eGalax 0001
> > > devices that were Win 7 compatible and I am not sure if they are
> > > compatible with Win8...
> > >
> > > I guess that if you have to set MT_CLS_WIN_8, the device is not
> > > detected as such. so how about you use:
> > > MT_CLS_EXPORT_ALL_INPUTS instead, (to keep MT_CLS_DEFAULT for those
> > > devices), and restrict the VID/PID matching to the non Win8 devices:
> >
> > It works with MT_CLS_EXPORT_ALL_INPUTS.
> >
> > > HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_DWAV,
> > > USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)
> >
> > But does not match HID_GROUP_GENERIC.
>
> Sorry, it should have been HID_GROUP_MULTITOUCH

That's exactly how MT_USB_DEVICE is defined:
#define MT_USB_DEVICE(v, p) HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH, v, p)

So it's equal to MT_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)
Will that match only non-Win8 devices?

> Cheers,
> Benjamin
>
> >
> > >
> > > ?
> > >
> > > Cheers,
> > > Benjamin
> > >
> > > >
> > > > Signed-off-by: Ondrej Zary <[email protected]>
> > > > ---
> > > > drivers/hid/hid-multitouch.c | 5 +++++
> > > > 1 file changed, 5 insertions(+)
> > > >
> > > > diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> > > > index e1afddb7b33d..099daf590392 100644
> > > > --- a/drivers/hid/hid-multitouch.c
> > > > +++ b/drivers/hid/hid-multitouch.c
> > > > @@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
> > > > MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> > > > USB_DEVICE_ID_CVTOUCH_SCREEN) },
> > > >
> > > > + /* eGalax devices (SAW) */
> > > > + { .driver_data = MT_CLS_WIN_8,
> > > > + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > > + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> > > > +
> > > > /* eGalax devices (resistive) */
> > > > { .driver_data = MT_CLS_EGALAX,
> > > > MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > > --
> > > > Ondrej Zary
> > > >
> > >
> > >
> >
> >
> >
> > --
> > Ondrej Zary
> >
>
>



--
Ondrej Zary

2021-11-16 12:13:40

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Tue, Nov 16, 2021 at 12:07 PM Ondrej Zary <[email protected]> wrote:
>
> On Tuesday 16 November 2021, Benjamin Tissoires wrote:
> > On Mon, Nov 15, 2021 at 9:37 AM Ondrej Zary <[email protected]> wrote:
> > >
> > > On Friday 12 November 2021, Benjamin Tissoires wrote:
> > > > Hi Ondrej,
> > > >
> > > > On Fri, Nov 12, 2021 at 3:00 PM Ondrej Zary <[email protected]> wrote:
> > > > >
> > > > > Iiyama ProLite T1931SAW does not work with Linux - input devices are
> > > > > created but cursor does not move.
> > > > >
> > > > > It has the infamous 0eef:0001 ID which has been reused for various
> > > > > devices before.
> > > > >
> > > > > It seems to require export_all_inputs = true.
> > > > > Add it to mt_devices[] as MT_CLS_WIN_8 to fix the problem.
> > > > > Hopefully there are no HID devices using this ID that will break.
> > > > > It should not break non-HID devices (handled by usbtouchscreen).
> > > >
> > > > Hmm, this is worrisome. I am pretty sure there were some eGalax 0001
> > > > devices that were Win 7 compatible and I am not sure if they are
> > > > compatible with Win8...
> > > >
> > > > I guess that if you have to set MT_CLS_WIN_8, the device is not
> > > > detected as such. so how about you use:
> > > > MT_CLS_EXPORT_ALL_INPUTS instead, (to keep MT_CLS_DEFAULT for those
> > > > devices), and restrict the VID/PID matching to the non Win8 devices:
> > >
> > > It works with MT_CLS_EXPORT_ALL_INPUTS.
> > >
> > > > HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_DWAV,
> > > > USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)
> > >
> > > But does not match HID_GROUP_GENERIC.
> >
> > Sorry, it should have been HID_GROUP_MULTITOUCH
>
> That's exactly how MT_USB_DEVICE is defined:
> #define MT_USB_DEVICE(v, p) HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH, v, p)

Oops, sorry. That's what happens when I rely too much on my memory and
don't check the code :(

>
> So it's equal to MT_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER)
> Will that match only non-Win8 devices?

Nope, you're correct, it will only match non-Win8 devices.
So the only comment I have on your patch is to use
MT_CLS_EXPORT_ALL_INPUTS instead of MT_CLS_WIN_8.

Cheers,
Benjamin

>
> > Cheers,
> > Benjamin
> >
> > >
> > > >
> > > > ?
> > > >
> > > > Cheers,
> > > > Benjamin
> > > >
> > > > >
> > > > > Signed-off-by: Ondrej Zary <[email protected]>
> > > > > ---
> > > > > drivers/hid/hid-multitouch.c | 5 +++++
> > > > > 1 file changed, 5 insertions(+)
> > > > >
> > > > > diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> > > > > index e1afddb7b33d..099daf590392 100644
> > > > > --- a/drivers/hid/hid-multitouch.c
> > > > > +++ b/drivers/hid/hid-multitouch.c
> > > > > @@ -1888,6 +1888,11 @@ static const struct hid_device_id mt_devices[] = {
> > > > > MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> > > > > USB_DEVICE_ID_CVTOUCH_SCREEN) },
> > > > >
> > > > > + /* eGalax devices (SAW) */
> > > > > + { .driver_data = MT_CLS_WIN_8,
> > > > > + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > > > + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> > > > > +
> > > > > /* eGalax devices (resistive) */
> > > > > { .driver_data = MT_CLS_EGALAX,
> > > > > MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> > > > > --
> > > > > Ondrej Zary
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Ondrej Zary
> > >
> >
> >
>
>
>
> --
> Ondrej Zary
>


2021-11-16 13:15:22

by Ondrej Zary

[permalink] [raw]
Subject: [PATCH v2] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

Iiyama ProLite T1931SAW does not work with Linux - input devices are
created but cursor does not move.

It has the infamous 0eef:0001 ID which has been reused for various
devices before.

It seems to require export_all_inputs = true.

Hopefully there are no HID devices using this ID that will break.
It should not break non-HID devices (handled by usbtouchscreen).

Signed-off-by: Ondrej Zary <[email protected]>
---
drivers/hid/hid-multitouch.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 3ea7cb1cda84..ac114b76057b 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -1880,6 +1880,11 @@ static const struct hid_device_id mt_devices[] = {
MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
USB_DEVICE_ID_CVTOUCH_SCREEN) },

+ /* eGalax devices (SAW) */
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
+ MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
+ USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
+
/* eGalax devices (resistive) */
{ .driver_data = MT_CLS_EGALAX,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
--
Ondrej Zary


2021-11-16 17:07:24

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH v2] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Tue, Nov 16, 2021 at 2:15 PM Ondrej Zary <[email protected]> wrote:
>
> Iiyama ProLite T1931SAW does not work with Linux - input devices are
> created but cursor does not move.
>
> It has the infamous 0eef:0001 ID which has been reused for various
> devices before.
>
> It seems to require export_all_inputs = true.
>
> Hopefully there are no HID devices using this ID that will break.
> It should not break non-HID devices (handled by usbtouchscreen).
>
> Signed-off-by: Ondrej Zary <[email protected]>

Reviewed-by: Benjamin Tissoires <[email protected]>

Thanks!

Cheers,
Benjamin

> ---
> drivers/hid/hid-multitouch.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index 3ea7cb1cda84..ac114b76057b 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -1880,6 +1880,11 @@ static const struct hid_device_id mt_devices[] = {
> MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> USB_DEVICE_ID_CVTOUCH_SCREEN) },
>
> + /* eGalax devices (SAW) */
> + { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
> + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> +
> /* eGalax devices (resistive) */
> { .driver_data = MT_CLS_EGALAX,
> MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> --
> Ondrej Zary
>


2021-11-19 15:00:51

by Jiri Kosina

[permalink] [raw]
Subject: Re: [PATCH v2] hid-multitouch: Fix Iiyama ProLite T1931SAW (0eef:0001 again!)

On Tue, 16 Nov 2021, Ondrej Zary wrote:

> Iiyama ProLite T1931SAW does not work with Linux - input devices are
> created but cursor does not move.
>
> It has the infamous 0eef:0001 ID which has been reused for various
> devices before.
>
> It seems to require export_all_inputs = true.
>
> Hopefully there are no HID devices using this ID that will break.
> It should not break non-HID devices (handled by usbtouchscreen).
>
> Signed-off-by: Ondrej Zary <[email protected]>
> ---
> drivers/hid/hid-multitouch.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index 3ea7cb1cda84..ac114b76057b 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -1880,6 +1880,11 @@ static const struct hid_device_id mt_devices[] = {
> MT_USB_DEVICE(USB_VENDOR_ID_CVTOUCH,
> USB_DEVICE_ID_CVTOUCH_SCREEN) },
>
> + /* eGalax devices (SAW) */
> + { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
> + MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
> + USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER) },
> +
> /* eGalax devices (resistive) */
> { .driver_data = MT_CLS_EGALAX,

Applied, thanks Ondrej.

--
Jiri Kosina
SUSE Labs