A4988 vs TMC2209: which stepper driver to choose

A deep dive into A4988 versus TMC2209 stepper drivers for silent 3D printing

The A4988 is a basic stepper driver that moves a motor one microstep per pulse, up to 1/16 microstepping, and sets motor current with a trimmer. The TMC2209 is a Trinamic driver that adds stealthChop quiet operation, UART configuration, interpolation to 256 microsteps and stall detection for sensorless homing. If you want a quieter printer and your mainboard has socketed drivers, the TMC2209 is the upgrade to look at. If the drivers are soldered onto the board, or the printer is already quiet enough and reliable, there is nothing to swap.

This guide compares the two chips from their datasheets and driver documentation, explains which features need extra wiring or firmware, and gives a safe swap checklist, including the Vref step that most people get wrong. Numbers are from Allegro’s A4988 datasheet, Pololu’s and BigTreeTech’s driver pages and the Klipper and Marlin documentation linked at the end.

Affiliate · Featured hardware Snapmaker U1 5X More Speed. 5X Less Waste.

The consumer toolchanger 3D printer: the SnapSwap 4-toolhead system swaps heads in 5 seconds for true multi-color and multi-material printing, with smart calibration and auto filament loading.

  • 4 toolheads · 5 s swap
  • Up to 500 mm/s · 20,000 mm/s²
  • 270 mm cube build volume
  • Multi-color & multi-material
See the Snapmaker U1 →
Snapmaker U1

A4988 or TMC2209 in 30 seconds

  • Choose the TMC2209 if you want much lower motor noise, want to read driver diagnostics, or want sensorless homing, and your board takes socketed drivers.
  • Keep the A4988 if the printer works, noise does not bother you, or the drivers are soldered on.
  • Expect extra work for UART and sensorless homing: wiring, firmware and tuning. Standalone mode needs only a Vref setting but does not expose software features.
  • Whatever you fit, set current from the formula for that driver, with the printer powered off while you swap it.

Side-by-side specifications

FeatureA4988TMC2209
Motor supply voltage8 to 35 V (Pololu), 35 V absolute maximum (Allegro)29 V maximum (BigTreeTech page)
Motor currentUp to 2 A per coil with enough cooling (Pololu); about 1 A per coil without a heatsink2 A RMS, 2.8 A peak (BigTreeTech)
MicrosteppingFull, 1/2, 1/4, 1/8, 1/16 (Allegro)Interpolates to 256 microsteps (Klipper’s config reference describes the driver stepping at 256)
Current settingTrimmer: Imax = Vref ÷ (8 × RCS)Trimmer (standalone) or firmware over UART
Quiet modeMixed decay lowers audible noise (Allegro), but it is a basic chopperstealthChop (very quiet at low speed) and spreadCycle (more torque), per Marlin
Software controlNoneUART (single wire on the module’s PDN_UART pin)
Sensorless homingNoYes, via stall detection and the DIAG pin (Klipper)
OvertemperatureThermal shutdown at a typical 165 °C, 15 °C hysteresisReports overtemperature flags you can read (Klipper ot, Marlin otpw)

Noise: what changes and what does not

The big audible change comes from stealthChop. Marlin’s documentation says it drives the motors with PWM voltage instead of current, giving nearly inaudible stepping at low speeds, at the price of a lower speed limit. spreadCycle gives more torque and is slightly noisier, and Marlin’s hybrid mode switches between the two at a speed you set with HYBRID_THRESHOLD. Klipper adds that stealthChop adds positional lag, about 0.150 mm in its example, and recommends picking one mode and sticking to it.

A TMC2209 will not silence everything. Fans, resonance in the frame and loose mounts are mechanical noises that stay. If you still hear a hum after the swap, see stepper vibration dampers.

Microstepping: 256 is not the same as 256 real microsteps

The A4988 tops out at 1/16 and you choose the step mode with the MS pins, so the firmware’s microstep setting has to match them. On a TMC2209 with interpolation on (Klipper’s default), the driver internally steps at 256 microsteps while the firmware sends fewer. Klipper’s TMC page says interpolation adds a small positional deviation, about 0.006 mm in its example at 16 microsteps, and suggests 64 or 128 microsteps with interpolate: False if you want accuracy and low noise together. Pololu adds a caution for the A4988: microstepping only works when the current limit is low enough for current limiting to engage, otherwise the motor may skip microsteps. The practical difference for print quality is small; the difference in sound is what most people notice.

Setting current on each driver

The two chips use different formulas, and the sense resistor on the module is part of the formula, so a Vref value copied from another driver gives the wrong current.

DriverFormulaWorked example (arithmetic, not a recommendation)
A4988 (Pololu, 0.068 ohm)Vref = 8 × I × RCS1 A limit: Vref of about 540 mV (Pololu’s figure)
TMC2209 standalone (BigTreeTech, 110 milliohm)IRMS = Vref ÷ √20.8 A RMS: Vref of about 1.13 V
TMC2209 on UART in Klipperrun_current in amps RMSSet in printer.cfg, no trimmer to adjust

Older green Pololu boards use a 0.050 ohm resistor, so the same Vref gives a different current. Pick a value at or below the motor’s rated current, then check the driver and motor for heat after a few minutes of printing.

UART and sensorless homing

In standalone mode a TMC2209 behaves like an A4988: pulses in, current from the Vref trimmer, stealthChop on by default per BigTreeTech’s module notes. The software features need UART. Klipper documents the section as [tmc2209 stepper_x] with uart_pin, run_current (amps RMS) and stealthchop_threshold. Marlin says standalone drivers cannot be configured in software, and that UART or SPI drivers need extra wiring to the board. Your mainboard manual says whether the sockets route the UART lines. If you are moving to Klipper anyway, see Marlin to Klipper migration.

Sensorless homing lets the driver treat a stall as an endstop. Klipper lists the TMC2209 as stallGuard-capable and uses diag_pin and driver_SGTHRS (0 to 255). Its caveats are worth knowing before you remove a switch: stall detection is unreliable below about 10 RPM and degrades at high speed; hold_current must not be set; and standalone mode does not work for it. Marlin notes that stallGuard only works in spreadCycle. Keep the mechanical endstops until sensorless homing is repeatable on your printer.

Swapping A4988 for TMC2209 safely

  1. Check the board. Socketed drivers can be changed; soldered drivers cannot. Read the board’s manual for socket orientation and whether UART is wired.
  2. Power off and unplug. Never insert or remove a driver, or connect or disconnect a motor, while powered. Pololu warns that disconnecting a motor from a powered driver can destroy it.
  3. Fit the driver the right way round and add a heatsink. Marlin’s TMC page says higher currents need active cooling and a heatsink.
  4. Set Vref before the first move. BigTreeTech’s TMC2209 default is Vref 1.2 V (±0.1 V), which it lists as about 0.9 A RMS. Its formula for a 110 milliohm module is IRMS = Vref ÷ √2. Turn the trimmer only while the printer is off, then power on to measure, and never exceed your motor’s rating.
  5. Update firmware. For standalone mode nothing changes. For UART, add the driver type, current and mode settings in your firmware; in Klipper use [tmc2209 stepper_x] for each motor.
  6. Test one axis at a time at low speed, check for heat after a few minutes, and read driver status with M122 (Marlin) or DUMP_TMC STEPPER=stepper_x (Klipper).

If problems appear afterwards, the diagnosis steps are in stepper driver problems.

When the board has soldered drivers

Many stock mainboards have the drivers soldered on. The options are then a new mainboard with socketed or higher-end drivers, or leaving it as is. Mainboard choice covers what to look for. Do not attempt to desolder and replace drivers unless you are experienced; a new board is the safer route.

Common mistakes

  • Fitting a TMC2209 and leaving the A4988’s Vref value, which can drive the motor at a very different current. Recalculate for the new module.
  • Assuming UART works because the driver is a TMC2209. It also needs wiring and firmware.
  • Expecting silence from mechanical noise sources the driver cannot affect.
  • Using stealthChop for high-speed moves and then seeing skipped steps, because stealthChop has a speed limit.
  • Removing endstops before sensorless homing is proven.

Frequently asked questions

Is TMC2209 better than A4988?

For noise, diagnostics and sensorless homing, yes: those features are on the TMC2209 and not on the A4988. For a printer that already runs reliably and is not noisy, the A4988 still does the job, and replacing it takes some effort.

Can I use a TMC2209 in an A4988 socket?

Often, if the board takes stepstick-style modules, but check the board’s manual for orientation and whether the UART lines are routed. In standalone mode it needs only a Vref adjustment and acts like an A4988 with quieter stepping.

Does a TMC2209 need a heatsink?

Fit one. Marlin’s TMC page says higher currents need active cooling and a heatsink, and the heat is harder to shed in an enclosed electronics bay.

Do I need UART to use a TMC2209?

No. Standalone mode works without it. UART is needed for setting current in firmware, reading diagnostics and configuring modes.

Sources