Monday, June 25, 2012

DIY Raspberry Pi Heat Sink

I had recently received my new Raspberry Pi in the mail from Newark/Element 14, and like many others, I immediately downloaded Raspbmc and tried out XBMC on the RasPi. Also, like others, I have found that the RasPi can get a little toasty. While this shouldn't be too much of a problem on its own, if it were to be confined in an enclosure, or used in a car, or any other heat intensive application, problems can occur. Since I don't like to waste money, the Raspberry Pi is impossible to get, and I love a good project, I decided it was due time to do something about this heat issue.

Author Remy from Geektopia used a thermal camera in order to measure the heat output of the RasPi under several conditions(The full, translated article can be read here). In the Image below, it can be seen that there are three major heat sources: The SoC(center), the USB/Ethernet controller(right), and the voltage regulator(left).

Image Courtesy of Geektopia.es
As you can see in this photo, the average temperature for the SoC while streaming video over network is about 56.1 degrees C. Not melting hot, but hot enough to cause some concern for me. 

I went digging around in my parts shelves, and grabbed an old aluminum heatsink. I believe it was a chipset heatsink off an old Pentium IV based Dell box. 

An old chipset heatsink seemed to be the perfect size
Luckily, it happened to be just short enough that the overall height of the RasPi is about the same. Using a digital caliper, I measured the three chips I will be covering. The SoC is 12 x 12 mm, the USB/Ethernet chip is 8.6 x 8.6 mm, and the voltage regulator is 6.5 x 5.5 mm. 

Digital caliper: one of the wisest investments I have ever made.
Using this, I measured out on the heatsink for each chip, rounding up to the next closest fin. Using a band saw, each piece was cut, and sanded down to size. 

Cut up with a band saw, and faced off with a bench grinder.
After getting them down to the right size, I used some thermal compound to attach them to each of the chips.

Heatsinks attached with thermal compound.
Now I have heard on the internet about using a common adhesive such as JB weld, and while silver thermal compound is about 12 times better for heat transfer, but in reality, with such a small amount of heat dissipation, the difference in temperatures will be negligible although both the JB weld and thermal compound are magnitudes better than just plain contact(air gaps, even the smallest ones, are excellent insulators). It just depends on whether or not you would want these heatsinks to be removable without destroying the RasPi.

Not any taller than the USB ports.
Lastly, it is time for a test. I fired up the RasPi and XBMC, and started streaming a 1080p movie from a Samba share. I took temperature readings a half hour into the movie to test performance. 

38.8 Degrees Celcius!
As seen above, the infrared thermometer shows a temperature of 38.8 degrees Celcius. That's a difference of 17.3 degrees from the average temperature during network video playback! That much improvement will go a long way towards overall system efficiency and stability. Further implementation can be done with a 5v low profile brushless fan that came from a dead netbook. The fan could be powered directly from the GPIO pins. If it is possible to read core temperature with the SoC, then it could even be possible to utilize the GPIO with the fan in order to have the fan be intelligently controlled based on the SoC temperature, all with a simple python script.













14 comments:

  1. Hello,

    how those heat sinks attached to board, do raspberry pi have holes to mount heat sink.

    regards,
    Sanjay

    ReplyDelete
  2. There are no holes to attach heat sinks.I used a very small amount of this stuff, which is made specifically for gluing heat sinks to heat sources, where screws and clamps are not an option: FrozenCPU: Artic Alumina Adhesive(Premium Ceramic Thermal Epoxy) - 5 Gram set (AATA-5G)

    ReplyDelete
  3. much easier to just purchase some of these at your local Fry's or Microcenter:

    http://www.zalman.com/ENG/product/Product_Read.asp?idx=136

    ReplyDelete
    Replies
    1. Good point. They would work great, and could possibly be even more effective. The way I picture it is with the old engineer's motto: "Cheap, Fast, Right. Pick any Two." I already had some heat sinks in spare parts storage, so I didn't have to pay a cent, and got to recycle a little. And of course, projects are always fun. Thanks for the input!

      Delete
  4. Thanks for the ideas! My Pi will be wearing some blue anodized heatsinks asap.

    ReplyDelete
  5. Hello Michael, I would like to attach some heat sinks to my Raspi aswell. However, I don't know the first thing about electronics. Would you say there is a high probability that I would damage my Raspi if I try to attach to it some of those Zalman heat sinks David Anders has linked?

    ReplyDelete
  6. Great post! Only thing though I would note is the difference of temperature might not be as big as it actually is with your measuring technique.

    Measuring shiny metals with an infrared thermometer can give inaccurate readings. The shinny metals have a low emissivity (the temperature will read much lower then it really is). Try a black sharpie or putting some electrical tape on the heat sync.

    Not sure if there is a way to access the die temp of the SOC, that probably be best..

    ReplyDelete
  7. Hi, will you make me one and send it to me in Edinburgh, I'll pay you thanks. I have heatsinks from old computers but I don't have a band saw.

    ReplyDelete
  8. One thing I am wondering: Are all the parts that have to be cooled at the same height?

    Thank you for any information.

    ReplyDelete
  9. A nice set of 3 heatsinks is now available here:
    www.etsy.com/shop/nhslzt

    ReplyDelete
  10. Very cool. Thanks for posting this. Would love to see a thermal image after the heatsink was installed.

    ReplyDelete
  11. Thanks for this blog!!
    your blog is very informative.
    DIY Raspberry Pi Aluminum Heat Sinks is superb Heat Sinks.

    ReplyDelete
  12. on my raspian wheezy build, i can do this to print out the cpu temp
    $ /opt/vc/bin/vcgencmd measure_temp

    ReplyDelete
  13. if we use a small brushless fan mounted on the cabinet, woudl it be enough to do away with the heatsink?

    ReplyDelete