Hissing noise from motor


I am using IONI drives to drive a several different linear motors. I am pleased with the performance, but I always have a hissing noise, probably caused by the PWM driving of these motors.

Can this be eliminated? I am asking because my Yaskawa servo motors are dead quiet. So what is the difference here; am I doing something wrong?

I am not sure what information is relevant to track this down, so please let me know what you need and I will provide it.



Motor noise can be reduced somewhat by lowering the torque bandwith, which can be done in Granity/Tuning. Also, the PID/PIV tuning can cause audible noise if the parameters are very tight.

Here’s an excerpt from Tuning tab wiki page:

Limiting torque bandwidth to a certain level may have several advantages:

- Improve tuning of velocity or position mode
- Reduce motor audible noise
- Smoothen motion

Try various values to find the optimum for your system. Typically higher value allows setting higher velocity and position P gains giving more servo stiffness. Typically the optimum bandwidths are between 220-1500 Hz.

If you wish to check torque controller step response in testing tab, then before testing set this value to maximum and also untick Goals/CIS.

Kind regards,


Thank you for that information. Unfortunately it does not help. I have done all that and more.

But just to be sure, I just reduced the gain parameters by an order of magnitude and removed the feed forward parameters altogether. Even when putting the torque limit to its lowest value the hiss is always there. It changes the pitch, but that is about it.

I have been building CNC machines as a hobby for more than 10 years using various servo drives. And I get good performance out of the IONI drives - I have 5 of them. But I can not get them to be quiet, in spite of hours of tuning attempts. This has not been problem in the past (milling machine is loud anyway), but on the latest machine I need them to be.

Any of the motors I have that are paired with the manufacturer’s servo drive are very quiet or even completely silent (though those are all rotary). But I checked with someone who has one of the exact same linear motors I use - but with the manufacturers drive. And he said his drive is very quiet and does not have the hissing I experience. I need to know if I just have the wrong tuning parameters (will gladly spend more time on it), or is there some fundamental difference with the IONI drives that won’t let them be quiet and I have been chasing an unattainable goal (gotta replace the drives)?

Again, I thank you for your time.


Hello @janbbeck - Have you managed to solve this issue? I am considering Granite drives for my linear motor application.



The first revision of IONI had/has some crosstalk noise due to the PCB layout, which causes audible noise from the motor. This issue was addressed in the revision 2, however it was not completely removed.

The revision can be checked from the text on the PCB. The text above the model marking has a R2 after the “IONI servo drive” text for the revision 2.

Kind regards,


You are the second person in a couple of weeks that contacted me about using these for linear motors. I have had limited success. Granite Devices suggested reducing the resistance and/or inductance to values that are fictional. This allowed me to reduce the noise, but I have not had a chance to retune all my motors, so I don’t know yet how that affects performance.
So my take on it is this: I have a lot of servo drives and motors, 5 of which are IONI drives. I am using these IONI to drive 3 different types of linear motors. I have had them for a year or two and periodically tried to re-tune them, because of how quiet my other servo motors are. I felt like I was doing something wrong. None of them are acceptably quiet at this point in time. I cannot speak for other motors, but if you plan to use Parker MX or Trilogy linear motors, I cannot recommend the IONI. The best options are to either get a used drive on ebay from the motor manufacturer, or to go with a Kflop/Snapamp.

Another thing to consider is that the tuning is a bit weird for granite devices. Commonly, for a servo drive, you get to change P,I and D values, as well as feed-forward parameters, and one or more IIR filters, dead band, etc. The granite software does not do it that way. You get an option combination that was quite unfamiliar to me:
P and I for the velocity loop,
P for the position loop.
feed-forward gain for velocity, acceleration and position. They may be related to some of the ‘D’ values but the software does not explain…
Nor is there any sort of step-response/frequency analysis or IIR filter to use such information with. You only get a torque bandwitdh limit, but no facility to decide upon the frequency other than your own ears. Tech support told me that there is some sort filtering below some frequency choice for that limit, fyi.

I see no dead band settings, so you sacrifice some performance if you want to avoid hunting around zero.

It’s not all bad. The IONI have some very cool features, such as real time monitoring of the setpoints and tracking errors, and the fact that they can do Sin/Cos encoders without external hardware. They are also very small, which is nice. When the drive does not work, Granity tells you pretty exactly what the problem is via fault codes. Also, the Granity software loads very helpful documentation from the internet while you change the settings, and in general is far more user friendly than, say, the Parker C3 Servo Manager software .

Hope this helps.


Thank you for your feedback! Real and detailed user experiences are very valuable to us so we can improve in the right direction.

About hissing: if it is static and always present even in torque mode, then it’s caused by current sensor analog noise floor. Motor that are deisgned for high voltages can make this noise hearable. Such motors typically have high coil inductance and low rated current, and there a drive designed for smaller peak currents can be quieter.

The best things to try are: reduce MR and ML parameter values and use TBW parameter value 100-680hz. I.e. Try reducing MR/ML by 50% or more. Reduction on these values affect directly the torque controller gains, and every time the values are halved, noise reduces 6dB but you’ll also lose some torque bandwidth. Luckily the full 3khz+ bandwidth is not necessary in most cases, so effect might be just reduction of noise.

Setting TBW to 100-680 Hz activates software filtering of current sense signals thus it will also reduce the hiss.

I hope this helps!


in my experience since ioni firmware 1.7.0 there is no lower noise for lower tbw’s you can always run unlimited or 680hz+ without extra noise.


Tero, do you have a formula for calculating torque bandwidth when reducing MR/ML?


I hope this page sheds some light how the drive is built: https://granitedevices.com/wiki/Signal_path_of_motor_drive

Some drives use different approach (direct PID from position error to torque command) and most of industrial drives use cascade controllers where you have velocity PI controller and position P controller (sometimes called PIV controller). We had options both in older drives and in all cases the latter gave superior performance so we ditched the PID in favor of PIV.

I hope this helps!


That is how it works in SimuCUBE mode only, for other modes drive still has different noise filtering depending on TBW parameter (filter on below 680Hz setting).


The exact calculation is quite complex and depends on many variables, but roughly it is directly linear to MR/ML values. I.e. if you drop then by 50%, your bandwidth reduces 50%. Due to other variables, in practice the reduction should be little bit less than that.


Also worth noting, drive can maximally produce about max 3-5 kHz current bandwidth depending on motor and few other parameters. Some common practical application may utilize only fraction of that bandwidth, say up to 500 Hz, so you can typically reduce MR/ML quite a lot without any significant side effects.


@janbbeck Thank you very much for the details.

I am looking at using the Argon device to drive these linear motors as I need 300V DC to achieve the desired speed (Tecnotion TM3 Ironcore).

The return policy trial would allow me to test these devices against some drives from Servotronix. One of the benefits I see here is the the SimpleMotion control system, currently the only way to go in the industrial world is EtherCat which adds massively to the cost, and is less useful in smaller scenarios where there are only 8 or so axis and few DIOs.

I think I will purchase a single Argon driver to test with my setup and see if I get the noise issue, and follow recommendations from @Tero to see if I can eliminate it if it occurs.

The Atomi drivers would be very useful for my smaller NEMA 8 axis, so I am looking out for those.


The information on that page is very good!

Edit: I guess I did not quote, but I mean the https://granitedevices.com/wiki/Signal_path_of_motor_drive5


Ok, I have had a few days to test the IONI drives with changed inductance and resistance values and retune the hell out of it. I was able to get the drive quite quiet by putting those values to ~ 1/10 of the real values. I originally thought that by measuring these values or putting in the manufacturers’ published values, that was the best for any use case. I think most others would think this too. I now consider these values to be just another tuning parameter, and I think they should be documented as such.

On the positive side, that probably means that since the Argon drive matches your motor voltage better you probably have a better experience. I only have VSD-E and IONI drives, so I can’t test Argon for you on the linear motors I have …

But a negative is that since there is no deadband filter, you lose performance if you don’t like hunting. One of my axes was hunting ± 1 count and produced a quite annoying squeal. I reduced the gains to get rid of it, but of course the motor performance is lower than it could be. I don’t know if Granity provides dead band filtering for Argon, though.

Some small things that I hope GraniteDevices addresses in a future release:

  • the tracking error graph on the servo scope would be more useful to me if it showed distance units on the right hand side. This way I can tell what the worst case tracking error is without taking out the calculator.
  • I sure wish there were some frequency analysis available in the servo scope and maybe a bode plot together with one or more IIR filters in the IONI. I had to use my phone with an audio spectrum analyzer to get any idea at what frequency a filter should be set up. Of course, that only works if you manage to find a pathological case manually and get it to persist long enough to get a reading…

You mention SimpleMotion. What motion controller do you plan on using for that?