Skip to content

Touch Problems

  1. Check kernel messages

    Terminal window
    dmesg | grep -i goodix

    Should show GT9271 initialization.

  2. Check input devices

    Terminal window
    cat /proc/bus/input/devices | grep -A5 "Goodix"

    Should show “Goodix Capacitive TouchScreen”.

  3. List input events

    Terminal window
    ls /dev/input/event*
  4. Test touch input

    Terminal window
    sudo apt install evtest
    sudo evtest
    # Select touch device, then tap screen

If GT9271 isn’t detected:

  1. Check I2C bus

    Terminal window
    i2cdetect -y 10

    Should show device at 0x14 or 0x5D.

  2. Power cycle display

    • Disconnect 5V power cable
    • Wait 5 seconds
    • Reconnect power
    • Reboot Pi
  3. Reseat DSI cable

    • Touch uses I2C lines in DSI cable
    • Poor connection causes touch failure
  4. Check for I2C errors

    Terminal window
    dmesg | grep -i "i2c\|error"

When you tap a spot but the cursor appears elsewhere, you need calibration:

Terminal window
# Create udev rule
sudo nano /etc/udev/rules.d/99-waveshare-touch.rules

Add the appropriate matrix for your rotation:

Terminal window
# 0° (no rotation)
ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="1 0 0 0 1 0"
# 90° rotation
ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 -1 1 1 0 0"
# 180° rotation
ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1"
# 270° rotation
ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"

Reboot after saving.

SymptomMatrix to Try
X inverted-1 0 1 0 1 0
Y inverted1 0 0 0 -1 1
Both inverted-1 0 1 0 -1 1

The rotation matrix must match the display rotation. If display is rotated 90° but touch isn’t calibrated:

  • Touch at top → registers as right side
  • Touch at left → registers as top

Apply the matching calibration matrix.

  1. Check touch mode

    • Open Screen Configuration
    • Go to Touchscreen tab
    • Enable “Multitouch” mode
  2. OS limitation

    • Some applications only support single touch
    • Web browsers may limit touch points

Multitouch gestures require:

  • Multitouch mode enabled
  • Compatible application
  • Proper libinput configuration
Terminal window
# Check libinput settings
libinput list-devices | grep -A10 "Goodix"

The capacitive touch should respond to light touches. If it requires pressure:

  • Screen protector interfering (remove or use compatible type)
  • Gloves preventing capacitive detection
  • Touch IC firmware issue (rare)

Causes:

  • Poor grounding
  • EMI from nearby electronics
  • Static discharge
  • Hardware defect

Solutions:

  1. Ensure proper grounding through GPIO
  2. Move away from EMI sources
  3. Contact Waveshare if persistent

Touch should respond within ~10ms. Lag indicates:

  1. High CPU load

    Terminal window
    top
    # Check for processes using high CPU
  2. I2C bus issues

    • Other I2C devices causing conflicts
    • Long I2C cable runs
  3. Driver issues

    • Update to latest Raspberry Pi OS
    • Try Waveshare pre-built image
Terminal window
sudo apt install evtest
sudo evtest /dev/input/event0 # Adjust number

Touch the screen and observe coordinates. You should see:

  • ABS_MT_POSITION_X
  • ABS_MT_POSITION_Y
  • ABS_MT_TRACKING_ID
Terminal window
xinput list
xinput test "Goodix Capacitive TouchScreen"
Terminal window
# Install mtdev-tools
sudo apt install mtdev-tools
# Run graphical test
mtview /dev/input/event0