Project for cooling my server case

I have a SuperMicro Motherboard which has fan headers assigned to FAN1,FAN2, FAN3, FAN4, FAN5 which are assigned to Zone1 - The CPU Zone and FANA and FANB which are assigned to the system zone, the Zones to which a fan are assigned to can not be changed and the only way to change the speed of a fan alters all fans in that Zone. So effectively I can control 5 fans at once or 2 fans. End of story..

My Idea, I have a couple of Mega 2560's what I would like them to do is present themselves as a serial port running over the USB, so by default they are literally a serial port as far as the system is concerned.

Then using TTY under Linux send via the serial port a stream of bytes to the Arduino which say...

0x0F - Oi I'm changing a fan setting, 0xFn where n is the fan number, 0xnnnn being the new rpm value.
The Arduino would then bring that fan connected via PWM up to that speed and hold it there, once that speed was achieved it would return the fan speed as confirmation it had done it.

0xF0 - Oi I want to read some fan data 0xFn the fan number to read, returns 0xnnnn being the speed of the fan

Using this I want to be able to control the speed of the fans myself, as an aside although I think it would create more problems that it solves I also have two ethernet hats which, I could connect one to the Arduino and connect the other end of the cable to the IMPI and send the fan info to the IPMI.

The other part would be faking the system into thinking that the on board fans were doing what they should.

Can anyone see any problems with this idea?

Have you established you can control and measure fan speed using a 2560?

Hello thevaultdweller

Welcome to the best Aruino Forum ever.

No.

Simply start design and code the serial communication protocol between PC and Arduino Mega.

I thought I saw a sketch previously where someone had done a serial emulation inside an ESP32

@johnerrington

From the forum

@paulpaulson...

I did see it - have not read through this yet but.

Serial Emulation

If this does not present as a serial port which I assume from reading it I will use a USB to Serial converter like the CH341 but I wont buy hardware if I don't have to.

Not necessarily, however...

  • Controlling the fans will be relatively easy. You only need a single Arduino MEGA to control all your fans.
  • Spoofing the fan towards the mainboard will be more challenging. You could try something with the sense line of your fan, feed that into the MEGA for RPM monitoring, and simply also outputting the same signal to the fan header on your motherboard. This might be enough. If not, things will likely get more complicated and the question is if it's worth it to go there, in that case. It would likely be easier to just hook up a small display to the Arduino and use that to display fan speeds.
  • The IPIMI-over-ethernet part is probably the most challenging bit. I don't know if there is a public API or interface you can use to fake your own fan monitor device. It'd probably take some rainy Sundays to work through whatever documentation you can find - unless you can find a "how to" guide by someone who has done this before. What have your searches turned up so far?

So TL;DR: the fan control part will be doable; dressing it up along the lines you describe may make things (very) complex.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.