I love the printer, but I hate the long startup sequence. I dont want to use any unofficial start gcode.
Please try to improve the startup sequence time or atleast give us a second “quick print” option where it only does the absolute necessary steps in order to not damage anything.
If I print a small objects that takes 8 minutes I dont want to wait 7minutes.
If turning off bed leveling and flow calibration, it still takes a few minutes until it actually starts printing and its too long for my taste.
I find that a lot of the startup time is bed heating, so what I do is manually set the bed to heating before I start the print. The nozzle heats quickly enough not to bother. (People on 240V power probably don’t need to preheat the bed.)
To bad you don’t want any unofficial startup code.
I have one startup that just modifies the standard code so that it doesn’t wait for the bed to heat up before continuing with steps that have nothing to do with the bed. That saves a little more than a minute.
My fast startup code that I use when nothing has changed from the last print shows in the slicer preview as 11seconds. It actually takes exactly as long as it takes for the bed and print head to heat up. (The slicer can’t estimate time for heating, which can be different based on the current temp.)
why you dont want use “unofficial” start g-codes?
the g-code in the slicer is a configuration point and a setting like every other setting in the slicer. Yes it is a advanced setting, but it is es setting. every user can change it.
and second, the slicer is open source, so everybody can add changes on it. If someone have a good improvement, it find the way into the code.
for ex. most parts of this code is now in the standard profile.
u can reduce the speed of the chamber fan in the filament settings if you want and so on. but all this settings are your settings.
the delivered Standard Settings are, I would say, working suggestions and should work for most of the users, but these settings must be changed if you want good results in your special environment and your model.
I get that, but dont you think they should
try to improve their product? Not everyone wants to mess around with the slicer settings. This is not an ender 3… Its an X1C and doesnt require do change any settings unless you want something specific.
Im sure I cant be the only one that wants the startup to be faster, so why shouldnt they invest some time to find the sweetspot.
You can change as many things as you want in your start gcode, but you will never know the impact unless you do some actuall testing. For my part I dont want to use some gcode that is faster but potentionally misses out on some better calibration without taking more time.
Im sure bambulab does already have some data on how accurate the first layer will be, if it only does one of the two measuring methods for example. And thats just one thing of many. So they could give us a thought through improved start gcode.
Its a simple request. If they won’t adress it its fine too…
They have to cater to the masses - those masses do not know how to tweak gcode or set up custom profiles.
The masses want a right here, right now result, so BL is programed to accommodate them and take the inexperienced user out of the equation, like making sure the print bed is clean before the plate is put back on if it was removed. Make sure the plate is position properly. Make sure it knows what the filament is going to do because the end user may have changed it.
The list of probabilities is long.
Be grateful that you have the option to edit the start and end gcode to get your fast “Print again?”
And actually a good one. But you have to understand there’s three groups that use the BL printers.
The Pros who love the high speed and amazing quality of prints, many whom have been printing for years.
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.
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.
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?
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
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 !!
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.
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.
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.
Of course it will take longer to start printing if the bed is cold. The estimate does not include heating time.
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.