Hello, This isn't exactly Taz firmware discussion but I've been advised to post this question here by Lulzbot's team on Reddit.

Long story short, I'm building a test rig/printer to experiment with various components. It's running Ramps 1.4, 24v, Marlin 1.1.8, so controller board wise it is very similar to both my Taz 5 and 6. It's known that 24v (part cooling) fans don't work well at low PWM/speed, and it also used to be a problem throughout most of my Taz 5's life cycle until it was finally resolved with Taz 6 and Marlin 1.1.5 update for the Taz 5.

With the latest Taz firmware 24v fans have perfect full range of PWM speed from as low as 1/255, where as default Marlin 1.1.8 on 24v usually wont spin the fan until 90-100/255.

I've already tried multiple brands/models of fans and they all have similar result, of course the original Pelonis fans worked the best, but still fail to spin at low PWM on default Marlin

I've also tried playing with multiple combination of Marlin extra features for the past hour and the best I was able to do was get the fan at start spinning (although very roughly) at 80/255 with follow settings:

/ Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
//#define FAST_PWM_FAN
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
// is too low, you should also increment SOFT_PWM_SCALE.
#define FAN_SOFT_PWM
// Incrementing this by 1 will double the software PWM frequency,
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
// However, control resolution will be halved for each increment;
// at zero value, there are 128 effective control positions.
#define SOFT_PWM_SCALE 4

It is my understanding that 24v fans work best at 120MHz, and after referencing Lulzbot's firmware on code.alephobjects.com it seems to suggest there is some custom PWM table. I'm familiar with tuning Marlin but not good enough with programming to be able to fully understand Lulzbot pre-defined variables with their fan control.

How do I go about to learn and replicate it on my Ramps 1.4 with default Marlin?

You've already got the FAST_PWM and FAST_PWM_SCALE set to the same values.

It looks like you just need to enable the FAN_KICKSTART_TIME FAN_MIN_PWM and FAST_PWM_FAN

Here is what the Marlin documentation says about FAN_KICKSTART_TIME

"When PWM fans are set to low speed, they may need a higher-energy kickstart first to get moving. Once up to speed the fan can drop back to the set speed. This option specifies the kickstart duration in milliseconds"

Here is what it says about MIN_PWM_SPEED

"This option can be defined to set the minimum PWM speed (1-255) required to keep the PWM fans moving. Fan speeds set by M106 will be scaled to the reduced range above this minimum."

And here is what it says about FAST_PWM_FAN

"Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino."

Since the minimum speed you were able to get it to spin was around 80-100 I would try using 80-100 as the MIN_PWM if the fans still don't kick on at low speed. The kick-start and higher MIN_PWM should theoretically take car of this though.