
Upgrade Anycubic 4Max Pro Firmware
Upgrading the Anycubic 4Max Pro firmware to Marlin 2.x.
9 minute read
Categories:

Introduction
The Anycubic 4Max Pro uses Marlin as its firmware image. The printer ships with a very old version of Marlin (version 1.1.7) which does not support the capabilities introduced in the Marlin 2.x firmware. This guide describes how the firmware in the Anycubic 4Max Pro printer can be upgraded to a current version of Marlin.
This guide makes use of the Knutwurst version of Marlin which has been tuned for Anycubic printers such as the 4Max Pro. The Knutwurst Github also has a Wiki which contains a load of useful information about the printer and the firmware. The beginner’s guide is especially informative.
This guide performs the upgrade from a Windows 11 PC using the PUTTY serial port terminal and Cura to upload the firmware. Alternative methods for upgrading the firmware are described on the Marlin website.
Identification of the Firmware
The Knutwurst firmware support a number of different firmware versions for different Anycubic printers. It also supports printers that have been modified with capabilities such as; BLTouch probe, TMC stepstick drivers. As such, it is essential to identify what firmware image in the release needs to be used for this printer. This section describes the process for my selecting the firmware for my particular printer.
Identification of the Printer
This printer is the original Anycubic 4Max Pro.
This shares a firmware image with the Anycubic 4Max Pro 2, which has a filename starting: “4MAX_P2”.
Identification of the Printer Display
The display in the Anycubic 4Max Pro printer is a genuine DWIN / DGUS II display. This has a high resolution with clean sans-serif lettering.
With the genuine DWIN display, the base firmware image is used (i.e. without the “_DGUS” suffix).
Identification of the Mainboard & Drivers
The Anycubic printers use the Trigorilla board to control the printer. However, this board comes in several different variants. The following image shows the variant in the 4Max Pro printer:
Comparing this to the description in the Knutwurst beginner’s guide:
- It is a Trigorilla 1.0 board (has Trigorilla logo without a version number).
- Has 2 TMC stepsticks controlling the X & Y axis motors.
Note
Despite this board having two TMC stepstick drivers, it is not necessary to use the “_TMC” version of the Knutwurst firmware. The wiring of the motors to this board has already been adjusted to ensure the motors move in the correct direction with the standard firmware.As this printer has not had a BL Touch probe fitted, no other variants of the basic firmware are required to handle a BL Touch probe and Trigorilla board variant.
Firmware to Use
With the above identification, the following Knutwurst firmware image is selected:
- 4MAX_P2_vX.X.X.hex
Download the correct firmware image from the Knutwurst Github repository.
Updating the Printer Firmware
The new printer firmware image needs to be downloaded from a computer to the printer over a USB connection. In this guide a Windows 11 PC is used with PUTTY serial port terminal to communicate with the printer settings and Cura to perform the firmware download to the printer.
Install Printer Driver
Connect the PC to the printer using a USB cable. Ensure the printer is switched on.
Check that the printer has a working serial connection to the printer. If this is the first time the printer has been connected it is possible that the PC does not have the necessary CP2102 serial drivers installed to communicate with the printer. Check “Device Manager” for the CP2102 serial driver.
In the case above the CP2102 interface is not functioning. The CP2102 serial drivers need to be downloaded and installed in the PC. It is possible to do this using Microsoft Windows update, looking for the driver in the Windows optional updates.
Alternatively the driver can be downloaded directly from the manufacturer’s website. Download the “CP210x Universal Windows Driver” from that website and unzip it into its own folder. Back in Device Manager, right click on the device indicating the problem and select “Update Driver”.
Select “Browse my computer for drivers”
Select the folder containing the drivers that were downloaded above.
Press “Next” and the new driver should be installed. Check the driver is present in “Device Manager”.
Record Existing Printer Settings
Connect the PC to the printer using a USB cable. Ensure the printer is switched on.
Open “Device Manager” and search for the driver that provides a serial port to to the printer via USB.
Take a note of the COM port the printer is connected to (COM3 in this example).
Start PUTTY and create a serial port session to the printer.
- Select a serial connection type with the COM port identified above.
- For Speed, try 115200 or 250000. One of these two options should work.
- In the Terminal options select “Implicit CR in every LF” option.
Open the PUTTY connection and the printer should respond with a Marlin command line.
When upgarding the printer firmware the printer’s settings will need to be set to its default values. Thus, it is a good idea to record the printer’s current configuration to help restore proper operation after the firmware upgrade.
- In the PUTTY terminal, enter M503
Record the output printer configuration. In my case this was:
echo: G21 ; Units in mm (mm)
echo:; Filament settings: Disabled
echo: M200 D1.75
echo: M200 D0
echo:; Steps per unit:
echo: M92 X100.06 Y80.06 Z800.00 E398.00
echo:; Maximum feedrates (units/s):
echo: M203 X150.00 Y150.00 Z20.00 E80.00
echo:; Maximum Acceleration (units/s2):
echo: M201 X500.00 Y500.00 Z70.00 E15000.00
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P300.00 R700.00 T300.00
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>
echo: M205 B20000.00 S0.00 T0.00 J0.04
echo:; Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:; Mesh Bed Leveling:
echo: M420 S0 Z0.00
echo: G29 S3 I0 J0 Z0.00000
echo: G29 S3 I1 J0 Z0.00000
echo: G29 S3 I2 J0 Z0.06000
echo: G29 S3 I3 J0 Z0.02000
echo: G29 S3 I4 J0 Z-0.08000
echo: G29 S3 I0 J1 Z-0.02000
echo: G29 S3 I1 J1 Z0.04000
echo: G29 S3 I2 J1 Z0.06000
echo: G29 S3 I3 J1 Z0.04000
echo: G29 S3 I4 J1 Z-0.04000
echo: G29 S3 I0 J2 Z-0.02000
echo: G29 S3 I1 J2 Z0.02000
echo: G29 S3 I2 J2 Z0.06000
echo: G29 S3 I3 J2 Z0.06000
echo: G29 S3 I4 J2 Z-0.02000
echo: G29 S3 I0 J3 Z-0.02000
echo: G29 S3 I1 J3 Z0.02000
echo: G29 S3 I2 J3 Z0.04000
echo: G29 S3 I3 J3 Z0.04000
echo: G29 S3 I4 J3 Z-0.02000
echo: G29 S3 I0 J4 Z-0.04000
echo: G29 S3 I1 J4 Z-0.00000
echo: G29 S3 I2 J4 Z0.04000
echo: G29 S3 I3 J4 Z0.02000
echo: G29 S3 I4 J4 Z-0.04000
echo: G29 S4 Z0.00000
echo:; PID settings:
echo: M301 P17.64 I1.15 D67.57
echo: M304 P122.63 I18.95 D529.07
echo:; Linear Advance:
echo: M900 K0.10
echo:; Filament load/unload lengths:
echo: M603 L100.00 U100.00
echo:; Filament runout sensor:
echo: M412 S1
ok
You can now close PUTTY for the moment.
Upgrade Printer Firmware
Connect the PC to the printer using a USB cable. Ensure the printer is switched on.
Start Cura. Select the printer, and then select “Manage Printers”.
Note
Ensure the Cura setting “Enable USB-cable printing” has been enabled.Select “Update Firmware”.
Select “Upload Custom Firmware”.
Select the Marlin firmware file downloaded from the Knutwurst Github repository. Press “OK”. The firmware will be downloaded to the printer.
Close Cura. Switch the printer off and on again.
Open a PUTTY connection, with the settings used above, and the printer should respond with a Marlin command line. The output of the printer should confirm the printer firmware has been updated to the new version of Marlin.
The next step is to reset the printer configuration to the defaults:
- Enter M502 to reset to defaults.
- Enter M500 to save this new configuration.
The printer firmware has now been upgraded. Verify the printer is workling correctly by selecting the Axis menu in the printer’s touchscreen. Jog each axis and verify the printhead moves in the selected direction.
The next steps in the firmware upgrade process is to tune some of the printer’s settings.
Calibrate the Extruder
The amount of filament moved by the extruder is based on the extruder’s E-steps calibration. The default values provided by the new firmware may not match the exact behaviour of the printer’s extruder. Therefore the extruder should be calibrated by commanding it to extrude a set length of filament and checking this amount is indeed extruded.
Connect the PC to the printer using a USB cable. Ensure the printer is switched on. Open a PUTTY connection, with the settings used above, and the printer should respond with a Marlin command line.
- Enter M92
The printer should respond with the motor calibration values. The value after E is the extruder E-steps value.
M92 X100.00 Y80.00 Z800.00 E415.00
Note: that this differs from the previous E-steps value recorded above
echo: M92 X100.06 Y80.06 Z800.00 E398.00
For the process of calibration the printer should be loaded with some filament and the hotend up to temperature for that filament.
With a ruler, measure 120 mm of filament from the top of the extruder. Place a tape flag at this point. Note: It won’t matter if the ruler does not end at zero, the measurements will be relative.
Now, at the Marlin command line, command the printer to extrude 100 mm of filament with the following commands (you don’t need to enter the comments).
M83 ; E relative
G1 E100 F60 ; Extrude 100mm at 1mm/s (60mm/min)
Once extrusion is complete, measure the distance from the top of the extruder to the flag. In this case the measurement was 21.5 mm.
Subtract this measurement from 120 to determine how much filament was actually extruded.
- 120 - 21.5 = 98.5
Now calculate the new E-steps for the extruder using the following formula:
- <new_e-steps> = <current_e-steps> * ( 100 / <actual_extrude_distance>)
So in this example:
- <new_e-steps> = 415.00 * ( 100 / 98.5) = 421.32
Now enter the new value in the Marlin command line using M92:
M92 E421
Now repeat the calibration procedure again until a value for M92 is obtained that exactly extrudes 100 mm.
Once a final value for the e-steps has been obtained, store it in the EEPROM using:
M500
PID Tuning
PID tuning adjusts the heater control algorithms for the hotend and bed to optimise the heating control of these systems. These steps are described in the Tuning guide: