This makes updating Marlin a bit trickier since both the firmware on the 3D printer's main board, and the graphic LCD both need to get updates. The Marlin update is done the same way as always (and I use the Octoprint Firmware Updater plugin for this), but the screen requires a bit more work. Additionally the firmware and screen files need to play nice together, so unless you want to build it from scratch, finding some fork of marlin specific to the printer is an easier way to go.
So now you are probably asking, "where do I get the code to upgrade Marlin or the screen?". The answer is a couple places that I am aware of currently. The first is TinyMachines which has been supporting the CR10S Pro and other machines with a fork of Marlin that is customized to work with the screen files they provide. Their firmware and great instructions can be found here:
(click the link which says "Tiny Machines 3D Printer Firmware" and links to their google Doc with links and instructions.
One note about the current DW7.4 version of the TinyMachines firmware for the CR10S Pro however. I installed it over a week ago and have had some strange issues (I was running DW6 prior with no problems). The primary problem is that auto bed leveling takes about 15-20 minutes now, since the probe will pause if the bed temp fluctuates by even a fraction of a degree between probes. I tried using the saved mesh instead of probing with every print but that also had some failures several times. Finally the hot end temp is pretty bouncy but magically stabilizes after a dozen or so minutes, and this is after running several rounds of PID tuning of the bed and hot end after upgrading the firmware. So I would not recommend DW7.4 on the CR10S PRO v1 with the inductive probe at this point.
I recently found another project on GitHub with recompiled firmware and screen files for the CR10S Pro and a few other models (CR10 Pro V2 and Ender5Plus) here:
Marlin FW (precompiled binaries):
DWIN Screen Files:
There are also config files if you want to compile that fork of Marlin:
It's not required but you can check the SHA256 checksums on the files if you wish using windows and the process explained here.
I have just installed this version and have not yet tested it out, but will update here when I do. If there is a problem, the next plan is to roll back to an earlier version of TinyMachines firmware.
Before updating firmware, it's a good idea to either copy the output of M503 to a notepad, or if you can't access the printer's terminal, write down the z-offset so you can re-enter that after the upgrade. Also if you calibrated the e-steps, that should be copied so it can be re-entered post upgrade.
Once the firmware and screen files are obtained, the next hurdle, for the CR10S Pro at least, is that to access the screen's SD card slot, the entire bottom cover of the printer must be removed, and that means removing at least a dozen screws. To make this process simpler, I installed a microSD card extension on my printer so I can access the screen SD slot without removing the cover, and for about $6-8 it's not that expensive to do. I added some double sided foam tape between the flat ribbon for the extension and the case, to help protect it, which can be seen in the pic at the top. Edit 10-18-2021: I don't think it would fit through the vents.
The screen updates via a microSD card which needs to be formatted with FAT32 and 4096 byte clusters. The cluster size can be a bit of a "cluster", pardon the pun, since windows does not show that option on my install, but you can get a free program like MiniTool Partition Wizard which can easily format it with the correct cluster size. Then a directory containing the files the screen will need, is simply copied to the formatted MicroSD card. The directory is always named "DWIN_SET" and if you look inside you will find the images, WAV files and other cfg and bin files the screen will use to update itself. Updating just requires turning off the printer, plugging in the MicroSD with the "DWIN_SET" directory onboard, and then powering up the printer. The screen will go blue with some text showing it is loading files and then it will flash images of all the BMP files in the DWIN_SET directory across the screen, and then it goes back to the blue screen with the text where I usually give it a minute to make sure nothing changes, before resetting the printer again.
Installing the firmware and screen files is well documented but in a nutshell, I upload the firmware using the OctoPrint Firmware Updater plugin, and then, when that is completed, I just install the screen files as described previously.
Update 10/4/2021: I have been using Desuuuu's fork of Marlin for the CR10S Pro V1 and it does not have the same problem with ABL as Tinymachines DW7.4 does (that is taking 15-20 minutes to peform an ABL mesh). It is however not perfect and I have had a few annoyances with it. The most serious was that the z-offset seemed to get lost after setting (and saving it using M500) one time, which caused the printer to try and bury the nozzle in the bed, but since resetting it, it has been OK. When I say bury the nozzle, it was only off by a mm so no damage was done. Oddly, when the printer got it's stuff back together (after several rounds of re-adjusting the z-offset), I ended up just about where it should have been to begin with, but I was seeing inconsistent offsets several times before getting it back to just right. It has since been stable with no further z-offset issues for 3 prints since this happened. Temperature stability of the hot end is also not great, I can see waves on the temp/time graph in Octoprint, even after running 2 cycles of PID tuning at the same target temp as I use. Previously the temp/time graph was rock solid. I also noticed this to a worse degree with TinyMachines DW7.4, but it cleared up after the first dozen or so minutes with DW7.4, whereas with Desuuuu's fork of Marlin, I see the wavyness through the print. The fact that this temperature instability is a problem with both firmwares, but was not a problem previously, and does not clear up with multiple PID tunes, makes me question if it is due to some change with Marlin itself, or possibly more interrupts going on within the code or something like that. I did not see any issues with the hot end itself so will try another PID run on the hot end to see if that helps.
There was also an error about bed timeout, which I haven't received on my old TinyMachines DW6 firmware (I did run 2 PID tuning cycle of the bed several prints prior to that occurring). There are a few other things that are not super about it, like very small buttons, and at least one which is mislabeled, but it does work and most of my prints seem mostly OK. I am still testing, but really I wish I hadn't upgraded since there was nothing new, and stability has suffered if anything since it was pretty reliable on the old code. With both the TinyMachines DW7.4 and the Desuuuu updated versions of Marlin, there have been some strange issues which I never had seen before with my printer. I may still revert to the older TinyMachines version I was running if I see more problems. I guess I should have heeded the old adage "If it ain't broke, don't fix it".