The Lone Geek Blog

One geek in a sea of nerds.

R710 Be Quiet!

| Comments

I realize it’s an enterprise grade server but it sits on a box in my room and I need to be able to sleep and leave it running overnight if I wanted to. At the moment, I power it down at night and work on it from another room.

So I bought some fans and plan to hopefully slow them down enough to where I could leave the server running and not disturb my sleep and not overheat any components. My main concern will be the raid card because when I pulled all the fans out, everything seemed to run cool over the course of a few minutes but the raid card would exceed 150°F with the cover off but with the fans running it would cool down to around 80-90°F, close to the tempature of everything else.

According to some guides people have posted about the poweredge 2950, they’d use a resistor of around 10 - 47 ohms to reduce the voltage and slow down the fans. When the extras come in, I can begin the mods, starting with a low resistor and working up till I can get the rpm low enough on idle that it doesn’t bother me anymore.

Some people have also hacked the firmware of the old poweredge servers but I haven’t found anything relating to the R710 or know anything about hacking it’s firmware to adjust the fan curve. The fans don’t leave me much room for the resistor “hack” but that’s why I got spares. :)

… just waiting on fans to arrive and time to do the mods.

Update: 1 Week later…

Well the fans arrived a few days ago and well, turns out I didn’t really need them. heh. So I began to experiment with resistors on the fans but the ones that may lower the speed enough to where idle was quiet would overheat instantly cause all I had was ¼ watt resistors. Not really a good idea for a fan that could easily pull 18 watts at full rpm. So that was a bust.

Then I had another idea. PWM. Take advantage of the fan’s speed control and just bypass the server’s control. Enter the arduino and some code.

This is what I used;

int pwm = 3; // assigns pin 12 to variable pwm
int pot = A0; // assigns analog input A0 to variable pot
int t1 = 0;   // declares variable t1
int t2 = 0;   // declares variable t2
void setup()  // setup loop
  pinMode(pwm, OUTPUT); // declares pin 12 as output
  pinMode(pot, INPUT);  // declares pin A0 as input
void loop()
  t2= analogRead(pot); // reads the voltage at A0 and saves in t2
  t1= 1000-t2;         // subtracts t2 from 1000 ans saves the result in t1
  digitalWrite(pwm, HIGH); // sets pin 12 HIGH
  delayMicroseconds(t1);   // waits for t1 uS (high time)
  digitalWrite(pwm, LOW);  // sets pin 12 LOW
  delayMicroseconds(t2);   // waits for t2 uS (low time)

I wired a potentiometer to the arduino and with the code, I was able to control the fans. All 5 of them. :) Right now the arduino sits outside of the server with the pwm wire poking out via a top vent. At the moment, I have them at 2,520 RPM compaired to their usual 3,800-4,200 RPM. The exhaust temps might be a few degrees higher but eh, it should be fine.

Side note: The 10k RPM SAS HDDs seem a bit chatty when they get busy now that I can hear them over the fans. XD

Until next time!!! Wheee!