Using the MKS TS35 (ADS7846) via SPI on Libre Le Potato computer

Im currently running Klipper on the aml-s905x-cc and got interested on Klipperscreen. While researching potential screens I noticed a recent github page with detailed instructions on how to run the MKS TS35 with a raspberry pi. Only problem is it used different GPIO pins. I set on changing the pins but hit the bottleneck on my knowledge. Not worried about support since it uses the same controller as the 480x320 IILI9486 SPI Touchscreen Display which already has a topic page and seems to be working.

Github page for running the MKS TS35 on a raspberry pi:
fbeltrao-br/mksts35 (

Wiring used for the Raspberry Pi:

Libre Computer page for the 480x320 ILI9486 SPI Touchscreen Display:
AML-S905X-CC (Le Potato) 480x320 ILI9486 SPI Touchscreen Display - Hardware - Libre Computer Hub

Is it doable and if so please help!!

Should work just like the other ILI9486 displays. Just have to match the pin up to the correct GPIO. Look at the layout of the normal SPI display and hook this one up to the board using the same pinout and it should work.

i need help with that same 4 inch waveshare display, i got the latest ubuntu running on the aml-s905x-cc (le potato). the screen works fine but its put in portrait mode, i went into display settings and i set it to portrait right, screen tears where its un-useable and i cant move the mouse. i looked at youtube tutorials and did the xrander lcd left and xrander -o 3 and stuff, it wont work even after a reboot. please help

I dont believe the pinouts are the same as the other ILI9486 displays. Some definitely are like the SCK, CS, MOSI, and MISO and potentially others but that was as much as I could identify. I say potentially others because guessing on the rest got it to identify the display but it doesn’t display anything nor does the calibrator work as you can see below. Im totally stuck.

nate@raspberrypi:~ $ DISPLAY=:0 xlibinput_calibrator --list-devices
6: ADS7846 Touchscreen
Coordinate Transformation Matrix: 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Enabled: 0
Device Node: /dev/input/event1
Device Product ID: 0, 7846
libinput Calibration Matrix: 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default: 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Mode Enabled: 0, 0
libinput Send Events Mode Enabled Default: 0, 0
libinput Send Events Modes Available: 1, 0
nate@raspberrypi:~ $

Unfortunately, my luck stops here because on top of not displaying anything, this happens:

nate@raspberrypi:~ $ sudo DISPLAY=:0 xlibinput_calibrator --output-file-x11-config=/usr/share/X11/xorg.conf.d/99-calibration.conf --device-name=“ADS7846 Touchscreen” --verbose
device-id: 6
device-name: ‘ADS7846 Touchscreen’
show-matrix: no
show-x11-config: no
show-libinput-config: no
not-save: no
matrix-name: ‘libinput Calibration Matrix’
output-file-x11-config: ‘/usr/share/X11/xorg.conf.d/99-calibration.conf’
output-file-xinput-config: ‘’
output-file-udev-libinput-config: ‘’
threshold-misclick: 0
threshold-doubleclick: 1
monitor-number: 0
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 131 (XInputExtension)
Minor opcode of failed request: 37 (X_ChangeDeviceProperty)
Serial number of failed request: 70
Current serial number in output stream: 71
nate@raspberrypi:~ $

Im going be one of those people that needs a matching pinout(my apologies in advance).

Screen calibration is done in the overlay, it’s not recommended to use X11 to calibrate the display. There are definitely matching pins since most ILI9486 works the same way.

  1. LCD reset GPIO
  2. Touch reset GPIO
  3. SPI bus with 2 channel select for LCD and touch
  4. Power and ground
  5. Touch interrupt pin
  6. Extra GPIOs that act as buttons (you will need to manually add these and set the appropriate GPIO biases and key bindings)