Hardware known to work with KlipperScreen

I successfully run KlipperScreen with touch on the:
Waveshare 7inch HDMI LCD (B) 800x480 v 1.1. (with reflashed firmware)

Open firmware for Waveshare 7" capacitive touchscreen

I took a .bin file from promzona1 (see project issues) and flashed with ST-link V2 under Windows.
The chip on my board is GD32F103.
Then i using it as 1024x600 screen with Raspberry Pi.
overscan_right=225 // these may be different
overscan_bottom=105 // these may be different
hdmi_cvt 1024 600 60 0 0 0 0

At this point you get well adjusted screen but X for the touch was swapped. I not try recompile firmware.
Install edev.

sudo apt-get install xserver-xorg-input-evdev
sudo mv /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf

edit /usr/share/X11/xorg.conf.d/45-evdev.conf

Section “InputClass”
Identifier “evdev touchscreen catchall”
MatchIsTouchscreen “on”
MatchDevicePath “/dev/input/event*”
Driver “evdev”
Option “InvertX” “true”


Now all work fine!!!


I can use and old phone or a tablet with Klipper Screen?

If yes… Where I can find a guide…

Mainsail control webpage its too dense for a 5" old phone…

MKS TS35, I have it working connected via SPi to raspberry by, tested with kernel 5.10.97-v7 and 5.10.63-v7


ElecLab Raspberry Pi Touchscreen Monitor 5 Inch DPI IPS Capacitive LCD Display 480x854 Speaker Bracket for Raspberry Pi 4B 3B+ 3B 3A+ 2B A+ B+

Amazon Link

Super simple install:

cd ~
git clone https://github.com/brunnels/5inch_480x854
cd 5inch_480x854
sudo cp config.txt /boot/
sudo cp eleclab-dpi5inch.dtbo /boot/overlays/

If you want to rotate the screen follow these instructions

I did notice that if you use raspi-config to change settings in the /boot/config.txt file it will cause the kernel boot screen to not rotate so just edit that file manually if you need to.

It was a bit of a pain, but I got the Wave Share 5.5inch HDMI AMOLED.

Had to add the below to config.txt to get the display to show anything sensible

#display_hdmi_rotate=1 //Doesn't work with RPi4
hdmi_timings=1080 1 26 4 50 1920 1 8 2 6 0 0 0 60 0 135580000 3

Rotating the screen to the proper orientation proved challenging. The config.txt rotate commands don’t work with the raspberry pi4. I couldn’t get the xorg configuration to rotate the display. When I added kernel commandline parameters to rotate the display, that worked for the initial verbose boot screen… but once KlipperScreen loaded, it was the wrong orientation.

I ended up having to modify the init function in screen.py as below, but it’s pretty hacky. Not sure if there’s a better way on a raspberry pi 4. But… it works

    def __init__(self, args, version):
        self.version = version

        configfile = os.path.normpath(os.path.expanduser(args.configfile))

        self._config = KlipperScreenConfig(configfile, self)
        self.lang = self._config.get_lang()

        logging.debug("OS Language: %s" % os.getenv('LANG'))

        settings = Gtk.Settings.get_default()
        logging.info("Font settings: %s" % settings.get_property('gtk-font-name'))

        self.lang_ltr = True
        for lang in self.rtl_languages:
            if os.getenv('LANG').lower().startswith(lang):
                self.lang_ltr = False
                logging.debug("Enabling RTL mode")

        _ = self.lang.gettext

        monitor = Gdk.Display.get_default().get_primary_monitor()
#        self.width = self._config.get_main_config().getint("width", monitor.get_geometry().width)
#        self.height = self._config.get_main_config().getint("height", monitor.get_geometry().height)
        self.height = self._config.get_main_config().getint("width", monitor.get_geometry().width)
        self.width = self._config.get_main_config().getint("height", monitor.get_geometry().height)
        self.set_default_size(self.width, self.height)
        if self.width < self.height:
            self.vertical_mode = True
            self.vertical_mode = False
        logging.info("Screen resolution: %sx%s" % (self.width, self.height))
        self.theme = self._config.get_main_config_option('theme')
        self.show_cursor = self._config.get_main_config().getboolean("show_cursor", fallback=False)
        self.gtk = KlippyGtk(self, self.width, self.height, self.theme, self.show_cursor,
                             self._config.get_main_config_option("font_size", "medium"))
        self.keyboard_height = self.gtk.get_keyboard_height()

        self.base_panel = BasePanel(self, "Base Panel", False)



        # Move mouse to 0,0
        os.system("/usr/bin/xdotool mousemove 0 0")

        os.system("xrandr --output HDMI-1 --rotate right")
        os.system("xinput set-prop \"WaveShare WaveShare\" \'Coordinate Transformation Matrix\' 0 1 0 -1 0 1 0 0 1")

Yes: https://i.imgur.com/NiIddZY.png

  1. Using an Android device with KlipperScreen – Angel's Personal Blog
  2. GitHub - naruhaxor/AndroidKlipperScreen: a simple writeup /installer script to use android Devices and a UI for KlipperScreen for RaspberryPI
  3. [How To] KlipperScreen on Android Smart Phones

These are useful and almost identical, but have subtle nuanced differences that could prove beneficial. The first, for example, helped me by pointing me to java - adb devices => no permissions (user in plugdev group; are your udev rules wrong?) - Stack Overflow which helped with getting ADB to recognize that I had my phone connected as an adb target and also pointed me to an old version of XSDL that was needed for my old Android v6 phone. The second has some pointers about wireless that I’ve yet to try. On my Note 10+ I was able to get wireless adb running and was able to have a wireless KlipperScreen UI for the printer. On the Note 10+ I was able to use the current release of XSDL, from the Google Play Store, and did NOT need to load the old version manually via adb install.

Of note: On the newer versions of XSDL, there is indeed a ‘Desktop No Emulation’ mode for mouse emulation (which is the appropriate selection to make use of). However, on the older v1.11.40 version, I needed to select tablet/laptop emulation, then turned off all of the config options on the mouse emulation submenu, and finally calibrated the lcd, so that my touches would be passed through to KS so it could do it’s thing. If it looks like it is not functional, it may very well be that the mouse emulation is jacked up.

Also, be advised that it might look like the Web UI (Mainsail in my case) was not operable when KS was working. I found that once KS got started, if you close the web UI and then reopen it, that Moonraker is indeed able to serve both Mainsail UI web clients concurrently with the KlipperScreen device hooked locally to the Klipper Host (and Telegram Bot too, btw). I can’t speak for other MR clients like Fluidd or Mooncord. Other useful and likely relevant guidance:

OSOYOO 5" DSI V2.1 works very well incl. DPMS.


V1 and V2 does not support DPMS → Screen LEDs stay on.

G’day…Im having massive issues calibrating my touch on the VoCore any calibration suggestions?

What screen you got? I just got the 5 inch model and it seems framebuffer driver does not work with this display.

As noted elsewhere, I am able to get the 4" Miuzei HDMI display working with a Raspberry Pi 4 and KlipperScreen.

To cut to the chase, this display requires a fairly parsnickety set up (which I’ve listed below) and after using this display for several hours, I do not recommend it for use with KlipperScreen/a 3D printer. The screen isn’t really bright and the resistive touch panel is not very sensitive. You can find DSI displays with capacitive touch panels for the same price that work better.

The process to get the display and touch panel is reasonably simple, but it has to be followed exactly:

  1. Install Mainsail (I haven’t tried Fluidd or standard Octoprint for this) on a micro-SD/TF Card and boot the Raspberry Pi with the Display attached.
  2. SSH login into the Raspberry Pi and install LCD-show using the commands listed in “How to rotate the display direction” in 5inch HDMI Display-B. I’ve listed the commands below. DO NOT EDIT CONFIG.TXT!!!
  3. The final command of the LCD-show sequence (“sudo MPI4008-show”) will reboot the Raspberry Pi and may cause the display to come up correctly. If it doesn’t (which means I believe the display isn’t working correctly), unplug the Raspberry Pi and replug it - the Raspberry Pi boot sequence should be displayed now. If there aren’t four Raspberri Pi icons across the top of the display, go back to 1. and start over.
  4. SSH login to the Raspberry Pi and install KIAUH using the instructions below.
  5. Run KIAUH using the “./kiauh/kiauh.sh” command and install “KlipperScreen”. This action will take about five minutes to run.
  6. Klipper should appear on the display.
  7. I found it helpful to power down the Raspberry Pi at this point (using the “shutdown” command) and power back up as the final update didn’t always work from this screen.
  8. If everything has been done correctly, then the Raspberry Pi should reboot (with the progress shown on the display) and Mainsail comes up.
  9. From the Mainsail (“.local”) webpage, add your “printer.cfg” file
  10. From the Mainsail (“.local”) webpage, do a update everything.

That’s it!

The LCD-show commands from point 2. to use are:

sudo rm -rf LCD-show
git clone GitHub - goodtft/LCD-show: 2.4" 2.8"3.2" 3.5" 5.0" 7.0" TFT LCD driver for the Raspberry PI 3B+/A/A+/B/B+/PI2/ PI3/ZERO/ZERO W
chmod -R 755 LCD-show
cd LCD-show/
sudo ./MPI4008-show

Note for the last command (“sudo ./MPI4008-show”), it’s given as “sudo ./XXX-show 90” in the webpage instructions. I have inserted the display type and, as I like the natural orientation of the display away from the power cord, I haven’t specified an angle.

Sorry for the pedantic instructions but I found a number of ways to not quite get there - I had a number of cases where I could get the display working, but KlipperScreen wouldn’t work or I would have everything working and try to streamline it by doing the “update everything” earlier in the process and the screen would stop working.

The display and touchpanel with a Plexiglas frame (as well as fan, which is useful) can be found here:

Ingpool 7" HDMI touchscreen…dirt simple to setup
I like it most as the connectors are mid back panel making it compact to case up as the cables aren’t sticking out the side inpool wiki and setup
Avail on Amazon (at least as off 22021014)

Has anyone attempted the BTT Pi TFT70 or is it the same as the TFT50?

Hey any chance there is a version of this that would work with the 7" version? Im having a heck of a time getting it to work.

Hello my friend. So I bought this same screen… I haven’t started to install yet… But this is my first go round with KlipperScreen. So I have a few questions if you don’t mind… if you could help I would appreciate it.

  1. Which wiring did you use? HDMI to the Pi?
  2. Where did you power it from? Just plug into the Pi?
  3. You said no “settings changes needed” so I just install “Klipper Screen” to my Fluidd instance and this just works?

Thank You man… any configs you could share etc. would be great.

Help in this matter would be greatly appreciated! TY!!

Just reporting that Osoyoo 5" screen works perfectly. (Instruction for Raspberry Pi 5″ DSI Touch Screen « osoyoo.com) I choose this over PITFT50v2 because the Osoyoo has software controlled backlight - including totally off, and works out of the box with DPMS and via /sys/class/backlight/rpi_backlight/brightness.

@ AbnRanger375
Did you compare the schematics?

@hcet14 Is the hardware an issue that I should be looking at? I thought that it may be the firmware. What specifically would I be looking for on the schematics?

Hi AbnRanger375,
Forget the schematics :wink:

Hardware - KlipperScreen says Hardware known to work:

BTT PI TFT70 also is an DSI display.
Both use the same hardware:

  • HK32F030K6T6 MCU
  • GT911 Touch Controller

OctoPrint OS and MainsailOS are build upon Raspberry Pi OS Lite, I guess other frontends too.

Here is explained how to install the BTT PI TFT50 display with Octoprint BIGTREETECH PI TFT50 Octoprint Touchscreen Install & First Look - YouTube

So, I’m very positive, that it will be easy to get the display running.