Stylus not working on Thinkpad X200 Tablet

Hi, after not using it for a while I did a fresh install on my X200 Tablet. After dual booting pop os and debian the last time, I chose Fedora Immutable Sway this time. I hope the reason I am not posting on a Fedora Immutable specific forum will become apparent. So after the install and some initial configuration went really smoothly I noticed the stylus does not work. It does not list in either swaymsg -t get_inputs or libinput list-devices. I am happy to provide my output of any such commands if it helps. However, here is what I tried so far:

  1. After finding this issue with lightdm Missing some input devices in wayland session · Issue #63 · ubuntu/lightdm · GitHub , I chose to eliminate this as a cause by installing Fedora Workstation 43 instead. And there I have the same Problem of the stylus not working (edit: unless it does, see below).
  2. With the same Workstation install, I installed xfce to see if the problem has to do with wayland. Under xfce the stylus is also not recognized.
  3. I wanted to downgrade to see if earlier versions of Fedora don’t have the problem. I did get to try it under sway immutable with Fedora 42 (instead of 43) where the stylus also did not work. I could not downgrade that install to something earlier than 42, but that’s a different problem for a different thread I suppose.
  4. I did boot a pop os live usb stick. Here the stylus directly worked!

Sorry if that was messy. But I am hoping that someone might have an idea how I could get the stylus to work. I did use my search engine a bunch, where one can find a lot of issues with styluses (never precisely the x200 tablet though) but the best result was that lightdm issue above.

I’m happy for any help as I would be really happy to have fedora on that machine :slight_smile:

Edit: I’ll add debugging/output here instead of in additional posts/replies.

I just booted the Fedora 43 Workstation again and the stylus works there on default gnome wayland as well as on xfce. On the one hand that’s confusing to me but then again it’s a good thing I guess? I’ll just suppose I wasn’t to mindful the first time around until it stops working again. Anyways, here is the output of libinput list-devices in gnome:

libinput list-devices with working stylus on Fedora 43 Workstation
Device:                  Power Button
Kernel:                  /dev/input/event2
Id:                      host:0000:0001
Group:                   1
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Video Bus
Kernel:                  /dev/input/event5
Id:                      host:0000:0006
Group:                   2
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Lid Switch
Kernel:                  /dev/input/event0
Id:                      host:0000:0005
Group:                   3
Seat:                    seat0, default
Capabilities:            switch
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Sleep Button
Kernel:                  /dev/input/event1
Id:                      host:0000:0003
Group:                   4
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  AT Translated Set 2 keyboard
Kernel:                  /dev/input/event3
Id:                      serial:0001:0001
Group:                   5
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  TPPS/2 IBM TrackPoint
Kernel:                  /dev/input/event4
Id:                      serial:0002:000a
Group:                   6
Seat:                    seat0, default
Capabilities:            pointer 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             disabled
Nat.scrolling:           disabled
Middle emulation:        disabled
Calibration:             n/a
Scroll methods:          *button
Scroll button:           BTN_MIDDLE
Scroll button lock:      disabled
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          flat *adaptive custom
Rotation:                n/a
Area rectangle:          n/a

Device:                  ThinkPad Extra Buttons
Kernel:                  /dev/input/event6
Id:                      host:17aa:5054
Group:                   7
Seat:                    seat0, default
Capabilities:            keyboard switch
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Wacom Serial Penabled 1FG Touchscreen Finger
Kernel:                  /dev/input/event9
Id:                      <unknown>:056a:0093
Group:                   8
Seat:                    seat0, default
Size:                    263x165mm
Capabilities:            touch 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             identity matrix
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Wacom Serial Penabled 1FG Touchscreen Pen
Kernel:                  /dev/input/event8
Id:                      <unknown>:056a:0093
Group:                   8
Seat:                    seat0, default
Size:                    263x165mm
Capabilities:            tablet 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             identity matrix
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          none
Rotation:                n/a
Area rectangle:          n/a

I also checked sway again on Fedora 43 sway immutable. Here the stylus does not work. Here is the output of libinput list-devices:

libinput list-devices with non-functioning stylus on Fedora 43 Sway Immutable
Device:                  Power Button
Kernel:                  /dev/input/event2
Id:                      host:0000:0001
Group:                   1
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Video Bus
Kernel:                  /dev/input/event6
Id:                      host:0000:0006
Group:                   2
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Lid Switch
Kernel:                  /dev/input/event0
Id:                      host:0000:0005
Group:                   3
Seat:                    seat0, default
Capabilities:            switch
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  Sleep Button
Kernel:                  /dev/input/event1
Id:                      host:0000:0003
Group:                   4
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  AT Translated Set 2 keyboard
Kernel:                  /dev/input/event3
Id:                      serial:0001:0001
Group:                   5
Seat:                    seat0, default
Capabilities:            keyboard 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

Device:                  TPPS/2 IBM TrackPoint
Kernel:                  /dev/input/event4
Id:                      serial:0002:000a
Group:                   6
Seat:                    seat0, default
Capabilities:            pointer 
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             disabled
Nat.scrolling:           disabled
Middle emulation:        disabled
Calibration:             n/a
Scroll methods:          *button
Scroll button:           BTN_MIDDLE
Scroll button lock:      disabled
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          flat *adaptive custom
Rotation:                n/a
Area rectangle:          n/a

Device:                  ThinkPad Extra Buttons
Kernel:                  /dev/input/event5
Id:                      host:17aa:5054
Group:                   7
Seat:                    seat0, default
Capabilities:            keyboard switch
Tap-to-click:            n/a
Tap-and-drag:            n/a
Tap button map:          n/a
Tap drag lock:           n/a
Left-handed:             n/a
Nat.scrolling:           n/a
Middle emulation:        n/a
Calibration:             n/a
Scroll methods:          none
Scroll button:           n/a
Scroll button lock:      n/a
Click methods:           none
Clickfinger button map:  n/a
Disable-w-typing:        n/a
Disable-w-trackpointing: n/a
Accel profiles:          n/a
Rotation:                0.0
Area rectangle:          n/a

and here is the output of swaymsg -t get_inputs

swaymsg -t get_inputs with non functioning stylus on Fedora 43 Sway Immutable

[
{
“identifier”: “6058:20564:ThinkPad_Extra_Buttons”,
“name”: “ThinkPad Extra Buttons”,
“type”: “switch”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 6058,
“product”: 20564
},
{
“identifier”: “6058:20564:ThinkPad_Extra_Buttons”,
“name”: “ThinkPad Extra Buttons”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“EurKEY (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “EurKEY (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 6058,
“product”: 20564
},
{
“identifier”: “2:10:TPPS/2_IBM_TrackPoint”,
“name”: “TPPS/2 IBM TrackPoint”,
“type”: “pointer”,
“scroll_factor”: 1.0,
“libinput”: {
“send_events”: “enabled”,
“accel_speed”: 0.0,
“accel_profile”: “adaptive”,
“natural_scroll”: “disabled”,
“left_handed”: “disabled”,
“middle_emulation”: “disabled”,
“scroll_method”: “on_button_down”,
“scroll_button”: 274,
“scroll_button_lock”: “disabled”
},
“vendor”: 2,
“product”: 10
},
{
“identifier”: “1:1:AT_Translated_Set_2_keyboard”,
“name”: “AT Translated Set 2 keyboard”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“EurKEY (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “EurKEY (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 1,
“product”: 1
},
{
“identifier”: “0:3:Sleep_Button”,
“name”: “Sleep Button”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“EurKEY (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “EurKEY (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 3
},
{
“identifier”: “0:5:Lid_Switch”,
“name”: “Lid Switch”,
“type”: “switch”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 5
},
{
“identifier”: “0:6:Video_Bus”,
“name”: “Video Bus”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“EurKEY (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “EurKEY (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 6
},
{
“identifier”: “0:1:Power_Button”,
“name”: “Power Button”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“EurKEY (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “EurKEY (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 1
}
]

I installed sway on the workstation install, where the stylus continued to work and ran swaymsg -t get_inputs

swaymsg -t get_inputs with working stylus on Fedora 43 Workstation

[
{
“identifier”: “1386:147:Wacom_Serial_Penabled_1FG_Touchscreen_Finger”,
“name”: “Wacom Serial Penabled 1FG Touchscreen Finger”,
“type”: “touch”,
“libinput”: {
“send_events”: “enabled”,
“calibration_matrix”: [
1.0,
0.0,
0.0,
0.0,
1.0,
0.0
]
},
“vendor”: 1386,
“product”: 147
},
{
“identifier”: “1386:147:Wacom_Serial_Penabled_1FG_Touchscreen_Pen”,
“name”: “Wacom Serial Penabled 1FG Touchscreen Pen”,
“type”: “tablet_tool”,
“libinput”: {
“send_events”: “enabled”,
“accel_speed”: 0.0,
“accel_profile”: “none”,
“calibration_matrix”: [
1.0,
0.0,
0.0,
0.0,
1.0,
0.0
]
},
“vendor”: 1386,
“product”: 147
},
{
“identifier”: “6058:20564:ThinkPad_Extra_Buttons”,
“name”: “ThinkPad Extra Buttons”,
“type”: “switch”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 6058,
“product”: 20564
},
{
“identifier”: “6058:20564:ThinkPad_Extra_Buttons”,
“name”: “ThinkPad Extra Buttons”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“English (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “English (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 6058,
“product”: 20564
},
{
“identifier”: “2:10:TPPS/2_IBM_TrackPoint”,
“name”: “TPPS/2 IBM TrackPoint”,
“type”: “pointer”,
“scroll_factor”: 1.0,
“libinput”: {
“send_events”: “enabled”,
“accel_speed”: 0.0,
“accel_profile”: “adaptive”,
“natural_scroll”: “disabled”,
“left_handed”: “disabled”,
“middle_emulation”: “disabled”,
“scroll_method”: “on_button_down”,
“scroll_button”: 274,
“scroll_button_lock”: “disabled”
},
“vendor”: 2,
“product”: 10
},
{
“identifier”: “1:1:AT_Translated_Set_2_keyboard”,
“name”: “AT Translated Set 2 keyboard”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“English (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “English (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 1,
“product”: 1
},
{
“identifier”: “0:3:Sleep_Button”,
“name”: “Sleep Button”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“English (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “English (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 3
},
{
“identifier”: “0:5:Lid_Switch”,
“name”: “Lid Switch”,
“type”: “switch”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 5
},
{
“identifier”: “0:6:Video_Bus”,
“name”: “Video Bus”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“English (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “English (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 6
},
{
“identifier”: “0:1:Power_Button”,
“name”: “Power Button”,
“type”: “keyboard”,
“repeat_delay”: 600,
“repeat_rate”: 25,
“xkb_layout_names”: [
“English (US)”
],
“xkb_active_layout_index”: 0,
“xkb_active_layout_name”: “English (US)”,
“libinput”: {
“send_events”: “enabled”
},
“vendor”: 0,
“product”: 1
}
]

I’d start by comparing the output of that command on working vs non-working machines, if pop os uses libinput.

So it turns out Fedora 43 Workstation does work, so I think I’ll leave pop os out of the equation. I updated the original post to contain the output of libinput list-devices. Now that it starts to look like an issue with the Immutable Sway spin, I wonder if I should take this to another forum.

Sway input man page tells you how to configure input devices with the sway configuration file.

If you have Fedora 43 journals for working and broken cases you might find useful details by comparing their entries associated with your device.

The way I understand that man page is it assumed that the device I want to configure shows up under swaymsg -t get_inputs, right? The problem is it doesn’t show up there, so I’m not sure what exactly I should write into my configuration file to try to get the stylus to work.

Here is another datapoint: I installed sway on the workstation install and then could still use the stylus. I will add the output of swaymsg -t get_inputs to the original post.

Interesting. Say you reboot and then log into sway without logging into Gnome first. Is the stylus device there?

If no: Gnome does something on start up

If yes: Some service or config is different between Gnome non-immutable (mutable?) and sway immutable

Have you tried sway standard spin (not immutable)?

“libwacom” is a package that might make a difference. It contains “libwacom-list-local-devices”. But maybe the difference is really between standard and immutable.

Yep, just tried that and I can still control the cursor using the stylus.

I had not tried that before, but I did just now. I installed sway mutable (:slight_smile:) to another disk. I could not use stylus on the live system and on the installed system I could also not use it.

On the installed sway mutable libwacom was already installed.

Output of libinput list-devices and swaymsg -t get_inputs has not changed as far as I can see and does still not list the stylus device.

It seems gnome has some special sauce that enables the Wacom stylus. That should leave traces in the journal.

Does the stylus work in UEFI/BIOS? Some UEFI/BIOS’s allow you to select a pen protocol. Options could include:

  • MPP (Microsoft Pen Protocol) — Developed for Windows
  • USI (Universal Stylus Initiative) — Developed for ChromeOS
  • AES (Wacom Active ES) — Developed for Windows

There was some work to support AES in Gnome: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1017.

Some Wacom pens have a switch to choose a protocol.
Quoting https://knowledgebase.frame.work/en_us/stylus-setup-and-troubleshooting-on-linux-B1J5djrSbx

GNOME provides built-in support for stylus input through the Wacom Tablet or Graphic Tablets settings, which works with USI and MPP styluses.

Have you used journalctl to search for entries for wacom or stylus?