Request: Faster print start

And actually a good one. But you have to understand there’s three groups that use the BL printers.

  1. The Pros who love the high speed and amazing quality of prints, many whom have been printing for years.
  2. The newer users who are aware that 3D printing is placing molten polymers from dozens of companies in dozens of types and colors correctly in layers and movements that require hundredths, and sometimes thousandths, of a mm accuracy to avoid disaster after 4 hours of printing. They are marked by a wiliness and eagerness to learn.
  3. The new users who think that 3D printing is just like buying an inkjet and want everything handled with one push button results.

The last group is destined to have a wakeup call not soon after buying, when they discover that for all the wonder the Bambu printers bring that it’s still complex mechanics and chemistry with a sharp learning curve, not a magic box. :wink: :grin:

BTW - BL is fully aware of the startup time issue, there are numerous threads on it including ones with solutions.

EDIT:

Just to be clear here @anxodia - I fully support your suggestion, and your posting it! But you were given multiple suggestions from people that collectively probably have thousands of hours troubleshooting 3D issues and you chose to ignore their efforts. If you expect to get help here you might listen to it, or at least thank the people who were offering you help. Eh? :wink:

3 Likes

Thanks to super printer users like Julie777, Flashy_DE from this thread, Throughtheframe and many others.

1 Like

Be sure to throw yourself in there! :grin:

Na’vi - I see you. :wink:

2 Likes

At least it would be nice to have a checkbox, with “Fast start”, that would only do a homing, prime line and then start.

If I got some free time, I will try to see if I can compile Bambulab, I have worked a little on Super Slicer years ago, this is a nightmare to compile… and code is… well it started a long time ago, so a bit messy with all those years of modifications

2 Likes

Now that is an idea.

I’ll repeat myself; you Sir, are a madman. I love it. :grin:

Any thoughts about involving about involving SoftFever?

3 Likes

Well sometime you can’t say why you like something or another, I used to prefer the fork Super Slicer to Prusa Slicer, but for now I prefer Bambu Studio to the fork Orca Slicer, go figure why !! :slight_smile:

Yeah, I hear that. I’m about to DL the new 1.6 Studio and take it for a ride with the Beta Firmware. EDIT: I push people towards OrcaSlicer because of the Calibrations which handles a whole boat load of issues people come here for help with, looking for a “setting” to change when the issue is flow rate.

2 Likes

My landlord actually thought I’m sliding around metal chairs on the floor. Didn’t wanna tell him it’s my X1C calibrating before print start LOL

1 Like

You might look at the issue that I submitted to Orca Slicer about print control options.

You might have something to add.

I am using the multiple printer profiles as above, but it is not ideal.

In addition to the ability to select print options when starting a print that I requested, I think some smart options would be nice.

If I send a print and it is using a different build plate than the last print then bed height calibration could be turned on automatically.

There are many conditions that could control options automatically, and be much better than the BL solution which is be ultra cautious to protect the novice user.

Events that could trigger different startup:

  • change type of plate
  • printer has been restarted
  • filament type has been changed
  • it has been 1 week since last calibration

There are so many possibilities to make it better. I like to make it more automated, so I don’t have to remember to do the correct thing every time, but I also don’t want to have to select “skip calibration” before every print.

3 Likes

I don’t have a checkbox, so I have to select before I slice. However, it is pretty easy to select the “.4 P1P fast start” profile. I use it for almost every print.

Look at the prepare time. :grin:

image

Of course it will take longer to start printing if the bed is cold. The estimate does not include heating time.

1 Like

I’ll throw my hat in the ring.

Here’s my optimized startup gcode. It skips calibration (do it manually), optimizes the order of operations to reduce time spent homing, and a few other tweaks.

I’ll post with more details when I’m feeling less lazy and sleep deprived.

Start code:

;===== X1C SHAYDED remix                      =====
;===== Date: 2023-06-04                       =====
;===== Based on thrutheframe as of 2023-05-11 =====
; * Start by homing, and remove unnecessary homing
; * Don't wait for bed temp until actually needed
; * Don't raise bed so much after nozzle load line to prevent stringing
; * Bump Z motor current back up to 0.75A
; * Removed LIDAR calibration

;===== Machine: X1C thrutheframe remix ===============
;===== Date: 2023 May 11 ===========================

;===== Note: ===============
;change AB motor current to 1.1A (( 1.68/1.414)*90%) reduce heat build up but still enuf power for fast print
;change Z motor current from 0.75A to 0.7A
;added a code for textured pei plate to lower nozzle by z-0.04 when printing
;added a code for high temp plate/WhamBam PEX to raise nozzle by z+0.02 when printing

;***** START **************************************
M960 S5 P1                       ;turn on logo lamp
M104 S75                         ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle

;===== reset machine status ===============
M17 Z0.4                         ;lower the z-motor current
G28                              ;home
M17 X1.1 Y1.1 Z0.75              ;reset motor current to default
G90

M220 S100                        ;reset Feedrate
M221 S100                        ;reset Flowrate
M73.2   R1.0                     ;reset left time magnitude
M1002 set_gcode_claim_speed_level : 5
M221 X0 Y0 Z0                    ;turn off soft endstop to prevent protential logic problem
G29.1 Z{+0.0}                    ;reset z offset / clear z-trim value


;===== heatbed preheat ===============
M1002 gcode_claim_action : 2
M140 S[bed_temperature_initial_layer_single] ;set bed temp


;===== register first layer scan ===============
{if scan_first_layer}
    M977 S1 P60
{endif}


;===== air circulation within enclosure ===============
;  not needed until later. PLA heat creep is non-issue
;;;{if filament_type[initial_no_support_extruder]=="PLA"}
;;;	M106 P3 S150  ;turn on chamber fan to keep PLA from heat creep
;;;{endif}

;  leave fan off unless requested by filament settings
;;;M106 P2 S100  ;turn Aux fan on the circulate air


;===== prepare print temperature and material ===============
M104 S[nozzle_temperature_initial_layer] ;set extruder temp
;  not needed
;;;G91
;;;G0 Z10 F1200           ;move bed down by 10mm just in case
G90
;  already homed
;;;G28 X                  ;home X and Y axis
M975 S1                ;turn ON vibration suppression
G1 X60 F12000
G1 Y245 
G1 Y265 F3000          ;place nozzle over poop chute
M620 M
M620 S[initial_no_support_extruder]A   ;switch material if AMS exist
    M109 S[nozzle_temperature_initial_layer]
    G1 X120 F12000

    G1 X20 Y50 F12000
    G1 Y-3
    T[initial_no_support_extruder]
    G1 X54 F12000
    G1 Y265
    M400
M621 S[initial_no_support_extruder]A
M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}

M412 S1                ;turn on filament runout detection


;===== prepare print temperature and material ========================
;===== reduce the purge to 40+40mm vs 50+50mm ========================

;M109 S[nozzle_temperature_initial_layer] ;enable this and disable the line below only if u use 1 kind of filament
M109 S245          ;set nozzle to common flush temp, use this if you swap different types of filaments regularly ie PLA to PTEG
M106 P1 S0            ;turn OFF part cooling fan
G92 E0
G1 E40 F200        ;purge 40mm vs 50mm (stock)
M400
M104 S[nozzle_temperature_initial_layer]
G92 E0
G1 E40 F200        ;purge 40mm vs 50mm (stock)
M400
M106 P1 S255          ;turn ON part cooling fan
G92 E0
G1 E5 F300
M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit
G92 E0
G1 E-0.5 F300      ;retraction to help removing waste filament

G1 X70 F9000
G1 X76 F15000
G1 X65 F15000
G1 X76 F15000
G1 X65 F15000      ;shake to put down garbage
G1 X80 F6000
G1 X95 F15000
G1 X80 F15000
G1 X165 F15000     ;wipe and shake
M400


;===== wipe nozzle ===============
M1002 gcode_claim_action : 14
M975 S1              ;turn ON vibration suppression
M106 S255            ;turn ON part cooling fan
G1 X65 Y230 F15000
G1 Y264 F6000
M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}
G1 X100 F15000       ;first wipe mouth

G0 X135 Y253 F15000  ;move to 3mm from bed edge and center of exposed steel tab
G28 Z P0 T300        ;home Z with low precision and permit 300deg temperature
G29.2 S0             ;turn OFF ABL
G0 Z5 F1200          ;lower hotbed by 5mm

G1 X60 Y265
G92 E0
G1 E-0.5 F300        ;retrack more
G1 X100 F5000        ;second wipe mouth
G1 X70 F15000
G1 X100 F5000
G1 X70 F15000
G1 X100 F5000
G1 X70 F15000
G1 X100 F5000
G1 X70 F15000
G1 X90 F5000
G0 X128 Y261 Z-1.2 F1200  ;move to exposed steel tab and push nozzle onto it
M104 S140                 ;set temp down to heatbed acceptable at 140 degree
M106 S255                 ;turn ON part cooling fan (G28 has turned it off)

M221 S                    ;push soft endstop status
M221 Z0                   ;turn OFF Z axis endstop
G0 Z0.5 F20000            ;nozzle wipe cycle
G0 X125 Y259.5 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y262.5
G0 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y260.0
G0 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y262.0
G0 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y260.5
G0 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y261.5
G0 Z-1.01
G0 X131 F211
G0 X124
G0 Z0.5 F20000
G0 X125 Y261.0
G0 Z-1.01
G0 X131 F211
G0 X124
G0 X128
G2 I0.5 J0 F300
G2 I0.5 J0 F300
G2 I0.5 J0 F300
G2 I0.5 J0 F300

M109 S140           ;wait nozzle temp down to heatbed acceptable
G2 I0.5 J0 F3000
G2 I0.5 J0 F3000
G2 I0.5 J0 F3000
G2 I0.5 J0 F3000

M221 R              ;pop softend status
G0 Z10 F1200        ;lower hotbed by 10mm
M400
G0 Z10          
G0 F15000
G0 X128 Y128 
G29.2 S1            ;turn on ABL
M106 S0             ;turn OFF part cooling fan

;===== mech mode fast check ===============
G0 X128 Y128 Z10 F18000
M400 P200
M970.3 Q1 A7 B30 C80  H15 K0
M974 Q1 S2 P0

G0 X128 Y128 Z10 F18000
M400 P200
M970.3 Q0 A7 B30 C90 Q0 H15 K0
M974 Q0 S2 P0

M975 S1     ;turn ON vibration supression
G0 F15000
G0 X230 Y15
G28         ;home all

;===== check scanner clarity ===============
G1 X128 Y128 F15000
;  already homed
;;;G28 Z P0
M972 S5 P0
G1 X230 Y15 F15000
;===== check scanner clarity end ===============


;===== bed leveling ===============
M1002 judge_flag g29_before_print_flag
M622 J1
    M1002 gcode_claim_action : 1
    G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}
    M400
    M500    ;save bed leveling data
M623


;===== home after wipe mouth ===============
M1002 judge_flag g29_before_print_flag
M622 J0
    M1002 gcode_claim_action : 13
    ;  already homed
    ;;;G28
M623

M975 S1 ;turn ON vibration supression after homing


;===== air circulation within enclosure ===============
{if filament_type[initial_no_support_extruder]=="PLA"}
	M106 P3 S150  ;turn on chamber fan to keep PLA from heat creep
{endif}

;  leave fan off unless requested by filament settings
;;;M106 P2 S100  ;turn Aux fan on the circulate air


M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}  ;set extrude temp earlier to reduce wait time


;===== start heatbed scan ===============
{if scan_first_layer}
    M976 S2 P1 
    G90
    G1 X128 Y128 F15000
    M976 S3 P2  ;register void printing detection
{endif}


;===== nozzle load line ===============
M975 S1 ;turn ON vibration supression
G90 
M83     ;put the extruder motor into relative mode
T1000
G1 X18.0 Y1.0 Z0.8 F18000                       ;Move to start position
M190 S[bed_temperature_initial_layer_single]    ;wait for bed temp
M109 S{nozzle_temperature[initial_no_support_extruder]}    ;wait for nozzle temperature
G1 Z0.2 
G1 E2 F300
G1 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5)     * 60} 
G1 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}
G1 X239.5
G1 E0.2
G1 Y1.5 E0.700
G1 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5)     * 60} 
;  don't lift nozzle becuse it causes stringing
;;;G0 Z0.8                                         ;Lift the nozzle up by 0.8mm 
M400


;===== for Textured PEI Plate, High Temp Plate and Wham Bam Plate ===============
;curr_bed_type={curr_bed_type}
{if curr_bed_type=="Textured PEI Plate"} 
      G29.1 Z{-0.04}  ;squish of -0.04mm for Textured PEI Plate
; maybe a bad idea?
;{elsif curr_bed_type=="High Temp Plate"} 
;      G29.1 Z{+0.02}  ;raise of 0.02mm for High Temp or Wham Bam Plate
{endif}

;===== turn off light and wait extrude temperature ===============
M1002 gcode_claim_action : 0

M400            ; wait all motion done 
; we didn't turn on the scanner 
;M973 S4         ;turn OFF scanner
; should already be at temp
;M109 S[nozzle_temperature_initial_layer]
; laser not used
;M960 S1 P0      ;turn OFF laser
;M960 S2 P0      ;turn OFF laser
M106 S0         ;turn OFF fan
M106 P2 S0      ;turn OFF Aux fan 
M106 P3 S0      ;turn OFF chamber fan


;===== Purge line sequence ====================
M975 S1             ;turn on vibration suppression
G90                 ;set all axis to absolute
M83
T1000
G1 E{-retraction_length[initial_no_support_extruder]} F1800
;  moved up earlier
G0 Z1.0             ;move heatbed to 1.0mm to allow oozing.
;;;G0 Z5 F300          ;move heatbed down by 5mm
G0 X254.5 F6000     ;move toolhead to the right
G0 Y50 F6000        ;move toolhead 50mm on Y axis
;;;G0 Z1.0             ;move heatbed to 1.0mm to allow oozing. 
G1 E{retraction_length[initial_no_support_extruder]} F1800
;  should already be at temp
;M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}
M400
G0 Z0.2             ;lower nozzle to printing height. 
G1 E1 F300          ;extrude 1mm of filament at 5mm/s
G0 X253 
G1 Y175 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} 
G0 X252.5
G1 Y50 E6.4


;===== Quick wipe sequence ====================
G0 Y48 Z1.0 F6000   ;1mm lift and move 2mm on Y
G0 Z0.1             ;press nozzle onto bed
G0 Y44 F3000        ;start of 4 wipes movement
G0 Y48 F3000
G0 Y44 F3000
G0 Y48 F3000
G0 Y44 F3000
G0 Y48 F3000
G0 Y44 F3000        ;end of 4 wipes movement
G0 Z 0.8            ;raise the nozzle to prevent scratching of bed. 

G92 E0

End code:

;===== X1C SHAYDED remix                      =====
;===== Date: 2023-06-04                       =====
;===== Based on thrutheframe as of 2023-03-14 =====
; * Lower bed before waiting to retract filament to AMS

G92 E0 				            ;zero the extruder
G1 E-0.8 F1800 			        ;retract
G1 Z{max_layer_z + 0.5} F900 	;lower z a little
M400 				            ;wait for buffer to clear
G1 X65 Y245 F12000 		        ;move toolhead to safe position
G1 Y265 F3000
M991 S0 P-1                     ;end smooth timelapse at safe pos
M400 S2                         ;wait for last picture to be taken

G1 X65 Y245 F12000
G1 Y265 F3000
M140 S0 	    ;turn OFF bed
M106 S0 	    ;turn OFF part cooling fan
M106 P2 S0 	    ;turn OFF Aux fan
M106 P3 S0 	    ;turn OFF chamber fan
M960 S5 P0      ;turn OFF logo lamp

G1 X100 F12000 	; wipe

;===== lower bed ===============
M17 S
M17 Z0.4 	    ;lower z motor current to reduce impact if there is something in the bottom
{if (max_layer_z + 100.0) < 250}
    G1 Z{max_layer_z + 100.0} F600
    G1 Z{max_layer_z +98.0}
{else}
    G1 Z250 F600
    G1 Z248
{endif}
M400 P100
M17 R 		    ;restore z current
;===== END lower bed ===============


;===== retract filament to AMS ===============
M620 S255
G1 X20 Y50 F12000
G1 Y-3
T255
G1 X65 F12000
G1 Y265
G1 X100 F12000 	;wipe
M621 S255
M104 S0 	    ;turn OFF hotend
M400 		    ;wait all motion done
;===== END retract filament to AMS ===============

G90
G1 X128 Y250 F3600

M220 S100     ;Reset feedrate magnitude
M201.2 K1.0 	;Reset acc magnitude
M73.2   R1.0 	;Reset left time magnitude

M1002 set_gcode_claim_speed_level : 0

M17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power

I’ve tested it a few times and it’s given me good results. I’ve also managed to reduce the possibility of stringing after the purge line.

2 Likes

I am verry interrested by this subject too, I am trying your version, works nice.

But I still think that would really be great to have an option in Studio to bypass nearly every thing except homing

EDIT:
Do you know what the purpose of doing two purge lines (nozzle load & purge line) ?

I’m not sure the exact reason for two purge lines.

But from observing it, I think the second one is more important, especially the little wipe sequence at the very end.

I’ve considered either connecting the two lines for easier removal, or just eliminating the first line all together.

Thank you for the code.
Do have tweaked the code more?

The fan isn’t that loud lol

Put a different fan in that’s about it.
When dealing with machinery, there is going to be noise

Would you mind sharing details for the fast 11 second startup code. I have been looking everywhere to speed up multiple identical prints.

Looks very very promising. Would it be possible to get a look at your gcodes for “fast start”?

Welcome to the forum!

There is good thread about optimized start and end g-code for P series printers.

3 Likes

But its not a real fast start. Only a little optimized. The fastest start would be

  • heat bed and nozzle
  • homing
  • print
    Which include that the AMS should not unload at the end of print and will start with the same filamet as it stoped before. Some people did this already.