buzzing whenever motor is enabled (ODrive S1 + M8325s motor kit)

Hi,

I’m using the ODrive S1 and M8325s Motor Kit and I get a constant audible buzzing whenever the motor is enabled, even with zero command.

The buzzing appears every time the axis is enabled, regardless of whether the motor is spinning or set to torque control with 0 torque. It disappears immediately when the axis is set to true IDLE.

I’m using the onboard magnetic encoder.
Measured field strength is ~0.102.
I ran harmonic calibration, but it had no effect.

I already tried:

lowering current_control_bandwidth

lowering encoder bandwidth → no audible change

I also tried anticogging calibration, but it fails with a MISSING_ESTIMATE error.

When inspecting the raw encoder signal (motor at rest and disabled), I see some noise (attached plot). I’m not sure if this level of noise is considered normal.

I don’t think this is a low-speed instability issue, since the buzzing persists even at higher rotational speeds.

Is there any supported way to reduce or eliminate this buzzing?

Thanks

Hi! This is primarily noise from the current sensing, causing audible noise via magnetostriction in the motor itself. This is particularly audible in larger outrunners like those – the rotor geometry causes it to almost act as a speaker. We’re working on a software update to reduce the current controller noise, which should greatly quiet motors like those. No specific timeline yet, but should be ready as an experimental feature in the next few months. That being said, outrunners (especially open construction ones like those) will always be intrinsically a bit loud under speed – happy to make a recommendation if you need a quieter solution!

And to answer your other questions:

I also tried anticogging calibration, but it fails with a MISSING_ESTIMATE error.

This is typically due to not setting up a proper position reference frame – since you’re using the onboard encoder, you’ll likely want the absolute encoder reference frame.

I see some noise (attached plot). I’m not sure if this level of noise is considered normal.

Yeah, this level of noise is pretty normal. Magnetic encoders are intrinsically a bit noisy – the one we use onboard the S1 (MA702) has about 0.03° of RMS noise, eyeballing that plot you’re seeing exactly that. The GUI also samples a lot slower than the ODrive’s onboard loops, so there’s a good bit of aliasing. There’s also filtering (the encoder estimator) between the encoder’s raw value and the actual ODrive’s internal position count (axis0.pos_estimate).