2022-07-18 17:57:32

by José Expósito

[permalink] [raw]
Subject: [RFC] UCLogic: Filtering unsupported HUION tablets

Hi!

No code yet, just a kind request for comments and hopefully some wisdom
and experience from Nikolai dealing with HUION devices.

HUION keeps reusing the same vendor and product IDs for their devices.
This makes it really difficult to differentiate between devices and
handle them in the kernel and also in user space.

Reusing IDs could introduce a problem:

If HUION, or other vendor following the same practices, releases a new
tablet with a duplicated product ID, the UCLogic driver would handle it.
The device might work with the existing code or it might fail because of
a new feature or a whole different firmware.

As far as I know, at the moment there is not a mechanism in place to
avoid this situation.
I think that it'd be better to ignore those devices in UCLogic and let
the HID generic driver handle them because using HID generic would
provide a basic user experience while using UCLogic might fail to probe
the tablet.

DIGImend's web already provides a nice list of supported devices:
http://digimend.github.io/tablets/

So, I wonder:

- Do you think it makes sense to ignore untested devices?
- If the answer is yes, do we have a better option than checking the
device name against an allow-list? It'd be great to hear other
people's ideas.

Best wishes,
José Expósito


2022-07-19 10:39:48

by Nikolai Kondrashov

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

Hi José,

First of all, thanks a lot for all the work you're doing with the tablets!

Yes, this situation is unfortunate, but there's really not much we could do.
The tablet database at http://digimend.github.io/tablets/ hasn't been updated
in ages, and it has never been exhaustive to start with.

There are tons of tablet modifications, including of the same (marketed)
model, and those can differ not only in the reported name, but probably even
the VID:PID, as could've happened when Huion switched from v1 to v2 protocol.

So, I think a "whitelist" would be a maintenance nightmare.

Moreover, I think it's better to disable the tablet completely in case we
failed initialization (e.g. got an invalid response to configuration, or
failed to find some interfaces and such), after producing a comprehensive
error message. Configuring a tablet partially, and then handing it over to the
generic driver could mess things up more.

It's less confusing for the user, and stops them from trying to fix the
problem up the stack with various settings, often getting into a worse
situation. It's also much easier for the maintainer, since they don't need to
investigate all the higher layers.

A "blacklist" would work better here, if you can find the tablets to include.

Nick

On 7/18/22 20:29, José Expósito wrote:
> Hi!
>
> No code yet, just a kind request for comments and hopefully some wisdom
> and experience from Nikolai dealing with HUION devices.
>
> HUION keeps reusing the same vendor and product IDs for their devices.
> This makes it really difficult to differentiate between devices and
> handle them in the kernel and also in user space.
>
> Reusing IDs could introduce a problem:
>
> If HUION, or other vendor following the same practices, releases a new
> tablet with a duplicated product ID, the UCLogic driver would handle it.
> The device might work with the existing code or it might fail because of
> a new feature or a whole different firmware.
>
> As far as I know, at the moment there is not a mechanism in place to
> avoid this situation.
> I think that it'd be better to ignore those devices in UCLogic and let
> the HID generic driver handle them because using HID generic would
> provide a basic user experience while using UCLogic might fail to probe
> the tablet.
>
> DIGImend's web already provides a nice list of supported devices:
> http://digimend.github.io/tablets/
>
> So, I wonder:
>
> - Do you think it makes sense to ignore untested devices?
> - If the answer is yes, do we have a better option than checking the
> device name against an allow-list? It'd be great to hear other
> people's ideas.
>
> Best wishes,
> José Expósito
>

2022-07-20 18:20:36

by Nikolai Kondrashov

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On 7/20/22 20:54, José Expósito wrote:
> Hi!
>
> On Wed, Jul 20, 2022 at 08:45:55PM +0300, Nikolai Kondrashov wrote:
>> On 7/20/22 20:36, José Expósito wrote:
>>> I don't know about any broken device handled by the driver, so there is
>>> no need to add new code yet :)
>>> I'll try to keep an eye on DIGImend's issue tracker now that the code
>>> present in the upstream kernel is being released by many distros.
>>
>> If you have the time, backporting your changes to digimend-kernel-drivers
>> would get you feedback much faster :)
>>
>> I can do a release once we get the code in.
>
> I already opened a PR a few months ago:
> https://github.com/DIGImend/digimend-kernel-drivers/pull/598
>
> But more code has been merged since then. I'll try to backport the
> latest changes this weekend and ping you on GitHub once it is
> ready for review again.

Ah, sorry, I rarely look at DIGImend notifications ????

Could you send me an email once you got something ready for review?

Thank you!
Nick

2022-07-20 18:34:41

by José Expósito

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

Hi!

On Wed, Jul 20, 2022 at 08:45:55PM +0300, Nikolai Kondrashov wrote:
> On 7/20/22 20:36, Jos? Exp?sito wrote:
> > I don't know about any broken device handled by the driver, so there is
> > no need to add new code yet :)
> > I'll try to keep an eye on DIGImend's issue tracker now that the code
> > present in the upstream kernel is being released by many distros.
>
> If you have the time, backporting your changes to digimend-kernel-drivers
> would get you feedback much faster :)
>
> I can do a release once we get the code in.

I already opened a PR a few months ago:
https://github.com/DIGImend/digimend-kernel-drivers/pull/598

But more code has been merged since then. I'll try to backport the
latest changes this weekend and ping you on GitHub once it is
ready for review again.

Best wishes,
Jose

2022-07-20 18:35:43

by Nikolai Kondrashov

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On 7/20/22 20:36, José Expósito wrote:
> Hi Nikolai,
>
> Thanks a lot for the quick response.
>
> On Tue, Jul 19, 2022 at 12:57:09PM +0300, Nikolai Kondrashov wrote:
>> Hi José,
>>
>> First of all, thanks a lot for all the work you're doing with the tablets!
>>
>> Yes, this situation is unfortunate, but there's really not much we could do.
>> The tablet database at http://digimend.github.io/tablets/ hasn't been
>> updated in ages, and it has never been exhaustive to start with.
>>
>> There are tons of tablet modifications, including of the same (marketed)
>> model, and those can differ not only in the reported name, but probably even
>> the VID:PID, as could've happened when Huion switched from v1 to v2
>> protocol.
>>
>> So, I think a "whitelist" would be a maintenance nightmare.
>>
>> Moreover, I think it's better to disable the tablet completely in case we
>> failed initialization (e.g. got an invalid response to configuration, or
>> failed to find some interfaces and such), after producing a comprehensive
>> error message. Configuring a tablet partially, and then handing it over to
>> the generic driver could mess things up more.
>>
>> It's less confusing for the user, and stops them from trying to fix the
>> problem up the stack with various settings, often getting into a worse
>> situation. It's also much easier for the maintainer, since they don't need
>> to investigate all the higher layers.
>>
>> A "blacklist" would work better here, if you can find the tablets to include.
>>
>> Nick
>
> That makes sense, thanks for the pointers.
>
> It is unfortunate that we don't have the required information about the
> supported tablets. Excluding the unsupported tablets (when fixing them
> is not possible for reasons) seems like a reasonable approach.
>
> I don't know about any broken device handled by the driver, so there is
> no need to add new code yet :)
> I'll try to keep an eye on DIGImend's issue tracker now that the code
> present in the upstream kernel is being released by many distros.

If you have the time, backporting your changes to digimend-kernel-drivers
would get you feedback much faster :)

I can do a release once we get the code in.

Nick

2022-07-20 18:38:11

by José Expósito

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

Hi Nikolai,

Thanks a lot for the quick response.

On Tue, Jul 19, 2022 at 12:57:09PM +0300, Nikolai Kondrashov wrote:
> Hi Jos?,
>
> First of all, thanks a lot for all the work you're doing with the tablets!
>
> Yes, this situation is unfortunate, but there's really not much we could do.
> The tablet database at http://digimend.github.io/tablets/ hasn't been
> updated in ages, and it has never been exhaustive to start with.
>
> There are tons of tablet modifications, including of the same (marketed)
> model, and those can differ not only in the reported name, but probably even
> the VID:PID, as could've happened when Huion switched from v1 to v2
> protocol.
>
> So, I think a "whitelist" would be a maintenance nightmare.
>
> Moreover, I think it's better to disable the tablet completely in case we
> failed initialization (e.g. got an invalid response to configuration, or
> failed to find some interfaces and such), after producing a comprehensive
> error message. Configuring a tablet partially, and then handing it over to
> the generic driver could mess things up more.
>
> It's less confusing for the user, and stops them from trying to fix the
> problem up the stack with various settings, often getting into a worse
> situation. It's also much easier for the maintainer, since they don't need
> to investigate all the higher layers.
>
> A "blacklist" would work better here, if you can find the tablets to include.
>
> Nick

That makes sense, thanks for the pointers.

It is unfortunate that we don't have the required information about the
supported tablets. Excluding the unsupported tablets (when fixing them
is not possible for reasons) seems like a reasonable approach.

I don't know about any broken device handled by the driver, so there is
no need to add new code yet :)
I'll try to keep an eye on DIGImend's issue tracker now that the code
present in the upstream kernel is being released by many distros.

Cheers,
Jose

> On 7/18/22 20:29, Jos? Exp?sito wrote:
> > Hi!
> >
> > No code yet, just a kind request for comments and hopefully some wisdom
> > and experience from Nikolai dealing with HUION devices.
> >
> > HUION keeps reusing the same vendor and product IDs for their devices.
> > This makes it really difficult to differentiate between devices and
> > handle them in the kernel and also in user space.
> >
> > Reusing IDs could introduce a problem:
> >
> > If HUION, or other vendor following the same practices, releases a new
> > tablet with a duplicated product ID, the UCLogic driver would handle it.
> > The device might work with the existing code or it might fail because of
> > a new feature or a whole different firmware.
> >
> > As far as I know, at the moment there is not a mechanism in place to
> > avoid this situation.
> > I think that it'd be better to ignore those devices in UCLogic and let
> > the HID generic driver handle them because using HID generic would
> > provide a basic user experience while using UCLogic might fail to probe
> > the tablet.
> >
> > DIGImend's web already provides a nice list of supported devices:
> > http://digimend.github.io/tablets/
> >
> > So, I wonder:
> >
> > - Do you think it makes sense to ignore untested devices?
> > - If the answer is yes, do we have a better option than checking the
> > device name against an allow-list? It'd be great to hear other
> > people's ideas.
> >
> > Best wishes,
> > Jos? Exp?sito
> >
>

2022-07-21 10:18:07

by Bastien Nocera

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On Mon, 2022-07-18 at 19:29 +0200, José Expósito wrote:
> Hi!
>
> No code yet, just a kind request for comments and hopefully some
> wisdom
> and experience from Nikolai dealing with HUION devices.
>
> HUION keeps reusing the same vendor and product IDs for their
> devices.
> This makes it really difficult to differentiate between devices and
> handle them in the kernel and also in user space.
>
> Reusing IDs could introduce a problem:
>
> If HUION, or other vendor following the same practices, releases a
> new
> tablet with a duplicated product ID, the UCLogic driver would handle
> it.
> The device might work with the existing code or it might fail because
> of
> a new feature or a whole different firmware.
>
> As far as I know, at the moment there is not a mechanism in place to
> avoid this situation.
> I think that it'd be better to ignore those devices in UCLogic and
> let
> the HID generic driver handle them because using HID generic would
> provide a basic user experience while using UCLogic might fail to
> probe
> the tablet.
>
> DIGImend's web already provides a nice list of supported devices:
> http://digimend.github.io/tablets/
>
> So, I wonder:
>
>  - Do you think it makes sense to ignore untested devices?
>  - If the answer is yes, do we have a better option than checking the
>    device name against an allow-list? It'd be great to hear other
>    people's ideas.

I don't think it makes sense to ignore untested devices, unless you
know for a fact they won't work.

But if the name is part of detecting the device, it would certainly
make sense to use that as part of the identifier for the device, rather
than just the USB VIP:PID.

You should be able to add the product strings in the .driver_data, and
check them in probe().

Cheers

2022-07-24 11:12:58

by José Expósito

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On Wed, Jul 20, 2022 at 09:13:39PM +0300, Nikolai Kondrashov wrote:
> On 7/20/22 20:54, José Expósito wrote:
> > Hi!
> >
> > On Wed, Jul 20, 2022 at 08:45:55PM +0300, Nikolai Kondrashov wrote:
> > > On 7/20/22 20:36, José Expósito wrote:
> > > > I don't know about any broken device handled by the driver, so there is
> > > > no need to add new code yet :)
> > > > I'll try to keep an eye on DIGImend's issue tracker now that the code
> > > > present in the upstream kernel is being released by many distros.
> > >
> > > If you have the time, backporting your changes to digimend-kernel-drivers
> > > would get you feedback much faster :)
> > >
> > > I can do a release once we get the code in.
> >
> > I already opened a PR a few months ago:
> > https://github.com/DIGImend/digimend-kernel-drivers/pull/598
> >
> > But more code has been merged since then. I'll try to backport the
> > latest changes this weekend and ping you on GitHub once it is
> > ready for review again.
>
> Ah, sorry, I rarely look at DIGImend notifications ????
>
> Could you send me an email once you got something ready for review?
>
> Thank you!
> Nick

Sure, the PR is ready:
https://github.com/DIGImend/digimend-kernel-drivers/pull/598

I included the patches present in "for-5.20/uclogic" but not the
patches I sent during the last couple of weeks to the mailing list,
just in case changes are requested.

In addition, I created another PR adding the XP-Pen Deco L tablet to
the web:
https://github.com/DIGImend/tablets/pull/52

Jose

2022-07-24 11:44:55

by José Expósito

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On Thu, Jul 21, 2022 at 11:39:06AM +0200, Bastien Nocera wrote:
> On Mon, 2022-07-18 at 19:29 +0200, Jos? Exp?sito wrote:
> > Hi!
> >
> > No code yet, just a kind request for comments and hopefully some
> > wisdom
> > and experience from Nikolai dealing with HUION devices.
> >
> > HUION keeps reusing the same vendor and product IDs for their
> > devices.
> > This makes it really difficult to differentiate between devices and
> > handle them in the kernel and also in user space.
> >
> > Reusing IDs could introduce a problem:
> >
> > If HUION, or other vendor following the same practices, releases a
> > new
> > tablet with a duplicated product ID, the UCLogic driver would handle
> > it.
> > The device might work with the existing code or it might fail because
> > of
> > a new feature or a whole different firmware.
> >
> > As far as I know, at the moment there is not a mechanism in place to
> > avoid this situation.
> > I think that it'd be better to ignore those devices in UCLogic and
> > let
> > the HID generic driver handle them because using HID generic would
> > provide a basic user experience while using UCLogic might fail to
> > probe
> > the tablet.
> >
> > DIGImend's web already provides a nice list of supported devices:
> > http://digimend.github.io/tablets/
> >
> > So, I wonder:
> >
> > ?- Do you think it makes sense to ignore untested devices?
> > ?- If the answer is yes, do we have a better option than checking the
> > ?? device name against an allow-list? It'd be great to hear other
> > ?? people's ideas.
>
> I don't think it makes sense to ignore untested devices, unless you
> know for a fact they won't work.
>
> But if the name is part of detecting the device, it would certainly
> make sense to use that as part of the identifier for the device, rather
> than just the USB VIP:PID.

Agreed, I also think that adding the name to the vendor/product IDs
pair would be a better identifier. However, at this point, we don't
have that information for all supported tablets, so I guess that we
will have to fix new tablets reusing the VIP:PID as they are
released.

It is unfortunate, but we'll have to deal with it.

Thanks a lot for your comments!
Jose

> You should be able to add the product strings in the .driver_data, and
> check them in probe().
>
> Cheers

2022-08-08 08:43:11

by Nikolai Kondrashov

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On 7/24/22 14:05, José Expósito wrote:
> On Wed, Jul 20, 2022 at 09:13:39PM +0300, Nikolai Kondrashov wrote:
>> Could you send me an email once you got something ready for review?
>>
>> Thank you!
>> Nick
>
> Sure, the PR is ready:
> https://github.com/DIGImend/digimend-kernel-drivers/pull/598
>
> I included the patches present in "for-5.20/uclogic" but not the
> patches I sent during the last couple of weeks to the mailing list,
> just in case changes are requested.
>
> In addition, I created another PR adding the XP-Pen Deco L tablet to
> the web:
> https://github.com/DIGImend/tablets/pull/52

Thank you, José!

I finally made the release:
https://github.com/DIGImend/digimend-kernel-drivers/releases/tag/v11

Nick

2022-08-08 16:43:41

by José Expósito

[permalink] [raw]
Subject: Re: [RFC] UCLogic: Filtering unsupported HUION tablets

On Mon, Aug 08, 2022 at 10:44:29AM +0300, Nikolai Kondrashov wrote:
> On 7/24/22 14:05, Jos? Exp?sito wrote:
> > On Wed, Jul 20, 2022 at 09:13:39PM +0300, Nikolai Kondrashov wrote:
> > > Could you send me an email once you got something ready for review?
> > >
> > > Thank you!
> > > Nick
> >
> > Sure, the PR is ready:
> > https://github.com/DIGImend/digimend-kernel-drivers/pull/598
> >
> > I included the patches present in "for-5.20/uclogic" but not the
> > patches I sent during the last couple of weeks to the mailing list,
> > just in case changes are requested.
> >
> > In addition, I created another PR adding the XP-Pen Deco L tablet to
> > the web:
> > https://github.com/DIGImend/tablets/pull/52
>
> Thank you, Jos?!
>
> I finally made the release:
> https://github.com/DIGImend/digimend-kernel-drivers/releases/tag/v11
>
> Nick

Thanks a lot Nickolai :) I'll keep an eye on the bug tracker just in
case.

Jose