Files
bambuddy/backend
maziggy 58594c60c9 Print an H2C two-nozzle plate from the carriage it was levelled on
The two carriages were the wrong way round: extruder index 0 was treated as
    the fixed hotend and index 1 as the swappable rack, and it is the other way
    about. A plate using both was levelled with one nozzle and printed with the
    other, several millimetres off the plate.

    Three sources agree, and disagreed with the code. Telemetry reports
    ams_extruder_map {'0': 1, '1': 0, '2': 0}. BambuStudio, dispatching a plate
    that used all three of those AMS units, sent the filament from the unit on
    extruder 1 to physical nozzle 1 and the ones on extruder 0 to rack positions
    16 and 18, and that print completed. And the two constants could not both
    have been right: _FIXED_NOZZLE_ID is 1 while the fixed extruder was 0, in a
    scheme where physical nozzle id N sits on extruder N.

    The old value came from the #2800 hardware A/B, where [17, -1, -1, 1] printed
    in mid-air and [1, -1, -1, 17] printed correctly. That result stands -- it
    established which wire worked. The extruder indices were not measured by it;
    they were inferred by pairing the working wire with a slot_extruders list
    produced by the 3MF reader that has since turned out to mis-read exactly
    these files. The reasoning is recorded at the constants so a future
    regression report is not re-litigated from scratch.

    Also withholds nozzle_mapping entirely when more than one filament group
    needs the rack. Two groups on one extruder means that extruder is a rack and
    the plate wants a different hotend per group -- which physical slot each
    takes is the slicer's choice against the live rack and is stated nowhere in
    the file, since both groups can carry identical diameter and nozzle type.
    Studio dispatched such a plate to 16 and 18; nothing here can reproduce that,
    and answering anyway is what printed in mid-air, so the firmware picks.

    Restores the fixed 32-entry padding that dfeac792f replaced with the plate's
    slot count. That was derived from a single 3-entry capture which turned out
    to be a calibration job; Studio's dispatch of a real project print on the
    same machine is 32 entries.

    Both constants are read in one function, on the nozzle-rack path, so no other
    model is affected. Verified on hardware: the plate that printed in mid-air
    now prints.
2026-08-15 14:59:02 +02:00
..