4.0 KiB

Hardware

There are no recommended screens, but here are some guidelines:

  • There is no support for vertical/portrait mode, only widescreen
  • Minimum resolution of 480x320

Hardware known to work

Configuration

Follow the manufacturer instructions on how to install your screen. In general if you see a white screen, then it's not properly installed, ensure that you at least see a console, Then install KlipperScreen, if you are having troubles refer to the troubleshooting page for further information.

Touchscreen Calibration

Most people don't need to calibrate, but if you do need to calibrate your touchscreen, follow the below steps.

Run this command:

DISPLAY=:0 xinput_calibrator --list

It will output something such as:

Device "wch.cn USB2IIC_CTP_CONTROL" id=6

Find the ID of your display and put it in the following command:

DISPLAY=:0 xinput_calibrator -v --device <id from last command>

It will output somehting like:

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3951 242 190 3885"
        Option  "SwapAxes"      "1"
EndSection

paste that into sudo nano /etc/X11/xorg.conf.d/99-calibration.conf replace the contents if necessary

restart KlipperScreen

Touchscreen touch rotation

If your touchscreen isn't registering touches properly after the screen has been rotated, you will need to apply a transformation matrix.

First you will need your device name.

Run: DISPLAY=:0 xinput

Output

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ADS7846 Touchscreen                       id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]

In this case the device is the ADS7846 Touchscreen, yours may be different

You can test a change by running:

DISPLAY=:0 xinput set-prop "<device name>" 'Coordinate Transformation Matrix' <matrix>

Where the matrix can be one of the following options:

  • 0°: 1 0 0 0 1 0 0 0 1
  • 90° Clockwise: 0 -1 1 1 0 0 0 0 1
  • 90° Counter-Clockwise: 0 1 0 -1 0 1 0 0 1
  • 180° (Inverts X and Y): -1 0 1 0 -1 1 0 0 1
  • invert Y: -1 0 1 1 1 0 0 0 1
  • invert X: -1 0 1 0 1 0 0 0 1

For example: DISPLAY=:0 xinput set-prop "ADS7846 Touchscreen" 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

To make this permanent, modify the file /etc/udev/rules.d/51-touchscreen.rules and add following line:

ACTION=="add", ATTRS{name}=="<device name>", ENV{LIBINPUT_CALIBRATION_MATRIX}="<matrix>"

More info about input transformation can be found in:

Ubuntu wiki InputCoordinateTransformation Libinput docs