How to prevent holes in external perimeters

This dinosaur was printed on a Bambu Lab X1 Carbon with AMS, with 3rd party filament. Sliced with “Generic PLA” profile in Bambu Studio.


I understand that the holes probably happen at layer change, or hops to another location on the same layer.

I first reproduced that on a Benchy, by setting seams to random:


I understand that Benchy is a model where you’d not place the seams at random, but I wanted to make the problem visible in order to reduce the issue rather than hide it.

Here are some quicker prints showing my attempts to fix that with retraction:


Left: default of 0.8 mm retraction. Middle: 0 mm retraction (more stringing inside the cylinder, but no noticeable difference on the outside). Right: no retraction on layer change.

All seem to show similar amounts of holes.

Note that I printed once with the flow calibration, then did not move the filament from its slot in the AMS. (the machine remembers the calibration for the spool, right?)

What else should I try to tune to minimize these holes?

I don’t think the AMS remembers flow for each spool (yet). It only uses the last measurement for all spools. Meaning that if you’re printing in multiple colors of different brands/types it will apply the flow of the measured spool to all of them.

But other than that there might be something else happening here. If your filament is not retracted enough or too liquid (hot) it might cause it to stick to the previous layer/point and pull a bit of filament out of the nozzle. Which could cause the holes you’re seeing.

Maybe you could try the following adjustments:

  • reduce temperature
  • increase retraction distance
  • increase movement speed but more importantly acceleration (if not already at 500 mm/s and 20000 mm/s2, which is the machine limit)

I hope you find this information usefull and good luck!

1 Like

if you’re printing in multiple colors of different brands/types it will apply the flow of the measured spool to all of them.

Oh! That makes the AMS less awesome than I thought, that’s sad!

it might cause it to stick to the previous layer/point and pull a bit of filament out of the nozzle.

But that would create zits, too much material, wouldn’t it? I have small holes, too little material. I might be misunderstanding…

If I don’t misunderstand, then I could try to do the opposite, run hotter? Decreasing the retraction distance did not help, as shown in the last picture.

That depends on how your slicer handles travel moves. I’m not that familiar with bambu studio (or prusaslicer which it is based on) yet but i know cura tends to move into the print after a retraction. This leaves the extra material inside the print and sort of hides it.

But the point i was trying to make is that yes, it should cause zits. But it also means that that material that is left behind is missing somewhere else. Mainly wherever the extrusion continues. Which could cause holes in starting points.

Increasing temps could help as well, you’re free to try of course.

And the AMS flow calibration thing is a requested feature which might be added in the future

Just sharing my thoughts, hope it helps :slight_smile:

1 Like

I’m not sure about that. My understanding is each slot uses the last flow measurement done on that slot. If it worked the way your described, I could probably get a better print out of black PEtg (which often won’t scan).

I have the same issue, big gaps where the seams are. I have a case where I print a thin walled cup, and there’s a big slot up the side which pretty much ruins it. That happens with NinjaFlex, which is pretty hard to work with, and when I asked Bambu about changing the k-factor they basically said you can’t.

I’ve yet to find a way to fix it. Probably you could try adding some wipe distance (under filament overrides), I’d be curious to see if it helps.

Thanks, it always feels good not to be alone :slight_smile: Did you experiment with temperatures, for that specific issue?

I guess the K-factor is what the calibration lines with varying speeds are for?

Yeah, it’s a flow characterization step.

Did you try adding wipe?

The big gap is something I’ve noticed from day one with Bambu. I looked for “extra restart distance” which is my last-ditch-effort fix on CURA/PrusaSlicer, but no luck here.

There is a good chance that the answer to your question could be “linear advance setting”.

The pressure in the nozzle is built by pushing the filament into the nozzle. But this takes some time depending on your retraction amount, temperature settings, etc. Linear advance (same as pressure advance for RepRap) puts a time offset on the retraction movements that will lead to an slightly earlier retraction as well as a slightly earlyer extrusion when the printhead is moving without extrusion.

I don’t know if this is really the answer to your problem here, but it could be. I’d try setting the linear advance to -0.05s for the first test and then check if it’s enough. Since BambuStudio works with the Marlin-Gcode-flavor, you’ll need the gcode M900. If I understood this command right, you should try M900 K0.05 but I always worked with the RepRap flavor where it is M572 and this is a little bit different.

Note: I just saw that in the extrusion calibration at the beginning of the print, the linear advance is included as a parameter to be calibrated. So if you’d like to change it, you’ll have to deactivate the extrusion calibration, otherwise it will be overwritten. Or you just export the gcode and insert the M900 command after the calibration. Then import it again in the slicer and print it. Or just put the gcode file on a SD card and print that directly.

Good luck, have fun :slight_smile:

And note that with that we’re deep into gcode-modification, so be careful what you’re doing. It will directly effect the behaviour of the printer…

@bjo3rn I was under that impression that the K factor was what the calibration lines at start were for, analyzed by the lidar. They do something very similar to the classic Marlin gcode script with lines and speed changes.

But I’ve also read that if the X1 somehow fails to get a good reading, it would silently (!!) default to 0.02 I think.

So I could to the Marlin script thing, and set K in the gcode like you suggest. But honestly, avoiding this kind of exercise is why I got the X1 and not a Prusa.

2 Likes

Yes, the K-factor is included in the calibration pattern. It tests wether K0.04, K0.02 or K0.00 works the best. But the calibration isn’t exclusively for the K-factor as I understand it. The lines with inconsistent linewidth are for the K-factor, but the pattern on the left hand side seems to be there for extrusion rate calibration.

Yes, default is 0.02 and that will be used if the calibration fails (see gcode below).

I totally understand that. For me it’s kinda the same reason why I got this printer. But with this information that I pointed out a few lines above, I would’ve checked if ‘hardcoding’ the setting to K0.04 would help. If that’s the case I’d suggest that something’s wrong with your LIDAR sensor. With that information I’d contact Bambulab and ask for help with that.

; see if extrude cali success, if not ,use default value
    M1002 judge_last_extrude_cali_success
    M622 J0
        M400
        M900 K0.02 M0.099831
    M623

And for completeness in case you didn’t know that page: https://reprap.org/wiki/G-code

@bjo3rn Ah, I usually go for Marlin’s gcode page. Is reprap’s more appropriate for the X1, like there’s a better match between what is implemented and not?

I find that the RepRap page is very good to use since it’s limited to the important information and you can search for every command via Ctrl. + F. Additionally it shows all the working gcode flavors for each command and where to better use a different command.

At the end it’s a personal preference. You surely won’t find more information on the RepRap page about Marlin flavored gcode but you might be faster at getting to the piece of information you’re looking for. All in all there’s nothing wrong with the Marlin page. :slight_smile:

I’ve tried to change the K factor by overwriting it in the gcode file, after the original code:

Screenshot_2022-12-16_164846

I’ve tried standard, 0.04, 0.06, and 0.2 (!!). I cannot see any difference in the seam :confused:

Am I doing something wrong?

Since then, I’ve switched to the SoftFever build, and sets PA in the interface (it’s in the filament options). Still, the PA (it’s the same as Merlin’s LA, right?) does not affect the seams. Maybe I misunderstand how PA works, I though it would start pressurizing the nozzle earlier (avoiding gaps at start of line), and remove pressure early (avoiding extra material at end of lines).

Two scenarios for the missing material at the seam: either the gap is at the end of line (it removes pressure too early), or the material gets out too late at start of line (it starts pressurizing too late). The PA factor allows to change the delays to find balance. But these cannot be separated, can they?

Isn’t that correct?

I’m seeing a similar issue with my Bambu X1C that I’m not seeing on my Prusa’s with the same material. I haven’t delved into the differences yet but it is frustrating to see. In my case, it’s generic PC material. The zits go away when the material has no gaps per layer and appear when there are gaps.