linuxwacom / xf86-input-wacom

X.Org driver for Wacom devices
356 stars 45 forks source link

CTH-470 Touch works, stylus does not #318

Closed Quaxo76 closed 5 months ago

Quaxo76 commented 11 months ago

I just bought a CTH-470 to replace my old Intuos. The 470 is a Pen + Touch device. The touch panel works as intended. But the stylus does nothing at all. The "Wacom tablet finder" does correctly detect it as "Wacom Bamboo Pen & Touch", with all the expected devices - pad, pen stylus, pen eraser, finger touch. On the graphic tablet's settings page, I can see no obvious way to enable or disable the stylus. On the "touch" tab there is a button to enable or disable touch, and this works - if I uncheck it, the touch is disabled, but then the tablet does nothing at all.

Output of xinput:

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G RF Keyboard & Mouse     id=10   [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G RF Keyboard & Mouse Consumer Control    id=11   [slave  pointer  (2)]
⎜   ↳ Wacom Bamboo 16FG 4x5 Pad pad             id=17   [slave  pointer  (2)]
⎜   ↳ Wacom Bamboo 16FG 4x5 Pen stylus          id=18   [slave  pointer  (2)]
⎜   ↳ Wacom Bamboo 16FG 4x5 Pen eraser          id=19   [slave  pointer  (2)]
⎜   ↳ Wacom Bamboo 16FG 4x5 Finger touch        id=20   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G RF Keyboard & Mouse     id=9    [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G RF Keyboard & Mouse System Control      id=12   [slave  keyboard (3)]
    ↳ NOVATEK USB Keyboard                      id=13   [slave  keyboard (3)]
    ↳ NOVATEK USB Keyboard System Control       id=14   [slave  keyboard (3)]
    ↳ NOVATEK USB Keyboard Consumer Control     id=15   [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G RF Keyboard & Mouse Consumer Control    id=16   [slave  keyboard (3)]

Output of libwacom-list-local-devices:

devices:
- name: 'Wacom Bamboo Capture'
  bus: 'usb'
  vid: '0x056a'
  pid: '0x00de'
  nodes: 
  - /dev/input/event29
  - /dev/input/event28
  - /dev/input/event27

I'm running Kubuntu 22.04 LTS.

jigpu commented 10 months ago
  1. Please run sudo apt install libinput-tools to install a debug tool
  2. Run sudo libinput record, type in the device number for the Pen, and press Enter
  3. You should see a bunch of output scroll past and then pause
  4. Touch the pen to the tablet. Is even more output printed out when you do this?
  5. Press CTRL+C to quit the recording

If there was additional output at step 4, please copy/paste all of the output into a reply for review.

If there was no additional output at step 4, please try the following:

  1. Run ls /sys/bus/hid/drivers/wacom/0003\:056A\:00DE.*/hidraw
  2. A device name like hidraw3 (or some other number) should be printed out
  3. Run sudo hexdump -C /dev/<name> (replacing with the device name found previously)
  4. Touch the pen to the tablet. Is any output printed out?
  5. Press CTRL+C to stop the test.

If there was output at step 4, please let us know.

If there was no output on step 4, it may be a hardware problem or hardware compatibility issue. The CTH-470 is quite an old device, so I assume you bought it used? If so, did it come with a stylus and does the stylus look like the one in the image below? Bamboo tablets generally aren't compatible with pens from earlier or later generations, so it is important to make sure the one you are using is compatible.

image

Quaxo76 commented 10 months ago

Thank you for your reply. I tried method 1, and at first it looked like nothing was happening. Then I "fiddled" a bit with the pen, dragging it around a bit, pushing harder then softer and so on... and occasionally I would get a reading. I'm pasting the contents here, but now I'm suspecting a failing hardware or something like a broken/cold solder point or something. I'll try to find a Windows computer to test the tablet there.

EDIT: Yes, I bought it used and untested, but the pen looks exactly like the one in the photo (except that both tablet and pen are silver instead of black). And they both look absolutely fine, with no external signs of damage.

Recording to 'stdout'.
# libinput record
version: 1
ndevices: 1
libinput:
  version: "1.20.0"
  git: "unknown"
system:
os: "ubuntu:22.04"
kernel: "5.15.0-86-generic"
dmi: "dmi:bvnAmericanMegatrendsInc.:bvrF14:bd11/13/2021:br5.12:svnGigabyteTechnologyCo.,Ltd.:pnZ370HD3P:pvrDefaultstring:rvnGigabyteTechnologyCo.,Ltd.:rnZ370HD3P-CF:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:skuDefaultstring:"
devices:
- node: /dev/input/event26
  evdev:
    # Name: Wacom Bamboo 16FG 4x5 Pen
    # ID: bus 0x3 vendor 0x56a product 0xde version 0x110
    # Size in mm: 147x92
    # Supported Events:
    # Event type 0 (EV_SYN)
    # Event type 1 (EV_KEY)
    #   Event code 320 (BTN_TOOL_PEN)
    #   Event code 321 (BTN_TOOL_RUBBER)
    #   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         14720
    #       Fuzz            4
    #       Flat            0
    #       Resolution    100
    #   Event code 1 (ABS_Y)
    #       Value           0
    #       Min             0
    #       Max          9200
    #       Fuzz            4
    #       Flat            0
    #       Resolution    100
    #   Event code 24 (ABS_PRESSURE)
    #       Value           0
    #       Min             0
    #       Max          1023
    #       Fuzz            0
    #       Flat            0
    #       Resolution      0
    #   Event code 25 (ABS_DISTANCE)
    #       Value           0
    #       Min             0
    #       Max            31
    #       Fuzz            1
    #       Flat            0
    #       Resolution      0
    # Properties:
    #    Property 0 (INPUT_PROP_POINTER)
    name: "Wacom Bamboo 16FG 4x5 Pen"
    id: [3, 1386, 222, 272]
    codes:
      0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # EV_SYN
      1: [320, 321, 330, 331, 332] # EV_KEY
      3: [0, 1, 24, 25] # EV_ABS
    absinfo:
      0: [0, 14720, 4, 0, 100]
      1: [0, 9200, 4, 0, 100]
      24: [0, 1023, 0, 0, 0]
      25: [0, 31, 1, 0, 0]
    properties: [0]
  hid: [
    0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 
    0x29, 0x05, 0x15, 0x00, 0x25, 0x01, 0x95, 0x05, 0x75, 0x01, 0x81, 0x02, 0x95, 0x01, 0x75, 0x03, 
    0x81, 0x01, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x02, 
    0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0d, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0xa1, 0x00, 0x06, 0x00, 
    0xff, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x09, 0x81, 0x02, 0xc0, 0x09, 
    0x01, 0x85, 0x02, 0x95, 0x01, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x03, 0x95, 0x01, 0xb1, 0x02, 0x09, 
    0x01, 0x85, 0x04, 0x95, 0x01, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x05, 0x95, 0x01, 0xb1, 0x02, 0x09, 
    0x01, 0x85, 0x10, 0x95, 0x02, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x11, 0x95, 0x10, 0xb1, 0x02, 0x09, 
    0x01, 0x85, 0x13, 0x95, 0x01, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x20, 0x95, 0x01, 0xb1, 0x02, 0x09, 
    0x01, 0x85, 0x21, 0x95, 0x01, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x14, 0x95, 0x1f, 0xb1, 0x02, 0x09, 
    0x01, 0x85, 0x30, 0x95, 0x1f, 0xb1, 0x02, 0x09, 0x01, 0x85, 0x31, 0x95, 0x04, 0xb1, 0x1f, 0x85, 
    0xc0, 0x09, 0x00, 0x95, 0x09, 0x81, 0x02, 0xc0
  ]
  udev:
    properties:
    - ID_INPUT=1
    - ID_INPUT_HEIGHT_MM=92
    - ID_INPUT_TABLET=1
    - ID_INPUT_WIDTH_MM=147
    - LIBINPUT_DEVICE_GROUP=3/56a/de:usb-0000:00:14.0-12
  quirks:
  events:
  # Current time is 23:00:28
  # Current time is 23:01:06
  - evdev:
    - [  0,      0,   3,   0,   14720] # EV_ABS / ABS_X                 14720 (+14720)
    - [  0,      0,   3,   1,    9200] # EV_ABS / ABS_Y                  9200 (+9200)
    - [  0,      0,   3,  25,      27] # EV_ABS / ABS_DISTANCE             27 (+27)
    - [  0,      0,   1, 320,       1] # EV_KEY / BTN_TOOL_PEN              1
    - [  0,      0,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +0ms
  - evdev:
    - [  0,   7999,   1, 330,       1] # EV_KEY / BTN_TOUCH                 1
    - [  0,   7999,   3,  24,     509] # EV_ABS / ABS_PRESSURE            509 (+509)
    - [  0,   7999,   3,  25,      24] # EV_ABS / ABS_DISTANCE             24 (-3)
    - [  0,   7999,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +7ms
  - evdev:
    - [  0,  16010,   3,   1,    5092] # EV_ABS / ABS_Y                  5092 (-4108)
    - [  0,  16010,   3,  24,     496] # EV_ABS / ABS_PRESSURE            496 (-13)
    - [  0,  16010,   3,  25,      30] # EV_ABS / ABS_DISTANCE             30 (+6)
    - [  0,  16010,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +9ms
  - evdev:
    - [  0,  22000,   3,   1,    6153] # EV_ABS / ABS_Y                  6153 (+1061)
    - [  0,  22000,   3,  24,     484] # EV_ABS / ABS_PRESSURE            484 (-12)
    - [  0,  22000,   3,  25,      26] # EV_ABS / ABS_DISTANCE             26 (-4)
    - [  0,  22000,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +6ms
  - evdev:
    - [  0,  29999,   3,   0,   10446] # EV_ABS / ABS_X                 10446 (-4274)
    - [  0,  29999,   3,   1,    2948] # EV_ABS / ABS_Y                  2948 (-3205)
    - [  0,  29999,   3,  24,     480] # EV_ABS / ABS_PRESSURE            480 (-4)
    - [  0,  29999,   3,  25,      23] # EV_ABS / ABS_DISTANCE             23 (-3)
    - [  0,  29999,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +7ms
  - evdev:
    - [  0,  37999,   3,   0,    8344] # EV_ABS / ABS_X                  8344 (-2102)
    - [  0,  37999,   3,   1,     664] # EV_ABS / ABS_Y                   664 (-2284)
    - [  0,  37999,   3,  24,     470] # EV_ABS / ABS_PRESSURE            470 (-10)
    - [  0,  37999,   3,  25,      20] # EV_ABS / ABS_DISTANCE             20 (-3)
    - [  0,  37999,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0,  46004,   3,   0,    5884] # EV_ABS / ABS_X                  5884 (-2460)
    - [  0,  46004,   3,   1,       0] # EV_ABS / ABS_Y                     0 (-664)
    - [  0,  46004,   3,  24,     467] # EV_ABS / ABS_PRESSURE            467 (-3)
    - [  0,  46004,   3,  25,      19] # EV_ABS / ABS_DISTANCE             19 (-1)
    - [  0,  46004,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +9ms
  - evdev:
    - [  0,  51953,   3,   0,    2932] # EV_ABS / ABS_X                  2932 (-2952)
    - [  0,  51953,   3,  24,     471] # EV_ABS / ABS_PRESSURE            471 (+4)
    - [  0,  51953,   3,  25,      21] # EV_ABS / ABS_DISTANCE             21 (+2)
    - [  0,  51953,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +5ms
  - evdev:
    - [  0,  60046,   3,   0,     964] # EV_ABS / ABS_X                   964 (-1968)
    - [  0,  60046,   3,  24,     482] # EV_ABS / ABS_PRESSURE            482 (+11)
    - [  0,  60046,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +9ms
  - evdev:
    - [  0,  67998,   3,   0,       0] # EV_ABS / ABS_X                     0 (-964)
    - [  0,  67998,   3,  24,     496] # EV_ABS / ABS_PRESSURE            496 (+14)
    - [  0,  67998,   3,  25,      23] # EV_ABS / ABS_DISTANCE             23 (+2)
    - [  0,  67998,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +7ms
  - evdev:
    - [  0,  75997,   3,  24,     510] # EV_ABS / ABS_PRESSURE            510 (+14)
    - [  0,  75997,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0,  83996,   3,  24,     515] # EV_ABS / ABS_PRESSURE            515 (+5)
    - [  0,  83996,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0,  89997,   3,  24,     520] # EV_ABS / ABS_PRESSURE            520 (+5)
    - [  0,  89997,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +6ms
  - evdev:
    - [  0,  97967,   3,  24,     522] # EV_ABS / ABS_PRESSURE            522 (+2)
    - [  0,  97967,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0, 105979,   3,  24,     525] # EV_ABS / ABS_PRESSURE            525 (+3)
    - [  0, 105979,   3,  25,      26] # EV_ABS / ABS_DISTANCE             26 (+3)
    - [  0, 105979,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0, 112034,   3,  24,     528] # EV_ABS / ABS_PRESSURE            528 (+3)
    - [  0, 112034,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +7ms
  - evdev:
    - [  0, 120022,   3,  24,     530] # EV_ABS / ABS_PRESSURE            530 (+2)
    - [  0, 120022,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0, 128018,   1, 330,       0] # EV_KEY / BTN_TOUCH                 0
    - [  0, 128018,   3,  24,       0] # EV_ABS / ABS_PRESSURE              0 (-530)
    - [  0, 128018,   3,  25,      31] # EV_ABS / ABS_DISTANCE             31 (+5)
    - [  0, 128018,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  0, 166006,   3,  25,       0] # EV_ABS / ABS_DISTANCE              0 (-31)
    - [  0, 166006,   1, 320,       0] # EV_KEY / BTN_TOOL_PEN              0
    - [  0, 166006,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +38ms
  - evdev:
    - [  1, 103978,   3,   0,   14720] # EV_ABS / ABS_X                 14720 (+14720)
    - [  1, 103978,   3,   1,    9200] # EV_ABS / ABS_Y                  9200 (+9200)
    - [  1, 103978,   3,  25,      29] # EV_ABS / ABS_DISTANCE             29 (+29)
    - [  1, 103978,   1, 320,       1] # EV_KEY / BTN_TOOL_PEN              1
    - [  1, 103978,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +937ms
  - evdev:
    - [  1, 111988,   1, 330,       1] # EV_KEY / BTN_TOUCH                 1
    - [  1, 111988,   3,  24,     571] # EV_ABS / ABS_PRESSURE            571 (+571)
    - [  1, 111988,   3,  25,      28] # EV_ABS / ABS_DISTANCE             28 (-1)
    - [  1, 111988,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
  - evdev:
    - [  1, 119972,   3,  24,     570] # EV_ABS / ABS_PRESSURE            570 (-1)
    - [  1, 119972,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +8ms
whot commented 5 months ago

Apologies, this slipped through. So based on the kernel output above the pen does send events. But given that you said

Then I "fiddled" a bit with the pen, dragging it around a bit, pushing harder then softer and so on... and occasionally I would get a reading

This means the HW is broken. The events recorded here are the ones that come out of the kernel and the kernel does little but convert and forward them on (for extra piece of mind you can use hid-recorder which prints the events as they come in from the device with (virtually) no processing whatsoever. But that won't change the outcome much - if you don't get events here as soon as you touch the tablet you have a broken stylus or tablet device.