I could not seem to make another edit to my post, but this is what I was going say…
Edit 3: I have not programmed in Python, but I was a C++ programmer way, way back, so I decided to look at the fans.py script in the virtual environment. There is a section that I can see reports into the log file if a PWM fan is supported: “PWM Fan is supported, sync all other fan with pwm fan”. Mine is, so that python script reports that message in my log file.
However, when I looked at the code that deals with the temperature thresholds (modes) for the GPIO fans further down the script, the algorithm triggered if ‘PWN fan supported’ is ‘true’ looks like it tries to set the state (on/off) of the GPIO fans depending on what the system-controlled PWM fan has been set to (the ‘sync’ part). I may have totally misread that, but the algorithm used does not look right, and that may be the reason that the settings in the dashboard controlling GPIO fan temperature-dependant settings are not behaving as they should and only ‘always on’ overrides that.
As I say, I might be wrong, but that extra level of cleverness (syncing) appears to be new and may be the bug.