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 Printer Settings, Start and End Gcode for each, respectively. Below are the general Printer Settings that you will need to configure a custom profile in your new slicer.
X(Width): 250.0mm Y(Depth): 220.0mm Z(Height): 215.0mm Origin: X0, Y0 Nozzle Size: 0.40mm Material Diameter: 1.75mm Heated Bed: Yes Build Plate Shape: Rectangular G-code Flavor: Marlin
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 M190 S{material_bed_temperature_layer_0} ; Wait for bed 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 M190 S[first_layer_bed_temperature] ; Wait for bed 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