Touchscreen calibration fails on Ubuntu 20.04 / PixelBook
Matthew Barrera I cannot successfully calibrate the geometry of my touchscreen, running Ubuntu 20.04 on a PixelBook. The touchscreen with stylus works OK (especially near the center of the screen) but gets progressively worse toward the display corners -- just how well-calibrated it is depends on my display resolution. It's bad enough that it's currently quite poorly-adapted for e.g. handwriting mark-up of documents (my main use case).
The result I get from xinput_calibrator (after touching the four crosshairs with the stylus tip) is
Warning: multiple calibratable devices found, calibrating last one (WCOM50C1:00 2D1F:5143 Pen (0)) use --device to select another one.
Calibrating standard Xorg driver "WCOM50C1:00 2D1F:5143 Pen (0)" current calibration values: min_x=0, max_x=16777215 and min_y=0, max_y=16777215 If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL). --> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass" Identifier "calibration" MatchProduct "!!Name_Of_TouchScreen!!" Option "MinX" "-10194" Option "MaxX" "16778670" Option "MinY" "530113" Option "MaxY" "16310016" Option "SwapXY" "0" # unless it was already set to 1 Option "InvertX" "0" # unless it was already set Option "InvertY" "0" # unless it was already set
EndSection
Change '!!Name_Of_TouchScreen!!' to your device's name in the config above.I put the suggested code snippet into the new (previously non-existent) file /usr/share/X11/xorg.conf.d/99-calibration.conf, using Wacom|WACOM|PTK-540WL|ISD-V4 for the device name (perhaps this should be something else?). Anyway, restarting left my touchscreen calibration just as poor as before.
The output ofxinput_calibrator --list is
Device "WCOM50C1:00 2D1F:5143" id=9
Device "WCOM50C1:00 2D1F:5143 UNKNOWN" id=11
Device "WCOM50C1:00 2D1F:5143 Mouse" id=12
Device "WCOM50C1:00 2D1F:5143 Pen (0)" id=16and for what it's worth, the output of xinput --list is
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ WCOM50C1:00 2D1F:5143 id=9 [slave pointer (2)]
⎜ ↳ WCOM50C1:00 2D1F:5143 UNKNOWN id=11 [slave pointer (2)]
⎜ ↳ WCOM50C1:00 2D1F:5143 Mouse id=12 [slave pointer (2)]
⎜ ↳ ACPI0C50:00 18D1:5028 id=13 [slave pointer (2)]
⎜ ↳ WCOM50C1:00 2D1F:5143 Pen (0) id=16 [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)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ WebCamera: WebCamera id=8 [slave keyboard (3)] ↳ WCOM50C1:00 2D1F:5143 id=10 [slave keyboard (3)] ↳ Intel Virtual Button driver id=14 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]Any advice on how to get this touchscreen calibrated would be welcome. Many thanks!
21 Answer
I implemented two changes, either or both of which did the trick.
First, I followed the advice in the solution to Trouble with xinput_calibrator on a Toughbook CF-19 and did
sudo apt install xserver-xorg-input-evdev
sudo apt remove xserver-xorg-input-libinputSecond, I tried xinput_calibrator --device X for each of the device ID numbers 'X' listed in my original question, above, until the calibration seemed better. I finally found a value that worked, and by that point (perhaps because of the evdev/libindput changes above?) the identification of the device seemed more secure, and the text recommended for 99-calibration.conf was different. I replaced my initial contents of that file with the lines below, and now the touchscreen seems well-calibrated:
Section "InputClass" Identifier "calibration" MatchProduct "WCOM50C1:00 2D1F:5143" Option "Calibration" "41 25961 496 16806" Option "SwapAxes" "0"
EndSection