After a LOT of trial and error, I seem to have fixed the retraction issue with my K2 Pro.
To summarize, I kept getting error FR2849 during filament unload and traced it to the end of the filament slightly mushrooming after it was cut and jamming at the entrance to the pfte tube at the top of the extruder. After ruling out mechanical causes by replacing hotend, nozzle, extruder, tubes, etc., a few people suggested it might be an issue with retraction. But not knowing gcode well, I turned to chatgpt and after a few tries, have gotten a new K2 Pro profile that works perfectly without causing retraction errors at the end of the print. I know other people have been having this issue as well, so for those of you interested, here is what I did:
In Creality Print, edit your K2 Pro printer profile and go to the Machine G-Code tab. Replace END_PRINT with:
; === CUSTOM END-OF-PRINT SEQUENCE (OVERRIDING MACRO) ===
G91 ; Relative positioning for toolhead move
G1 Z5 F3000 ; Drop the bed 5mm immediately to prevent burning the print
G90 ; Absolute positioning
G0 X10 Y200 F12000 ; Move toolhead away from the print to a safe zone
; === ANTI-MUSHROOMING RETRACTION ===
M83 ; Relative extrusion mode
G1 E2 F300 ; Dip: Push 2mm forward to clear final nozzle pressure
G1 E-18 F3600 ; Snap: Instantly yank 18mm backward out of melt zone (increased from 15mm)
G4 P2000 ; Freeze: Hold for 2 full seconds so the thin point hardens
G1 E-60 F1200 ; Clear: Smoothly pull the remaining filament past the PTFE entrance
M82 ; Restore absolute mode
G4 P100 ; Small dwell to ensure buffer clears
; ===================================
; === MANUAL SHUTDOWN COMANDS ===
M104 S0 ; Turn off hotend heater immediately
M140 S0 ; Turn off bed heater
M107 ; Turn off all print cooling fans
M84 ; Disable stepper motors
; DO NOT write END_PRINT here. Leaving it out prevents the factory macro from hijacking the filament.
This is now working perfectly for me for single color prints. I’ve done more than 10 prints now with this code and the filament retracts perfectly and completes the job instead of an error every time.
I’m still having issues getting filament changes during the print to not jam, but none of the suggested code I’ve tried for it has worked yet. I’ll post the solution for it once I figure it out. Or if anyone knows how to adapt this fix for that part, please post it.