jlam55555 / veikk-linux-driver

Linux driver for VEIKK-brand digitizers
139 stars 33 forks source link

Bad mapping with A50 #23

Closed KibaGasteiz closed 3 years ago

KibaGasteiz commented 4 years ago

It doesn't matter what screen resolution is used (1080p,720p or SVGA), the device only lets me to move at the top left part of the screen, i can go as down as to the middle of the screen, and as right as 2/3 of the screen (more or less).

jlam55555 commented 4 years ago

The A50 is working perfectly fine for me, so here are two things that might help get started:

KibaGasteiz commented 4 years ago

When running 'sudo evtest' with the mouse (Logitech G502 Hero) i don't get those values, i just get this:

Event: time 1582455858.445786, type 2 (EV_REL), code 1 (REL_Y), value -1 Event: time 1582455858.445786, -------------- SYN_REPORT ------------ Event: time 1582455858.446783, type 2 (EV_REL), code 0 (REL_X), value -1 Event: time 1582455858.446783, -------------- SYN_REPORT ------------ Event: time 1582455858.456783, type 2 (EV_REL), code 1 (REL_Y), value -1 Event: time 1582455858.456783, -------------- SYN_REPORT ------------ Event: time 1582455858.477784, type 2 (EV_REL), code 1 (REL_Y), value -1 Event: time 1582455858.477784, -------------- SYN_REPORT ------------ Event: time 1582455858.494787, type 2 (EV_REL), code 1 (REL_Y), value -1 Event: time 1582455858.494787, -------------- SYN_REPORT ------------ Event: time 1582455858.511782, type 2 (EV_REL), code 1 (REL_Y), value -1 Event: time 1582455858.511782, -------------- SYN_REPORT ------------ Event: time 1582455858.514784, type 2 (EV_REL), code 0 (REL_X), value -1 Event: time 1582455858.514784, -------------- SYN_REPORT ------------ Event: time 1582455858.532781, type 2 (EV_REL), code 1 (REL_Y), value -1

With the table i got this values at the bottom right part of the device:

Event: time 1582456059.519189, type 3 (EV_ABS), code 0 (ABS_X), value 25131 Event: time 1582456059.519189, type 3 (EV_ABS), code 1 (ABS_Y), value 15222

Can't install Veikk Config GUI from the AUR:

Construyendo input-veikk-config... ==> Creando el paquete: input-veikk-config 1.1-1 (dom 23 feb 2020 12:09:26) ==> Comprobando dependencias mientras se ejecuta... ==> Comprobando dependencias mientras se compila... ==> Recibiendo las fuentes... -> README ha sido encontrado -> Descargando input-veikk-config.sh... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 Not Found ==> ERROR: Hubo fallos durante la descarga de https://raw.githubusercontent.com/jlam55555/veikk-s640-driver/master/config.sh Cancelando... Failed to build input-veikk-config

Maybe is something that @artixnous should update?

jlam55555 commented 4 years ago

Sorry, I meant to say tablet cursor, not mouse. As a quick fix, you can try setting .x_max = 25131, .y_max=15222 in veikk_device_info_0x0003 in veikk_vdev.c.

This roughly seems to match @lenonk's usbhid-dump, which states the following maximum values:

0x27, 0x38, 0x63, 0x00, 0x00,  //       Logical Maximum (25399)
0x27, 0x88, 0x3B, 0x00, 0x00,  //       Logical Maximum (15239)

Interestingly, however, I get a different value than he does: for the A50 what I get is:

001:008:002:DESCRIPTOR         1582473461.015513
 06 0A FF 09 01 A1 01 85 09 09 02 75 08 95 08 15
 00 26 FF 00 81 02 09 03 75 08 95 08 15 00 26 FF
 00 91 02 C0

001:008:001:DESCRIPTOR         1582473461.015703
 05 01 09 06 A1 01 85 03 05 07 19 E0 29 E7 15 00
 25 01 75 01 95 08 81 02 05 07 19 00 29 FF 26 FF
 00 75 08 95 06 81 00 C0

001:008:000:DESCRIPTOR         1582473461.016133
 05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01
 29 03 15 00 25 01 95 03 75 01 81 02 95 05 81 01
 05 01 09 30 09 31 26 FF 7F 95 02 75 10 81 02 05
 0D 09 30 26 FF 1F 95 01 75 10 81 02 C0 C0 05 0D
 09 02 A1 01 85 02 09 20 A1 00 09 42 09 44 09 45
 15 00 25 01 75 01 95 03 81 02 95 02 81 03 09 32
 95 01 81 02 95 02 81 03 75 10 95 01 35 00 A4 05
 01 09 30 65 13 55 0D 46 34 03 27 70 C6 00 00 81
 02 09 31 46 4D 04 27 10 77 00 00 81 02 B4 09 30
 45 00 26 FF 1F 81 02 C0 C0

This is giving me headaches because it seems to be using input report ID=2 without the driver plugged in (using the usbhid module), and input report ID=1 with the driver installed, and these have different maximum X and Y values.

Do you mind posting the output of usbhid-dump on your system? I'm assuming yours will match lenon's. I'll see if I can ask VEIKK about this discrepancy.


Also, the config tool AUR is outdated as you've realized. Install it from the GitHub for now; if I have time I'll make a new AUR package.

KibaGasteiz commented 4 years ago

Sorry, i haven't got much time, this is what i get:

[arch@arch-pc ~]$ sudo usbhid-dump -d 2feb
001:005:002:DESCRIPTOR         1586350806.503802
 06 0A FF 09 01 A1 01 85 09 09 02 75 08 95 08 15
 00 26 FF 00 81 02 09 03 75 08 95 08 15 00 26 FF
 00 91 02 C0

001:005:001:DESCRIPTOR         1586350806.504166
 05 0D 09 01 A1 01 85 02 09 20 A1 00 09 42 09 44
 09 45 09 3C 15 00 25 01 75 01 95 04 81 02 75 01
 95 02 81 01 09 32 75 01 95 01 81 02 81 01 75 10
 95 01 35 00 A4 05 01 09 30 65 13 55 0D 46 34 03
 27 38 63 00 00 81 02 09 31 46 4D 04 27 88 3B 00
 00 81 02 B4 09 30 45 00 26 FF 1F 81 02 C0 C0 05
 01 09 06 A1 01 85 03 05 07 19 E0 29 E7 15 00 25
 01 75 01 95 08 81 02 05 07 19 00 29 FF 26 FF 00
 75 08 95 06 81 00 C0

001:005:000:DESCRIPTOR         1586350806.504608
 05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01
 29 03 15 00 25 01 95 03 75 01 81 02 95 05 81 01
 05 01 09 30 09 31 26 FF 7F 95 02 75 10 81 02 05
 0D 09 30 26 FF 1F 95 01 75 10 81 02 C0 C0

I tried this:

setting .x_max = 25131, .y_max=15222 in veikk_device_info_0x0003 in veikk_vdev.c

But still don't work, i edited the /usr/src/input-veikk-r69.7ccdfb1/veikk_vdev.c file, is that ok?

KibaGasteiz commented 4 years ago

Is there any progress on this? I don't know how can i help.

kprasadvnsi commented 4 years ago

I am having exactly the same issue with my A50 tablet.

kprasadvnsi commented 4 years ago

It looks like a kernel issue. My problem is fixed in Kernel 5.7.9 I am on Fedora 32

KibaGasteiz commented 4 years ago

It looks like a kernel issue. My problem is fixed in Kernel 5.7.9 I am on Fedora 32

Using 5.7.10 on Arch here and still the same issue.

jlam55555 commented 4 years ago

@KibaGasteiz @kprasadvnsi I'm sorry to only return to this issue so late. I obtained an A50 when I posted my previous comment but only got around to testing recently (see all the v3-alpha activity). The VEIKK A50's logical maximum should be 32768 for both the X and Y axes -- does setting x_max and y_max to that value fix this? (This is the default on v3-alpha now.)

After a rough measurement, I believe that 25399 and 15239 refer to the physical dimensions of the VEIKK A50 (i.e., the drawing pad is 25.4 x 15.24cm)

KibaGasteiz commented 4 years ago

struct veikk_device_info veikk_device_info_0x0003 = { .name = "VEIKK A50 Pen", .prod_id = 0x0003, .x_max = 32768, .y_max = 32768, .pressure_max = 8192, .setup_and_register_input_devs = veikk_s640_setup_and_register_input_devs, .alloc_input_devs = veikk_s640_alloc_input_devs, .handle_raw_data = veikk_s640_handle_raw_data, .handle_modparm_change = veikk_s640_handle_modparm_change

This is what i got, since i edited the values months ago, but it isn't fixed, tried to use "modprobe veikk" but still not working, it's working with your A50?

jlam55555 commented 4 years ago

@KibaGasteiz Yeah. This part from an earlier post is concerning:

With the table i got this values at the bottom right part of the device:

Event: time 1582456059.519189, type 3 (EV_ABS), code 0 (ABS_X), value 25131 Event: time 1582456059.519189, type 3 (EV_ABS), code 1 (ABS_Y), value 15222

which means that the device is somehow limited to sending events up to those values rather than the 32768 x 32768.

Two things to check come to mind:

Input driver version is 1.0.1
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab83
Input device name: "AT Translated Set 2 keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    ...
kprasadvnsi commented 4 years ago

It looks like a kernel issue. My problem is fixed in Kernel 5.7.9 I am on Fedora 32

I am on Kernel 5.7.12 now and it still works. so the problem is gone since version 5.7.9. So if anybody wanna suggest some test then I would do it.

KibaGasteiz commented 4 years ago

Is this caused by a screen mapping? What's in /sys/module/veikk/parameters/screen_map and /sys/module/veikk/parameters/screen_size?

It's only a "0"

Did you recompile the driver after changing it to 32768? Check the output of evtest on the VEIKK device, and paste the content that looks like the following after selecting the VEIKK device (the following is for my keyboard, not a VEIKK device):

I installed the AUR version, but never tried to compile myself, i will try now, but first i will paste the evtest results:

Event: time 1597182449.119658, -------------- SYN_REPORT ------------ Event: time 1597182449.167657, type 3 (EV_ABS), code 0 (ABS_X), value 25389 Event: time 1597182449.167657, type 3 (EV_ABS), code 1 (ABS_Y), value 15237 Event: time 1597182449.167657, -------------- SYN_REPORT ------------ Event: time 1597182449.179655, type 3 (EV_ABS), code 1 (ABS_Y), value 15227 Event: time 1597182449.179655, -------------- SYN_REPORT ------------ Event: time 1597182449.185625, type 3 (EV_ABS), code 0 (ABS_X), value 25385 Event: time 1597182449.185625, -------------- SYN_REPORT ------------ Event: time 1597182449.191647, type 3 (EV_ABS), code 0 (ABS_X), value 25383 Event: time 1597182449.191647, type 3 (EV_ABS), code 1 (ABS_Y), value 15220 Event: time 1597182449.191647, -------------- SYN_REPORT ------------ Event: time 1597182449.197629, type 3 (EV_ABS), code 1 (ABS_Y), value 15225 Event: time 1597182449.197629, -------------- SYN_REPORT ------------ Event: time 1597182449.221665, type 3 (EV_ABS), code 0 (ABS_X), value 25391 Event: time 1597182449.221665, type 3 (EV_ABS), code 1 (ABS_Y), value 15238 Event: time 1597182449.221665, -------------- SYN_REPORT ------------ Event: time 1597182449.233623, type 3 (EV_ABS), code 1 (ABS_Y), value 15231 Event: time 1597182449.233623, -------------- SYN_REPORT ------------ Event: time 1597182449.239624, type 3 (EV_ABS), code 1 (ABS_Y), value 15236 Event: time 1597182449.239624, -------------- SYN_REPORT ------------ Event: time 1597182449.245623, type 3 (EV_ABS), code 1 (ABS_Y), value 15231 Event: time 1597182449.245623, -------------- SYN_REPORT ------------ Event: time 1597182449.251620, type 3 (EV_ABS), code 0 (ABS_X), value 25388 Event: time 1597182449.251620, type 3 (EV_ABS), code 1 (ABS_Y), value 15235 Event: time 1597182449.251620, -------------- SYN_REPORT ------------

KibaGasteiz commented 4 years ago

Installed 2.0 and v3alpha and they won't work at all. Should just "make" and "sudo make all install clean" just work? I see how the files in "sys/module/veikk" are created, and the parameter files still have "0" in them except for pressure_map that has "6553600". Can't find the "veikk_vdev.c" file inside "/usr/src/input-veikk...", so i assume that's only for the AUR version, the "veikk_vdev.c" file in the downloaded files where i compile have the corret value in them "32768 x 32768"

jlam55555 commented 4 years ago

@KibaGasteiz v3-alpha won't work with the AUR package yet (since the AUR PKGBUILD references the v2 files, and the file structure has been simplified from v2 to v3). I wasn't really planning to fix this until v3 became stable.

v2 should work, however. (make and sudo make all install) should work. If it's already installed, you may have to do a sudo make uninstall before running the sudo make install.

Also, when I meant the evtest results, this time I meant the part that comes before the event reports, e.g., the section that looks something like the following (again, this is for my keyboard, but just to give an idea). I'm wondering if the ABS_X and ABS_Y bounds are misconfigured, and you should be able to tell in this output.

Select the device event number [0-22]: 5
Input driver version is 1.0.1
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab83
Input device name: "AT Translated Set 2 keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    ...
    Event code 464 (KEY_FN)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 1
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
KibaGasteiz commented 4 years ago

v3-alpha won't work with the AUR package yet (since the AUR PKGBUILD references the v2 files, and the file structure has been simplified from v2 to v3). I wasn't really planning to fix this until v3 became stable.

I already uninstalled the AUR version, i was just trying compiling v2 and v3 and both of them didn't work.

I'm wondering if the ABS_X and ABS_Y bounds are misconfigured, and you should be able to tell in this output.

I have 3 different entries on evtest. Pasting the three here:

Select the device event number [0-30]: 28 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x2feb product 0x3 version 0x100 Input device name: "VEIKK A50 Pen" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 330 (BTN_TOUCH) Event code 331 (BTN_STYLUS) Event code 332 (BTN_STYLUS2) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 0 Min 0 Max 32768 Resolution 1 Event code 1 (ABS_Y) Value 0 Min 0 Max 32768 Resolution 1 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 8192 Properties: Property type 0 (INPUT_PROP_POINTER) Property type 1 (INPUT_PROP_DIRECT)

Select the device event number [0-30]: 29 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x2feb product 0x3 version 0x100 Input device name: "VEIKK A50 Pen" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 330 (BTN_TOUCH) Event code 331 (BTN_STYLUS) Event code 332 (BTN_STYLUS2) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 0 Min 0 Max 32768 Resolution 1 Event code 1 (ABS_Y) Value 0 Min 0 Max 32768 Resolution 1 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 8192 Properties: Property type 0 (INPUT_PROP_POINTER) Property type 1 (INPUT_PROP_DIRECT)

Select the device event number [0-30]: 30 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x2feb product 0x3 version 0x100 Input device name: "VEIKK A50 Pen" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 330 (BTN_TOUCH) Event code 331 (BTN_STYLUS) Event code 332 (BTN_STYLUS2) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 0 Min 0 Max 32768 Resolution 1 Event code 1 (ABS_Y) Value 0 Min 0 Max 32768 Resolution 1 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 8192 Properties: Property type 0 (INPUT_PROP_POINTER) Property type 1 (INPUT_PROP_DIRECT)

jlam55555 commented 4 years ago

Wondering what "both of them didn't work" means. That output looks correct, so this is confusing.

Maybe I'm going in circles now, but now I think it might have to do with the fact that our HID reports are different. Maybe we have different editions of the A50 that have slightly different internals and is reporting differently.

Just to cover all the bases, when you changed the x_max and y_max to 25399 and 15239, did you make sure to recompile the driver afterwards? I'm reading your comment from way back and it's not clear from it whether you did. See if you can change the values in the driver back to 25399 and 15239, recompile the driver, and then repaste the new evtest code just like you did in your last comment. (We should be seeing the "Max" values change accordingly.))

KibaGasteiz commented 4 years ago

Just uninstalled again: https://i.imgur.com/XcCDLFR.png Then make sure that "changed the x_max and y_max to 25399 and 15239": https://i.imgur.com/kxx1cAg.png And compiling again: https://i.imgur.com/Atp3tvb.png Result: Not working at all. (At least using the AUR version let me move in a fraction of the screen).

KibaGasteiz commented 3 years ago

I don't know what happened, but it's working fine now, may be some update on my OS? You can close the issue if you want, or ask me for tests so we can understand what was happening. :)

kprasadvnsi commented 3 years ago

I don't know what happened, but it's working fine now, may be some update on my OS? You can close the issue if you want, or ask me for tests so we can understand what was happening. :)

the same thing happened to me as well. I have tried the A50 tablet on Ubuntu 20.04 without this driver and it maps my tablet correctly and the pressure sensitivity works out of box.

KibaGasteiz commented 3 years ago

So it has been fixed on the kernel i assume. Closing this issue :)