8 November 2026 · Soldr

L298N motor not spinning? Check these seven things

Short answer: the most common causes are an Enable pin that's low (the jumper removed and the pin not driven), both direction inputs at the same level, no common ground between the module and your board, a motor supply that's too weak, or a PWM value too low to start the motor. The L298 datasheet explains each of them.

The L298N module is the classic way to drive two DC motors from an Arduino or ESP32. When the motor just sits there, or hums without turning, the module is usually fine. The facts below come from ST's L298 datasheet, as cited on our L298N reference page. Details that belong to the module board rather than the chip are marked as such.

How the chip decides to drive a motor

Each motor connects across one bridge: OUT1 and OUT2 for bridge A, OUT3 and OUT4 for bridge B. Each bridge has two direction inputs (IN1/IN2 for A, IN3/IN4 for B) and an Enable input. From the datasheet:

1. The Enable pin is low

Modules usually ship with a jumper on ENA and ENB that holds them high, so the motor runs at full speed. To control speed, you remove the jumper and drive ENA with a PWM pin. If you removed the jumper but never connected ENA, or your code writes 0 to it, the bridge stays disabled. Put the jumper back to test, or check the PWM pin and value.

2. Both direction inputs are the same

IN1 and IN2 both low, or both high, gives no rotation. Set one high and the other low. Check in the code that the pin numbers match your wiring.

3. No common ground

The motor supply's ground, the module's GND and your board's GND must all be connected. Without that, the input signals have no reference and the module ignores them. This is the most common wiring miss.

4. The motor supply is too weak

The power budget guide covers adding up these currents.

5. The logic supply and the 5 V jumper

The chip's logic supply (VSS) has a 7 V absolute maximum. Most modules have an on-board 5 V regulator, enabled by a jumper, that makes the logic supply from the motor supply. That regulator and its limit are board details the chip datasheet doesn't cover. If you remove that jumper, or your motor supply is outside what the regulator accepts, feed 5 V to the module's 5V pin yourself.

6. PWM too low to start

A low PWM duty cycle may be enough to keep a spinning motor turning, but not to start it. Test at full speed first (jumper on, or PWM at maximum). If it turns, raise your minimum speed in code.

7. A 3.3 V board driving the inputs

With the logic supply at 5 V, the chip's input thresholds accept 3.3 V logic, so an ESP32 can drive IN1-IN4 and ENA/ENB directly. Whether a particular module adds anything between the header and the chip isn't documented. If an ESP32 can't drive yours and an Uno can, look at the module.

Keep it cool

The L298 is an older bipolar driver and gets hot at high current. The datasheet gives 35 °C/W junction-to-ambient. That's why modules carry a large heat sink. If it's too hot to touch, reduce the load or use a driver rated for your motor.

Wiring it with Soldr

When you describe a motor build ("I want to build a two-wheel robot with an Arduino Uno, an L298N and two TT gear motors on a 7.4 V battery"), Soldr picks the parts, plans the power and shows how to wire every part. Check the ENA/ENB plan and the common ground in the wiring before you power up.

On Compoden: L298N motor driver. Describe your build on app.soldr.ai. Sign in and get 100 credits free.