A few months ago, I did a post about my plan to upgrade my server rack. A user with the sweet sounding name of @dauerstaender requested a follow up, so here we are.

Open bottom and fans

As mentioned in the original post, a huge point was the open bottom. Together with my pops, I made a piece of plywood to seal off the hole and to mount four 120mm fans with dust filters.

Open bottom

Plywood board

Plywood board in server rack

Plywood board in server rack with fans

I used Noctua’s NF-P12 redux-1300 PWM fans. They are dead silent on medium-low speed, support PWM signals between 0.0 (off) and 1.0 (full speed), have Noctua’s high quality standards, and are quite affordable for a 4-pin PWM fan with roughly 14.50 € (15.88$) each.

The two holes in the back are for in and outgoing cables but as there are only a couple of cables that have to be led outside I kept them quite small.

Instead of magnetic strips, I just used the screws that I took to fasten the fans for the dust filters as well.

Plywood board from the bottom

I also swapped the old 80mm 3-pin chassis fans of my server for 4-pin PWM fans from the Noctua redux-series and tweaked the fan curve a bit. I will have to do this again when I move as the server is at the attic right now and it is winter here.

Server fans

The plywood board and fan swapped alone helped a lot to reduce noise. Right now, the server rack produce less noise then my work laptop when it is under medium load…

Fan controller

After some baby steps by getting used with my power supply and wiring up a single fan, I managed to implement a temperature sensor, a level shifter to raise the 3.3V PWM signal from the Pi to a 5V signal which the fan expects, and a circuit to read the RPM on the open collector (never heard that term before…) of the third pin of the fan.

Baby steps Baby steps 2 Baby steps 3 Finished baby steps

The code for the controller and some further information can be found here.

Here is the final temporary solution as it currently hangs in my server rack.

It also has a function to export data via Prometheus to Grafana to monitor the temperature and fan speed.

Sound proofing

As of now, the quieter fans and the plywood board suffice but in the end I will use something like Basotect to clad the inner sides of the rack and to seal of the cable ducts. But that will wait until I have everything else done.

Outlook

As mentioned in the repository, I want to learn to design a PCB with a everything on it to ditch the breadboard, additional circuitry, fan hub, etc. I already did some research and it seems quite possible that I am able to do that. But that will take some time :D Afterwards, I will design a printable case to make it look a bit slicker.

And I have to fix a bug in my script. Quite randomly, the fan controller spin up all fans to maximum speed for one cycle (30 seconds) and I don’t know why, yet…

Grafana


All in all, it is really a fun project although I had to learn quite a lot for it but Linux, and genuinely basic Python and electronics.

If you want to know more feel free to look into my repo, drop a message or comment. Also, I appreciate any hint or help :)