Re: [PATCH] hid: Add support for the xp-pen deco mini7 tablet

From: José Expósito
Date: Thu Jun 23 2022 - 14:55:33 EST


Hi Stefan,

On Wed, Jun 22, 2022 at 11:31:05PM +0200, Stefan Berzl wrote:
> Hello!
>
> >> >From f9bb82e400effd3aea37b2be710add9e2bb832da Mon Sep 17 00:00:00 2001
> >> From: Stefan Berzl <stefanberzl@xxxxxxxxx>
> >> Date: Fri, 11 Mar 2022 04:04:30 +0100
> >> Subject: [PATCH] hid: Add support for the xp-pen deco mini7 tablet
> >>
> >> ...
> >
> > Stefan,
> >
> > sorry for not responding earlier, but this patch somehow fell in between
> > cracks. Please for your further submissions do not forget to at least CC
> > some of the relevant malinglists as well.
>
> Will do... I am still new to the process and tend to forget things, but
> I'll do my best.
>
> > Quite a lot has changed in uclogic driver since then, as José has been
> > pushing quite a lot of code there from DIGImend project ... could you
> > please update your patch on top of current codebase and resend it?
> >
> > Thanks,
> >
>
> I think you'll be pleased to find that José's work is basically a
> superset of mine, therefore eliminating the need for my patch
> altogether. When running his newest deco l code, the deco mini 7 is
> fully supported as well. I should have given a tested-by or something,
> but since I am still new to this, I was kinda hesitant with the big
> changes introduced by the newest digimend work. As you know, there is no
> sort of registry to differentiate devices by ability, so one or two
> useless evdev devices are generated for hardware the tablet may or may
> not have, like "Touch Ring" or "Touch Strip". I thought that this might
> cause confusion and would have to be amended.

Useless event nodes should not be created. At the moment, the driver
disables all interfaces that are not used and, after switching to "raw"
mode, it should only create a node for each valid device.

At the moment, there are only HID descriptors for the frame and the pen
so, if your tablet is creating a touch ring device, something is not
working as expected.

Running "sudo libinput record" should display only the frame and the
pen. Does it show something different in your case?

$ sudo libinput record
[...]
/dev/input/event21: Hanvon Ugee Technology Co.,Ltd Deco L
/dev/input/event22: Hanvon Ugee Technology Co.,Ltd Deco L Pad


> There is however one caveat that seems to be unique to the mini7, which
> is the ack packet that is sent when switching to the vendor defined
> usage. It doesn't do much though, as currently it gets interpreted as a
> pen report and since it doesn't have useful values, causes the cursor to
> go to the top left screen position. Since the ack packet is only sent
> once, it ought to be of little consequence.
>
> I would of course fix this, but I don't really know what's the preferred
> way. One can obviously simply set up an urb to catch this, but it would
> have to be a special corner case for the mini 7, as José assures me that
> none of his tablets display similar behavior. Is this acceptable?

My tablets also send an ACK packet, but in my case it does not have any
visible effects. Maybe it is related to the DE environment used. I
tested it on elementary OS (Ubuntu) and Fedora 36, in both cases the
ACK is ignored... But catching it is fine, we can include the code you
suggest.

> José already had a look at some firmware device descriptor string that
> reports the number of buttons and what not, but as far as I know, it
> doesn't say anything about ack packets (right José? Does it say
> anything about touch strips or similar?).

In the devices I tested, the ACK packet is always present, so it should
be fine to catch it. I'll test your patch in all the devices I own to
be safe.

Best wishes,
Jose

> Everything said, I think this can be closed
> https://patchwork.kernel.org/project/linux-input/patch/b401e453-9c66-15e3-1a1d-21f33b7a64e8@xxxxxxxxx/
>
> Also I made this patch, which is very trivial and simplifies the hot path
> https://patchwork.kernel.org/project/linux-input/patch/17153eb3-0eb9-cc05-4b65-9c0f4e8d3c90@xxxxxxxxx/
>
> Thanks for your work on the linux input subsystem!
>
>
> Kind Regards
> Stefan Berzl
>
>
> PS: notice how I put the right CCs and stuff :)