# Stylus Setup and Troubleshooting on Linux

> The Framework Laptop 12 supports stylus input on models equipped with a touchscreen This guide covers how to use and configure your stylus in GNOME KDE Plasma

Source: https://knowledgebase.frame.work/en_us/stylus-setup-and-troubleshooting-on-linux-B1J5djrSbx

Last updated: 2026-09-14T23:58:56.448Z

The Framework Laptop 12 supports stylus input on models equipped with a touchscreen. This guide covers how to use and configure your stylus in GNOME, KDE Plasma, and creative applications like [Krita](https://knowledgebase.frame.work/en_us/krita-wayland-HJAxmNhDMx).

## Supported Protocols

The touchscreen supports two stylus protocols:

*   **MPP (Microsoft Pen Protocol)** — Developed for Windows
*   **USI (Universal Stylus Initiative)** — Developed for ChromeOS

In practice, both protocols work on both operating systems. The Framework Stylus supports both protocols, so either can be selected in BIOS settings. The main difference is that USI supports battery level and firmware version reporting, while MPP relies on Bluetooth for this (which the Framework Stylus does not support).

The touchscreen and stylus do not require any special drivers on Linux—it is an I2C HID device handled by generic drivers.

## Using Your Stylus in GNOME

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

To access stylus settings, open:

Settings > Wacom Tablet (or Graphic Tablets)

From here you can configure button mappings, pressure sensitivity curves, and other stylus behaviors.

### Testing Stylus Pressure in GNOME

To verify your stylus is working correctly and pressure sensitivity is functioning:

1.  Open **Settings**
2.  Navigate to **Wacom Tablet**
3.  Click **Test Settings**

Draw on the test canvas and observe whether line thickness responds to pressure changes.

## Using Your Stylus in KDE Plasma

KDE Plasma provides stylus configuration through the Drawing Tablet settings module.

To access stylus settings, open:

Settings > Drawing Tablet

Here you can configure pressure curves, button actions, and tablet mapping.

### Testing Stylus Pressure in KDE Plasma

To verify your stylus is working correctly:

1.  Open **Settings**
2.  Navigate to **Drawing Tablet**
3.  Click **Test Tablet**

Use the test area to confirm pressure sensitivity and button functionality.

## Configuring Krita for Stylus Input

Krita is a popular open-source painting application that fully supports stylus pressure, tilt, and button input.

### Enabling Stylus Pressure

To enable proper pressure sensitivity in Krita, you need to enable the **Windows Ink** compatibility option. Despite the name, this setting is required for proper stylus support on Linux as well.

1.  Open **Configure Krita** (Settings > Configure Krita)
2.  Navigate to **Tablet settings**
3.  Enable **Windows Ink**
4.  Restart Krita for the changes to take effect

For more information, see the [**Krita documentation on tablet support**](https://docs.krita.org/en/contributors_manual/user_support.html#quick-solutions).

### Using the Krita Tablet Tester

Krita includes a built-in tablet tester that provides detailed information about your stylus input.

To open the tablet tester:

Configure Krita > Tablet settings > Open Tablet Tester

The tablet tester displays the following values:

Value

Description

`X, Y`

Absolute position of the stylus tip on the screen

`B`

Button state

`P`

Pressure level (0.00–1.00)

`TX, TY`

Tilt angle on the X and Y axes (−60° to +60°)

Use the tablet tester to verify that pressure and tilt are being detected correctly before you start drawing.

## Troubleshooting

### Touch Works But Stylus Doesn't Respond

If finger touch input is working correctly on your screen but the stylus isn't being detected at all, work through the following steps.

**1\. Check Stylus Battery**

Most active styluses require a battery (either AAAA, rechargeable, or button cell). If the battery is dead or depleted, the stylus will not register any input. Replace or recharge the battery and try again.

**2\. Verify Stylus Compatibility**

The Framework Laptop 12 touchscreen supports specific stylus protocols. Check that your stylus is compatible:

*   **USI (Universal Stylus Initiative)** styluses
*   **MPP (Microsoft Pen Protocol)** styluses

Standard capacitive styluses (passive/rubber tip) will not provide pen input—they will behave as finger touch only.

**3\. Pair USI Stylus (if applicable)**

Some USI styluses require pairing with the display before they will function. Check your stylus documentation for pairing instructions. Typically this involves holding a button on the stylus while touching it to the screen.

**4\. Check if the Digitizer is Detected**

The stylus digitizer is separate from the touchscreen. Verify it's being detected:

libinput list-devices | grep -A 5 -i stylus

If no stylus/pen device appears, the digitizer may not be enabled or recognized.

Also check for tablet devices:

libinput list-devices | grep -A 5 -i tablet

**5\. Check dmesg for Errors**

Look for digitizer or HID errors in the kernel log:

dmesg | grep -iE "(stylus|pen|digitizer|hid|wacom|goodix)"

Errors here may indicate a driver issue or hardware problem.

**6\. Verify Pen Input Events**

Run the debug tool and touch the stylus to the screen:

sudo libinput debug-events

You should see `TABLET_TOOL_PROXIMITY` events when the stylus approaches the screen. If you only see `TOUCH` events, the stylus is being detected as finger input (indicating an incompatible or passive stylus).

**7\. Check for Conflicting Drivers**

Multiple HID or input drivers can conflict, causing the digitizer to malfunction or not register stylus input. List loaded HID and input modules:

lsmod | grep -iE "(hid|goodix)"

Example output on a working system:

hid\_multitouch          32768  0
hid\_generic             16384  0
hid                    143360  3 hid\_multitouch,hid\_generic,usbhid

The key module is `hid_multitouch`—this handles both touch and USI/MPP stylus input for the touchscreen digitizer. If it's missing, stylus functionality will not work. Try loading it manually:

sudo modprobe hid\_multitouch

If `hid_generic` has claimed your digitizer instead of `hid_multitouch`, stylus input won't be detected. Check which driver is handling your touchscreen:

ls /sys/bus/hid/drivers/hid-multitouch/

You should see your touchscreen device listed there. If it appears under `/sys/bus/hid/drivers/hid-generic/` instead, the wrong driver has claimed the device. This can happen with older kernels that lack proper HID quirks for your touchscreen. Updating to a newer kernel often resolves the problem.

**8\. Try a Different Stylus**

If possible, test with a known-working USI or MPP stylus to rule out a defective stylus.

**Note:** If none of the above resolves the issue and your touchscreen model should support stylus input, you may need to update your kernel or contact Framework Support for further assistance.

### Stylus Requires Excessive Pressure to Register

If your stylus is detected and hover/tilt work correctly, but you need to press unusually hard before the screen registers contact, the pressure activation threshold may be too high. This can make normal writing difficult and may cause concern about damaging the display.

**1\. Capture Pressure Data**

Run the debug tool and touch the stylus to the screen with varying pressure levels:

sudo libinput debug-events --show-keycodes

Watch for `TABLET_TOOL_TIP` events when the stylus makes contact. Capture the output showing pressure values at light touch, moderate pressure, and hard press, then provide this data to Framework Support for analysis.

**2\. Test with a Different Stylus**

Before concluding the display is defective, test with a known-working USI or MPP stylus. The issue may be with the stylus pressure sensor rather than the display digitizer. Borrow one if possible, or purchase an inexpensive USI 2.0 pen for testing.

**3\. Check Pressure Curve Settings**

If the raw `libinput` data looks normal but applications still require excessive pressure, check the pressure curve settings in your desktop environment or application. In GNOME, open **Settings > Wacom Tablet** and adjust the pressure sensitivity curve. In Krita, check **Configure Krita > Tablet settings** for pressure curve adjustments.

**Note:** If the behavior is identical across multiple Linux distributions and persists after testing with a different stylus, contact Framework Support with your captured `libinput` output for further assistance.

### Diagnosing Stylus Issues with libinput

If your stylus is detected but isn't behaving as expected, you can use `libinput` to diagnose input events at the system level.

### Installing libinput Debug Tools

On Fedora:

sudo dnf install libinput-utils

On Ubuntu:

sudo apt install libinput-tools

### Running the Debug Tool

To monitor stylus events in real-time:

sudo libinput debug-events

Touch the stylus to the screen and press buttons to see the events being generated.

### Understanding libinput debug-events Output

The `libinput debug-events` output shows various event types. The reported data looks the same regardless of which protocol (MPP or USI) is selected, but depends on what the stylus itself reports. Below is example output showing typical stylus events:

**Stylus enters/exits detection range:**

event9   TABLET\_TOOL\_PROXIMITY   +267.547s   247.63\*/138.28\* tilt: 13.57\*/12.67\*  pressure: 0.00\* pen (0, id 0x4538) proximity-in
event9   TABLET\_TOOL\_PROXIMITY   +267.620s   248.27 /137.19  tilt: 12.87 /9.80    pressure: 0.00  pen (0, id 0x4538) proximity-out

**Axis data (position, tilt, pressure):**

                                            X/Y Position    X/Y Tilt (-60 to +60)  Pressure (0.00 to 1.00)
                                                 |                  |                       |
event9   TABLET\_TOOL\_AXIS   263   +35.807s   209.39\*/105.86\*  tilt: 6.43 /1.77     pressure: 0.00

**Stylus tip touches/leaves screen:**

event9   TABLET\_TOOL\_TIP   +329.857s   238.76\*/144.14\* tilt: 12.92 /10.49   pressure: 0.09\* down
event9   TABLET\_TOOL\_TIP   +330.011s   238.11\*/144.17\* tilt: 12.02\*/10.32\*  pressure: 0.00\* up

**Lower button (eraser) pressed/released:**

event9   TABLET\_TOOL\_PROXIMITY   +403.162s   240.76 /141.36  tilt: 50.05 /-1.43   pressure: 0.00  pen    (0, id 0x4538) proximity-out
event9   TABLET\_TOOL\_PROXIMITY   +403.165s   240.79\*/141.21\* tilt: 49.95\*/-1.30\*  pressure: 0.00\* eraser (0, id 0xd278) proximity-in

event9   TABLET\_TOOL\_PROXIMITY   +403.177s   240.79 /141.03  tilt: 49.95 /-1.30   pressure: 0.00  eraser (0, id 0xd278) proximity-out
event9   TABLET\_TOOL\_PROXIMITY   +403.180s   240.76\*/140.86\* tilt: 51.11\*/-0.83\*  pressure: 0.00\* pen    (0, id 0x4538) proximity-in

**Upper button (BTN\_STYLUS) pressed/released:**

event9   TABLET\_TOOL\_BUTTON   +8.360s   s331 (BTN\_STYLUS) pressed, seat count: 1
event9   TABLET\_TOOL\_BUTTON   +8.646s   s331 (BTN\_STYLUS) released, seat count: 0

**Tip:** If you see `TABLET_TOOL_PROXIMITY` events but no `TABLET_TOOL_AXIS` pressure changes, your stylus may not support pressure sensitivity.

**Note:** Applications often interpret the buttons differently depending on whether the stylus is touching the screen or hovering. For example, drawing applications will temporarily switch to the eraser tool when hovering and pressing the eraser button, but only erase once the stylus touches the screen.

### USI Firmware Details

When using USI protocol, you can query additional stylus information. See the Framework system documentation for details:

*   [**Stylus IDs and Firmware Version**](https://github.com/FrameworkComputer/framework-system/blob/main/EXAMPLES.md#stylus-framework-12)
*   [**Stylus Battery Level**](https://github.com/FrameworkComputer/framework-system/blob/main/EXAMPLES.md#stylus-framework-12-1)

These commands require `framework_tool`. See [**Framework System on Linux**](https://knowledgebase.frame.work/en_us/framework-system-on-linux-a-tool-to-monitor-configure-and-update-framework-laptop-hardware-HJbak1uRel) for installation instructions.
