P2S Wiper Problems

Hi there!
I’m new here, and have had a p2s for a few weeks.

My concern is that either the wiper or end gcode doesn’t seem to work properly. When starting a print, the leftover filament on the nozzle can somethimes be flung onto the plate.

I guessed that adding a run through the wiper in the end gcode will wipe it, although I may be wrong

I’m worried that either the bed leveling will get confused or it will cling to the nozzle and cause a blob. Is there any way to fix this? Either by editing the start/end gcode or some other way.

There’s also a chance that I’m paranoid.

Thanks!

2 Likes

My P2S does this too (my first 3d printer). Here’s whats often left after a print, i get that the extruder is hot and whatever is left will leak out, but shouldnt it be going down the shoot?
I have a photo of what im talking about but dont think i can upload it as a forum newbie.

2 Likes

This is indeed an issue.
But it always was a thing for all BL printers. P1/X1 were very famous for this, and even H2 series does poop back occasionally.

I have discovered that there is indeed a purge motion at the end of the print, but it only does it over the thingy that sends the poop out the back, not the nozzle wiper. I’m going to look into where in the start gcode the nozzle wiping motion is and see if I can copy that for the end gcode.

My P2S does this too. I hope Bambu Lab’s can resolve this via an update as I’m constantly having to clear the plate prior to printing because of this.

I have a lot of nozzle clumiping issues, Bambu will not fix this ever, if you look at the forums these issues have been going on for years on multiple models, Bambu dont care about the issues, they just seel printers and are trying to stop everyone buying any other filament apart from bambu.

First thing I would suggest is a nozzle wiper,

This is the best so far for P2S, but it does hit the bed for some users, me being one of them, so I sliced off a mm to fix the issue for me, then you need a GCODE to add extra wipes, I just need to figure out the X and Y position to make my printer wipe every 20 layers.

Would be easy to get the printer to wipe at the end of print, as there is a section in the machine settings for GCODE

I’m using the nozzle wiper mentioned above. Works for me.
However im seeing another issue. I’m getting a lot of filament buildup under the silicone sock. When the hotend is cold, i cant even remove the nozzle. Theres always filament seeping between the nozzle and heating assembly. every 20 hours i have to clean it. Anyone else having this issue?

Funny you should mention that, as I was about to post this. After a lot of experimenting I have come to the conclusion the nozzle clumping is the cause of all my PETG printing issues,

The extra filament you mention builds up around the outside of the nozzle, eventually it gets to a size where it interferes with the prints, causing a scraping effect, worst on first layers as it has nothing to adhere too.

So, fixes,

  1. solve the nozzle clumping issue, perhaps reduce flow rate
  2. add extra wipes to every 20 layer or so.

BTW, to clean this, set your nozzle temp to 300 degrees C, carefully wipe the nozzle yourself with a thick layer of kitchen roll.,

My nozzle clumping is actually causing the silicone sock to degrade its that bad.

1 Like

Well, I’m not getting to the point where it interferes with the print or clumbs around the tip. The tip is always clean. It’s more likely that that the wipingpad squishes excessive materials from around the nozzle underneath the silicone sock. There it builds up.

What filament are you using?

PLA and PETG from a variety of vendors.
As mentiond, its not causing any problems with my prints, it’s just annoying when swapping nozzles.

I’m not a fan of modifying my units, but the wiper was one of the few things I changed on my X1 Carbon. Every now and then, it would grab the waste and drag it onto the build plate, ruining several prints. I bought a custom-made silicone wiper that has worked flawlessly ever since.

It’s quite surprising that the one component everyone complains about still hasn’t been fixed on newer units like the P2S. Has the wiper design changed from the P1S?

Yes, it has. Looks to be a cross between P1 wiper and A1.

Then it’s even worse that they didn’t fix the original problem at all.

I looked in the start gcode and found this

;===== first homing start =====
M1002 gcode_claim_action : 13
G28 X T300
G150.3
M972 S24 P0
M972 S26 P0 C0
M972 S42 P0 T5000
G150.1 F8000 ; wipe mouth to avoid filament stick to heatbed
G90
G1 X128 Y128 F30000
G28 Z P0 T400
M400
;===== first homign end =====

I found a command that says it will wipe the nozzle. Does anyone know if this will work or not if I just add it on the end gcode? Do I need some additional commands?

About the wiper:
Just had a 10 hour print, PETG with PLA interface for support.
~60 filament changes.
This is what my nozzle looks like after…






Theres resedue around the tip, behind the nozzle, even behind the heating element:


And yes, the nozzle does sit correctly and the clamp closes as intended:

Anyone else having this amount problems? I cant even remove the nozzle without preheating to loosen things up. I have never experienced something like this on my A1.

1 Like

My nozzle looks the same, with some filament attached to the base where it doesn’t belong. But I cannot get my nozzle off so don’t know what the backside looks like. :smiley: (help)
I think the wiper sometimes pushes filament upwards instead of collecting it.

For me it helped to heat the nozzle to 250, wait a minute, then back to 80.
Once it reached back down to 80 i use some papertowel to grab and pull the nozzle. :smiley:
Then i used a scalpel while still warm zu clean the hotend and heater.

I have finished modifying the start and end gcodes to avoid having filament strands on the bed.

Start Gcode

;M1002 set_flag extrude_cali_flag=1
;M1002 set_flag g29_before_print_flag=1
;M1002 set_flag auto_cali_toolhead_offset_flag=1
;M1002 set_flag build_plate_detect_flag=1

;======== P2S start gcode==========
;===== 2025/11/04 =====

M140 S[bed_temperature_initial_layer_single] ; heat heatbed first
M993 A0 B0 C0 ; nozzle cam detection not allowed.
M400

;=====printer start sound ===================
M17
M400 S1
M1006 S1
M1006 A53 B9 L99 C53 D9 M99 E53 F9 N99
M1006 A56 B9 L99 C56 D9 M99 E56 F9 N99
M1006 A61 B9 L99 C61 D9 M99 E61 F9 N99
M1006 A53 B9 L99 C53 D9 M99 E53 F9 N99
M1006 A56 B9 L99 C56 D9 M99 E56 F9 N99
M1006 A61 B18 L99 C61 D18 M99 E61 F18 N99
M1006 W
;=====printer start sound ===================

M620 M ;enable remap
G389

;===== avoid end stop =================
G91
G380 S2 Z22 F1200
G380 S2 Z-12 F1200
G90
;===== avoid end stop =================

;===== reset machine status =================
M204 S10000
M630 S0 P1
G90
M17 D ; reset motor current to default
M960 S5 P1 ; turn on logo lamp
G90
M220 S100 ;Reset Feedrate
M1002 set_gcode_claim_speed_level: 5
M221 S100 ;Reset Flowrate
M73.2 R1.0 ;Reset left time magnitude
G29.1 Z{+0.0} ; clear z-trim value first
M983.1 M1
M982.2 S1 ; turn on cog noise reduction
M983.4 S0
;===== reset machine status =================

;==== set airduct mode ====
;==== if Chamber Cooling is necessary ====
{if (overall_chamber_temperature >= 40)}
M145 P1 ; set airduct mode to heating mode for heating
M106 P2 S255 ; turn on filter fan
{else}
{if (min_vitrification_temperature <= 50)}
M145 P0 ; set airduct mode to cooling mode for cooling
M106 P2 S255 ; turn on auxiliary fan for cooling
M1002 gcode_claim_action : 29
M191 S0 ; wait for chamber temp
M106 P2 S102 ; turn on chamber cooling fan
M106 P10 S0 ; turn off left aux fan
{else}
M145 P1 ; set airduct mode to heating mode for heating
M106 P2 S127 ; turn on 50% filter fan
{endif}
{endif}
;==== set airduct mode ====

;===== start to heat heatbed & hotend==========
M1002 gcode_claim_action : 2
M1002 set_filament_type:{filament_type[initial_no_support_extruder]}
M104 S140 A

G29.2 S0 ; avoid invalid abl data

;===== first homing start =====
M1002 gcode_claim_action : 13
G28 X T300
G150.3
M972 S24 P0
M972 S26 P0 C0
M106 P1 S255
M106 P2 S255
M972 S42 P0 T5000
G150.1 F8000 ; wipe mouth to avoid filament stick to heatbed
M106 P1 S0
M106 P2 S0
G90
G1 X128 Y128 F30000
G28 Z P0 T400
M400
;===== first homign end =====

;===== detection start =====
M1002 gcode_claim_action : 11
M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-80} A ; rise temp in advance
M972 S19 P0 T5000 ;plate type detection
;===== detection end =====

;===== prepare print temperature and material ==========
M400
M211 X0 Y0 Z0 ;turn off soft endstop
M975 S1 ; turn on input shaping

G29.2 S0 ; avoid invalid abl data
G150.3
{if ((filament_type[initial_no_support_extruder] == “PLA”) || (filament_type[initial_no_support_extruder] == “PLA-CF”) || (filament_type[initial_no_support_extruder] == “PETG”)) && (nozzle_diameter[initial_no_support_extruder] == 0.2)}
M620.10 A0 F74.8347 H{nozzle_diameter[initial_no_support_extruder]} T{flush_temperatures[initial_no_support_extruder]} P{nozzle_temperature_initial_layer[initial_no_support_extruder]} S1
M620.10 A1 F74.8347 H{nozzle_diameter[initial_no_support_extruder]} T{flush_temperatures[initial_no_support_extruder]} P{nozzle_temperature_initial_layer[initial_no_support_extruder]} S1
{else}
M620.10 A0 F{flush_volumetric_speeds[initial_no_support_extruder]/2.405360} H{nozzle_diameter[initial_no_support_extruder]} T{flush_temperatures[initial_no_support_extruder]} P{nozzle_temperature_initial_layer[initial_no_support_extruder]} S1
M620.10 A1 F{flush_volumetric_speeds[initial_no_support_extruder]/2.4053
60} H{nozzle_diameter[initial_no_support_extruder]} T{flush_temperatures[initial_no_support_extruder]} P{nozzle_temperature_initial_layer[initial_no_support_extruder]} S1
{endif}

M620.11 P0 L0 I[initial_no_support_extruder] E0
M620.11 K0 I[initial_no_support_extruder] R0

M620 S[initial_no_support_extruder]A ; switch material if AMS exist
M1002 gcode_claim_action : 4
M1002 set_filament_type:UNKNOWN
M400
T[initial_no_support_extruder]
M400
M628 S0
M629
M400
M1002 set_filament_type:{filament_type[initial_no_support_extruder]}
M621 S[initial_no_support_extruder]A
M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}
M400
M106 P1 S0
M400
G29.2 S1
;===== prepare print temperature and material ==========

;===== auto extrude cali start =========================
M975 S1
M1002 judge_flag extrude_cali_flag
M622 J0
M983.3 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4} A0.4 ; cali dynamic extrusion compensation
M623

M622 J1
M1002 set_filament_type:{filament_type[initial_no_support_extruder]}
M1002 gcode_claim_action : 8
M109 S{nozzle_temperature[initial_no_support_extruder]}
G90
M83
M983.3 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4} A0.4 ; cali dynamic extrusion compensation
M400
M106 P1 S255
M400 S5
M106 P1 S0
G150.3
M623

M622 J2
M1002 set_filament_type:{filament_type[initial_no_support_extruder]}
M1002 gcode_claim_action : 8
M109 S{nozzle_temperature[initial_no_support_extruder]}
G90
M83
M983.3 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4} A0.4 ; cali dynamic extrusion compensation
M400
M106 P1 S255
M400 S5
M106 P1 S0
G150.3
M623
;===== auto extrude cali end =========================

{if hold_chamber_temp_for_flat_print}
M1002 gcode_claim_action : 58
M104 S{first_layer_temperature[initial_no_support_extruder]}
{if bed_temperature_initial_layer_single > 89}
M1030 S1800
{else}
M1030 S300
{endif}
M1030 C
{endif}

{if filament_type[current_extruder] == “TPU” || filament_type[current_extruder] == “PVA”}
{else}
M83
G1 E-3 F1800
M400 P500
{endif}
M106 P1 S255
G150.2
G150.1 F8000
G0 Z10 F1200
G150.2
G150.1 F8000
G0 Z5 F1200
G150.1 F8000
M106 P1 S0

G91
G1 Y-16 F12000 ; move away from the trash bin
G90
M400

M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-80} A

;===== wipe right nozzle start =====
M1002 gcode_claim_action : 14
G150 T{nozzle_temperature_initial_layer[initial_no_support_extruder]}
M400

{if filament_type[current_extruder] == “PC”}
M109 S170 A
{else}
M109 S140 A
{endif}
G91
G1 Z5 F1200
G90
M400
M106 P1 S255
G150.1
M106 P1 S0
;===== wipe left nozzle end =====

;===== mech mode sweep start =====
M1002 gcode_claim_action : 3
G90
G1 X128 Y128 F20000
G1 Z5 F1200
M400 P200
M970.3 Q1 A10 K0 O1
M970.2 Q1 K1 W74 Z0.01
M974 Q1 S2 P0
M970.3 Q0 A10 K0 O1
M970.2 Q0 K1 W74 Z0.01
M974 Q0 S2 P0
M975 S1
M400
;===== mech mode sweep end =====

;===== bed leveling ==================================
M1002 gcode_claim_action : 54
M190 S[bed_temperature_initial_layer_single]; ensure bed temp
M109 S140 A
M106 S0 ; turn off fan , too noisy
M1002 judge_flag g29_before_print_flag
M622 J1
M1002 gcode_claim_action : 1
{if hold_chamber_temp_for_flat_print}
G29 H
{else}
G29 A1 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}
{endif}
M400
M500 ; save cali data
M623

M622 J2
M1002 gcode_claim_action : 1
{if hold_chamber_temp_for_flat_print}
G29 H
{else}
G29 A2 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}
{endif}
M400
M500 ; save cali data
M623

M622 J0
G28
M623
G29.2 S1

;===== bed leveling end ================================

M985.1 U0 E2
M985.1 U1 E2

M104 S[nozzle_temperature_initial_layer] A
G150.3 ; move to garbage can to wait for temp

;===== wait temperature reaching the reference value =======
M190 S[bed_temperature_initial_layer_single]

;========turn off light and fans =============
M960 S1 P0 ; turn off laser
M960 S2 P0 ; turn off laser
M106 S0 ; turn off cooling fan

;===== wait temperature reaching the reference value =======

M1002 gcode_claim_action : 255
M400
M975 S1 ; turn on mech mode supression

;============switch again==================
M211 X0 Y0 Z0 ;turn off soft endstop
G91
G1 Z6 F1200
G90
M1002 set_filament_type:{filament_type[initial_no_support_extruder]}
M620 S[initial_no_support_extruder]A
M400
T[initial_no_support_extruder]
M400
M628 S0
M629
M400
M621 S[initial_no_support_extruder]A
;============switch again==================

;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==
{if curr_bed_type==“Textured PEI Plate”}
G29.1 Z{0.01} ; for Textured PEI Plate
{else}
G29.1 Z{0.03}
{endif}

;===== nozzle load line ===============================
M1002 gcode_claim_action : 51
G29.2 S1 ; ensure z comp turn on
G90
M83
M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}
M106 P1 S255
M106 P2 S255
G130 O0 X100 Y-0.4 Z0.8 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053} L40 E20 D5
;G130 O0 X100 Y-0.2 Z0.6 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053} L40 E12 D4
G90
M83
G1 Z0.2
M400
M106 P2 S0
M106 P1 S0
;===== noozle load line end ===========================
M1002 gcode_claim_action : 0
G29.99

{if (filament_type[initial_no_support_extruder] == “TPU”) ||
(filament_type[initial_no_support_extruder] == “PLA”) || (filament_type[initial_no_support_extruder] == “PETG”)}
M1015.3 S1 H[nozzle_diameter];enable tpu, pla and petg clog detect
{else}
M1015.3 S0;disable clog detect
{endif}

{if (filament_type[initial_no_support_extruder] == “PLA”) || (filament_type[initial_no_support_extruder] == “PETG”)
|| (filament_type[initial_no_support_extruder] == “PLA-CF”) || (filament_type[initial_no_support_extruder] == “PETG-CF”)}
M1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect
{else}
M1015.4 S0 K0 H[nozzle_diameter] ;disable E air printing detect
{endif}

M620.6 I[initial_no_support_extruder] W1 ;enable ams air printing detect

M1010 Q0 B0.023 S0.01
M1010 Q1 B0.005 S0.01
M1010.1 S1

End Gcode

;======== P2S end gcode ==========
;===== 2025/11/03 =====
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-0.8 F1800 ; retract
G0 Z{max_layer_z + 0.8} F900

; pull back filament to AMS
M620 S65535
T65535
G150.2
M621 S65535

G150.1
G150.3

M400 ; wait all motion done
M991 S0 P-1 ;end smooth timelapse at safe pos

M1002 judge_flag timelapse_record_flag
M622 J1
M400 S5 ;wait for last picture to be taken
M623 ;end of “timelapse_record_flag”

M106 S0 ; turn off fan
M106 P2 S0 ; turn off remote part cooling fan
M106 P3 S0 ; turn off chamber cooling fan
M106 P10 S0 ; turn off left aux fan

M400 ; wait all motion done
M17 S
M17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom
{if (80.0 - max_layer_z/2) > 0}
{if (max_layer_z + 80.0 - max_layer_z/2) < 256}
G1 Z{max_layer_z + 80.0 - max_layer_z/2} F600
G1 Z{max_layer_z + 78.0 - max_layer_z/2}
{else}
G1 Z256 F600
G1 Z256
{endif}
{else}
{if (max_layer_z + 4.0) < 256}
G1 Z{max_layer_z + 4.0} F600
G1 Z{max_layer_z + 2.0}
{else}
G1 Z256 F600
G1 Z256
{endif}
{endif}
M400 P100
M17 R ; restore z current

G150.1
G150.3

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

M1015.3 S0 ;disable clog detect
M1015.4 S0 K0 ;disable air printing detect
;=====printer finish sound=========
M17
M400 S1
M1006 S1
M1006 A53 B10 L99 C53 D10 M99 E53 F10 N99
M1006 A57 B10 L99 C57 D10 M99 E57 F10 N99
M1006 A0 B15 L0 C0 D15 M0 E0 F15 N0
M1006 A53 B10 L99 C53 D10 M99 E53 F10 N99
M1006 A57 B10 L99 C57 D10 M99 E57 F10 N99
M1006 A0 B15 L0 C0 D15 M0 E0 F15 N0
M1006 A48 B10 L99 C48 D10 M99 E48 F10 N99
M1006 A0 B15 L0 C0 D15 M0 E0 F15 N0
M1006 A60 B10 L99 C60 D10 M99 E60 F10 N99
M1006 W
;=====printer finish sound=========
M400
M18

M104 S0 ; turn off hotend
M140 S0 ; turn off bed

This adds fan commands to encourage any strands to fly away during the start sequence, and also adds wiper commands in the end to reduce the amount of leftover fillament on the nozzle.

If you wish to use these gcodes, please do so with caution. I don’t want you to damage your printers. Also, this has only been tested with the P2S, and probably won’t work with other models.

For anyone wondering, here’s the commands that are used:
M106 P1 S255; Toolhead fan on
M106 P1 S0; Toolhead fan off
M106 P1 Sxxx; Ajust toolhead fan %, replace x with fan % on a scale from 0 to 255

; For the Aux fan, use above commands but replace P1 with P2

G150.1; Run across nozzle wiper a bunch of times
G150.3; Go to poop chute