text:
How often should you change out your hot end heating element?
I was recently trying to heat my hot end to 250° C to try and get PETG to stop stringing. When I did this, I realized after about 10 minutes of waiting that it never quite got there. It would only get to ~247-248° C, fluctuating in that arena.
This started me to wondering, is there a rule of thumb for heater replacement? Should you replace it in a given amount of time, when it isn't doing the job anymore (like mine seems to be doing), or just replace it when it dies?

Not an answer to your question, but have you tried a PID tune? If the printer is not in a climate conrolled environment and it's winter now where you are, that could be impacting the ability to reach temperature with the existing PID parameters. Or the heater might just be too weak for the climate. Or the sock could be damaged. Etc. I would not assume by default that the heater is faulty.

I see no benefit to changing a heater that's performing acceptably. The only rationale I can think of for a predictive or preventive change-out would be to head off the cumulative effects of repeated wire flexing. That would be devilishly difficult to predict.
Unless one was about to kick off an extremely high value print due to high consequence schedule constraints or high material cost, it's difficult seeing a pre-emptive heater change being justified. Even then, it becomes a risk comparison between wear-out of the old and infant mortality of the new.

I don't think there is any rule for when to change the hotend since it's dependent on a lot of factors like the filament types you print with, if your nozzle hits the bed often, etc.
Generally, I check the nozzle every two weeks or so. I end up replacing it about every 6 months, from a moderate amount of printing.

You must have misunderstood my question. It's not about the nozzle, but about the heating element in the hot end.


text:
What currently available solutions can be used to determine how much filament weight is left on the spool without knowing empty spool weight?
Having used multiple brands of filament and different spool sizes what always annoyed me is that almost no single filament producer that I know, states clearly and accurately the weight of the empty spool.
How can we possibly estimate how much filament is left on a spool based on weight if we cannot subtract a know spool weight? Which also can vary based on humidity for cardboard spools?
Side-note: In my personal opinion filament produces should at the very least publish a reliable empty spool weight and other properties such as a metric of abbrasivness.
It seems that a filament runout sensor is a real duct tape solution to the problem. What currently available solutions can be used to determine how much filament weight is left on the spool without knowing empty spool weight?

In my experience, empty plastic spools weigh between 125 and 250 grams. My practice is to weigh a full spool after removing all the packaging and record that weigh before using any.
While using the spool I assume the weight of the spool is equal to the recorded gross weight less 1,000 grams. In actual practice over many spools, they invariably end up weighing 5-50 grams more than calculated, meaning that I got a few meters less filament than I paid for. I've never seen one go the other way.
Once a spool is nearly empty (~30 m or less) it's fairly easy to count the remaining wraps, visually estimate the spool core diameter and calculate the remaining length. Experience indicates this can be done to within a meter.
If it's necessary to know the amount with high precision it's not terribly difficult to remove the remaining filament and weigh it directly. The remnant can then be rewound or used directly from a loose coil.  I don't recommend that method for anything over 25-30 meters but have done it from time to time with that amount or less without serious problems.
As a final measure if attempting to use the bitter end of a spool, it's wise to be prepared to do a pause and filament swap to a new spool if coming up short. That's fairly easily done but there is always a risk that there could be a slight color mismatch between old and new. I have tried splicing a new length on the fly to one that's coming up short. I've had mixed results with that and now much prefer the pause-and-swap method.
The safest practice if there's doubt that enough remains for a specific job would be to use a new spool and save the nearly exhausted one for a smaller print.

For what it's worth, I recently got a 250g spool of filament with a QA sticker saying it's at least 50g more than it should. And for what I can tell, it is.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Error message "homing failed printer halted please reset"
I have an Ender 3 Pro 4.2.7  2.0.8.2 that I haven't used for a couple of months; switched it on, all perfect. I tried to print a model and the PLA wouldn't stick to the bed; I think the hotend was a fraction high.
Re-adjusted bed to ensure square and flat as hadn't been used. Switched off and then hotend defaulted to 5 mm above table. Thought I'd do a firmware update, load the latest software put, it on a clean, formatted (4096) SD card, switch off power put the card in, and switch it on, just booted up as normal, ignoring the firmware update.
I followed all instructions from the web including a new card, renaming the file, etc. Switched off, switched on. now when I try to do Auto Home or Level Bed, nothing happens, no beeps no movement, and a minute later get "Homing failed printer halted please reset". Check all connections, put a meter on all micro switches, and perfect.
Nothing now moves and don't know what to do.

"Switched off, switched on" -- make sure you don't have a USB cable plugged in during the power cycle, otherwise you're not fully "off."

Check if the firmware is for the board version of your printer. Different boards may have different drivers or pin definition, which happens for example, when you flash a 4.2.2 firmware on a 4.2.7 board and vice versa.

Yes have checked, As I said, I tried to update to latest firmware, loaded SD card as per instructions, switched off printer, left for at least 30sec, put in SD card with .bin update but printer ignores card and just boots up as normal (with fault)

Rename the firmware to something like F123.bin

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How do I stop the extruder from sticking to the back corner of the part?
I was gifted a Creality Ender-3 and thus have begun my first foray into 3D printing. Things went well for the setup and first prints; I printed some of the 3D files that came with the printer, then some files I downloaded from the internet, and finally some files I made myself in Blender, all without issue. However, the last object I tried printing is causing problems.
The object is a spheroform tetrahedron, a type of surface of constant width (SoCW) that is essentially a triangular pyramid with curved faces and edges. I made the model in Blender, sliced it in Ultimaker Cura, and started the print job. However, about a quarter of the way up the vertical height of the model, the extruder became stuck to the back corner of the tetrahedron.

I wasn't watching at the exact moment it happened, but it seems like the print-head stopped moving horizontally (I'm assuming it stuck to the part, preventing it from moving in the x-axis or y-axis) but continued extruding filament for a few moments before the printer's software detected that it couldn't move the print-head and aborted the print job (building up the little ridge around the extruder nozzle's final position that is visible in the photo).
I did some searching online, and following the recommendations I saw, I re-leveled the print bed, did my best to clean the extruder nozzle, and started printing the same file. This time, it worked without issue, so I thought the problem had been solved.
To make the most of a SoCW you need at least three of them, so after the first successful SoCW finished, I immediately started another. Unfortunately, the extruder stuck to the back corner of the tetrahedron again — at a different Z-height than the first time, but in about the same horizontal spot. I re-leveled the bed and cleaned the extruder nozzle once more, but the next attempt also got stuck in the back corner.
Out of four total attempts, only one was completed. The other three got stuck at various heights. It seems significant that all the failed attempts got stuck in about the same (X,Y)-position, even though the Z-height was different each time, but I don't know what it means.
Does anyone know what is causing this issue and how to prevent it?

When you state "it got stuck" ... could you please describe this a little better? Did it just stop moving right there and kept spewing out filament? Or did it just stop printing? Or what?

@Pᴀᴜʟsᴛᴇʀ2 It seems like the print-head stops moving horizontally (I'm assuming it sticks to the part, preventing it from moving in the x-axis or y-axis) but continues extruding filament for a few moments before the printer's software detects that it can't move the print-head and aborts the print job (building up the little ridge around the extruder nozzle's final position that is visible in the photos).

Have you tried to reorient it to not have point at the back? Are your belts tight? Is it easy for you to stop the print head from moving with your hand (should be kinda hard)? What happen if you do / try?

@Pᴀᴜʟsᴛᴇʀ2 The belts seem to be tight. I tried rotating the model 30 degrees in the slicer so the corner wasn't exactly in the back middle, and the first new attempt completed successfully. Any idea why it was getting stuck there?

I don't know why it was stopping, other than there was something in the gcode which the printer couldn't compute and therefore stopped. This seems the likely culprit. I can tell you (and maybe you've already figured this part out) the reason there was a little funnel looking thing where the print head stopped at was because the filament continued to flow out of the nozzle. I stopped a print today because it lost adhesion to the print bed. Where the print head stopped at, there was a little funnel just like in your images.


text:
Can I use PT1000 thermistor on my Prusa mk3s+ without installing Klipper on it?
I recently bought a High-Precision (400 °C) Revo Hotside with the intention to use it on my upcoming Voron. In the meantime, I wanted to give it a go and use it on my Prusa, if for nothing else, then at least to print some missing Voron parts. Also, it's still in the "hassle-free return" period, so I'd love to test it without replacing the thermistor or altering it in any other way.
"Sadly", PT1000 is not a drop-in replacement for Semitec 104GT thermistor Prusa is using. It operates in a similar resistance range and should be supported by the Einsy Rambo board, but it works with a higher max temperature*, and has a different resistance-temperature function.
I was thinking about switching my Prusa to Klipper, but I admit it is a daunting task I don't want to attempt until I have my next printer up and running. So is there a simpler way?

* PT1000 works up to 400 °C with precision, some more is still safe when 104GT is up to 300 °C.

Still waiting for an answer telling me how, instead of one telling me not to.

There's no reason you need Klipper; in principle you could rebuild Marlin (stock or Prusa's version of it; you probably want the latter) reconfigured for a PT1000. However, that's a fair amount of work and chance for something to go wrong if you're not familiar with doing it. Unless you're actually trying to use extrusion temperatures above 280°C or so, you will get no benefit whatsoever from the PT1000. Above that, the PT1000 will give somewhat better PID control (more stable temperature). If you don't care about perfect temperature stability, the stock thermistor will work up to at least 320°C, maybe 330. But to get access to any of these temperatures you will already need custom firmware, since Prusa has the max temp capped well below that.
If you just want to test the hotend, but don't want higher temperatures, you can just put a standard 100k NTC thermistor like the one you have on the new hotend, and it should work with the Prusa firmware unmodified.

One of the reasons is that my current thermistor is unstable at 250 when printing ASA / ABS.

@Mołot: That's an underpowered heater cartridge not a thermistor problem. The issue with NTC thermistors is that once you get hot enough (low enough resistance), there are too few bits in the ADC measurement for the MCU to really tell what's going on with fine changes in temperature. But that does not happen until way above 250. So just going to the new hotend with a decent cartridge in it (or even just putting a 50W or 60W cartridge in your existing hotend) will probably solve your problem.

I'm inclined to believe you. Still waiting for an answer here. But I don't like the idea of dismantling pretty expensive heating assembly before I'll test it as-is, and I'd love to test it during its hassle-free return period.

I would just put a <$5 65W cartridge (I got 3pc/$10 on Amazon) on your old hotend for the time being.

Don't forget to tune the PID values when installing a higher Watts cartridge, I got instability using the old values after installing a new one.

Yes, any changes here, but especially a more powerful cartridge, call for a PID retune.


text:
Extruder motor moves in the wrong direction
The extruder motors of my Zonestar Z9V5 Pro are rotating in the wrong direction, removing the filaments instead of pushing. Someone can help me solve this. Software is up to date.

Hi Leo, welcome to SE.3DPrinting! Have you seen this question: "Extruder is running backwards?", if this is the same question we can close this for being a duplicate. If not please provide more information on what you did to the printer why it is now spinning the wrong direction!


text:
How to add a 2x2 mm hole to a SCAD file?
I'm trying to modify this code to create a small 2 mm x 2 mm hole on the short side of the box (to fit 2 wires coming out of a battery):
// Which one would you like to see?
part = "both"; // [box:Box only, top: Top cover only, both: Box and top cover]

// Size of your printer's nozzle in mm
nozzle_size = 0.35;

// Number of walls the print should have
number_of_walls = 3; // [1:5]

// Tolerance (use 0.2 for FDM)
tolerance = 0.2; // [0.1:0.1:0.4]

// Interior dimension X in mm
interior_x=70;

// Interior dimension Y in mm
interior_y=21;

// Interior dimension Z in mm
interior_z=17;

// interior corner radius in mm
radius=0; // [0:20]

// What fraction of the flat X side should the hook take up? (0 for no hook)
x_hook_fraction = 0.5; // [0:0.1:1.0]

// What fraction of the flat Y side should the hook take up? (0 for no hook)
y_hook_fraction = 0.5; // [0:0.1:1.0]

// What fraction of the hooks should have a slot behind them? (0 for no slot)
slot_length = 0.7; // [0:0.1:1]

/* Hidden */
$fn=100;

wall_thickness=nozzle_size*number_of_walls;

// Outer dimensions
x = interior_x + 2 * wall_thickness;
y = interior_y + 2 * wall_thickness;
z = interior_z + 2 * wall_thickness;

hook_thickness = 3 * nozzle_size;

top_cover_wall_thickness = hook_thickness + wall_thickness;

y_hook_length = (y - 2 * radius) * y_hook_fraction;
x_hook_length = (x - 2 * radius) * x_hook_fraction;

module box_interior () {
    offset(r=radius) {
        square([interior_x-2*radius, interior_y-2*radius], center=true);
    }
}

module box_exterior () {
    offset(r=wall_thickness) {
        box_interior();
    }
}

module bottom_box () {
    difference(){
        // Solid box
        linear_extrude(z-wall_thickness){
            box_exterior();
        }

        // Hollow out
        translate([0,0,wall_thickness]) linear_extrude(z){
            box_interior();
        }
        left_slot();
        rotate([180,180,0]) left_slot(); // right slot
        front_slot();
        rotate([180,180,0]) front_slot(); // back slot
    }
    left_hook(); // left hook
    rotate([180,180,0]) left_hook(); // right hook
    front_hook(); // front hook
    rotate([180,180,0]) front_hook(); // back hook
}

module left_hook () {
    translate([(x-2*wall_thickness)/2,-y_hook_length/2,z-wall_thickness]) rotate([0,90,90]) {
        base_hook(y_hook_length);
    }
}

module front_hook () {
    translate([-x_hook_length/2,-y/2+wall_thickness,z-wall_thickness]) rotate([90,90,90]) {
        base_hook(x_hook_length);
    }
}

module base_hook (hook_length) {
    difference(){
        linear_extrude(hook_length){
            polygon(points=[[0,0],[2*hook_thickness,0],[hook_thickness,hook_thickness]]);
        }
        translate([hook_thickness, hook_thickness, 0]) rotate([45,0,0]) cube(2*hook_thickness, center=true);
        translate([hook_thickness, hook_thickness, hook_length]) rotate([45,0,0]) cube(2*hook_thickness, center=true);
    }
}

module left_slot () {
    slot_length = y_hook_length*slot_length;
    epsilon=2; // ensure it definitely protrudes
    translate([x/2+epsilon,-slot_length/2,z]) rotate([0,90,90]) {
        cube([2*hook_thickness, wall_thickness+epsilon, slot_length]);
    }
}

module front_slot () {
    slot_length = x_hook_length*slot_length;
    epsilon=2; // ensure it definitely protrudes
    translate([-slot_length/2,-y/2-epsilon,z]) rotate([90,90,90]) {
        cube([2*hook_thickness, wall_thickness+epsilon, slot_length]);
    }
}

module right_groove () {
    translate([-tolerance/2+(x-2*wall_thickness)/2,-y_hook_length/2,wall_thickness+hook_thickness*2]) rotate([0,90,90]) linear_extrude(y_hook_length) {
        base_groove();
    }
}

module front_groove () {
    translate([-x_hook_length/2,-y/2+wall_thickness+tolerance/2,wall_thickness+hook_thickness*2]) rotate([90,90,90]) linear_extrude(x_hook_length){
        base_groove();
    }
}

module base_groove () {
    polygon(points=[[0,0],[0, -1], [2*hook_thickness, -1],[2*hook_thickness,0],[hook_thickness,hook_thickness]]);
}

module top_cover () {

    // Top face
    linear_extrude(wall_thickness) {
        box_exterior();
    }

    difference(){
        // Wall of top cover
        inset = wall_thickness + tolerance/2;
        linear_extrude(wall_thickness+hook_thickness*2){
            offset(r=-inset) {
                box_exterior();
            }
        }

        // Hollow out
        translate([0,0,wall_thickness]) linear_extrude(z){
            offset(r=-wall_thickness*2) {
                offset(r=-inset) {
                    box_exterior();
                }
            }
        }

        right_groove();
        rotate([180,180,0]) right_groove();
        front_groove();
        rotate([180,180,0])  front_groove();
    }

}

// left_hook();
print_part();

module print_part() {
    if (part == "box") {
        bottom_box();
    } else if (part == "top") {
        top_cover();
    } else if (part == "both") {
        both();
    } else {
        both();
    }
}

module both() {
    translate([0,-(y/2+wall_thickness),0]) bottom_box();
    translate([0,+(y/2+wall_thickness),0]) top_cover();
}

I've tried something like this but it doesn't work:
// Adding a hole to the short side of the box
translate([interior_x / 2, interior_y - hole_size / 2, interior_z / 2])
    cube([hole_size, hole_size, interior_z], center=true);

You can use the difference() function in OpenSCAD to subtract one or more 3D shapes from another. Source: The documentation for the difference() function.
For reference, your code already does that several times. Something like this:
module bottom_box () {
    difference(){
        // Existing code ...

        // Subtract the hole
        translate([hole_position_x, hole_position_y, hole_position_z])
            cube([hole_size, hole_depth, hole_size], center=true);
    }
    // Rest of the code ...
}

Two cube examples
Below are two examples of a cube with and without a hole (in the bottom) that, for testing, can be rendered in your browser on openscad.cloud:
1. Model without a hole
cube_size = 20;
module simple_cube() {
    cube(cube_size);
}
simple_cube();

Example of a model without a hole on openscad. cloud.
2. Model with a hole
cube_size = 20;
hole_size = 2;
module cube_with_hole() {
    difference() {
        cube(cube_size);
        translate([cube_size / 2, cube_size / 2, 0])
        cube([hole_size, hole_size, cube_size], center=true);
    }
}
cube_with_hole();

Example of a model with a hole in the bottom on openscad. cloud.

I've added this to bottom box but no hole appears. Not sure where it's messing up.

Are you sure all variables are correct and the positioning is correct? I would debug it step by step. First, make the shape appear solid in an obvious color, then position it correctly, and then try to incorporate it in the difference function.

@stormist The hole should be longer than the box. The hole should protrude the box on both sides ( translate may be needed to shift the hole ).

Modify this line: cube([hole_size, hole_size, cube_size], center=true); to this: cube([hole_size, hole_size, cube_size + hole_size], center=true); for a longer protruding hole.


text:
Are there any slicers that use anti-aliasing (such as FXAA) for higher quality thumbnail generation?
I use the Cura Thumbnails plugin to create and embed thumbnails in my G-code to view them using OctoPrint or my printer LCD. However, I recently found much higher quality Thumbnails that were generated using fast approximate anti-aliasing (FXAA). I was wondering if there is a way to enable or use another tool (slicer) to embed higher-quality thumbnails that were generated using anti-aliasing methods such as FXAA. For example, as generated by the tool unlimitedbacon/stl-thumb as shown below:
An example of thumbnails generated with that tool:

An example of a thumbnail generated without and with FXAA:

No need of complex antialiasing, they could simply render at 4x the size and downsample with bicubic/lanczos.

I suppose so but I suppose that would take much more unnecessary compute power compared to using hardware accelerated FXAA.

As of May 2023, Cura is working on it as described in this Github issue Ultimaker/Cura/issues/7447. One user suggests the use of the spatial anti-aliasing method supersampling anti-aliasing (SSAA) instead.


text:
How can a force sensor automatically determine the Z-offset?
The Creality Ender 3 V3 SE, apart from auto bed leveling (ABL), also has a way to calculate the Z-offset automatically. A feature I didn't hear about before.
According to a Maker's Muse video, it's based on a force sensor as shown below.

How does this concept work? How can a force sensor automatically determine the Z-offset?

Maybe you should ask the second question in a different question. Your question actually contains multiple questions which makes it more difficult to answer as there are multiple answers. Please split up your question by adding the other questions in a separate question!

Done. https://3dprinting.stackexchange.com/questions/21714/is-there-any-well-documented-auto-z-offset-diy-upgrade-available-for-3d-prin

The Z-offset is the distance between the nozzle and the triggerpoint, see e.g. this answer of question Automatic Bed Leveling (ABL) with a sensor (BLTouch, inductive, capacitive), how does it work?.
A "force sensor" as called in the question is actually a strain guage; deflection will cause a different electrical resistance which is a measure for the applied stress. These sensors are frequently found in aircraft to measure the strains (as a measure for the stresses) in the structure, e.g. wing spars, (pressure) bulkheads or frames, as part of structural health monitoring (e.g. to compare to the design spectrum of the OEM).
In theory the Z-offset with a strain gauge is non existent if you use such a sensor for ABL except that you may need to corect for possible flexing of the bed or the hot end assembly and a paper offset (default distance to allow better flow and adhesion).
However, the system referenced in the question is an Ender 3 V3 SE with an ABL system and a strain gauge.

Relax, Let Auto Leveling Do It
Leveling is the basis of print quality.
Ender-3 V3 SE features a CR Touch sensor for auto leveling
and a strain sensor for auto Z offset.
No need to turn screws or pull a paper.
Just lie back and enjoy the print success.

This implies that the strain gauge is not used to determine the level of the bed, instead the surface  of the build plate is scanned/mapped by the CR Touch (BLTouch clone) sensor. In order to map this scanned surface to the correct height, a test point with the nozzle hitting the buildplate (and as such causing the strain gauge to measure that the nozzle touches the surface) is used to set the Z-offset based on this measurement. Without such a strain gauge, the printer user needs to do that manually; this is the process where you set the offset using the M851 G-code command. Instead of the user lowering the nozzle until a piece of paper can be dragged with a little resistance to determine the "true zero position" of the Z-axis, the triggering of the strain gauge and the automatic handling by the Creality software will do that for you.
To explain the automatic calculation of the Z-offset in this printer is that the Creality Ender 3 V3 SE first calibrates the Z-offset with the help of a pressure of strain-gauge sensor mounted under the front left corner of the print bed, there is a strain-gauge sensor which can detects deformation on the structure that is mounted on.

Knowing the exact position of the nozzle and the position (height) of the trigger point of the leveling sensor, the Z-offset can be calculated and set. That height is then put into the M851 G-code command to set the Z-offset. This is exactly how you would do this manually other than you usually use a sheet of paper or a feeler gauge between the nozzle and the bed. The automatic calculation will surely make a correction for that (e.g. there could be play in the nozzle assembly).

Thank you, but I don't understand. 'Bed tramming' is: manually adjusting bed screws.  'Automatic bed leveling' (ABL) is: making a mesh (using BL/CRtouch) that the firmware can use to compensate for non-flat beds. UBL is a more advanced version of ABL. That's all irrelevant here, but correct me if I'm wrong. My question is specifically about how to determine the z-offset automatically. If I'm correct, bed tramming and leveling need to happen anyway, automatic or not, and then the only thing left to do is setting the z-offset. That has nothing to do with tramming, ABL, or UBL, right?

The Z-offset is only of interest when using a leveling sensor, not a manual leveled bed without ABL. So, yes, it is relevant. I'm sorry you don't understand, but it is linked together. Everything is related to get a good print, you must assure you deliver a bed as level as possible (tramming), the ABL will scan the shape and apply this surface to a certain height. This height is either determined manually or in case of this printer through a strain gauge. There are systems where the strain gauge is used with the nozzle as the levelling sensor, then the Z-offset is zero.


text:
How to polish heatbreak surface?
I have a plastic squeezing up from the heatbreak thread. This indicates improper seal, but I have screwed everything together tightly. After disassembly, I realized I have a scuffed surface on my heatbreak. Sorry for the lack of photo, but I can't get it in focus. It's like if the bottom hole chipped out a little.
Is there any reasonably easy and cheap way to get it perpendicular and smooth again? Or should I just not bother and replace it altogether?


text:
Printer always homes X & Y at end of print
I can't figure out why, but at the end of every print, my Creality CR-10 Smart Pro will move the print head left until it hits the limit switch and move the bed back until it hits its limit switch. I have no idea why.
I have looked at the G-code of several prints and I don't see any command telling the printer to do this. I have also tried different slicers and the same thing happens. I have tried adding M18 to disable the steppers at the end of the G-code hoping it wouldn't do this if the steppers were off, but no luck. I can only assume that this behavior is built into the printer for some odd reason.
Can anyone else with a Creality CR-10 Smart Pro confirm that their printer also does this?

If anyone wants to see the last 20 lines of my most recent print. I don't see anything that would cause my printer to move to its limit switches.
`G1 X149.707 Y150.217 E0.74249
;;retract;;
G1 F1200 E0.46249
G1 F3600 X150 Y150.199
G1 X149.707 Y150.217 E0.44579
G1 F1200 E0.34249
G0 F7200 X150 Y149.545
;TYPE:WALL-OUTER
G1 F2400 E0.74249
G1 F600 X150 Y149.233 E0.74984
;TIME_ELAPSED:14.258935
G1 F1200 E0.34984
M140 S0
G1 F600 Z0.78
G0 F7200 X250 Y280 Z0.78
M106 P2 S0
G91 ;Relative positionning
M82 ;absolute extrusion mode
M104 S0
;End of Gcode`

If you believe that the last 20 lines are relevant, please [edit] your question to add in the info. Comments can/will be deleted over time.


text:
Are there any electrically-conductive SLA resins?
I'm looking for an SLA resin that's electrically conductive. But, there don't seem to be any DIY or cheap formulations for electrically conductive resin.
If it were easy to do, we'd all be making circuits with electrically conductive resin. So I think that level of conductivity is probably not going to be available for a while. And I guess beyond the scope of this question. Likewise, a resin that was conductive enough for electroplating is also beyond the scope of this question.
A guy on YouTube mixed 5% graphite with resin and got 1.4 MΩ on his multimeter when the electrodes were placed about 2 cm apart. This is useful for electrostatic discharge but not much else. I'd like something more conductive than that.
I would like something similar to ProtoPasta conductive PLA, which has about 400-2000 Ω of resistance when you measure it 2 cm apart on a multimeter. It's not that good, but it's enough for a touch screen or button, for example. Someone on Reddit mentioned that people had formulated this before, but I can't find any evidence of that. At least, not with SLA resin - just that FDM stuff.
I even tried my hand at this a few months ago. I mixed some kind of generic resin with chopped carbon fibers, but it was kind of weird. The chopped fibers stuck out the edges of the final print, and were never really spread around that well. It was conductive but highly ansiotropic. It also looked horrible. The fibers clumped together in the uncured (and cured) resin, and it was not possible to keep them well-dispersed in the mixture throughout the print.
Does anyone have a good 1) cheap supplier or 2) cheap & simple DIY formulation for creating this kind of resin?

There are.
You will find them under the name "conductive UV resins and additives" and you can mix and match resins and additives to get desired properties. Of course the better conductivity, the worse printability most of the time.
From the first manufacturer I was able to find (emphasis mine):

Our innovative Conductive 3Dresyns have been designed to have excellent dispersibility and stability, without agglomeration issues, of pre and/ or post added metallic, inorganic and organic conductive and semiconductive materials for ultra fast additive manufacturing of high-performance electronic devices such as OLEDs, OPVs, OTFTs, PCBs, etc 3D printed at micron resolution (<20-30 microns) with SLA, DLP, LCD and Inkjet 3D printing.

I do not endorse this manufacturer or their products. I'm only using them as a proof of existence of the materials in question.

Well, I should have mentioned that I found this company, too, and that their additives & resins are a bit too expensive for me. They also require a special type of mixer, it seems. If I’m going to mix a graphene based additive into a resin with my own blender, I might as well be DIY-ing the whole process for slightly worse results, rather than starting with a $120 additive

@KMmmm yes, you probably should have. I answered question you asked. Not my fault it wasn't the question you meant to ask.

Well, it's not your fault, but it doesn't mean I have to accept your answer. The final line of my question asked for "Does anyone have a good 1) cheap supplier or 2) cheap & simple DIY formulation for creating this kind of resin?" I suppose cheap is subjective, but it seems a lot of commenters elsewhere agree that this 3dresyns resin is a bit expensive for the task. It's my responsibility to select the best answer for the question. If nobody else comes along with a better answer, I'll have to accept yours.

You could just use conductive paint, it's under $20 usually for the basics.
Bareconductive is the only one I've used, worked well enough for my simple project. Other products might be better.


text:
Can you identify filament type by filament burn test (and additional observations)?
I read some pages about 3D filament burn test.
I have a white filament and made the burn test and not only it caught fire immediately and crackled (noise), but also I burned just 1 cm of it and it speckled black spots on the entire surface and furniture in my kitchen, just by burning a centimeter.
I've no idea of what type of filament this is.
It's white, not very elastic, it doesn't get too mechanically damaged when I fold it. On the other hand, it is a little translucent (just a little) but becomes opaque with the slightest fold.

In the picture, the dark parts are in reality white opaque parts, the the back light show then dark. The clear parts are part and slightly transparents.
When I bend this filament, it doesn't look anything like PLA or ABS, it's much more flexible and remembers the folds better.

This filament is not soluble at all.
What kind of filament could this be?

Hi Vincent and welcome to Stack Exchange! I have cleaned up your question and proposed a new title to better reflect the content of the body while maintaining the core of the original title. With a better title you are far more likely to get your question answered sooner. Please look at the edit and feel free to adjust by [edit] or add additional information (e.g. link to filament burn test articles). Please take our [tour] and read our [help]. Thanks!

Welcome. Good question. It's good for context to know where and when you got this piece of filament. And perhaps easier to track where it came from and ask.

Thanks for your help in renaming the subject. I now have to find any trace about when we got this big spool (1.5kg).

What is the 3d printer filament burn test? I never heard of this and have no idea what it’s for. You burned it for a few seconds with a lighter and black spots appeared all over the furniture in your kitchen? Do you mean a few black spots appeared near where the burning filament dripped, or every single piece of furniture in your kitchen is now polkadot? P.S Have you considered putting a piece of filament in an old toaster oven to see what temp it melts at?

It's impossible to judge based on the photos alone; the properties you describe and the photos, to me, look similar to the polyhydroxyalkanoates (PHA) I've recently been testing. But my reference is only PLA and DHA, and it's a relatively new type of filament so, that is unlikely. Knowing when and where you got it, is perhaps relevant for context. Perhaps adding information about the smell when extruded, or colors of smoke or flame when burned, the observed melting point could help narrow it down too.
Generally for plastic identification. Preciousplastic.com Academy has good and free content about distinguishing different types of plastic such as in this YouTube video but I've never seen such floating tests for buoyancy be performed for filament specifically. The Brothers Make YouTube channel also has good content about plastic identification.
If you want a total overkill solution to test this tiny piece of plastic you could perhaps consider something like PlasTell by Matoha.com, which I believe used spectroscopy, as shown below. However, I have not seen this being applied on 3D printer filaments (PLA, PETG, ABS, TPU, PHA) as well.

Source: Oceaninsight.com

10 years ago, we bought a spool of White HIPS, and one of White Rubber, and one of Wood and one of Nylon. I never used them ! Funny...
Surely I burned the HIPS one (I don't think it's a rubber one).
Now we know that burning 1 cm of HIPS can stain several square meters with small greasy black spots. In the air nothing is visible but after just 1 cm, it's a misery to clean...
So do not do the burn test with HIPS !

You could have [edited] your previous answer and flagged for un-deletion, rather than posting a new answer. However, this doesn't really seem to answer the question, i.e. your question, unless the answer is the HIPS that you bought and then forgot about. Also, please take the [tour] to better understand how Stack Exchange works. Note that it isn't a forum of threaded messages, with "Hi" and "Thanks", this is a Q&A site. If you wish to thank someone, then please just upvote (and accept) their answer - there is no need to leave an anecdotal answer as a reply. Thanks.


text:
Is there any well-documented 'auto z-offset' (DIY) upgrade available for 3D printers?
In addition to the question How can a force sensor automatically determine the Z-offset?.
Is there any well-documented 'auto z-offset' (DIY) upgrade available for 3D printers? I'm particularly interested in using a strain gauge and upgrading the Creality Ender 3 V2. But examples for adding this capability, using other methods or to other printers are also welcome because I can modify it.

Is there a rationalle behind the request, e.g. usually you do this once. E.g. I even don't ABL my printer for every print, just using the stored leveling surface. Does this relate to earlier questions regarding the frequent change of nozzles? Note that the option you are describing is a Creality development which they do not share with the rest of the world.

Good question. The reason is that I sometimes switch nozzles with limited effect but also beds with either a thin magnetic PEI or thicker carborundum glass. It's not a big deal, but I like tinkering and automatic things. It's just a quality-of-life improvement. They don't share, but the concept seems essentially simple enough to implement, although I don't exactly understand it well enough yet to implement it.

If you change the setup frequently that might be very handy. Maybe you could add that to the question.

It's not a common thing because it's usually something you do once and then it works for years without need to touch it, and I don't know of generic upgrades that provide just that in conjunction with whichever probe you have.
Bambu X-1 Carbon does it automatically with a piezzo sensor for a rough estimate and then using its lidar to analyze baby-stepped lines on the build plate to find the perfect Z height. This is not something to implement in any printer though.
The Prusa Mk4 approach is much more viable: it uses a load cell sensor in the extruder to find the moment the nozzle presses into the bed. I'm pretty sure this can be done with a strain gauge just as well, thing is they don't produce a neat binary on/off, just analog signal in form of varying resistance. You'd likely need a small microcontroller with an ADC input to read the gauge and convert that to binary On/Off on the Z axis input. And you'd still need to add (small, fixed) Z offset to get the height of the nozzle touching the bed as opposed to pressing into it.
I'm not aware of any ready-made solutions that do this, but it should be a project well within skill range of a hobbyist.


text:
Is there a distribution of OctoPrint for Raspberry Pi 4b that's not headless?
I finally managed to get my Raspberry Pi 4b and make it work with a touchscreen. Previously I was using Pi 400 but I want to move to the touchscreen setup.
Is there a distro of Octoprint for Raspberry that is not headless, and instead uses the screen? I'm OK with a fullscreen browser with https://localhost.local open on it, I don't fancy trying to add everything from scratch.

I assume you're using OctoPi. There is no such version that I'm aware of. However, you could relatively quickly run a OctoPrint container using Docker on the Raspberry Pi or install it on the without a Docker container on the Pi, for example, using Debian OS or maybe even on Raspbian.
This way, you have an OS with GUI and can open the browser and access the local OctoPrint GUI in the local browser. I don't know if this will cause much overhead in terms of performance, which could affect your prints if it's lagging too much. It probably will need active cooling or at least a heatsink.
Nice display. I agree that it would be nice to see an OctoPi version with a local GUI, preferably optimized for a small (touch) screen; perhaps you can request that feature on GitHub and refer to this question.


text:
How to recover forgotten SSH password in OctoPi?
I have forgotten my OctoPi SSH password. Now I want to install X server and browser for touch UI. How can I recover that password without deleting it all to the ground and reinstalling it?

Adding as a self-answer because I have spent way to much time trying to look it up.

If you waited a few hours more I could answer it for you, I've had the same issues before and documented it in my personal notes.

foosel, Project Leader of OctoPrint, helpfully provided a solution just for us:
Turn off the Raspberry Pi and then:

Take the SD card out, put it in a card reader. Create a file octopi-password.txt on it, containing a new password as it's only line. Unmount, boot, login with the new password.

You can do it in Windows, because you need to put it on the Boot partition, the only one that mounts.

Now keep in mind that this is a potential security issue: https://3dprinting.stackexchange.com/questions/19087/how-to-encrypt-wifi-password-in-octopi-wifi-config-file


text:
How is it possible for (PHA) prints to warp on an unheated bed?
I'm experimenting with a new type of filament, 100 % polyhydroxyalkanoates (PHA). However, per the manufacturer's instructions I'm using a PLA profile in Cura and with the only change being a 200 °C nozzle on a cold, unheated carborundum glass bed using a well-calibrated Creality Ender 3 V2. Fan speed at 100 % from the first layer.
The whole setup works flawlessly with PLA at 210 °C with a heated bed at 35 °C. My PLA prints are generally hard to remove, even after cooling down the bed, sticking too well, despite not using glue sticks or adhesives. So, I assume that adhesion cannot be the issue.
For PHA, the first layers look excellent, but after some time, the result is extreme warping as shown below:

How is it possible for a print to warp on an unheated bed in a room with a stable room temperature of 19 °C and humidity of 45 %?

The model used (although print canceled) was Filament Swatch from Thingiverse.com.
Example of the same model, printed on the same machine, with the same settings but using recycled PLA and a heated bed:

What is your question? Just "how is it possible?" Or are you looking for advice on how to print this material?

Fair enough. Both, but they shouldn't be two separate questions. I'm surprised by how this is possible because warping is, by definition, the result of a heated bed, which is absent here. And, of course, by understanding the cause, we would be able to fix it, too, which is the goal.

@BobOrtiz don't know what definition you're using, but warping in, for example, ABS, can happen at any height, heated bed or not. If anything, I find heated bed help prevent it.

Then perhaps my understanding of warping is incorrect. Feel free to answer the question to clarify.

Warping is not "by definition" the result of a heated bed. Warping is the result of material shrinking as it cools, and having the opportunity to do so unconstrained by other forces (like adhesion to the bed, or rigidity of other material it's bonded to that's already cooled). The reason PLA sometimes warps more during printing with an overly hot bed is that the heat from the bed prevents the lower layers from ever becoming rigid, so they can't constrain the material laid on top of them.

Just out of curiosity, which brand of PHA filament are you using? According to Wikipedia, PHA is a very broad category of polymers with wildly different mechanical properties and melting points, so the brand probably matters a lot.

I'm using 'allPHA' from colorFabb.com. https://colorfabb.com/filaments/materials/pha-filaments/pha

The technical datasheet for ColorFabb's "allPHA" filament [original] says the following:

Contrary to most 3D printing materials allPHA is best printed on a
cold plate, so no active heating is required. A heated plate will
induce crystallization, which will lead to warping of the bottom
layers.
We advise using 100% cooling starting on the second layer. This helps
set the model by slowing down crystallization of the allPHA matrix.

So apparently, you have to cool it down quickly to freeze it in its amorphous form. Cooling too slowly will give it time to form a crystal lattice, shrinking in the process. This shrinking of the upper layers then exerts a force that pulls the corners of the lower layers upwards, which manifests as warping.
So my guess would be: Add more cooling. As mentioned in the comments, printing slower might help, because it gives the part cooling fan more time to blow on the printed lines, thus cooling them faster.
PS: Additionally, different materials require different bed materials. The fact that PLA sticks to your plate does not mean that other materials will stick just as well. The datasheet linked above suggests "3DLac / Diluted wood glue" for treating the bed, so that might be worth a try. Wood glue is often PVA-based, the same as many glue sticks, so that might be a good idea as well.

I would also advise printing slower and see if it helps. It can be helpful if cooling is on 100%.

Thanks for all tips. I did a few more attempts today. Slowed down printing speed to 50%, heated bed of 50C, unheated bed, smaller Z-offset, 100% cooling from first layer, 0% cooling from first layer, glue stick. Adhesion is horrible. After three or four layers all comes lose. I didn't have a single successful print with PHA so far. Other ideas? PLA works great on that machine with almost all mentioned settings.


text:
Is the BFPTouch interchangable with the BLTouch for mriscoc firmware without custom changes to Marlin?
I have two Creality Ender 3 V2 printers with a version 4.2.2 board. One printer has the official CRTouch, and one is nearly original without a probe. I found a similar product, a DIY project called BFPTouch, and I have almost all the parts needed to make it.

Model and photo source: Thingiverse.com
I use the Marlin-based mriscoc firmware on both printers. Version Ender3V2-422-MM-MPC-20231202.bin, and on my printer with the CRTouch, I use the Ender3V2-422-BLTUBL-MPC-20231202.bin version.
Is the BFPTouch interchangeable with the CRTouch, like the BLTouch and CRTouch are? Is the wiring to the board the same, and would it suffice to use the BLTUBL firmware version of mriscoc that I've mentioned without further altering Marlin?

No, it is not interchangeable without changing the configuration of the firmware. These sensors do not require you to set the BLTOUCH directive, so this must be in your configuration:
//#define BLTOUCH

For the CR Touch this directive is required.
#define BLTOUCH

I am building the Tiny Touch an even smaller version of the BFPTouch, in fact it is a derivative! In the last link you find instructions to configure the probe, which redirects to the setup of the BFPTOUCH.

Looks indeed even better. Is the Tiny Touch interchangeable with BLTouch? I'm asking because I rather stick with the standard BTLUBL releases of the mriscoc firmware than to make custom configs if not needed.

No, the Tiny Touch is also not interchangeable with the BLTouch.


text:
How to successfully flash a DACAI LCD screen of a Creality Ender 3 V2?
I thought I had two identical Ender 3 V2 printers, the main board in both is v4.2.2 but it turns out they came with a different LCD screen.
I flashed the firmware on both printers to mriscoc firmware and tried to also flash both LCD screens.
DWIN
The printer with the DWIN screen worked fine, everything went smooth and instead of the original blue, flat GUI, I now look at a colorful GUI something like this:

DACAI
On the other printer that I identified as a DACAI LCD as per mriscoc instructions documented.

I then flashed the firmware and the private folder separately, as shown below, in the end you can see it fails to load. Not shown on the video but if I rotate the knob, the buttons appear on top of the load screen:

After rebooting I see this:

I am able to view a test thumbnail on screen, as provided in the documentation and shown below:

But I expect the same colors and icons as on my DWIN screen, did I miss something?
I made sure the right cluster size was used when formatting, I tried three different SD cards and two different SD card readers, as well as unmounting from PC before removing it.
How to successfully flash a DACAI LCD screen of an Ender 3 V2 to achieve the same as on the DWIN LCD?

The process as shown in the question was all performed correctly and successfully however, simply the wrong icon set was used. The documentation isn't very clear and I should have personally documented this better when I did it months ago.
For flashing the LCD screen, the SD card will be placed in the SD card slot on the back of the LCD screen, not the printer slot.
This is what fixed it:

Clone the mriscoc Git repository or download latest the zip.
Open the folder display assets
Open the folder Giadej compilation for the icons I intended to use and utilize the color LCD instead
Depending on the screen type, follow the instructions as documented here:

For DWIN LCD copy only the folder DWIN_SET to the root of the SD
For DACAI LCD copy only the folder private to the root of the SD

Also, it's required to have micro SD card of 8GB or smaller formatted explicitly as MBR, FAT32, and with a 4 KB sector size.
For the DACAI screen specifically, I also flashed another DACAI screen firmware, also available in mrisoc Git repo: dacai_update.zip. Place the firmware.zlib file in the root of the SD card and flash.
Repower the printer after flashing both firmware and private folder. To test if the firmware and screen work correctly you can place this test gcode on the printer SD card to check if the thumbnail preview on the printer LCD is shown.
Result shown below:


text:
How to secure silicone sleeve to my heater block?
My silicone sleeve dislodged from the heater block. Surprisingly, Prusa firmware correctly detected crash, pushed it out of the way and resumed print.
I can just print without it, but I would prefer to have it on as it speeds up heating noticeably. What can I use to secure it in place?  I don't want to risk failed prints in the future, so unless I know it's not coming off, I'm not putting it back on.

Is this the original sock? If yes, how old is the printer/sock? If the sock has been replaced, how old is this replaced sock? (approximate times are sufficient).

@agarza there is no original sock for prusa mk3s+. It is aftermarket one i got about a week ago. Third print with it on.

I thought that it may be old but now I think it was manufactured incorrectly.

@agarza feel free to post it as an answer, and I'll even provide a photo of how it broke ;)

Mechanical
As agarza correctly noted, glue is a nogo for it will be permanent. But mechanical fixing is a way too. Don't forget the simple mechanical way to make sure the silicone sock won't get lost: a simple wire around it will keep it in place.
If unbroken, the silicone will clamp that way itself, but if cut or broken, that clamping might not happen.
Kapton Tape
High-temperature tape, usually from Kapton, is often used to secure things to the heater block, and can be used to wrap around a broken or damaged silicone sock to keep it stable. It also can, on itself or with a high-temperature resistant insulator, be used to make a sock, because Polyimide is temperature resistant to up to 400 °C. For a high-temperature printer, you even might want to replace your sock with several layers of polyimide tape, acting as a decent (but not perfect) insulator on its own.
At times, Kapton tape and fiberglass weave are used in very high-temperature applications to create isolation layers. Generally, in this form a woven fiberglass mat is preferable. However, wrapping the heater block can be... quite fiddly and looks not very pretty.
don't ruin your sleeves!
However, OP also mentioned that they printed ASA at 250 °C. Silicones start to break down at 230 °C, so cooking the sock will harden it, then it will break and lost. That can not be prevented.

+1 Good catch! There is the key; the high temp is causing the sock to crack.

@agarza and... I just realized that Kapton actually would work as a replacement for the sock. And get off decently.

Since the Prusa MK3S+ does not come with a silicone sock then it is a third-party item. That said, some third-party manufacturers either don't have the actual specifications to make a proper silicone sock or they decided not to put a lot of effort into the design/creation of the sock. Therefore, the silicone sock is not a "perfect fit" on the Prusa MK3S+ and is/will be prone to falling off.
As to how to keep it from falling off, therein lies the problem. Any adhesive that can withstand the high temperatures of the heat block will probably make the connection nearly permanent.
It may just be a matter of trial and error to find a silicone sock that will fit snugly on the heat block.

https://i.stack.imgur.com/AfXf7.jpg - actually, sleeve just broke when used with ASA at 250°C

@Mołot It could be that the sock is made out of some low-quality materials, and the heat caused rapid degradation leading to cracking.

@Mołot 250 is above the 230 that any silicone starts to cook off at.

You can buy metal zip ties. For example, Harbor Freight has a package of 25 12" stainless steel ties for $5. With a 115 lb load capacity, these are massive overkill for your application, but they're cheap and they'd give a nice clean look.


text:
Does FreeCAD produce a wrong stl for slicer software?
I designed a basic structure with FreeCAD. For the base, I started with a 40x40 mm square:

And I extruded it with 6.5 mm:

Then, I added a circle sketch with a radius of 19 mm:

And applied 5.5 mm pocket:

The end result looks good:

However, any slicer I know will produce a strange shape around the middle of the sides both inside and outside:

There is a 1 mm thickness there, so I don't understand why are those shapes presented.
I'm looking for:

The reason for those failed shapes
The  solution to eliminate them (preferably without resizing either the square or the circle)

I have provided the STL file for analysis.

Can you include the Stl? As a link or, if it's small enough,  as a code block in the question ?

Also, include your slicer settings as these may be part of the problem.

I tried more than 10 combinations of slicer settings, but those strange artifacts always stayed there. So, @agarza: if you have any idea on which settings worth trying, let me know please.

It could be a problem with the number of walls, the thickness of the walls, etc. Hence the reason for asking for slicer settings. We need somewhere to start.

It's not FreeCad, it is the shape you want to create. The wall has 1.0 mm thickness. I assume that you are using 0.4 mm nozzle. With default extrusion width of 0.45, you can get either 0.9 or 1.35 mm thickness, 0.9 obviously being closer to desired.

The other issue is, there's no space for four perimeters. So, at the point where internal perimeters end, slicer need to move external perimeters closer together, to make them fuse properly. Thus, even at 0.5 mm extrusion width you will see this collapse. To prevent this effect, you need to either use smaller nozzle that would allow for internal and external perimeters to be continuous, or change your geometry to make it compatible with FDM process.
Note that, if you want consistent prints, you shouldn't set extrusion width (or wall thickness, or however it's called in your slicer) to the value lower than the diameter of your nozzle. Even making it equal is risky. For this situation, I'd suggest 0.2 mm extrusion width on 0.15 or 0.18 nozzle. Or redesign.

In case I change the wall thichkness in Slicer software to 0.2mm it eliminates the problem. Is that a wrong way to solve this?

@Daniel wall thickness needs to be slightly larger than nozzle diameter if you want a consistent print. The same if you are lucky and nozzle is extraordinarily precise. Thus, it is a good solution, but only if you will change nozzle to 0.2 or smaller.

@Mołot I don´t see problems using Simplify 3D, I can have a little air gap of 0.2mm using nozzle 0.4mm.

@FernandoBaltazar if your prints looks good and fuse properly with extrusion width smaller than nozzle diameter, I really want to see them. Most people can't manage that.


text:
Nozzle leaking PETG and blobs on first layer
I have an Ender 3 V2 Printer and I can print in PLA with good quality and no issues. I am using a 0.8 mm Nozzle and my model prints fine in PLA.
I have now tried to use Pinuotu 1.75 mm PETG transparent red filament with recommended nozzle temperature "210-240 °C"
I am getting blobs on the first layer only when doing the inner section but not on the walls or brim.
The first issue which I'm assuming is related is the nozzle seems to leak filament after I pause the print so assuming this is a retraction issue?
I have tried printing at 210, 215 and 220 °C with a bed temperature of 60 °C. I have no bed adhesion issues and have tried adjusting my material type, retraction settings, cooling (0, 20 and 100 %) and print speed (40, 45 and 65 mm/s) all which don't seem to help.
I am using Cura as a slicer. I think this may be a retraction issue? I have lost count of how long I have spent trying to print with this material. The only modification to the printer is a direct drive extruder.
Image on bed is here:

Nozzle after printing here:

Offbed result here:

Welcome Chris. Can you add a photo to point out which issues you have, perhaps share the model and the most important slicer settings you use? Also, it is much nicer to read if the title actually contains the main question you have.

Thanks for your question but we prefer the question to be self contained where possible. Linking to images outside SE are prone to die (as links tend to rot) & will be rendered useless if the linked-to content disappears. Please update your question and embed the images. Thanks! The links don't work for me.

Have you tried it on a new roll of PETG, or on a freshly dried one? It would remove one variable.

Thank you for the comments. Apologies about the title and manor of the question. I was not able to upload the image direct as the app did not seem to give me an option. The PETG roll is brand new straight out the packet. I have tried numerous slicer options but can't see a way to upload a file without external links.

I have now been able to include images.


text:
How to wire a DIY filament runout sensor to a Creality v4.2.2 board?
I'm building this simple DIY filament runout sensor for Ender 3 V2 based on this model from Thingiverse.com. I am not sure about the wiring, it seems trivial, I probably need to use 'normally closed' (NC). Below is the result so far.

I found this schematic from a YouTube video which uses a different sensor:

Based on the switch I used and the schematics shown, I guess I need to connect only two wires as follows:

Switch NC to board Red 5V (most left pin of the connector in the schematic image)
Switch C to board White Signal (most right pin of the connector in the schematic image)
No connection to the second, black Grounding pin, as shown on the schematic image
No connection to the NO pin on the switch

Is that wiring correct?
Lastly, I wonder how the connector is called that is used on the Creality v4.2.2 board, and if I need to use a transistor?

That’s a cool print for your filament runout sensor. I’m planning on doing this same mod to my Ender 3 V2 in the next week or two as well.
I’ve done a decent amount of research on how to implement this so hopefully I can answer some of your questions.
Wiring
I found this schematic of the V4.2.2 motherboard online.

Here is the pdf download link to the Ender 3 V2 v4.2.2 schematic (clicking on the link immediately downloads the pdf).
It looks like for our motherboard (if you also have the V4.2.2), the pinout is:

Left pin: Sensor Signal (‘S’)
Middle pin: Ground (’G’)
Right pin: Vcc (‘V’)

Based on the schematic, the Sensor Signal pin is pulled HIGH. This means to trigger the sensor, you want to connect the Sensor Signal pin to Ground.
The wiring for the switch is:

'C' pin on switch    ->   Sensor signal pin on motherboard
'NC' pin on switch   ->   Ground pin on motherboard

The 'NO' pin on the switch is left unconnected.
When the filament runs out, the switch opens and the ‘NC’ pin is connected to the ‘C’ pin. This pulls the Sensor Signal pin on the motherboard to LOW, which is what triggers the printer to pause.
Here is a diagram of how the switch should be wired to the motherboard.

Firmware
You’ll also need to update the firmware on the motherboard. This isn’t too hard if you’ve never done it before.
I’d recommend installing the JyersUI firmware as detailed in the video:

Just follow along with the guide to install it. The Jyers firmware also has some really nice UI improvements. Check the video description for links to the firmware.
If you don’t want to go that route, or you if have the wrong kind of motherboard chip (see video), you can also download the official creality firmware to enable the filament runout sensor.
The link to the firmware list is here: Official Ender 3 V2 firmwares
I’m pretty sure the one you’ll want is:
Marlin-2.0.1-HW-4.2.2-mainboard-V1.1.2-Compatible with BLTouch and filament detection
I didn’t use the official firmware, and there aren’t any release notes (of course), so I’m only 90% sure that's the right one .
At any rate, it might be wise to check your current firmware and make sure you download that too. That way you can revert your printer to its original firmware, just in case something goes wrong.
JWST connectors
Finally, the connectors on this board are the very common JST connectors.
Here is a link to a relatively inexpensive JST connector Kit and crimping tool:
Connector kit w/ crimp tool
It’s pretty easy to crimp and install the connectors yourself. Here is a quick video on how to do it:

If you’re good at soldering you could also just hard solder the switch to the board if you don’t want to buy the connectors and crimper. Although I’d recommend against it.
Hopefully that helps. Good luck :)
P.S. I'll post how mine turns out once I'm finished.

Thank you for the very detailed answer .

We use the same board. I recommend you checkout mriscoc firmware instead of Jyers. You won't regret it. It's a huge step forward and we'll maintained, Jyers unfortunately isn't maintained for quite a while now. I move two printers from Jyers to mriscoc.

The Amazon URL seems to link to a non-JST connector tool. The connector in used here seems to be the JST-PH-3A.


text:
Can stepper motor skipping or stalling be detected automatically?
Is there a method such as fetching data from to stepper motor drivers, that can automatically detect or count stepper motor skips or stepper motor stalling?
Preferably for a Creality Ender 3 V2 board v4.2.2, but any related information is welcome. If something like this exists, how does it work and what are common use cases or implementation of it?
The reason I am asking is because it is a performance indicator that could help to track or measure print consistency and quality.

You seem to be looking for closed-loop stepper motors.
Detection of stalling and skipping on open-loop (aka regular) steppers is possible - that's how Prusa mk3s+ finds home position without endstops*. But it is not reliable and precise - that's why Prusa firmware tests every axis a couple of times.
If quality matters, and you want to reliably detect stalls and skips during print, closed-loop motors are what you need. Per one of the manufacturers description, they signal back to the controller what they are doing, so that controller can correct for skips and stalls:

On the contrary, NEMA17 closed loop stepper motor feedback signal, according to the signal stepper motor driver to take the corresponding action measures or signal feedback to PLC, by PLC to determine the next step of the program.

Open-loop steppers are much cheaper, so most manufacturers just massively over-spec their open-loop steppers to make them force their way thorough any obstacles like blobs of plastic, and not need to care about feedback signal, and pay for it. As far as I know, closed-loop steppers are not used in hobby or even entry business machines, cost of motors and controllers being prohibitive.

* When the motor stalls, power draw changes. If your driver can monitor power draw, firmware can make educated guess about the stall.

Really great answer. Thank you. I just don't understand that's how Prusa mk3s+ finds home position without endstops, could you further explain that?

Also, do you know if step skipping could be detected using an encoder wheel as an error correction wheel, as mentioned here: https://3dprinting.stackexchange.com/q/21756/36802?

@BobOrtiz when the motor stalls, power draw changes. If your driver can monitor power draw, firmware can make educated guess about the stall.


text:
How to add a multi-color flush logo to a flat surface?
I've been banging my head against the desk for two days so it's time to ask for help. This is the second thing I've ever tried to design in Fusion 360, so very much a newbie.
I'm trying to make some coasters for my dad for Christmas. What I've done.

Created a sketch
Created a square
Added some fillets
Extruded
Right-clicked on the top surface and created a sketch
Imported SVG of logo and positioned it
Extruded the stuff on the logo that should be white by -0.4 mm into a new body
Extruded the stuff on the logo that should be red by -0.4 mm into a new body

This is what it looks like in F360.

I now export to STL and open in OrcaSlicer. First problem I notice is that not all the bodies that were created are paintable. For example, I can pain "NEW YO" but the "R" and "K" just don't show up. Second problem is that this is what my first three layers look like (sliced at 0.20 mm). I'm assuming my error is on the F360 side but I just don't understand what it is. I've watched several videos on YT about doing this, but they usually are doing a single color and are either embossing or debossing it. I want it flat.

After that it goes to infill and the rest looks fine.

Welcome Graig. I suggest using a question for a title. For example, 'How to add a multi-color flush logo to a flat surface?' or anything that describes your main question better.

I always print upside down in such cases, you can print the colors first, an then the rest of the coaster or casing, see e.g. this card box. If you look closely to the STL of the logo, you see them stitched with a very thin layer to connect all the parts. Reading your question I don't quite grasp the problem. If it is either STL generating of slicer related problems. How do the stl's look in an STL viewer? Please add images.

Try extruding the to-be-colored parts 0.01mm above the surface too. This smells to me like Z-fighting, two different surfaces at same height, floating point error (essentially randomness) decides which will be on top.

Do two extrusions in F360.
The first will be a 'cut' into the coaster. This removes the volume from the the coaster that will be your lettering and graphics from your stencil.
The second will use the same profile and depth. Except this time it will be a 'new body.' This will fill the volume that was removed in the first operation.
Looking at 'Bodies' in your F360 expandable tree in the upper left corner, your coaster should be one. Every letter and graphic that is isolated and not touching another letter or graphic should be another body after the last extrusion.
If you have a dual extrusion printer the coaster can be one extruder. All other objects can be the other extruder.


text:
Is it possible to read the state of a specific printer part from the firmware, such as the power of a stepper motor, LCD brightness, or fan speed RPM?
Is it possible to read the state of a specific printer part from Marlin-based firmware such as mriscoc, such as:

the power (on or off) of a particular stepper motor;
the brightness percentage of the LCD screen;
fan speed of individual fans (in RPM);
stepper motor voltage et cetera?

Preferably through the use of certain G-codes.


text:
Does rPLA stand for Recycled PLA, or is it a different type of material?
I see mixed terms such as 'rPLA, Recycled PLA, Recycled rPLA' used by different filament producers without a clear explanation or a standard definition.
Does it all mean Recycled PLA, or is rPLA a different material?

All brands and shops that I know of use rPLA name for recycled PLA. However, this is neither a chemical name abbreviation, like PLA, nor a naming standard that's enforced by any agency. Thus, every time you want to buy rPLA, you must check if it really means recycled PLA. Because it can mean something else and manufacturer won't break any laws by doing it.
Hopefully the name will solidify soon, and anyone who sells anything but recycled PLA as rPLA will risk getting sued for false advertising. But we'll have to wait for that.
Be aware that "up to 100% recycled material" means any non-zero number equal or lower than 100%. So 1% of recycled materials meets this declaration as well as 90%. Only when manufacturer gives straight number, or "at least" number, we can be sure that amount of recycled material is what we expect it to.

Great answer; once it does, I hope there is also a minimum percentage recycled requirement. My supplier claims 95% recycled, but I see some suppliers claiming as high as 100%, which seems unlikely.

@BobOrtiz "up to 100%" means any non-zero number equal or lower than 100%

You're right that some do this. "Up to" should be illegal, in my opinion, in most sales and marketing contexts. Language needs to be specific and clear in this case. The suppliers I encountered always stated "minimal 95%", ">95%" or ">=95%".

Another question about this would be about the term 'industrial waste'. Even if a minimum or "at least" number is available, what is the definition of 'industrial waste' and where did that 'waste' come from? If the production methods are purposefully 'wasting' a lot of filament, it's also easy to have 'min. 95% recycled'. My supplier doesn't even have a recycling program for me to send it back and the options for that are still very limited or expensive in the EU. So, even 'minimal 99% recycled from industrial waste' raises some questions.

PLA is produced for other uses than 3D printing, and plants using such material usually produce sprues and such as waste.


text:
Bottom layers print fine, then infill and wall layers instantly fail
I have an Ender 3 V2 which I use together with Creality slicer. I print in PLA at 200 °C. The print bed is set to 60 °C. The layer height I set to 0.2 mm. Print speed is set to 50 mm/s.
Printing on an Ender 3 V2, the bottom layers of the print I am attempting work fine, but as soon as the printer starts printing the infill it starts printing little balls of filament instead of the infill. Not sure what the issue is as this has never been an issue before, but this started happening after replacing my empty filament roll with a new one, the same PLA as before. Using the same print settings as I have for many successful previous prints.
How can I fix this?
The image is the bottom of a print
I printed a Benchy, but it looks pretty ugly.
Also noticed an erratic squeaking from the motor, not sure if that’s the cause or what I would do if it is.
After cleaning the bed and getting a perfect bottom print, the infills still won’t come out right.
Also tried doing some cold pulls to clean the nozzle and slow the print speed down to 30 mm/s but it still will not print infills well. Would love to hear some input.
After tightening the screw giving tension to the filament, the squeaking turned into thumping. I attached the youtube link where you can hear it in the first 15 seconds of the video on an extrusion.
https://youtube.com/shorts/pIZ7TYW5NlU?feature=share

In the photo, is that the top or bottom of the print?

Can we get a photo from the side? Are your Z steppers working okay?

The bottom layers aren't fine, they also look underextruded. We need more information to help you. I have inserted a hidden template, please [edit] your question and fill out the  template and remove the  to reveal the information in the question. We are particularly interested in the material, the temperature and the printing speed for instance. Thanks!

What's your actual question? It's best to reflect that in the title as well.

As a first step, try slowing down the print speed closer to 60.

Is your hotend cooling fan working properly? Could be heat creep leading to blockages and the extruder slipping.

@BobOrtiz - IMHO the title (probably) reflects the issue adequately. However, changing it into a (grammatically correct) title, such as "How can I fix my instantly failing infill and wall layers, even though bottom layers print fine?" just seems to add fluff, which (arguably) makes it harder to immediately see the issue (by a few seconds). I don't think every title has to be a question, does it? So long as the issue is clear, that is the main thing.

@Greenonline, I respectfully disagree. I read the current title and think 'so?'. It's just ambiguous what the user wants to achieve. In such posts one always needs to actually read the whole post, all text before maybe getting a slight idea. Which sometimes is lacking even a question in the body. It's annoying, when I scroll feeds I want to understand the question directly, it's a QA site. QA should say it all. Because if the question interests me, I'll maybe answer. But with such posts you need to read it all before you can decide if it even interesting. Very inefficient.

These sort of questions are hard to answer without having the hardware present. As such, this answer focusses on the observations posted in the question. A troubleshooting could help find the actual problem, and could be put into an answer as well.
Observations
By looking at the supplied images (one image in the first post), your printer is underextruding, even the bottom layers do not look good, they also are underextruded. You can see the layer under the top layer:

Your cold-pull actions have helped a little, the effect is less seriously present:

Quoting:

Also noticed an erratic squeaking from the motor, not sure if that’s the cause or what I would do if it is.

Troubleshooting aid
You should troubleshoot the extruder. It looks as if the frame is littered with small pieces of filament debris that could potentially be grinding debris. Grinding will reduce the amount of filament being extruded with under extrusion as result. Furthermore, check the whole extrusion path if filament can be extruded without too much force. You could decouple/bypass the extruder and feed the Bowden tube manually with a hotend at the correct temperature for your filament. If there is a lot of friction, investigate where this comes from.

The mess on the frame is just spaghetti from a failed print. And after doing the manual push with the Bowden tube, I do not feel a lot of resistance.


text:
Does PLA lose mechanical properties when recycled, and if so, how often can it be recycled?
In addition to the question Does rPLA stand for Recycled PLA, or is it a different type of material?.
Does PLA lose mechanical properties when it is being recycled into rPLA? If so, how often can it be recycled before being unusable for recycling? And how would filament manufacturers know or account for this? How would they know if I returned the new PLA or rPLA waste? What if, in theory, the same rPLA batch is sent back repeatedly for recycling?

Yes, recycled PLA loses mechanical properties.
According to Dr. D-Flo's excellent video on Recycling 3D Prints and Waste plastic into Filament (PET & PLA) it loses mechanical strength during every thermal cycle - i.e. when it is printed, when it is melted down for recycling, when it is next printed, etc.
Manufacturers account for this by mixing in "virgin" PLA. So "recycled PLA" is really a mix of recycled and new PLA. This will lessen the extent to which the recycled portion will affect overall strength of the result.
I do not know if/how manufacturers would account for how many thermal cycles the PLA you supply has been through.
If the mix of virgin/recycled PLA has more virgin than recycled, then it may not matter. If the mix favoured recycled then each batch would be worse than the one before. I suppose manufacturers can test a sample from the beginning of their re-extrusion, and if they find it too brittle (etc.) they can change the mix before continuing.

Nice answers Rob. Thank you!


text:
Does Ultimaker Cura account for the printhead in the print space?
I'm currently trying to print a really tall item that is somewhat width dependent (it's a dice tower, so I can't make it too small or thin or the dice won't travel through it properly) and it reaches the very top of the space designated for printing in Cura. By eye and looking at my printer (Wanhao Duplicator i3), I'm worried that the printhead won't be high up enough towards the end of the print to print the top of the tower, and don't really want to print something for 8 hours to find out.
Is this not a problem as Cura accounts for it, or is it worth slicing up the model, printing it in two or three parts, and then gluing them back together? I plan to sand it and paint it afterwards anyway, so any seams wouldn't necessarily be too much of an issue, I would just worry about messing with the geometry enough to make the print fail.
I should note I have already downsized the tower by about 30% to fit it in to my available print space. :-)

Have you checked to make sure that the settings for your printer in Cura have the same build volume?

@agarza , I’ve just been using the pre-made settings for my printer that Cura has given me and haven’t had any problems so far but I’ve never printed anything particularly tall before

Compare your settings to the build volume stated by the manufacturer.

@agarza, I've done this, the height of the build volume in Cura and the height given by the manufacturer are the exactly the same (180mm for reference). Will it be okay on the last millimetre or should I work in a tolerance of 1-2mm?

The slicer should warn you if the model is too tall for the build volume of your specific printer. If you feel that it necessary to work in a tolerance, that would be up to you.

Got it, thank you :-)


text:
How to distinguish filament runout and filament jam using a microswitch-based filament sensor in Marlin?
I found two great designs for a DIY sensor that achieve both filament runout and filament jam detection in one unit.
A clever design that only uses one microswitch as follows:

Source: Thingiverse.com
Another design using two microswitches, as follows:

Source: Thingiverse.com
I am not sure about the reliability of either yet, and I initially liked the design with one more switch. Then I realized there was no way to distinguish what event occurred (runout or jam), so I plan to make the second two microswitch versions instead. However, how would I wire this in a way so that my Ender 3 V2 running Marlin, specifically mriscoc firmware, would be able to interpret both signals separately and interpret them as two distinguishable events so that the exact event is reported (runout or jam)?
Alternatively, I could wire it to my Raspberry Pi, since I always print from OctoPrint only, and implement it there instead. However, I'd prefer to wire it to the printer board and have the firmware handle it.
Lastly, in comparison to these two specific designs, would an encoder wheel approach add benefits other than runout and jam detection?
Suggestions for better designs or approaches are also welcome.

Blue design
The blue design can only detect a lack of filament. It is boolean: Filament or No Filament.
Pink design
The pink design can have multiple states, combining two boolean values.
The right of the sensors is "Filament there".
The left is using a ramp. On pull along the ramp, the sensor is triggered once a certain amount of pull is overcome, either by pulling up, left or right. As a result of passing through the hole in the lever of known diameter. Any tangle or over thickness will act on the lever to the right and trigger the sensor, and so will strong yanking up or left, through those might self reset. As a result, this sensor will trigger a signal that could be called Tangle or No Tangle, or of course No Jam/Jam.
Your interpretation that there is no way to distinguish the results depends on one thing: that you put the sensors through a single loop back, for the effect of an AND gate.

Filament
Jam
Output of the Series

Filament in
No Jam
Run

Filament in
Jam
Stop

no Filament
No Jam
Stop

no Filament
Jam
Stop

The design is set up such, that the filament sensor shows connectivity on being pressed, while the jam sensor is connected in reverse: triggering it opens the loop. While the designer wired the two in parallel, they could also be connected in series for the same effect.
To overcome this design deficiency of only sending a stop message, you need to route the signal to your control board and distinguish the two signals. However, for all but the error message, the practical effect should be the same: the machine shall stop if either of the Stop conditions is triggered.
If you have other sensory equipment on the printer, you might quickly run into problems in that the number of free pins is usually extremely limited, so you might not have enough pins to route the signals separately.
is tangle trigger separate a good idea?
Now, is the additional requirement of pins and wiring a good idea when it comes to error handling? No.
In either detected case - no more filament or tangled filament - you need to stop printing and access the very same area to deal with the lack of feeding filament. Only in large operations, there is any reason to try and detect the two separately for logging purposes.


text:
How can printer firmware use encoder wheel data?
I am trying to understand the concept of the encoder wheel that is used as a filament sensor, as shown below. It can detect if filament is moving, making it suitable for filament runout and filament jam detection, although it wouldn't be able to distinguish the two events.

Source: Thingiverse.com
Filament runout detection is easy to understand, there is no filament passing (anymore), so the wheel isn't moving when it should.
Filament jam detection, the filament is not moving when it should, but how does the firmware know when it should expect the encoder wheel to move? Does it compare some last move time with an expected move time and some threshold time?
In addition to microswitch variants, such as shown in my question How to distinguish filament runout and filament jam using a microswitch-based filament sensor in Marlin?. I think an Encoder Wheel variant does add two more types of detection that a microswitch variant can't detect:

Filament break detection: It is probably the only way to detect the rare case where the filament breaks (after it passed the sensor), where one or two microswitches would both possibly not be triggered (as the filament is still present in the sensor), resulting in a false-negative where the printer keeps printing when it should stop.
Clogged nozzle detection, a clogged nozzle would also be detected as the filament simply stops flowing.

However, I think both 'filament break' and 'glogged nozzle' detection would not be distinguishable from a 'Filament Jam' or 'Filament Runout' event for an encoder wheel sensor as in both cases, the filament simply stops running the wheel when it's expected to run.
Additionally, under a YouTube video about this particular sensor a user 'hd-be7di' commented:

This sensor could work better if it shared data with the extruder. It could act like an "error correction wheel" by comparing the extruder's parameters to the sensor's to detect very tiny under-extrusions (and over-extrusions too!) instead of acting like a simple on-off switch.

Is my understanding correct, or are there other ways these encoder wheels can be used for 3D printers? How can printer firmware use encoder wheel data, and how does the firmware know when to expect a rotating wheel (with some delay or trigger threshold, I suppose) as well as ignoring retractions?

Filament break detection, I quote: as the filament is still present in the sensor not necessarily, old PLA frequently breaks at the spool, so you will experience a run-out of material.

Ah, I wrote that from the perspective of a break after the sensor, which I experienced only once. But, a break before the sensor would indeed be detected as a runout. Thanks for pointing that out.

No prob, especially PLA and even more the 2.85 mm variant is very brittle if not kept correctly and is prone to break near the spool.


text:
How can I get Cura's slicer settings to save into the G-code in a way that Moonraker/Klipper can read them?
I've been using Klipper and Cura for a while now (somewhat new to 3D printing), and I notice whenever I import a new G-code file to Klipper, none of the Slicer settings from Cura display in the G-code files in Klipper. However, when I imported a G-code file from my friend (the PETG one) I noticed it showed up right away:

I looked at the difference in the G-code formats, and I noticed that the file sliced with Prusa had the settings in the bottom of the file in the below (truncated) format:
;TYPE:Custom
; Filament-specific end gcode
; filament used [mm] = 5342.18
; filament used [cm3] = 12.85
; filament used [g] = 16.32
; filament cost = 0.45
; total filament used [g] = 16.32
; total filament cost = 0.45
; estimated printing time (normal mode) = 2h 49m 42s
; estimated printing time (silent mode) = 2h 50m 36s
; prusaslicer_config = begin
; avoid_crossing_perimeters = 0
; avoid_crossing_perimeters_max_detour = 0
; bed_custom_model =
; bed_custom_texture =
; bed_shape = 0x0,250x0,250x210,0x210
; bed_temperature = 90
; before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n
; between_objects_gcode =
; bottom_fill_pattern = monotonic
; bottom_solid_layers = 5
; bottom_solid_min_thickness = 0.5
; bridge_acceleration = 1000
; bridge_angle = 0
; bridge_fan_speed = 50
; bridge_flow_ratio = 1
; bridge_speed = 25
; cooling = 1
; cooling_tube_length = 5
; elefant_foot_compensation = 0.2
; external_perimeter_extrusion_width = 0.45
; external_perimeter_speed = 25
; external_perimeters_first = 0
; extra_loading_move = -2
; extra_perimeters = 0
; extrusion_multiplier = 1
; extrusion_width = 0.45
; fan_always_on = 1
; fan_below_layer_time = 20
; filament_colour = #FF8000
; filament_cooling_final_speed = 3.4
; filament_cooling_initial_speed = 2.2
; filament_cooling_moves = 4
; filament_cost = 27.82

Whereas the G-code generated by cura has them in the below format:
;End of Gcode
;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Filament_Sample-
;SETTING_3 PET-dev.1\\ndefinition = creality_ender3pro\\n\\n[metadata]\\ntype =
;SETTING_3 quality_changes\\nquality_type = standard\\nsetting_version = 22\\n\\
;SETTING_3 n[values]\\nadhesion_type = skirt\\nklipper_experimental_enable = Tru
;SETTING_3 e\\nklipper_ui_temp_support_enable = True\\nretraction_combing = nosk
;SETTING_3 in\\nsupport_enable = False\\nsupport_type = buildplate\\n\\n", "extr
;SETTING_3 uder_quality": ["[general]\\nversion = 4\\nname = Filament_Sample-PET
;SETTING_3 -dev.1\\ndefinition = creality_ender3pro\\n\\n[metadata]\\ntype = qua
;SETTING_3 lity_changes\\nquality_type = standard\\nintent_category = default\\n
;SETTING_3 position = 0\\nsetting_version = 22\\n\\n[values]\\nbrim_gap = 0.17\\
;SETTING_3 nbrim_line_count = 14\\ninfill_enable_travel_optimization = True\\nin
;SETTING_3 fill_sparse_density = 100\\ninset_direction = outside_in\\nironing_en
;SETTING_3 abled = True\\nironing_flow = 5.0\\nironing_inset = 0.2\\nironing_mon
;SETTING_3 otonic = True\\nironing_pattern = zigzag\\nmaterial_flow = 90.0\\nret
;SETTING_3 raction_amount = 3.0\\nretraction_hop = 1.0\\nretraction_hop_enabled
;SETTING_3 = True\\nretraction_hop_only_when_collides = True\\nroofing_layer_cou
;SETTING_3 nt = 1\\nroofing_line_width = 0.2\\nroofing_material_flow = 75.0\\nro
;SETTING_3 ofing_pattern = lines\\nskin_monotonic = True\\nskin_overlap = 4.0\\n
;SETTING_3 speed_print = 100.0\\nsupport_angle = 65.0\\nsupport_conical_enabled
;SETTING_3 = True\\nsupport_interface_density = 20\\nsupport_skip_some_zags = Tr
;SETTING_3 ue\\ntop_bottom_pattern_0 = lines\\ntop_layers = 1\\nwall_line_count
;SETTING_3 = 4\\nwall_overhang_angle = 55.0\\nwall_overhang_speed_factor = 80.0\
;SETTING_3 \n\\n"]}

Prusa has them in a more sensible format, whereas Cura stores them in INI format, stored as strings in a JSON object, which is then stored as a G-code comment (which seems ridiculously overcomplicated)
I already have a bash/jq function I use to parse those comments from the Cura sliced G-code and display it to me, but I'm trying to find a way to have it done automatically while the G-code file is getting generated. I have looked at some plugins for Cura, but I didn't see one that applied to this.
I know I could possibly modify the metadata.py (Moonraker) to have it parse for the Cura style G-code comments, or even write a Cura plugin, but it occurred to me that I can't be the first one to have this issue. And I didn't find anything for it upon Googling it.
The question: Does anyone have a simple workaround for this that doesn't require writing plugins or modifying existing Moonraker files?
And a bonus question: Why in the world would they store slicer settings nested in three different formats? Why?!
TL;DR: Cura stores the print config in the G-code comments, but Klipper/Moonraker can't parse them due to the format. Is there a simple way around this? (aside from writing a plugin or modifying Moonraker files)
P.S. I do see that some plugins seem related to this but I don't see one that formats and saves the settings to the G-code file. They either just extract them from the G-code, or require you to execute a script every time (or even launch a Node server..)
Update (Answer... Kinda)
So after looking into the Moonraker python, I can see that there actually is a Cura class that extends BaseSlicer class, and it's what handles the comment parsing:
class Cura(BaseSlicer):
    def check_identity(self, data: str) -> Optional[Dict[str, str]]:
        match = re.search(r"Cura_SteamEngine\s(.*)", data)
        if match:
            return {
                'slicer': "Cura",
                'slicer_version': match.group(1)
            }
        return None

    # .. Truncated some rows..

    def has_objects(self) -> bool:
        return self._check_has_objects(self.header_data, r"\n;MESH:")

    def parse_filament_weight_total(self) -> Optional[float]:
        return regex_find_float(r";Filament\sweight\s=\s.(%F).", self.header_data)

    def parse_filament_type(self) -> Optional[str]:
        return regex_find_string(r";Filament\stype\s=\s(%S)", self.header_data)

    def parse_filament_name(self) -> Optional[str]:
        return regex_find_string(r";Filament\sname\s=\s(%S)", self.header_data)

    # .. Truncated some rows..

    def parse_nozzle_diameter(self) -> Optional[float]:
        return regex_find_float(r";Nozzle\sdiameter\s=\s(%F)", self.header_data)

And if you look at the regex, it's looking for some config names like Filament weight, Filament name, Filament type, etc. But Cura stores it as just name, weight, and type, but puts it under a [metadata] section.
Also, the Cura-style metadata is all just concatenated into one string, which has a line return injected every 80 characters. This means that depending on the values, some of the names of the metadata items get truncated halfway through, and have another ;SETTING_3 injected as the prefix, which makes it somewhat of a nightmare to simply parse with RegEx.
I was trying to avoid having to modify any Moonraker code, but it looks like  I'll just have to alter the Cura class to extract all lines that start with ;SETTING_3 , then concatenate > JSON Parse > INI Parse.

Please don't post text as an image; see Why are images of text, code and mathematical expressions discouraged?.

@agarza hm, ok. Updated. I thought about that but figured it was ok because I wasn't really posting the text to be parsed/read through. I just wanted to show the side by side differences between the two. And I did have the code in the draft and thought it just made it too cluttered/long.

Does this answer your question? Is there a (common) way to embed used Slicer settings inside the G-code file?

@BobOrtiz Not really. I actually found that there is a Class that should be able to do this, already in Moonraker. I just need to see why it doesn't work (I updated y original post)

Not sure why I wasn't able to find this initially, but here's a list of replacement strings that can be used in the Start/End G-code settings of the machine/printer profile.
In my Machine profile settings, I inserted the below text at the top of the Start G-code section:
; Cura/Material/Profile settings
;Layer Height: {layer_height}
;MINZ: {layer_height_0}
;Print Speed: {speed_print}
;first_layer_bed_temp: {material_print_temperature_layer_0}
;Nozzle diameter = {machine_nozzle_size}
;Filament id = {material_id}
;Filament type = {material_type}
;Filament name = {material_name}
;Filament brand = {material_brand}
;Filament amount = {filament_amount}
;Filament weight = {filament_weight}
;Filament cost = {filament_cost}
;Jobname = {jobname}

; Ender 3 Custom Start G-code
; ... Rest of my start G-code was here

And now, when I generate a new G-code file, it has the below data in the file:
; Cura/Material/Profile settings
;Layer Height: 0.2
;MINZ: 0.2
;Print Speed: 30.0
;first_layer_bed_temp: 260.0
;Nozzle diameter = 0.4
;Filament id = generic_abs_175 #2
;Filament type = ABS
;Filament name = ASA
;Filament brand = iSANGHU
;Filament amount = [1.01]
;Filament weight = [3.013193642578125]
;Filament cost = [0.05423748556640625]
;Jobname = TN1-148_SHAFT_ADAPTOR

; Ender 3 Custom Start G-code

(Note: I had to save an ASA material as ABS because apparently, Cura thinks my printer profile isn't compatible with ASA, so it's saved as ABS. but that value is accurate to what's in the configs)
And it works fine in MoonRaker as well

Source: How to access material type (eg PLA, PETG etc) from Cura post-processing plugin?


text:
How does Marlin firmware use filament width sensor data for flow control?
I found this great DIY 'filament diameter sensor' or 'filament width sensor'. It is called Inline Filament Diameter Estimator Lowcost (InFiDEL), as shown below. The GitHub project states:

A cheap, yet precise filament diameter sensor, intended to compensate for filament diameter deviations in real-time.

Model source: Printables.com or Youmagine.com
It can essentially be used for flow control. In a YouTube video the maker (Thomas Sanladerer) says:

... the firmware can then compensate for any differences in filament diameter and filament cross-sectional area essentially by adjusting the extrusion multiplier ...

The video also explains how three different sized drill bits are used to calibrate the measurement.
To my understanding, it uses a principle where a hall effect sensor measures magnetic strength that is translated into a voltage that reflects the diameter, such as 1.78 Volt for 1.78 mm. I plan to implement something like this, however, I don't know how Marlin implements this and I'd like to understand it first. The Marlin documentation does contain several G-codes for a filament width sensor, such as M405, M406, and M407, but I cannot find anything about how Marlin implements this. Also, shouldn't the firmware know the distance between the nozzle and the filament width sensor to know when to compensate? The distance seems to be not implemented by Marlin entirely.
Lastly, I think that this sensor could also serve as a filament runout sensor by noting that the diameter is simply close to 0 mm.

P.S. as you buy (bought recently 2 spools) premium quality filament from a Dutch OEM, you don't need one!

The Marlin firmware is ready for connecting such a filament sensor. You need to adjust the configuration (Configuration_adv.h) to enable the FILAMENT_WIDTH_SENSOR definition (remove the // before #define FILAMENT_WIDTH_SENSOR):

The distance from measurement to melting chamber should and is taken into account.

shouldn't the firmware know the distance between the nozzle and the filament width sensor to know when to compensate

The firmware does do that. You can either set the distance inside the firmware compile-time (which is pretty safe as the distance doesn't change much unless you have a Bowden setup where you exchange the tube for a different length tube or use a tool changer/multiple tool heads with different tube lengths) or through G-code:
M405 D<cm> specifies that distance through G-code, otherwise the firmware set value is used: