How to setup UBL for Pulse

NOTE:  These setup instructions are meant for informational purposes only, and must be carefully followed to avoid causing damage to your Pulse.  By performing the following steps, you are proceeding at your own risk. MatterHackers is not liable for any damages that may occur.
Early-model E-Series Pulse printers were configured with UBL (Unified Bed Leveling) enabled in the Marlin firmware.  Later-model E-Series Pulse printers were configured with standard Bi-Linear bed leveling enabled -- Bi-Linear configuration will not respond to any UBL commands, so no harm can be done. If your Pulse is configured with Bi-Linear leveling, see this guide.

If you wish to set up multiple Pulse printers to share a single printer profile, or use your Pulse with a third-party slicer, please follow this guide to configure this firmware feature. If opting for this approach, you will need to disable the software leveling within MatterControl, since this will now be controlled via the printer firmware. To do this, please perform the following:

Preparation:

In MatterControl:

  • Navigate to Printer > Features > Probe > Probe Offset and record the Z value.
  • Navigate to Printer > Gcode > Start Gcode and remove the line G29 (if present)
  • IMPORTANT: Navigate to Printer > Hardware > Has Hardware Leveling and enable it.  This will disable software leveling in MatterControl if you plan to continue using this slicer.

UBL Setup:

Step 1:  Connect your Pulse to MatterControl and navigate to the Terminal tab, then enter the following commands in the input field at the bottom of the tab for the UBL setup:

Enter each command individually; do not type anything following the semicolon.
G28         ; Home XYZ
G29 P1      ; Do automated probing of the bed
G29 P3      ; Smart Fill Repeat, used to fill unreachable points
G29 S0      ; Save UBL mesh points to slot 0 (EEPROM)
G29 F 10.0  ; Set Fade Height for correction at 10.0 mm
G29 A       ; Activate the UBL System
M500        ; Save configuration (WARNING - UBL will be active at power up, before any G28)

Step 2:  You will now need to set the Z offset by entering the following commands:

Enter each command individually; do not type anything following the semicolon.
M503        ; This will view your current EEPROM settings; you should now see a lot of XYZ values (this is the new mesh leveling data)

M851 Z{recorded offset value}  ; This will adjust the Z offset; enter the Z offset value that you recorded earlier (example: M851 Z-1.34)

M500        ; Save configuration

Step 3:  Power-reset your Pulse printer (turn it OFF, then ON again).

Step 4:  If you will continue to use the MatterControl slicer, navigate to Save > Export and un-check the "Apply leveling data to exported gcode" option, since you no longer require software leveling.

Congratulations!  Your Pulse's firmware UBL feature is now configured!

Note:  To remove all of the UBL leveling data and restore the EEPROM to its default state, simply enter M502 then power-reset your printer.

You may verify that the EEPROM has been reset by typing M503 to review the resulting data -- this should no longer show the mesh scan coordinates.

Gcode Setup:

UBL will allow you to print from third-party slicers which do not store, nor apply any leveling data (such as Cura or PrusaSlicer). You will need to setup the proper Start and End Gcode for each, respectively.

Note: The following Gcode does not distinguish between different removeable build surfaces. If switching between build surfaces (ie. BuildTak > Powder-coated PEI) you will need to reconfigure your Z Offset.

For Cura, the Start Gcode should resemble something like this:

G28 ; Home all axes
M140 S{material_bed_temperature_layer_0} ; Set bed temp
M190 S{material_bed_temperature_layer_0} ; Wait for bed temp
M104 S{material_print_temperature_layer_0} ; Set nozzle temp
M109 S{material_print_temperature_layer_0} ; Wait for nozzle temp

G92 E0 ; Reset extruder
G1 X5 Y5 Z0.8 F4800 ; Move to X5 Y5 Z0.8
G1 X100 Z0.4 E30 F1000 ; Extrude line while gradually getting closer to bed
G92 E0 ; Reset extruder
G1 E-2 F3600 ; Retract filament

For PrusaSlicer, the Start Gcode should resemble something like this:

G28 ; Home all axes
M140 S[first_layer_bed_temperature] ; Set bed temp
M190 S[first_layer_bed_temperature] ; Wait for bed temp
M104 S[first_layer_temperature] ; Set nozzle temp
M109 S[first_layer_temperature] ; Wait for nozzle temp

G92 E0 ; Reset extruder
G1 X5 Y5 Z0.8 F4800 ; Move to X5 Y5 Z0.8
G1 X100 Z0.4 E30 F1000 ; Extrude line while gradually getting closer to bed
G92 E0 ; Reset extruder
G1 E-2 F3600 ; Retract filament

The End Gcode should resemble something like this for most slicers:

G91  ; Set relative positioning
G1 E-2 F2400  ; Retract filament
G1 Z5  ; Move nozzle up
G90  ; Set absolute positioning
G0 X5 Y215 F3000  ; Move to the back
G28 Z0  ; Home Z axis

M104 S0  ; Turn off nozzle temp
M140 S0  ; Turn off bed temp
M107  ; Turn off fan
M84  ; Disable motors

Still need help? Contact Us Contact Us