The never ending battle of controlling fans on a Dell server on Linux.

I've had my Dell Precision tower 3420 for as long as I can remember. If you held me at gunpoint and released me only if I knew the exact specs of this box, let's just say, no one would be dying that day. This server (and the 2 before it - more on those later) has carried me through the highs and lows of life and pretty much reinforced my Linux knowledge. If this server and its ancestors wouldn't exist, I'm quite certain I wouldn't be daily driving Linux.

There is just one slight issue. Any time I had a Dell server running Linux - which also happens to be... every time - controlling the freaking fans was a nightmare. Now, why would one want to control the fans manually rather than just letting the BIOS control them in relation to the CPU temperature, you might ask. Fair question. If only the BIOS control would work!

If this is starting to sound like an xy problem, then that's probably because it is. Rather than attempting to fix the BIOS fan control, I tried to grab control of those fans myself for... some script to drive them automatically at software level later on. I have a pretty good reason not to poke around with the firmware of this thing. This server is a production server. Actual containers with important things, including server hosting happens on it. Now, yes, I do provide this hosting service for free to friends and family, so in theory, a little downtime couldn't hurt. Even then, a little downtime might turn to "forever downtime" if I screw up the firmware enough.

My current solution

This puppy doesn't run very hot, even with the side panel attached and the fans running at minimum speed (basically silent), the CPU doesn't go above 40°C, usually at around 31°C. However, sometimes silly things happen (ie. friends on a Minecraft server decide to go bonkers on it, flying elytras through new terrain, forcing the CPU to kick in and start generating chunks) and the CPU is left to die (figuratively) at upwards of 80°C.

As for what I do to prevent this overheating behavior: I found a small utility called i8kutils. It features a dedicated command (i8kfan) to control the chassis and CPU fan on Dell laptops - however, it works quite well on desktops as well. Don't think of me as ungrateful when I say this. The control scheme is way too simple, without much precise speed adjustment. Essentially, for either of the fans, I can select between silent (100RPM) or loud (~4000RPM). Not much control huh?