1 (edited by GregRob 2015-04-14 10:50:20)

Topic: 3D print - CPU fan duct

I've made another 3D printable object for my Novena.  It is a fan duct that mounts beside the CPU (over the SD card holder) and blows air through the CPU heat sink.  It is on thingverse: http://www.thingiverse.com/thing:763391

In order for this to work I had to rotate my heat sink 90 degrees, but found removing the heatsink was easy with a firm twist.  I only had a 25x25x10mm fan on hand, which I don't think will fit into a Novena case, so I've ordered a 25mmx25mmx6.9mm fan (Digikey part: 259-1552-ND): http://www.digikey.ca/product-detail/en … ND/2757801  I'll update the picture once that fan is installed.


The print is two objects (layers) which together with the fan are all glued together, it then screws down to the appropriate holes around the CPU, and includes some tabs to help hold the heatsink in place.

This setup is certainly not silent, so you will likely only want to run it when you are doing CPU intensive jobs.  Maybe it could be setup to automatically come on when the CPU reaches a set temperature.  Figuring out where to hook it up, and how to control it will be the next step.

EDIT: April 9, Changed the design to combine the middle and top layers into one object. Printed the new object in a different colour so the pictures show it better.  Please note the fan is glued to the duct, screws would make it taller, and would also interfere with the SD slot below.

Re: 3D print - CPU fan duct

That's very neat!

There are a couple of options for you.  The easiest might be to pull 5V from a USB port and use one of the UART4 pins to control a GPIO fan.  There are patches in the 3.17 vivante branch, and thermal zone will become part of the main kernel tree with 3.19.  The fan turns on when the temperature gets above 70 degrees (and throttling kicks in above 80 degrees.)

Re: 3D print - CPU fan duct

I love this - it didn't even occur to me to offset the fan like that (I was thinking of putting it all the way over in the peek array, with a heatpipe...)

Too bad the fans I have coming from ebay are 30mm, I'll have to make some mods to this...

Re: 3D print - CPU fan duct

I've changed the design to be 2 pieces instead of 3, and posted some better looking photos.

Re: 3D print - CPU fan duct

Any reason you mounted a fan like that instead of just using a blower that already blows air at 90°? Any idea what kind of losses you have from redirecting the air like that?

I'm mostly asking because I'm curious; I've got some heatpipes on the way I'm planning on using to sink my CPU to my (yet-to-be-fabbed) aluminum case.

Regardless, great work! It's awesome when people do and share these things.

Re: 3D print - CPU fan duct

No particular reason for not using a blower, a fan is what I had in hand and in mind.  I didn't even think of looking to see if a small enough blower was easily available.  The lower half of this duct would probably be easily adapted to mounting a blower.

Re: 3D print - CPU fan duct

I received the 6.9mm fan today, glued everything together, remounted my heat sink a couple of times, and things are now working fine.

You can see the whole assembly is only about 3mm taller than the heat sink.  it is shorter than the GPBB pins.

Without the fan running, with the CPU idle my CPU temperature is around 45°C.  Then running the CPU at 100% load it only takes about 90 seconds to pass 80°C.  Eventually the CPU temperature was just short of 85°C I powered up the fan, and about 120 seconds later the CPU was down at 61°C, where it has been staying (despite maintaining 100% CPU load) for the last 15 minutes.

With CPU load at 50% the fan is able to hold the temperature at 49°C.

With CPU load at 1% the stable temperature seems to be about 33°C. Which is about 11°C. above ambient.

Re: 3D print - CPU fan duct

Nice project.
Thanks for sharing.

Re: 3D print - CPU fan duct

I think this is going to be a must!

Yesterday my novena turned off while compiling kicad, today I have checked the temperature and it reaches 85ºC easily, I have put a temporary fan, but I will 3d print your mount smile

Re: 3D print - CPU fan duct

Hahaha, that's exactly how I encountered the problem too - compile kicad, receive reboot. Ended up limiting the build to 1 throttled core to keep the temp below critical smile

11 (edited by dbtayl 2015-04-18 08:31:56)

Re: 3D print - CPU fan duct

My solution is far less elegant:


On the up side, it's been running full-out for the past ~20 minutes, and is sitting at ~53°C.

The heatsink in the picture isn't actually attached to the heatpipe at all- it's just sitting on it, no thermal paste or anything. So it's probably not terribly effective.

And no, this isn't just a hack to keep things cool (though it does work)... I'm planning on using a similar setup when I finish machining my new case. Except then the case (aluminum) will be the heatsink, and I'll actually machine a real bracket to affix the heatpipe to the CPU; drilling holes in a chunk of angled stock was faster for a quick test. Anyway, when that's all done, I think it will be a nice solution (assuming it cools decently). I'm still shooting for passive cooling.

The heatpipes I just ordered from China off of eBay, for what it's worth, and they seem to work well. These are 8mm wide, 3mm tall, and 240mm long. We'll see how well they work once I bend them.

EDIT: I should add that there IS thermal compound between the CPU and the heatpipe.

Re: 3D print - CPU fan duct

Here's my solution. It's a simple mount for a horizontal blower (Delta Brushless horizontal blower, model number BFB0408HHA). It's a ways off in the peek array but it produces enough airflow to keep both the CPU and the FPGA cool. It works just as well if not better with the lid closed since the lid creates more of a wind tunnel. The air stream from this blower doesn't actually aim directly out the face so it is aimed more directly at the heat syncs than it appears from the image.

Right now I have the fan just connected to +3.3V from the Senoko board and it's always on. When I have time, I'll add a FET to PWM it based on processor temperature and monitor the rotor locked sensor.

I designed it in OpenSCAD and it's available on github. https://github.com/DanielCasner/novena- … _mount.stl


I wound up tearing off the corner to make room for my diagonally mounted antenna bracket. If I have to re-print it, I'll obviously just modify the design to remove the corner.

More pictures https://plus.google.com/u/0/photos/+Dan … 9898933169


Re: 3D print - CPU fan duct

I chose to get GregRob his fan duct printed by Shapeways by lack of a 3d printer (and lack of time).

It turned out pretty good, so thanks GregRob!


What I would like to know is how the Heirloom fan is being controlled?

I was considering creating something for the gpio-fan driver in the kernel and connecting it all up to the front panel board. But maybe their is already a paved path to get temperature controlled fan on the Novena?

Re: 3D print - CPU fan duct

That's exactly how the heirloom laptop will be controlled.  The front panel 5V connector is getting exposed as a gpio-fan, and a thermal zone exists that controls the fan.

You should be able to get support for that by using novena-eeprom to add the "heirloom" feature.  It hasn't been rigorously tested, though, since I haven't seen the heirlooms yet myself.


Re: 3D print - CPU fan duct

Ok, I connected everything and added a gpio-fan to the device tree and enabled it in the kernel.

    fan {
        compatible = "gpio-fan";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio_fan>;
        gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
        gpio-fan,speed-map = <0    0
                              3000 1>;

First of all I found that I connected the fan the wrong way in the picture above. Airflow is better the other way.

Second an LED (D14D) on the bottom side turns on when the fan is off and vice versa.

Third there is no use of the gpio-fan as a cooling device yet. Patch seems to be for 4.0:

Re: 3D print - CPU fan duct

I really dig Gregrob's design.  Its actually a very smart place to offset a heatsink fan.  I would like to see if I can find a blower and modify it to hold one of those instead though (although I do see that this fan works well!)

Re: 3D print - CPU fan duct


Where did you end up plugging in the fan, and how did you end up enabling it in software?


I tried looking up how to enable the fan as a device tree, but I am unsure of this. Would you have any documentation I could look at, or would you mind explaining it a little more?

Thank you to both!

Re: 3D print - CPU fan duct

At this point my "just the board" Novena is still sitting outside of a case on my desk, so when I run the fan I just alligator clip on 5V from another supply.  I have also run it from 5V from USB but that was just a different temporary solution.   Sorry for the disappointing answer.

I do not have the front panel PC board, so I don't yet have an easy way to connect to the 5V connector that xobs mentioned earlier.

Moving forward (eventually) I'll either build something that brings out the front panel 5V connector to where I can get at it (which is also useful as there are additional USB ports on that header as well), or I may wire out a 5V bus from one of the external USB ports as they have been built to drive a lot of power (which may be useful for other projects).

Re: 3D print - CPU fan duct

That is fine, thank you for the answer! I will need to get the 2 lead pin connector anyways, as this is not long enough for that job. If I do, I will post the results.

Re: 3D print - CPU fan duct

I got the fan working with the 5V front panel. If anyone else wants to do this, a few things I found out:

- The Fan wire is not long enough to make it to the front panel, I had to buy more wire (I used 24 AWG, but I think the wire the fan uses is smaller)
- The crimp housing to use is digi part: 455-1001-ND, and the crimps to buy is Digi Part:     455-1042-1-ND

I also had a question for xobs, I enabled "heirloom" on the eeprom and installed the "novena-heirloom" package, but the fan will run whenever the computer is powered on (to include suspending). What other steps do I need to take so it will only activate when the CPU gets too hot?

Re: 3D print - CPU fan duct

I'll need to work on "heirloom" mode some more.  The problem is that I haven't had a machine to work on in a while.

I'll be returning to Singapore in two weeks, and will start working on Novena again.  The next release of the kernel will most definitely have heirloom mode validated and working.


Re: 3D print - CPU fan duct

I put a few simple patches here:


To enable or disable the fan you can do (or with 1)

echo 0 > /sys/devices/soc0/fan/hwmon/hwmon1/fan1_target

There are some patches in the 4.x kernel tree that allow it to be used as a cooling device.
Did not get around back porting that to try it.

Alternatively you could run something like a script:
http://forum.buffalo.nas-central.org/vi … hp?t=25947

Re: 3D print - CPU fan duct

Heres mine:

I ended up using the bottom piece of GregRobs's 3d printed holder, with a 30mm x 6mm blower instead from mouser.  The result looks great and works great.  I do need to modify the 3d printed holder piece to make it longer and accomodate the fan fully as i just roped it into place for now

I'll need to work on "heirloom" mode some more.  The problem is that I haven't had a machine to work on in a while.
I'll be returning to Singapore in two weeks, and will start working on Novena again.  The next release of the kernel will most definitely have heirloom mode validated and working.

Is the novena-heirloom defaulting the max fan speed to 3000rpm?  Apparently this fan is made for max 5000 RPM.

Re: 3D print - CPU fan duct

The fan controller is binary, either off or on.  I never measured rotational speed at 5V, so I just picked a default value of 3000.  Many fan controllers will let you adjust the voltage or PWM the fan to get it to slow down, but since we're just using the 5V port as a GPIO, you get two speeds: 0 rpm and many-rpm.

The latest firmware should work well.

Re: 3D print - CPU fan duct

I can confirm that the latest firmware does work for the fan.