2. Summary
• Rack for 2 computers plus network
devices
• Silent (~10dB reduction)
• Pretty (relatively…)
• Cheap (< 100€/$)
• Easy to build (4-16 hours)
• Suitable for the living room
Author: Frank Bergmann (fraber@fraber.de)
3. Where’s the Problem?
• Silent
– Server fans tend to be too noisy for either living room or
home office.
– Noise reduction isn’t as easy as it seems. Sealing off noise
means also sealing off air flow. Cooling may in turn add
additional noise.
• Pretty
– Racks need to be mounted in “representative” areas of the
SoHo.
– Varying concepts of prettiness/ugliness by different family
members
• Cheap
– Budget and time are limited, particularly if family members
would prefer to kill the project.
Author: Frank Bergmann (fraber@fraber.de)
4. The Solution
• Use an off-shelf drawer unit as a base for the server rack
+
+
+
–
Cheap (<100€/$)
Relatively pretty
Saves time building a case
Wood can burn, metal has bad acoustic properties
• Add acrylic glass doors to the drawer
+ Noise reduction
+ Pretty design
– May get scratches with time
• Ventilation
– Passive
+ Cheap & fast
• Noisy – you need big holes that lets noise pass as well
– Active
• More complex and expensive
Author: Frank Bergmann (fraber@fraber.de)
5. Variants
Here are a few ideas for variants:
•
Use a bigger drawer unit for 19” bars:
– Use 19” bars and a bigger drawer unit as a base if you want to house
19” servers
– Make sure you use rubber grommets to fix the 19” bars to the drawer
unit. Otherwise your box acts as an acoustic amplifier for your server
vibrations…
– 19” servers are lame anyway – just use ESXi and a desktop with 16GB
RAM to consolidate 4-8 servers (for SoHo purposes…).
•
Use an old fridge:
–
–
–
–
Contains already active cooling
Just use a circular saw and cut the sides if you need different measures.
The thermal isolation material inside also reduces noise.
Used to vibrate anyway…
Author: Frank Bergmann (fraber@fraber.de)
6. Budget, Parts & Tools
Tools required for basic rack
• Screwdrivers, file
• Drilling machine with various drills
• Superglue
Tools required for fan controller
• Soldering iron, soldering wire
• VOM/Multimeter
• Resistors and cables “from the box”
• Tweezers, small pliers, other
electronics tools
Author: Frank Bergmann (fraber@fraber.de)
8. Drawer Base Unit
• I’ve started off with a “Micke” Ikea
drawer unit for ~45€:
– Width: 35 cm
– Height: 75 cm (desk height)
– Depth: 50 cm
• The drawer units is made from
thick, lightweight chipboard which
reasonably absorbs noise.
• It’s easy to mount the rails at a
different position if you want to
customize the drawers.
Author: Frank Bergmann (fraber@fraber.de)
9. Acrylic Glass Doors
• I bought two pieces of acrylic glass:
– Height: 100 cm
– Width: 50 cm
– Thickness: 5 mm
(5 mm is OK, but try to get 10 mm if you can)
• The guys from Bauhaus cut the glass
into the right size for free:
– Height: 69 cm
– Size: 34,5 cm
• For each door (2x, front and back) I
added a handle, a magnetic catch and
two hinges.
Author: Frank Bergmann (fraber@fraber.de)
10. Mounting the Hinges and the Catch
• I just used superglue for the hinges
and the magnetic catch because it’s
fast and transparent.
• I’ve mounted the hinges so that the
doors can swing open all the way.
Check that your hinges can open at
least 270°, otherwise your doors
won’t close.
• Hints:
– Roughen the surface of
the acrylic glass with
sandpaper in order to
improve gluing strength.
– Don’t use too much glue,
or it will get squeezed out
and look ugly (see above).
View from the top
Author: Frank Bergmann (fraber@fraber.de)
11. Noise Reduction Results
• You should hear an audio
recording when reading this
text. The audio was recorded
~30cm in front of the rack:
Door
open
Door
closed
– 5 seconds with front door open,
– closing the door and
– 5 seconds with front door closed.
• The spectrum at the right has
been calculated using
Audacity:
– Most frequencies are reduced by
about 14db (see noise reduction).
– There seems to be some
resonance at about 130Hz, even
though I can’t hear it.
Author: Frank Bergmann (fraber@fraber.de)
Click here to hear before
vs. after door closed
13. Active Cooling
• I don’t think that it’s possible to house a
server or two without a fan. Servers just
produce too much heat (200W – 500W
each).
• You will need temperature regulation for
the fan speed for a really silent rack.
Author: Frank Bergmann (fraber@fraber.de)
14. The Fan
• Look for an
exceptionally lownoise fan (14dB/A or
less).
• I used a 120 mm fan
with a 4-pin
connector.
• Make sure you also
get rubber grommets
for low-vibration
mounting.
Author: Frank Bergmann (fraber@fraber.de)
15. Mounting the Fan
• I use rubber grommets
for low-vibration
mounting.
• You need to drill many
small holes or a few
large holes in the door
area covered by the
fan.
Author: Frank Bergmann (fraber@fraber.de)
16. Connecting the Fan to a Computer
• The easiest option is to plug your fan into
a fan connector at the motherboard of one
of the computers in the rack.
• In this case you only need to create a 1m
extension cable.
• There are software packages availables
for Linux (lm-sensors and fancontrol) and
Windows (SpeedFan)
• Pros:
– You just need to solder one cable
• Cons:
– Your computer needs to provide an extra
fan connector
– Your fan will only work if that computer is
powered on.
Author: Frank Bergmann (fraber@fraber.de)
18. Raspberry Pi Fan Controller
• I actually use a Raspberry Pi
computer for fan control,
because my computer doesn’t
have a free fan slot.
• I also use the Raspberry Pi for
UPS monitoring and other
security functions.
• Hints:
– The Sub-D connect fits better at the
end of the RasPi enclosure than on
top of it.
– The Sub-D connector did not provide
enough space for the fan cable, so I
would choose a different solution next
time
Author: Frank Bergmann (fraber@fraber.de)
Limited space
for cables
Bad place
for Sub-D
Fan cable
19. Raspberry Pi Fan Controller –
Wiring Diagram
To Fan 4-pin
male connector
2
GND
+12V
1
Dallas
18B20
Temp
Sensor
4,7k Ohm
3
4
5
Micro-USB
Power for
Raspberry Pi
Tach
PW
M
GND
DQ
+3.3V
C
B
1k Ohm
Computer
Molex
Power
Fuse 1A
E
BC
238
Fuse 1A
1
Female 9-pin
Sub-D
Power
• +3.3V
• +5V
• +12V
• GND
Sensor
• DS18B20 temp signal
• PWM signal for fan
2
6
3
7
4
8
5
9
1
2
6
3
7
4
8
5
9
Male 9-pin
Sub-D
Source: ELinux
Circuit Overview
• I use a Sub-D connector (male + female) to connect the RasPi to the rack
• RasPi gets power from a computer via a Molex (hard disk) power connector and
fuses. Watch out for short-circuits! A short-circuit can destroy your computer,
particularly if you connect +5V to +12V.
• The RasPi Micro-USB power connector is fed from the Sub-D connector.
• A digital 18B20 temperature sensor sends temperature digitally encoded to RasPi
GPIO 4.
• The fan connector didn’t fit into the Sub-D anymore, so I had to connect it
separately. I would change that the next time. The “PWM” pin of the fan connector
is controlled by GPIO 18 via a transistor
Author: Frank Bergmann (fraber@fraber.de)
20. Raspberry Pi Fan Controller –
Dallas 18B20 Temperature Sensor
Dallas
18B20
4,7k Ohm
GND
DQ
+3.3V
• For an introduction please see
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/tempera
• The 18B20 already contains an A/D
converter and send the temperature
values as serial data.
Source: ELinux
Author: Frank Bergmann (fraber@fraber.de)
21. Raspberry Pi Fan Controller – Fan
PWM Speed Control
•
•
A computer fans are controlled by 3-pin or 4-pin
connectors. This section is only about 4-pin fans.
Pins:
–
–
–
–
•
•
•
•
•
•
1 - GND
2 - +12V
3 - Tach
4 - PWM
1k Ohm
C
B
The fan will run with maximum speed if you only connect
pins 1 (GND) and 2 (+12V).
E
BC
Pin 4 controls the fan speed: 0V stops the fan while the fan
238
runs at maximum speed at +12V.
The fan itself “pulls up” Pin 4 (PWM) to +12V using a resistor,
so by default the fan will run at maximum speed.
You can connect pin 4 to GND – the fan will slow down.
Now comes the trick: We use GPIO 18 to control a transistor. If GPIO 18 is
“on=1” (+3.3V), the transistor will become active and “pull down” pin 4 to
GND, slowing down the fan.
PWM “Duty Cycle: This value tells the RasPi GPIO PWM module This is a
value between 0 and 1023 (10 bits).
–
–
–
•
1 – GND (black): Just connect to GND
2 – +12V (yellow): Just connect to +12V
3 – Sense (green): Ignored here.
4 – PWM (blue): This is the most interesting pin:
To Fan 4-pin
male connector
0 means the pin is 100% of the time at 0V
1023 means the pin is 100% of the time at +3.3V
Values between 0 and 1024 will be in between.
Now, whenever GPIO 18 is on, the transistor will “pull down” the fan pin 4, so
a “0” will keep the fan running fastest, while 1023 will stop the fan.
1:
1000:
Author: Frank Bergmann (fraber@fraber.de)
Source: ELinux
22. Raspberry Pi Fan
Controller - Software
The controller consists of a Perl script
that is executed every minute by the
Raspbian Linux “Cron” daemon:
# Root’s Crontab
# Set the fan speed depending on the temperature
* * * * * /usr/bin/perl /root/fancontrol.perl >>
/var/log/fancontrol.log 2>&1
#!/usr/bin/perl
# **************************************************
# Fancontrol, Author: fraber@fraber.de
# Copyright 2013, licenses under GPL V2 or higher
# This script is called every minute or so using cron
# **************************************************
my
my
my
my
$debug = 1;
$temp_max = 45;
$temp_device_id = "10-00080277513c";
$email = "fraber@fraber.de";
#
#
#
#
0=off, 1=on, 2=verbose
When to send out warning mail?
DS 18B20 device ID, see DS doc
Where to send warning
my $modprobe = "/sbin/modprobe";
# Binary for loading modules
my $mail = "/usr/bin/mail";
# Binary for sending out mail (Exim4)
my $echo = "/bin/echo";
# Binary to echo characters
my $gpio = "/usr/local/bin/gpio";
# See wiringpi.com/the-gpio-utility
my $date = `/bin/date +%Y-%m-%d.%H:%M:%S`; # Timestamp
chomp($date);
# **************************************************
# Read the temperature: For documentation please seee:
# www.cl.cam.ac.uk/projects/raspberrypi/tutorials/temperature/
#
system("$modprobe w1-gpio") == 0
# Load interface module
or die "fancontrol: Error with system($modprobe w1-gpio'): $?";
system("$modprobe w1-therm") == 0
# Load DS18B20 driver
or die "fancontrol: Error with system($modprobe w1-therm'): $?";
my $temp_line = `cat /sys/bus/w1/devices/$temp_device_id/w1_slave | grep 't='`;
chomp($temp_line);
print "fancontrol: Line=$temp_linen" if ($debug > 1);
my $temp_digits = "0";
if ($temp_line =~ /t=([0-9]+)/) {
$temp_digits = $1;
print "fancontrol: Digits=$temp_digitsn" if ($debug > 1);
} else {
die "fancontrol: Found invalid temperature line: '$temp_line'";
}
my $temp_degrees = int($temp_digits * 0.001);
The script performs the following
actions:
1.
Loads the temperature driver
2.
Measures the temperature
3.
Determines the desired fan speed
4.
Sends out an alert email if the
temperature >50°
5.
Set the fan speed
# **************************************************
# Mapping from temperature to RPMs duty cycles.
#
- 1023 is the lowest speed
#
1 is the highest speed
@pwms = (
1000, 800, 700, 600, 500, 400, 300, 250, 220, 200,
180, 160, 140, 120, 100, 80, 60, 40, 30, 20
);
my $pwm = 10;
# Pretty fast fan as default
if ($temp_degrees < 30) {
$pwm = 1023;
# Slowest fan
}
if ($temp_degrees >= 30 && $temp_degrees < 50) {
$pwm = $pwms[$temp_degrees - 30];
}
print "fancontrol: Date=$date: Temp=$temp_degrees -> Pwm=$pwmn" if ($debug);
# **************************************************
# Send out an alert email if necessary
if ($temp_degrees > $temp_max) {
system("$echo '' | $mail -s 'RasPi Rack: Temp=$temp_degrees' $email") == 0
or die "fancontrol: Sending out email: $?";
}
# **************************************************
# Set the fan speed
system("$gpio mode 1 pwm") == 0
or die "fancontrol: system(gpio mode 1 pwm) failed: $?";
system("$gpio pwm 1 $pwm") == 0
or die "fancontrol: system(gpio pwm 1 $pwm) failed: $?";
exit 0;
Author: Frank Bergmann (fraber@fraber.de)
# 30 - 39
# 40 - 49
23. Learned Lessons
•
Rack:
– Don’t use too much superglue.
– Use sandpaper to increase the surface of the acrylic glass before gluing
the hinges or the catch.
– Make sure the hinges open >270°. Mine only open 265°, meaning that I
had to tweak the hinge screws.
– Maybe use some pyramid foam in order to deal with the 130Hz
resonance.
•
RasPi Fan Controller:
– Power source:
The current solution (power from a server) is convenient, but very, very
dangerous. So the next time I would use a separate +5V/+12V power
source.
– No space on Sub-D connector:
I would use a different connector next time that allows for more cables.
Author: Frank Bergmann (fraber@fraber.de)
24. Overheating
• Overheating of the rack may damage your
servers and cause
a fire. Fires in server rooms are a reality:
– Please estimate the cost of an overheating/fire.
– Please estimate the probability that your active
cooling will fail at
some moment in the next 10 years.
– Please multiply these two figures to get the total
risk of overheating.
• => Please purchase a fire alarm device and
mount it in the upper part of the rack.
Author: Frank Bergmann (fraber@fraber.de)
Fire detector for about 11€
Source: Wikimedia Commons
25. About the Author
Frank Bergmann is founder of ]project-open[, an open-source enterprise
project management system. Born in Germany, he is working in other
countries for more than 14 years. He has received a Dipl.-Ing. master in
computer engineering and an MBA degree.
Frank’s specialty is “brutally simplifying” complex software/ people
issues, until they can be solved at a fraction of their original budget.
•
•
•
•
•
•
http://www.project-open.com
http://www.project-open.org
http://www.twitter.com/projop
http://www.facebook.com/projectopen.org
http://www.linkedin.com/in/fraber
http://www.xing.com/profile/Frank_Bergmann23
Author: Frank Bergmann (fraber@fraber.de)
26. Legal Note
• The contents on these slides are provided “as is”
without warranty of any kind. The author further
disclaims all warranties, express and implied,
including without limitation, any implied warranties of
merchantability, fitness for a particular purpose or
noninfringement.
• In no event shall the author be liable for any indirect,
incidental, special, punitive or consequential
damages, or damages for loss of profits, revenues,
data or data use, incurred by you or any third party,
whether in an action in contract or tort, even if we
have been advised of the possibility of such
damages.
Author: Frank Bergmann (fraber@fraber.de)