Beware tip-forming is not supported with the OAMS. Trying to use it will lead to nothing but dissapointment, grief, and general despair.
In order to make the OAMS work with your printer, you will need to have some way to cut the filament before each filament swap.
In the past, other solutions, such as ERCF, have used methods like tip forming. Tuning tip forming has proved fraught with errors and a major source of headches and jams in the ERCF. Any change to hotend, length, or otherwise leads to new tuning of the tip forming parameters. These factors are the reasons bambulab printers include a filament cutter in their toolheads.
For Vorons, if using the Stealthburner, we can recommend the excellent filametrix mod, or the more recent (and its spiritual successor) filamATrix, which combines G2 and CW2 mods for the Stealthburner.
If using dragonburner, Chirpy has created a cutter designed for it.
If using an EVA style toolhead with an orbiter, this is a cutter designed for it.
If using XOL, xol-metrix is a solution for that toolhead.
If using the AT4, you can use KutteR (knight_rad.iant's) own, there are also options for the A4T-Cutter, and the CNC Crossbow.
Whatever you do, make sure whatever extruder you use DOES NOT have a pre-extruder filament pressure sensor. Below it will be explained why this setup is NOT recommended, here be dragons for those that choose to avoid this advice.
However, read this section thoroughly, and understand it:
Discord is not a nice to have option. If you have never used it, sign up for it and join our community, it is designed to give you the latest and best information on how to set up the FPS. It has information that might be missing from the documentation, as it is cutting edge or current, and waiting to be integrated. So please, join us
If you’ve never set up a Multi-Material Unit (MMU) before — especially on a Voron — this is the section you absolutely must read before touching a wrench.
Bambu Lab’s AMS works because Bambu controls everything: the printers, the couplers, the tubing, even the filament. It’s the Mac ecosystem — closed, consistent, and polished.
OpenAMS on a Voron is more like the PC world. You can configure anything, but with that freedom comes troubleshooting. BLDC motors, encoder slip, PTFE tubing ID/OD choices — all of these variables are yours to manage. If you understand the system, you’ll get a rock-solid setup. If you skip this section, you’ll probably end up in #customer-support with bald filament and a motor full of dust.
Stepper systems (ERCF, BoxTurtle, EMU) count steps. If the motor turns 200 steps, you know the filament advanced by 200 steps — unless it slipped.
BLDC systems (AMS and OpenAMS) don’t know their position. They rely on encoders that measure how far the filament goes, and HAL effect sensors that tell it if the motor is running and at what speed. If friction is high, the encoder happily reports rotation while the filament just sits there grinding into powder.
That’s why OpenAMS needs the Filament Pressure Sensor (FPS). It’s a HAL effect sensor that tells the entire system how much compression (in the filmanet) there is, and hence, in comparison to all other sensors, if the system is doing what it is supposed to do.
The FPS is the filament pressure sensor. It is an integratal part of the OAMS system, and it is the thing that makes "following", syncrhonization between the BLDC and the toolhead extruder, possible. It also acts as a endstop switch to determine when the filament hits to main direct extruder filament gears.
The Filament Path Sensor (FPS) is a critical safety and monitoring component in the AMS system. Its primary function is to detect whether filament is properly moving through the system toward the toolhead.
It is important to understand that FPS fault activation is not inherently a malfunction of the sensor itself. Instead, it provides diagnostic feedback on the state of the filament path.
If the FPS slide triggers before the filament reaches the toolhead, this is not a flaw in the FPS. Instead, it indicates a discontinuity in the filament path, or the fact you are not using 3mm ID PTFE tubing, and that's the only thing that is going to make this thing work, which can lead to reliability issues across all systems, including BoxTurtle (BT), ArmoredTurtle (AT), EMU, ERCF, and similar setups.
The FPS should be treated as a diagnostic messenger:
Addressing the filament path discontinuity—such as smoothing bends, removing friction points, or adjusting PTFE tubing—is the proper solution to early FPS activation.
The PTFE tubing in the filament path must be perfectly smooth and unrestricted by the FPS case. Any interference can prevent the FPS slide from moving freely, which may lead to feeding issues.
Common causes of interference:
Even if the FPS slide moves smoothly, applying a small amount of EP2 Lube (or a similar PTFE-compatible lubricant) to the tubing where it meets the FPS case can improve performance and reduce friction.
Standard filament path: 3 mm ID / 4 mm OD PTFE tubing.
Special cases (e.g., Orbiter extruders): Some extruders accept only 2 mm ID / 4 mm OD PTFE. In these cases:
There is no hidden mechanism or “black magic” in AMS operation.
The AMS feeds filament until the FPS is triggered.
Once ptfe_length is configured after calibration:
upper_threshold (a value between 0 and 1 representing proximity to the buffer end).A common question in AMS setups is whether toolhead switches can replace or supplement the Filament Presence Sensor (FPS). In most cases, adding toolhead switches is not recommended.
Some users ask: “Why not use the toolhead switch instead of the FPS?” While this can work in stepper-driven follower systems, it is not suitable for AMS systems with BLDC motors.
Implication: The AMS must rely on the FPS to determine the exact filament position at the extruder gears. “Close enough” is not sufficient—precise engagement is required to avoid grinding or jamming filament.
Toolhead switches are functional on systems using stepper-driven followers, such as:
In these systems, a switch can indicate filament presence and ensure proper tool engagement.
The FPS ensures full engagement of filament with the extruder gears.
Replacing the FPS with a switch could allow the BLDC motor to push filament before it reaches the correct position, risking:
Adding a switch in the path only increases impedance and does not improve reliability. At best, it is redundant “belt-and-suspenders” hardware.
If a switch is desired:
Here’s a beginner-friendly guide explaining how OrcaSlicer maps “colors” to toolchangers and how it relates to Klipper and MMUs:
In OrcaSlicer, “colors” don’t just refer to visual colors. Each “color” in the software represents:
You’ll often see them as Color 0, Color 1, Color 2, etc.
When slicing for multi-material or multi-extruder prints:
In G-code, these are invoked as T0, T1, etc.
A toolchanger is a printer that physically swaps toolheads (extruders). Each toolhead is usually fixed with a different material.
T0, T1, T2, etc.If you're using a toolchanger, each “color” in OrcaSlicer must match the right tool number in your Klipper config.
An MMU (like the Prusa MMU or ERCF) uses a single extruder but swaps filament between different materials.
Klipper treats this differently: It still uses T0, T1, etc., but all tools are virtual and share the same hotend.
The MMU loads/unloads filament automatically when the tool (color) changes.
In OrcaSlicer:
extruder 0 in Klipper), and the MMU handles the switching.In your Klipper config for MMUs, you’ll often see all
T0–T4mapped to the same physical extruder.
Still go to Printer Settings > Extruders.
Add multiple extruders (Color 0 to 4), but:
Set tool change G-code to manage filament loading/unloading (T{n}).
Assign parts in the slicer to Color 0–4. The MMU system will handle the swaps.
Klipper doesn't care about "colors"; it only cares about tool numbers (T0, T1, etc.).
printer.cfg, define each tool with the corresponding heater and stepper.T0 triggers a macro to load filament 0).In OrcaSlicer:
Each color you assign to a part of a model maps to a tool number (T0, T1, etc.).
For example:
T0T1T2T3These tool numbers are inserted directly into the generated G-code (e.g., T0, T1...), and Klipper runs the associated macros when it sees them.
T0, T1, etc. to Filament GroupsOpenAMS defines a filament group as a specific physical spool slot in the AMS (Automatic Material System), like this:
[filament_group T0]
group: oams1-0
[filament_group T1]
group: oams1-1
[filament_group T2]
group: oams1-2
[filament_group T3]
group: oams1-3
That means:
T0 maps to spool slot 0 on AMS 1 (oams1-0)T1 → oams1-1T2 → oams1-2T3 → oams1-3So when you select T2, the system will:
T0, T1, etc.Each tool macro just calls a shared macro with the right filament group:
[gcode_macro T0]
gcode:
_TX GROUP=T0
_TX is the central toolchange handler. It’s where the logic lives.
_TX Does[gcode_macro _TX]
This macro:
Checks if the right filament is already loaded.
If yes, it skips switching.
If not, it:
SAFE_UNLOAD_FILAMENTOAMSM_LOAD_FILAMENT GROUP={GROUP}CLEAN_NOZZLE to purge/clean before printing resumesSAFE_UNLOAD_FILAMENTThis macro:
CUT_FILAMENTOAMSM_UNLOAD_FILAMENT)OAMSM_LOAD_FILAMENTThis command is part of the OpenAMS plugin and:
T0T1At print time:
T0 triggers _TX GROUP=T0 → loads oams1-0 (white)T1 triggers _TX GROUP=T1 → unloads current → loads oams1-1 (black)In OpenAMS, the filament group feature enables seamless filament management by allowing multiple spool bays to be grouped together. This setup facilitates infinite spooling, ensuring uninterrupted printing by automatically switching to another spool within the same group when the current one runs out.([OpenAMS Documentation][1])
Primary Spool Selection: When a print begins, the system selects the first available spool in the defined filament_group.([OpenAMS Documentation][1])
Automatic Switching: If the active spool depletes during printing, OpenAMS automatically transitions to the next available spool within the same group, provided it matches the required filament type (e.g., same color and material).([OpenAMS Documentation][1])
Spool Replacement: You can replace an empty spool during an ongoing print. Once the current spool is exhausted, the system will revert to the newly loaded spool, maintaining continuous operation.([OpenAMS Documentation][1])
This functionality is configured in the Klipper firmware using the [filament_group] section, where you specify the associated AMS bays. For example:([OpenAMS Documentation][1])
[filament_group T0]
group: oams1-0, oams1-1
In this configuration, the system will first attempt to use the spool in oams1-0. If it's unavailable or runs out, it will switch to oams1-1.([OpenAMS Documentation][1])
If all spools within the filament_group are depleted or unavailable, the printer will pause and prompt you to load a new spool. This pause prevents print failures due to filament exhaustion and allows you to resume printing once a new spool is loaded. ([Bambu Lab Community Forum][2], [Reddit][3])
Filament Consistency: Ensure that all spools within a group contain filament of the same type and color to maintain print consistency.([Bambu Lab Community Forum][2])
Monitoring: Regularly check the status of your spools to anticipate when replacements will be needed, minimizing pauses during printing.