Hey folks I just thought I’d throw down some instructions for building a firmware from the Sovol provided source. And show some changes I made for my particular setup.
So first things first. Download the source from Sovol and extract to a folder anywhere you’d like. Then download VSCode from Microsoft. It’s the easiest method to build with. Once it’s installed and opened you need to click the extensions icon it’s 4 square blocks in the upper left bar. Then search for auto build Marlin. Install it, and once it’s finished, close VSCode and reopen. Don’t skip this, VSCode can get buggy with newly installed plugins.
Now that we have an environment to build with, open the source folder you extracted. It will expand and populate a few things. Now here is where I made changes for my setup.
First thing we will open is platformio.ini and find default_envs =
If this line says ANYTHING other than STM32F103RET6_creality, change it to read that. So the line should read:
default_envs = STM32F103RET6_creality
Do not skip this step it’s vital for build time.
Now open Marlin subdirectory, then open file configuration.h and ctrl+F search for MOTHERBOARD. Make sure it says
#define MOTHERBOARD BOARD_CREALITY_V4
If it does not change it this is vital for build time.
Now here is where I made custom changes for my particular setup, modify these as you need.
In the same configuration.h I changed
#define TEMP_SENSOR_0 from 1 to 1047 because I’m using an E3D volcano block with a PT1000 sensor.
I also changed
#define HEATER_0_MAX_TEMP and all under it (0-7) to 305 because I have a bi-metal heatbreak instead of the Teflon tube lined one it comes with.
I then changed
#define BED_MAXTEMP from 125 to 140 for printing carbon fiber nylon parts.
Now if you’re going to run octoprint, or another raspberry pi or computer control platform, you’ll need to enable host action commands.
In the Marlin subdirectory open configuration_adv.h and ctrl+f search for HOST_ACTION_COMMANDS where this should appear.
#define HOST_ACTION_COMMANDS
#if ENABLED(HOST_ACTION_COMMANDS)
//#define HOST_PAUSE_M76
//#define HOST_PROMPT_SUPPORT
//#define HOST_START_MENU_ITEM
You will remove the comment // marks in front of the 3 #define lines so it will now look like this.
#define HOST_ACTION_COMMANDS
#if ENABLED(HOST_ACTION_COMMANDS)
#define HOST_PAUSE_M76
#define HOST_PROMPT_SUPPORT
#define HOST_START_MENU_ITEM
So now we are ready to build. Click the M icon on the left hand bar. In the next screen click Show ABM Panel. The next screen to show up should show the current build parameters. What we’re looking for are
Board: Creality V4
Pins: STM32F1/pins_CREALITY_V4.h
Architecture: STM32F1
If all these look like what I’ve listed click build for the STM32F103RET6_creality (512k). I tried the _maple version from reading some other creality forums, and mine wouldn’t extrude. From what I gather some boards with the GD32F303RET6 processor will only work with maple and some won’t. Mine didn’t work with _maple. So after a lot of swearing and head scratching I compiled as the first one and it worked for me.
Don’t worry about seeing some warnings in yellow. They don’t apply to our build at the moment. Maybe in the future if you want to upgrade your Marlin version. But that’s another can of worms we won’t get into now.
Now a new window should pop up with the .bin file we just built. It will be called firmware-xxxxxxxx-xxxxxx.bin. The first 8 x’s are the build date, the last 6x’s are the time of build. Leave this file alone, make a copy and call it new-firmware.bin. These creality 4.x.x boards have a bug/feature, lots of debate here, where if you flash a new firmware with a file that has the same name, or the first 10 characters the same, it will NOT flash the new file. The Sovol firmware was titled firmware-V1.2.0.bin, so by naming it new-firmware.bin ensures us it will flash, and we can flash back to the factory firmware if we have to without changing its name.
Now toss that bin file onto an empty fat32 or exfat formatted SD card, unplug any USB cables if you’re using octoprint, insert the SD card and power on. The LCD screen should turn on with the Sovol logo, and it will “stall” here for up to 30 seconds. Mine is usually under 20, then the animation will play and drop you to the main menu.
Now you should re level your bed and enjoy. I also advise running the M303 PID Autotune Marlin feature through the terminal in octoprint. The examples they show are enough to get good PID’s. The factory PID’s are a “safe for all units produced” setting. We can do better. Watch the terminal in octoprint and when it completes punch the numbers it’s shown in on your LCD manually in the advanced settings PID menu. By tuning the extruder and bed, you’ll notice they heat up faster, and don’t over/undershoot very much. If you’ve changed the temp sensor like I have this is a must so you’re not printing at the wrong temps.
Hope this wall of text helps folks out. Have a good one.