Recently I was required to test the level of pressure in several devices, Wacom tablets, Lenovo Yoga 2 in 1, Asus T102H / T103H, among others…

In this post I’ll explain how to know how to test or debug the levels of pressure of your pen for any device, in this case, I’ll be presenting images of my Lenovo Yoga 530 which is 2 in 1, laptop and tablet as well.

The procedures explained will allow us to know which level of pressure is available in Linux and Windows as well. It is important to know about the capabilities of the device and discarding any hardware problem related to the pressure and the pen.

The Pen Version

Each pen has a different level of pressure, some of them support  1024, 2048 or even 4096. If you don’t know how much your pen support, the first step is opening the pen and looking for the specific version, all of them should have a label like this:

As you can see it is a «Lenovo Active Pen» and its model is 5T70K13857, looking in google for its pressure levels lead me to nothing (later in the tests described below) I discovered it supports 4096 levels of pressure.

As another example, let’s take a look on the Asus pen which is included in the T103H, T102H, and VivoBook Flip 14 TP401M​, the three of them come with the same model SPEN-ASU-04:

In this case, the Asus website displays this info for their pen

1024 – Pressure Levels
10-300 g – Pen tip force

But not for the specific model, anyway, you can search the model on google and with some luck (in a polish website) you could associate the SPEN-ASU-04 with 1024 pressure levels.

Because finding the required information by searching the specific pen model proved to be hard, it will be easier to use software tools and discover it by ourselves. Let’s proceed on how to do that on both, Windows and Linux.

Testing Levels of pressure in Windows

Scenario: Lenovo Yoga 530, Lenovo Active Pen 5T70K13857, Windows 10, Java and JwinPointer.

Using my Lenovo Yoga 530 and Windows 10 I wanted to know what levels of pressure were supported by the pen which came with the device, in order to find that and after installing java I downloaded the tool JWinPointer.

If you already installed java, when you look for JWinPointer you simply do double click and it will be executed (you must maximize the window in order to see it like the picture, otherwise it will appear only as a window bar).

Testing my Lenovo pen 5T70K13857

Testing my Lenovo pen 5T70K13857

In this test, we are applying a considerable amount of force (without damaging the device), we concluded this pen is able to support 4096 levels of pressure.

Now let’s do the same with Linux, so we can be sure these values are true.

Testing Levels of pressure in Linux

Scenario: Lenovo Yoga 530, Lenovo Active Pen 5T70K13857, Ubuntu 19 (Disco), evemu-tools and evtest.

In order to test the pressure levels of your pen in Linux, you will be required to install a tool to do the job, I’m going to show you two evemu-record and evtest, both of them are really simple to use. You can even use Ubuntu without installing by running it from a CD, DVD or Pendrive with the option «try without installing» as shown here:

We run a terminal and install one or both tools as you prefer, both are almost identical in its use (remember being root or using sudo):

sudo apt-get install evemu-tools evtest

Here’s the complete output:

root@ubuntu:/home/ubuntu# apt-get install evemu-tools evtest
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following additional packages will be installed:
The following NEW packages will be installed:
  evemu-tools evtest libevemu3
0 upgraded, 3 newly installed, 0 to remove and 265 not upgraded.
Need to get 36.3 kB of archives.
After this operation, 229 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 xenial/universe amd64 libevemu3 amd64 2.1.0-1build1 [11.3 kB]
Get:2 xenial/universe amd64 evemu-tools amd64 2.1.0-1build1 [11.2 kB]
Get:3 xenial/universe amd64 evtest amd64 1:1.33-1 [13.8 kB]
Fetched 36.3 kB in 1s (37.3 kB/s)
Selecting previously unselected package libevemu3:amd64.
(Reading database ... 157713 files and directories currently installed.)
Preparing to unpack .../libevemu3_2.1.0-1build1_amd64.deb ...
Unpacking libevemu3:amd64 (2.1.0-1build1) ...
Selecting previously unselected package evemu-tools.
Preparing to unpack .../evemu-tools_2.1.0-1build1_amd64.deb ...
Unpacking evemu-tools (2.1.0-1build1) ...
Selecting previously unselected package evtest.
Preparing to unpack .../evtest_1%3a1.33-1_amd64.deb ...
Unpacking evtest (1:1.33-1) ...
Setting up libevemu3:amd64 (2.1.0-1build1) ...
Setting up evtest (1:1.33-1) ...
Setting up evemu-tools (2.1.0-1build1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.29-0ubuntu2) ...

Now we have the tools and we can test by running:

#With evtest

#Or with evemu-record

You’ll be prompted to select the device you want to test, in this case, we must select the device with the «Pen» word, for example using evtest:

oot@ubuntu:/home/ubuntu# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Lid Switch
/dev/input/event1: Power Button
/dev/input/event2: Power Button
/dev/input/event3: AT Translated Set 2 keyboard
/dev/input/event4: Video Bus
/dev/input/event5: MSFT0001:01 04F3:304B Touchpad
/dev/input/event6: Integrated Camera: Integrated C
/dev/input/event7: Wacom HID 517C Pen
/dev/input/event8: Wacom HID 517C Finger
/dev/input/event9: Ideapad extra buttons
/dev/input/event10: HDA Intel PCH Mic
/dev/input/event11: HDA Intel PCH Headphone
/dev/input/event12: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event13: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event14: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=10
Select the device event number [0-16]: 7
Input driver version is 1.0.1

Look how my pen is detected:

/dev/input/event7: Wacom HID 517C Pen

And here I’ve selected 7 as that device:

Select the device event number [0-16]: 7

This is exactly the same with evemu-record.

The output will provide you information about the AXIS X, AXIS Y and PRESSURE, because we are testing pressure ONLY we must use grep to filter this specific output:

# With evtest
root@ubuntu:/home/ubuntu# evtest | grep -i pressure

# With evemu-record
root@ubuntu:/home/ubuntu# evemu-record | grep -i pressure

This is the output of evest:

Event: time 1562773742.132993, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3997
Event: time 1562773742.137896, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4011
Event: time 1562773742.147894, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4019
Event: time 1562773742.152866, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4032
Event: time 1562773742.162795, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4039
Event: time 1562773742.167699, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4045
Event: time 1562773742.177649, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4057
Event: time 1562773742.182608, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4069
Event: time 1562773742.192538, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4081
Event: time 1562773742.197454, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4091
Event: time 1562773742.208109, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4095

And this is how evemu-record shows it:

E: 13.450261 0003 0018 3611 # EV_ABS / ABS_PRESSURE         3611
E: 13.455181 0003 0018 3668 # EV_ABS / ABS_PRESSURE         3668
E: 13.465170 0003 0018 3711 # EV_ABS / ABS_PRESSURE         3711
E: 13.470074 0003 0018 3751 # EV_ABS / ABS_PRESSURE         3751
E: 13.480111 0003 0018 3780 # EV_ABS / ABS_PRESSURE         3780
E: 13.484995 0003 0018 3810 # EV_ABS / ABS_PRESSURE         3810
E: 13.495085 0003 0018 3829 # EV_ABS / ABS_PRESSURE         3829
E: 13.500037 0003 0018 3848 # EV_ABS / ABS_PRESSURE         3848
E: 13.509999 0003 0018 3878 # EV_ABS / ABS_PRESSURE         3878
E: 13.514933 0003 0018 3909 # EV_ABS / ABS_PRESSURE         3909
E: 13.524984 0003 0018 3952 # EV_ABS / ABS_PRESSURE         3952
E: 13.529871 0003 0018 3996 # EV_ABS / ABS_PRESSURE         3996
E: 13.539923 0003 0018 4036 # EV_ABS / ABS_PRESSURE         4036
E: 13.544878 0003 0018 4068 # EV_ABS / ABS_PRESSURE         4068
E: 13.555012 0003 0018 4085 # EV_ABS / ABS_PRESSURE         4085
E: 13.559781 0003 0018 4095 # EV_ABS / ABS_PRESSURE         4095
E: 13.988250 0003 0018 4064 # EV_ABS / ABS_PRESSURE         4064
E: 13.992848 0003 0018 4008 # EV_ABS / ABS_PRESSURE         4008

If you are using these tools and your range of pressure varies from 0 to 258 probably you have a standard driver and you’ll need an updated driver which supports the pressure levels of your pen.