Hi!
I was hoping someone could help me mod the BIOS on my Fujitsu machine or at least provide enough pointers for me to do this myself. I know a bit about reverse engineering, but nothing about UEFI/BIOS and this is probably a very simple patch when you have the necessary background.
Having done some research, I think my request is similar to this thread, except there the person kind of failed to articulate what they wanted and they didn’t get anywhere: win-raid.com/t4849f16-request-NEED-unlock-hidden-settings-for-Fujitsu-D-b-1.html
The BIOS
Fujitsu D3219-A1
AMI V4.6.5.4 R1.12.0 for D3219-A1x
06/26/2019
Download: support.ts.fujitsu.com/IndexDownload.asp?SoftwareGuid=E6BB0017-034A-4654-884C-A5DC13D97C4C
The issue
When using Noctua fans with this motherboard, the motherboard thinks they are dying. It keeps spinning them up-and-down, exactly like in this video, except the BIOS does not display RPM values: youtube.com/watch?v=Qez9F4uhsw4
I have several guesses as to why.
Stock fan - 3800 RPM. For the sake of example, duty cycle set in BIOS is 25% = 950 RPM
Noctua fan - 1700 RPM. For the sake of example, duty cycle set in BIOS is 25% = 425 RPM
Both the original fans and the Noctuas I got are 4-pin PWM.
Guess #1:
For the sake of example, “Fan failing” lower threshold in BIOS is 800 RPM
BIOS tries to run the Noctua at 25%, sees that the RPM values are below the lower limit, spins up to 100%. Gets to 100%, sees that everything is fine, goes back to 25%. Cycle repeats. The machine operates in “wooo… woooo… wooo…” mode.
However, there are no “fan failing” entries in the event log, which brings us to
Guess #2:
Noctuas are specced at 450 min RPM ± 20%, so 540 or probably 550 to play it safe. This corresponds to a ~32% duty cycle. The 25% duty cycle I am using in this example corresponds to 425 RPM on them, which is below min RPM supported by these fans and thus they shut down when the motherboard tries to set them to 25%. The system sees 0 RPM and spins them all the way up to 100%. Sees that everything is fine, goes back to 25%. Cycle repeats. The machine operates in “wooo… woooo… wooo…” mode.
The solutions that don’t work
This BIOS has several options under “Fan Control”: Auto, Enhanced, Disabled. The issue only happens at “Auto”. “Enhanced” sets the minimum duty cycle high enough to avoid hitting the “fan failing” RPM threshold, but the system becomes very loud - louder than stock fans on “Auto”, so it must be on a pretty high duty cycle. “Disabled” runs the fans on 100% all the time. So neither of these options are useful - my initial goal was to make this box quieter.
What I’ve tried
Loading up the BIOS in IDA and finding where it queries this “Fan Control” setting so that I could find the duty cycles and RPM values nearby. Unfortunately it seems to be using a bunch of UEFI data structures and “Procotols” to work with all of this, so it cannot be directly cross-referenced and patched without knowing how UEFI IPC works and having all the necessary structures prepared in IDA. I figured someone who understands the UEFI architecture can probably make this mod in 15 minutes whereas it would take me 15 days - hence this post. If I am wrong and someone can point me in the right direction to get this done much more easily, I would appreciate that too.
The request
Would it be possible to find out which one of my guesses is correct, i.e.
Is there an bottom RPM limit corresponding to the “Auto” setting of “Fan Control” and whether it could be adjusted to 550 RPM?
If there isn’t, but the duty cycle settings used by “Auto” allow to dip below 32%, can this be adjusted to disallow dipping below 32%?
p.s. sorry for the broken links, the forum wouldn’t let me post them as clickable because I’m new here