Jump to content
RESET Forums (homeservershow.com)

Faking the fan signal

Recommended Posts

Seeing as this has been hard of enough of a discovery made by you, I think we can pretty much forget about fan control


The second method you make it sound like you DO use the PWM control signal from the onboard fan controller...


Im sorry for not understanding some of this.

Well, let me rephrase that a little.


Method 1. You just fake the signal and do whatever you want with the fan.


If you still want to use the fan from HP (like me), I'd suggest you to use it via a fan controller. Simply connecting it to 12V,GND will make the  fan spin at full speed ( ~3400 RPM).


This was my intended usage case. You can do whatever you want,  keep the original fan or replace it. 




Method 2. You can fake the fan signal and replace the fan with another 120x120mm PWM fan model that has lower RPM.


OPTIONALLY  you can use the PWM signal from the motherboard to keep the speed control of this new fan.  By doing that iLo could still control the speed and make that fan spin faster in case of overheating before doing the thermal shutdown (leave that enabled in BIOS )




Is it "clearer" now  ?

Link to post
Share on other sites
  • Replies 71
  • Created
  • Last Reply

Top Posters In This Topic

  • MihaiT


  • riahc3


  • verbuchseler


  • ad-d


Top Posters In This Topic

Popular Posts

Forget about the Arduino, although for a TTL, 5V PWM FAN that sketch will work as it is.   DISCLAIMER: --- Use it at your own risk, I'm not responsible for any damage that will/might occur. Will

Wow, OK, so now we're using a small, SoC computer to control the fan speed in a larger computer. This seems to be getting a little on the weird side.

Interesting read but just wondering, my not just use the hacked iLo firmware? Using mine now for a few month in AHCI mode with my upgraded E3-1265LV2 45W CPU the fan holds between 10-18% which is perf

Posted Images

Method 2. You can fake the fan signal and replace the fan with another 120x120mm PWM fan model that has lower RPM.


OPTIONALLY  you can use the PWM signal from the motherboard to keep the speed control of this new fan.  By doing that iLo could still control the speed and make that fan spin faster in case of overheating before doing the thermal shutdown (leave that enabled in BIOS )




Is it "clearer" now  ?

Here is the thing...


The problem I read with this is that iLO detects that exact speed that the fan is spinning. If you use a different PWM fan (none AFAIK have the same speed as the Delta one that comes with the HP), it throws a error.


My main goal would be to replace the fan. If you want specifics, it would be the NF-S12A which has a rated speed of 1200/900rpm max.


Now, like I said that is my main goal If I sacrifice speed control for it, so be it :) Even a faster spinning fan, should be quieter than the stock one in the HP.


I don't have my replacement HP yet so Ill discuss this some more in the future. I already have the wires and some clips ready to follow your instructions and try it out

Link to post
Share on other sites

You didn't pay attention. 


iLo DOESN'T know the speed of the fan. iLo has many temperature sensors available to read and based on those sensors tells the fan to speed up or down, while looking if the fan command had the desired results (temperature has dropped in x seconds ) and if the fan is present (no locked rotor alert).


When you see FAN at x% in iLo, thats not the rpm reading, but the given command to the fan to go at that speed. If for some reason the fan can't go to that desired speed ( the fan has some logic built-in), it will output the locked rotor signal high.


Those fans, noctua inclued, are outputing RPM pulses. The microserver gen8 "NEEDS" a fan that outputs a ROTATION DETECT SIGNAL ( a low constant voltage) and not RPMs ( pulses per revolution). That's why it doesn't work.


I'm planning to use a noctua nf-x12 series fan too, but I'm not in a hurry, since the old n36l still works and I have many other urgent things in my schedule. Given the low noise of the noctua fans at full speed you can plug the fan directly into a molex connector and place the server in a ventilated area :)

Link to post
Share on other sites

Thank you for having patience for explaining it all.


Intresting checklist:


The bracket

A 2.5 500gb HDD

The fan


Expensive spring!

Link to post
Share on other sites

Let me first of all say "hi" to everyone, since I've been following this forum for quite a while now but haven't found the time to actively contribute.. yet :). So here is my first contribution:

Since I am affected by the AHCI-mode fan speed issue, I was looking for a fan mod as well and ended up in a different approach than faking the fan signal to iLo. In my approach, the original HP fan is still in use, along with the unmodded fan rotation detection signal (thanks a lot MihaiT, I was wondering and didn't know exactly what the signal was before), but the PWM signal from the motherboard is intercepted by an Arduino, which decodes the PWM, applies some (user-defined) application logic to determine a target fan speed, creates the according PWM and sends it to the HP fan, which adjusts its speed accordingly.

The pros of this approach (IMHO) are as follows:
The fan rotation detection signal is used by iLo not only to determine whether the fan is running or not, but also if the fan speed is correct regarding the input PWM. If , e.g., an obstacle slows down or blocks your fan, resulting in a lower fan speed than the given PWM should result in, iLo raises an alarm and takes safety measures to protect the server from overheating. Differences between target and actual fan speed are hence detected and handled. Keeping this sensing mechanism intact thus adds some safety to your custom fan mod solution. Of course you have to take care when writing the control logic to determine the target fan speed - zero is a valid output :).
Additionally, the HP stock fan spins at highest speed, when the PWM's duty cycle is 0 and at lowest speed (in fact not at all) when the duty cycle is 1. Should the Arduino software fail for any reason, not producing a PWM signal, the fan would see a PWM with 0 duty cycle and spin at maximum speed.

Since the PWM is created by an Arduino, you are in total control of the target fan speed. E.g., in my Arduino program, the original PWM is decoded to get the iLo target fan speed, which is then classified in speed zones. While directly reflecting any speeds under 20% and above 35%, speeds between 20% and 35% are diminished by a constant (10% in my case). In a more sophisticated scenario, one could connect the Arduino to the Microserver and communicate with it through the serial interface. An application running on the Microserver could track iLo's reported temps, compute a target fan speed and send it to the Arduino to dynamically control the fan speed for example.

In my realisation, a custom Arduino board, the teensy++ 2.0 (https://www.pjrc.com/teensy/), is used. Works well, I am quite happy with it. The PWM decoding is fluctuating a bit though, but post-processing in form of averaging does a good job there. Besides the connection to the motherboard pin header, to the fan and power supply connection for the Arduino, external components in addition to the Arduino board are not needed. The teensy also has a USB connector (like almost any Arduino, I guess), so you could connect it to the Microserver's internal USB port to supply power to the Arduino and for serial communication.

Hope you find the approach interesting and useful. If you are interested in more details just let me know.


Link to post
Share on other sites

What fan speed are users seeing with fully populated machines? I have a blackjack odd, P222 controlling the 4 drive bays with WD Reds in each slot [RAID 5] and 2x 2.5" WD reds [RAID 1] on the B120i, my fan runs constantly @ 32% with no change to the cooling profile in the RBSU. It is sitting beside me and I don't find it that loud myself.

Edited by Helzy
Link to post
Share on other sites

Wow, OK, so now we're using a small, SoC computer to control the fan speed in a larger computer. This seems to be getting a little on the weird side. :)

  • Like 1
Link to post
Share on other sites

Just thinking out of the box... Is this something that can be done by a 555/556 timer IC with a few discrete components? You have a trigger (PWM) coming into the chip while the IC's output can probably be modified to provide the correct pulse back to the tach lead.

Link to post
Share on other sites

My Microserver spins the fan around 25% when idling with newest iLo and "optimal" cooling settings in BIOS. I can hear the constant noise emission and perceive it as unpleasant. Would it really be necessary for cooling I for sure would live with that but I don't see why just due to present 3rd party components and AHCI storage controller mode I am denied 6-9% fan speeds, as other Microserver owners report. Thus HP practically forces me to intervene and take control over the fan speed myself ;).
ILo's approach of treating unknown temps resulting from using 3rd party components as worst case, reacting with increased fan speed is perfectly reasonable IMHO, I just don't like the extend. Beside that I think iLo does a great job determining the Microserver's cooling demand based on its variety of temperature sense points. Thus I really wanted to keep iLo's suggestion AND the blocked fan safety feature.

The iLo tricking solutions, MihaiT presented (except No.2), leaves the fan speed control to the user. You could go all the way from (adjustable) static fan speed over directly temperature controlled (where the fan adjusts its speed based on its internal temp sensor) to your own fan speed controller, which either has to produce a PWM signal according to [1] for a PWM-fan or some custom voltage supply for a fan in the end.
I am not really into electronics but I think it is possible to produce a 25kHz PWM signal with an NE555. I am not sure about "processing" the PWM from the motherboard. Possibly you could do that with discrete circuitry (op-amps etc.) as well. But as I lack of knowledge there I considered it too risky to implement such a solution for my own Microserver.
The next step in integration is to use a microcontroller based solution. Since I had one laying around and I feel quite comfortable in the Arduino environment I decided to realise the fan speed control with the teensy board. It is actually a small-footprint (0.7inch x 2inch) arduino clone. Costs about 20USD. You can get even smaller footprint teensies or create your own microcontroller board.

Yes, the next integration step would be to use a proper SoC mini-computer but I agree with ikon that this would probably be overkill and would bring no benefits.
Although ... if you have, say one rasberry pi, laying around you could publish the current fan speed of your Microserver in real-time at a web front-end. Maybe including it in your server home show forum signature.. how cool would that be ;).

[1] http://www.formfactors.org/developer%5Cspecs%5CREV1_2_Public.pdf


Edit: I just found a project using an NE555 for fan speed control [2]. Might be interesting for the more electronics oriented readers:

[2] https://www.circuitlab.com/circuit/qg6rmm/555-pwm-for-fan-speed-control/

Edited by neo144
Link to post
Share on other sites
  • 1 month later...

@neo144: I would be interested in more details about your PWM proxy solution - which I think is quite elegant. Would you mind sharing your code and perhaps how you did the wiring? :)


Does anyone know the specs (dimensions, part#) of the fan connector on the board?


Sadly HP has gone silent on the support forums regarding the fan issue. I'm not sure whether they intend to do anything about it. So I figure it is time to tackle it myself.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...