How would I go about editing the LCD menus for the touchscreen?

Oddly the Ender 5+ is supposed to be an upgrade but the Ender 5 (regular) has so much more stuff you can control from the LCD screen. Flow control, PID tuning, etc.

With my Ender 3 is was pretty easy- you simply edit the ultralcd.cpp, you can then add your own menus and commands.

On the Ender 5+ and the CR-10S pro I'm guessing the touchscreen has its own set of firmware files- I am guessing this because I found a set of files for the touchscreen- different color screens and such, but they do not include any uncompiled files nor does the marlin firmware for the CR-10 have any mention of those image files in them.

So where do I go next? Thanks!

enter image description here enter image description here

The Ender 5+ and CR-10s both got rid of the traditional LCD with the wheel in favor of the touchscreen; unfortunately it has a lot less functionality. I don't know where to find the specs, I got this printer from Creality "official" website but they will not release specs on the boards in this printer, I already emailed them. Here is a pic of the board itself.

enter image description here

  • 1
    $\begingroup$ I contacted Creality also, but they cannot or will not release the sources: "Sorry, we wouldn't recommend others modify our printers, and we don't have this kind of firmware, yet." I will keep investigating, I'd like to fiddle with touch screens myself one day. The only things I found were those you already linked in the question. $\endgroup$
    – 0scar
    Nov 26, 2019 at 15:53

1 Answer 1


I've been digging into the sources and from what I understand, it is not very easy to change the menus, you should possess some programming skills to change it. It appears that the screen is operating on its own firmware and the board is running a special fork from Marlin.

The screen is identified in code by constant CREALITY_DWIN. It appears that the screen receives/uses precreated images (from this download you find these screen captures). The code references the bitmaps by a number and a base number (ExchangePageBase). E.g. codeline:

RTS_SndData(ExchangePageBase + 78, ExchangepageAddr);

sends this image:

English screen shot 78_E_no_filement1.bmp

The specific code is found in this specific fork of Marlin in files Creality_DWIN.cpp and Creality_DWIN.h.

In order to make your own menu item, you need to add code to send new bitmaps and retrieve the touched position.

  • $\begingroup$ Awesome! As usual you are a big help! I really should have taken a minute to read the list of files in the firmware, I would have seen the DWIN in the filename lol $\endgroup$
    – cds333
    Nov 28, 2019 at 7:26
  • $\begingroup$ It appears from watching a YT video, that to upgrade the firmware to the touchscreen one need only upload the DWIN_SET folder via SD card to the screen board. There was no mention of uploading a HEX file; there are 5 BIN files in the dwin folder, including one files that contains 128kb of null and then the words "diven technology" in chinese. I don't think those files are firmware (maybe you can confirm?). So correct me if Im wrong- but it would appear that all the actual code for the operation of the touchscreen is in the firmware on the mainboard, and there aren't separate fw screen files. $\endgroup$
    – cds333
    Nov 28, 2019 at 7:27
  • $\begingroup$ @cds333 I'm not so sure about that, I've seen a video of someone explicitly updating the firmware with the SD card slot on the touch screen. Not owning a 5+ it is difficult to try out. If I would buy a generic touch screen to test, this may not be applicable to your screen. Note that only uploading the graphics files wouldn't be enough, you also need to prepare the sources to load them, so it could be that an update of the screen itself is not needed. $\endgroup$
    – 0scar
    Nov 28, 2019 at 7:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .