<p>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.</p>
<p>The screen is identified in code by constant <code>CREALITY_DWIN</code>. It appears that the screen receives/uses precreated images (from <a href="https://drive.google.com/open?id=1SfwseoqTlIGuDYYDXvPwLLFd_D93qS0_" rel="nofollow noreferrer">this download</a> you find these screen captures). The code references the bitmaps by a number and a base number (<code>ExchangePageBase</code>). E.g. codeline:</p>
<pre><code>RTS_SndData(ExchangePageBase + 78, ExchangepageAddr);
</code></pre>
<p>sends this image:</p>
<p><a href="https://i.sstatic.net/HG6X7.png" rel="nofollow noreferrer" title="78_E_no_filement1.bmp"><img src="https://i.sstatic.net/HG6X7.png" alt="English screen shot 78_E_no_filement1.bmp" title="78_E_no_filement1.bmp" /></a></p>
<p>The specific code is found in <a href="https://github.com/InsanityAutomation/Marlin/tree/bugfix-2.0.x/Marlin/src/lcd" rel="nofollow noreferrer">this specific fork of Marlin</a> in files <a href="https://github.com/InsanityAutomation/Marlin/blob/bugfix-2.0.x/Marlin/src/lcd/dwin/dwin_lcd.cpp" rel="nofollow noreferrer">Creality_DWIN.cpp</a> and <a href="https://github.com/InsanityAutomation/Marlin/blob/bugfix-2.0.x/Marlin/src/lcd/dwin/dwin_lcd.h" rel="nofollow noreferrer">Creality_DWIN.h</a>.</p>
<p>In order to make your own menu item, you need to add code to send new bitmaps and retrieve the touched position.</p>

CC BY-SA 4.0
2019-11-28T07:26:37.427Z
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
cds333
CC BY-SA 4.0
2019-11-28T07:27:01.653Z
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.
cds333
CC BY-SA 4.0
2019-11-28T07:48:42.260Z
@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.
0scar
CC BY-SA 4.0
2019-11-27T09:00:36.767Z
2021-07-02T07:53:13.283Z
2021-07-02T07:53:13.283Z
0scar
<p>How would I go about editing the LCD menus for the touchscreen?</p>
<p>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.</p>
<p>With my Ender 3 is was pretty easy- you simply edit the <code>ultralcd.cpp</code>, you can then add your own menus and commands.</p>
<p>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 <a href="https://www.thingiverse.com/thing:3484675" rel="nofollow noreferrer">set of files</a> 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.</p>
<p>So where do I go next? Thanks!</p>
<p><a href="https://i.sstatic.net/kuH1O.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/kuH1O.jpg" alt="enter image description here" /></a>
<a href="https://i.sstatic.net/JVjy5.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/JVjy5.jpg" alt="enter image description here" /></a></p>
<hr />
<p><em>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 &quot;official&quot; 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.</em></p>
<p><a href="https://i.sstatic.net/O3U4b.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/O3U4b.jpg" alt="enter image description here" /></a></p>

CC BY-SA 4.0
2019-11-26T15:53:15.957Z
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.
0scar
<marlin><firmware><creality-cr-10><creality-ender-5>
CR-10S / Ender5+ LCD Touchscreen Firmware Editing
cds333
# CR-10S / Ender5+ LCD Touchscreen Firmware Editing

(Asked by: username_0 on 2019-11-25)

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](https://www.thingiverse.com/thing:3484675) 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](https://i.sstatic.net/kuH1O.jpg)](https://i.sstatic.net/kuH1O.jpg)
[![enter image description here](https://i.sstatic.net/JVjy5.jpg)](https://i.sstatic.net/JVjy5.jpg)

---

*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](https://i.sstatic.net/O3U4b.jpg)](https://i.sstatic.net/O3U4b.jpg)

**Tags:** marlin, firmware, creality-cr-10, creality-ender-5

> **Comments:**
> **username_1**: 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.  

---

## 1 answers

### Answer by username_1 on 2019-11-27. Score: 3

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](https://drive.google.com/open?id=1SfwseoqTlIGuDYYDXvPwLLFd_D93qS0_) 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](https://i.sstatic.net/HG6X7.png "78_E_no_filement1.bmp")](https://i.sstatic.net/HG6X7.png "78_E_no_filement1.bmp")

The specific code is found in [this specific fork of Marlin](https://github.com/InsanityAutomation/Marlin/tree/bugfix-2.0.x/Marlin/src/lcd) in files [Creality\_DWIN.cpp](https://github.com/InsanityAutomation/Marlin/blob/bugfix-2.0.x/Marlin/src/lcd/dwin/dwin_lcd.cpp) and [Creality\_DWIN.h](https://github.com/InsanityAutomation/Marlin/blob/bugfix-2.0.x/Marlin/src/lcd/dwin/dwin_lcd.h).

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

> **Comments:**
> **username_0**: 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  
> **username_0**: 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.  
> **username_1**: @username_0 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.  

---

