Bitcoin Forum
December 04, 2016, 12:02:53 AM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 3 »  All
  Print  
Author Topic: [DESIGN] Custom-Built Lexan / Aluminum Mining Case  (Read 6622 times)
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 07:32:04 AM
 #1

hi!

I've had a mining machine running for a few months, and I thought I'd share some images. I've benefited from many ideas, designs, guides, and photos from this forum! so, this is the third iteration: v1 was 2x5830s in an Antec 300 case, v2 was 4x5830s in an improvised open frame, and v3 (below) is 4x5830s in an aluminum and lexan (polycarbonate) case which I actually planned out before building it. in a nutshell: v1) ran fine but had no room for 4 cards and v2) ran too hot, required external fans, and was huge. my goals for v3 were: a) no external cooling and b) smaller than 12" x 12" x 18". plans were made in google sketchup first.





the frame is 1/16" x 3/4" aluminum L-shaped strips, and the siding is 3/32" sanded lexan. the frame is held together with #8 machine screws and a combination of hex nuts (internal) and cap nuts (external). the panels have 1/2" holes which can fit around a hex nut, yet be secured with a fender washer, so they can be removed without taking apart the frame or needing to get inside the case; they're also secured with sections of velcro.

here are a few more pictures; the last one was taken with the top panel off.









after much (too much) trial and error, I'm running debian wheezy (testing) with catalyst 11.6 and app sdk 2.5. through a combination of mostly python and rrdtool, I've built a visual monitoring system for the machine:



anyway, I'm happy to go into more detail about any of this stuff; feel free to ask!

take care, -dan
1480809773
Hero Member
*
Offline Offline

Posts: 1480809773

View Profile Personal Message (Offline)

Ignore
1480809773
Reply with quote  #2

1480809773
Report to moderator
1480809773
Hero Member
*
Offline Offline

Posts: 1480809773

View Profile Personal Message (Offline)

Ignore
1480809773
Reply with quote  #2

1480809773
Report to moderator
1480809773
Hero Member
*
Offline Offline

Posts: 1480809773

View Profile Personal Message (Offline)

Ignore
1480809773
Reply with quote  #2

1480809773
Report to moderator
The money raised from these ads will be used to pay for improved forum software and other useful stuff.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
edtks86
Newbie
*
Offline Offline

Activity: 26


View Profile
September 01, 2011, 07:46:21 AM
 #2

looks awesome!!! what are the temps like?
haploid23
Legendary
*
Offline Offline

Activity: 812



View Profile WWW
September 01, 2011, 07:53:12 AM
 #3

looks awesome! do those 6 fans blow at the cards, or do they exhaust the heat? how much in material did this build cost you?

loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 07:58:27 AM
 #4

looks awesome!!! what are the temps like?

thanks! a script runs once per second to measure the temps and fan speeds. if a card's temp is 68-72C then its fan stays put, otherwise the fan is increased or decreased by 1%. fans range 40% (night) to 60% (day), occasionally reaching a peak of 70-80% on especially hot days. this means the temps (first column, green) remain reasonably constant, while the fans (second column, blue/purple) vary as the ambient temp changes.

here's the console output of the script:
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 08:08:41 AM
 #5

looks awesome! do those 6 fans blow at the cards, or do they exhaust the heat? how much in material did this build cost you?

thank you Grin. the 6 fans blow inwards, onto the cards. raw materials were roughly $80, more or less. I think ~$25 for the lexan, ~$30 for the aluminum, and the rest for hardware (nuts, bolts, screws, velcro, etc). I wasn't trying to be as cheap as possible. I wanted to use quality materials and have an extremely solid result, yet not waste money or materials on anything unnecessary. you can pick the case up and shake it, or turn it upside down; nothing moves.
BkkCoins
Hero Member
*****
Offline Offline

Activity: 784


firstbits:1MinerQ


View Profile WWW
September 01, 2011, 12:17:52 PM
 #6

That's awesome. I'd love to know more about the script and if you plan to share it. I'm running Ubuntu with very similar setup but my rig is mounted in a wire shelf unit that cost $8 here. Maybe next phase would be something like this.

Reckman
Hero Member
*****
Offline Offline

Activity: 712


View Profile
September 01, 2011, 01:46:42 PM
 #7

That's badass. Might get better airflow around the gpu if you sealed below the gpus as well
cicada
Full Member
***
Offline Offline

Activity: 196


View Profile
September 01, 2011, 02:23:50 PM
 #8

That's badass. Might get better airflow around the gpu if you sealed below the gpus as well

I thought about this too.  I was considering a very similar setup but with isolated GPU 'slots' - basically a box around each GPU.

You can cut a slot in the lexan/acrylic/whatever for the PCIe connector to poke through, but otherwise it keeps each GPU from sucking down it's neighbor's heat, while efficiently exhausting it's own.

Such a thing would work pretty well even in a 'traditional' closed case as long as you can push enough air through the GPU channels.


Team Epic!

All your bitcoin are belong to 19mScWkZxACv215AN1wosNNQ54pCQi3iB7
BkkCoins
Hero Member
*****
Offline Offline

Activity: 784


firstbits:1MinerQ


View Profile WWW
September 01, 2011, 02:31:04 PM
 #9

On my Sapphire 5830s it blows quite a bit stronger out the back end of the card than the front (with the grill). So I would have though pulling from that end would be better than blowing into it as wouldn't that go directly against the direction the cards fans already blow? I'm curious if you tried it with the back end fans reversed and saw what difference it makes?

Wouldn't you want to get cool air into the center of each card where it intakes rather than directly against the hot air coming out? Just curious how much you experiments with this.

cicada
Full Member
***
Offline Offline

Activity: 196


View Profile
September 01, 2011, 03:04:44 PM
 #10

On my Sapphire 5830s it blows quite a bit stronger out the back end of the card than the front (with the grill). So I would have though pulling from that end would be better than blowing into it as wouldn't that go directly against the direction the cards fans already blow? I'm curious if you tried it with the back end fans reversed and saw what difference it makes?

Wouldn't you want to get cool air into the center of each card where it intakes rather than directly against the hot air coming out? Just curious how much you experiments with this.

On these cards, the only direction the fans blow is 'into the heatsink'.  The exhaust comes out whichever path has the least resistance, which by default happens to be the open 'rear' of the card rather than out the grill.  A powerful fan can reverse this, but probably at an efficiency reduction.

Sapphire's coolers work well for stand-alone cards, but when you've got a mess of them and need to actually try controlling the airflow, man they become a big PITA.

Team Epic!

All your bitcoin are belong to 19mScWkZxACv215AN1wosNNQ54pCQi3iB7
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 08:47:52 PM
 #11

That's badass. Might get better airflow around the gpu if you sealed below the gpus as well

this is something I'm considering. the lexan turned out to be so pleasant to work with that I might try to make a piece that mounts over the open back area of the case; this would direct the airflow even more and further lower the fan speeds. it would need some careful planning so as not to block ports, cables, or the power supply fan. thanks for the suggestion.
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 09:00:02 PM
 #12

That's awesome. I'd love to know more about the script and if you plan to share it. I'm running Ubuntu with very similar setup but my rig is mounted in a wire shelf unit that cost $8 here. Maybe next phase would be something like this.

thank you. I'm happy to share it. the only change I've made to it here is that I removed a few lines that have to do with updating the rrd (round robin database) with some of the stats, since that action is very specific to my setup. the rest should work pretty well for general purposes. let me know if it doesn't, or if you have any questions about it. python 2.7 (instead of 2.6) was required for something, one of the modules I think, but I don't remember exactly what it was. python 2.6 works fine, I edited the #! line below to reflect this.

Code:
#!/usr/bin/python

from re import findall, search
from shlex import split
from subprocess import Popen, PIPE
from sys import stdout, argv
from os import environ

# define target range for temps
TEMP_COOL = 60
TEMP_LOW = 68
TEMP_HIGH = 72
TEMP_CRIT = 80

# define fan speeds limits
FAN_MIN = 20
FAN_MAX = 100

# strings for all hardware polling commands
GET_ADAPTERS = 'aticonfig --list-adapters'
GET_TEMPS = 'aticonfig --odgt --adapter=all'
GET_CLOCKS = 'aticonfig --odgc --adapter=all'
GET_FANS = 'aticonfig --pplib-cmd "get fanspeed 0"'
SET_FANS = 'aticonfig --pplib-cmd "set fanspeed 0 $"'

# make it easier to display terminal text in color
TEXT_COLORS = ["black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"]
def textcolor(text, color):
code = str(TEXT_COLORS.index(color) + 30)
return "\033[0;" + code + "m" + text + "\033[m"

# get all current stats from the hardware (except fans)
raw_adapters = Popen(split(GET_ADAPTERS), stdout=PIPE).communicate()[0]
raw_temps = Popen(split(GET_TEMPS), stdout=PIPE).communicate()[0]
raw_clocks = Popen(split(GET_CLOCKS), stdout=PIPE).communicate()[0]

# make a list of the adapter ids
adapter_ids = findall(r"\*?\s+(\d)\.", raw_adapters)

# getting fan data is a bit specialized and requires some iteration
raw_fans = {}
for i in adapter_ids:
n = int(i)

# the DISPLAY env var needs to be set before each fan is polled
environ["DISPLAY"] = ":0." + i
raw_fans[n] = Popen(split(GET_FANS), stdout=PIPE).communicate()[0]

# all of the parsed stats will be stored here
adapters = []

# iterate over each adapter to parse stats and store them
for i in adapter_ids:
n = int(i)

# parse the stats with regex keeping things as adaptable as possible
temp = search("(?s)" + "Adapter " + i + ".*?" + r"(\d+\.\d+)", raw_temps)
clocks = search("(?s)" + "Adapter " + i + ".*?" + r"(\d+)\s+(\d+)" + ".*?" + r"(\d+)\s+(\d+)" + ".*?" + r"(\d+)%", raw_clocks)
fan = search(r"(\d+)%", raw_fans[n])

# store the parsed data into the adapter list and convert types
adapters.insert(n, {})
cur = adapters[n]
cur["dev"] = n
cur["temp"] = float(temp.group(1))
cur["core"] = int(clocks.group(1))
cur["mem"] = int(clocks.group(2))
cur["pcore"] = int(clocks.group(3))
cur["pmem"] = int(clocks.group(4))
cur["load"] = int(clocks.group(5))
cur["fan"] = int(fan.group(1))
cur["dfan"] = 0

# if temp is outside range then adjust the fan speed up or down
def adjust_fan(cur):
if cur["temp"] < TEMP_LOW: cur["dfan"] = -1
elif cur["temp"] > TEMP_HIGH: cur["dfan"] = 1
while cur["fan"] + cur["dfan"] < FAN_MIN: cur["dfan"] += 1
while cur["fan"] + cur["dfan"] > FAN_MAX: cur["dfan"] -= 1
if cur["dfan"] != 0:
cur["fan"] += cur["dfan"]
environ["DISPLAY"] = ":0." + str(cur["dev"])
command = SET_FANS.replace("$", str(cur["fan"]))
Popen(split(command), stdout=PIPE)

# color the temp display based on its current value
def color_temps(cur):
color = "green"
if cur["temp"] < TEMP_COOL: color = "blue"
elif cur["temp"] < TEMP_LOW: color = "cyan"
elif cur["temp"] > TEMP_CRIT: color = "red"
elif cur["temp"] > TEMP_HIGH: color = "yellow"
cur["temp"] = textcolor("%.1fC" % cur["temp"], color)

# stores the order, label, and format string of each output
outputs = (
("dev", "GPU%d"),
("temp", "%s"),
("load", "%d%%"),
("core", "%d"),
("pcore", "%d"),
("mem", "%d"),
("pmem", "%d"),
("fan", "%d%%"),
("dfan", "%+d%%"))

# print column headers and a row of data for each adapter
# also, adjust fan speeds for each adapter if necessary
for output in outputs: stdout.write(output[0] + "\t")
stdout.write("\n")
for adapter in adapters:
adjust_fan(adapter)
color_temps(adapter)
for output in outputs:
name = output[0]
format = output[1]
value = adapter[name]
stdout.write(format % value + "\t")
stdout.write("\n")
stryker
Full Member
***
Offline Offline

Activity: 232


View Profile
September 01, 2011, 09:11:20 PM
 #13

nice script, works fine for me using python 2.6 on linuxcoin distro
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 09:18:17 PM
 #14

I'm curious if you tried it with the back end fans reversed and saw what difference it makes?

I haven't tried this yet, at least not with the hardware in its current setup. this would definitely be worth experimenting with, and if and when I do I'll share what kind of difference it makes. currently, the case fans are providing a significant flow of fresh air to the individual card fans, and except for the grille, it seems like the heat piped away from the core is more or less equally dispersed in each direction. the "slots" idea is also fascinating, essentially giving each gpu its own little independent air channel...something to think about.
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 01, 2011, 09:27:45 PM
 #15

nice script, works fine for me using python 2.6 on linuxcoin distro

thanks Smiley I run it using the "watch" command so its persistent and gives real time stats. also, you're right, it works fine with python 2.6; I guess the 2.7 requirement was for something I'd been using at one point but ended up removing...I edited the original post
stryker
Full Member
***
Offline Offline

Activity: 232


View Profile
September 02, 2011, 07:49:32 AM
 #16

@loglow haha me too watch is so handy.

BTW you ought to know, when you set your fans to a fixed speed as I do, your script puts them back to automatic speed.... I'm not sure why I've only just this min noticed so have not had time to look into it..... thought you ought to know tho.
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 03, 2011, 01:50:33 AM
 #17

BTW you ought to know, when you set your fans to a fixed speed as I do, your script puts them back to automatic speed.... I'm not sure why I've only just this min noticed so have not had time to look into it..... thought you ought to know tho.

all you need to do is remove the "adjust_fan(adapter)" line near the bottom, or comment it out, and then the fans will just remain at whatever speed anything else has them set to.
critical
Full Member
***
Offline Offline

Activity: 162


View Profile
September 03, 2011, 04:21:47 AM
 #18

try to put some fans at the EXHAUST of the card, help to exhaust out more heat from the hard
stryker
Full Member
***
Offline Offline

Activity: 232


View Profile
September 03, 2011, 05:16:23 PM
 #19

I've never been one for sticking big fans right on top of the cards.... notice the cards tend to blow the air all over the place out the front and back.... so putting too much blow or suction right on top of a card probably just causes cavitation  in the air around the cards vitals.

Now setting up a gentle air movement front to back or back to front does seem to work.
loglow
Jr. Member
*
Offline Offline

Activity: 56


View Profile
September 04, 2011, 05:21:56 AM
 #20

try to put some fans at the EXHAUST of the card, help to exhaust out more heat from the hard

I'm not sure if it needs more exhaust, to be honest. first, I'd like to try installing larger lexan panels on the front and back to get case a little less open-air and a little more contained. as it is, I'm happy with the temps, even on hot days like today.

Now setting up a gentle air movement front to back or back to front does seem to work.

I agree with this; I think it's all about the air moving in a consistent direction...
Pages: [1] 2 3 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!