Water Cooling a GTX 1080ti

I bought a GTX 1080ti Founders Edition and I’m not happy with the cooling on it. The core runs at 84 degC under load and the blower on the card is very loud if I crank it up to help the cooling (by default, the fan stays at 50% regardless of the load or temps).
These temps aren’t a problem for average use, but I plan to overclock the card and it will definitely get hotter and might start thermal throttling.


I thought about buying an air-cooling solution, as I already have good airflow and can make use of it, but I found an Antec H950 pro all-in-one CPU water cooler that someone was giving away on Facebook, So I decided to turn it into a hybrid.

The guy that was giving away the AIO said it’s 4 years old, it sat for a year without use and that he doesn’t know whether it works or not. What could go wrong?!


Assessing The Damage

First, I gave it power (for a few seconds to not damage anything if something’s wrong) to check that it’s not completely dead – it’s not. It makes the right sounds, the fan is spinning and the LED in the water block seems to work. Hooray! free water cooling!

Next, I opened the block and the pump to see their condition. The pump looks very clean inside and the seals seem fine. The block, on the other hand, has some blue crust blocking the fins. It doesn’t seem to be corrosion or anything like that. The liquid that was in there had a blue tint as well, so I think it was the liquid degrading and clogging the block as it acted like a filter.
All the blue stuff came off pretty easily, I washed everything in tap water and then gave everything an alcohol bath. It seems in very good condition.

Then, I decided I will replace the existing tubes with new ones as I don’t know if this thing had any leaks during it’s life and there was some odd residue on the block’s ports that I suspect came from the blue-ish liquid inside.

Card Disassembly And Fitment

The Founders Edition has a heat sink on the core that is separated from the rest of the cooling plate. This means that if you have a water block that will fit the hole in the plate, you can keep the plate and the blower and not have to mess around with VRM cooling or void your warranty (The warranty sticker is on a screw on the other side of the card).


Unfortunately, my block doesn’t fit. It has a wide and flat bottom surface, where some blocks have an extruded part that gives the block some more height and clearance. Moreover, my block is meant for a CPU so the mounting holes are way off.
This means I’m either enlarging the hole in the cooling plate of the card to accommodate the wider and lower water block or pulling the plate off the card completely and replacing it with something else.
I went with the latter, as I wanted to keep the stock cooler stock so that I could put it back on and return to the original state, If I ever want to.


Making the block fit

As I mentioned, my water block is meant to be mounted on a CPU, so the holes don’t align with the holes on the graphics card.
The easy way to make it fit is to buy an adapter like the NZXT Kraken G10, but that’s cheating. We’re going to go the maker way.

Fortunately, the water block itself, without the mounting bracket, does not cover the holes on the card. This means that I can use the holes to mount a custom bracket.


What I came up with is a 3D printed bracket that will push down on the block and keep it in place while allowing the illuminated center to show.

The file for printing the bracket can be found on Thingiverse.

Cooling A Graphics Card

It’s pretty obvious that the core needs the most cooling on the card, but there are more parts that need to be cooled to keep the card happy and to allow me to overclock.

here is a photo of the card and the parts that need cooling highlighted with red rectangles:



An easy way to tell which parts need cooling without using the internet is to see which parts have thermal pads on them conducting to the cooling plate.

In order to cool the memory and VRM, I have two types of heat sinks that I will cut to size. One with short fins for the memory that doesn’t need a lot of cooling and one with long fins for the toasty VRMs.
Since the different types of components have different heights, I can’t just cut a piece of heat sink that will cover everything (or I’ll have to route channels in it’s bottom for clearance, and that’s not easy). Instead, I cut strips of heat sinks to fit the different components separately.
I also made sure to align the fins with the airflow of my case, since I’m not planning on putting a dedicated fan on there.

The original thermal pads were full of dust and were falling apart so I replaced all of them with fresh thermal adhesive tape, as they will not be screwed to the PCB. later we’ll see that it wasn’t enough.

Rebuilding The Loop And Initial Testing

Refilling the loop was a little bit tricky because there is no reservoir to fill and allow air to escape.
What I did was make a temporary reservoir from an open jar and put it between the pump’s inlet and the radiator, meaning there’s a hose coming from the pump and a hose coming from the radiator, sitting in the jar that’s full of liquid. The tricky part is converting this into a short connection between the pump and radiator once the loop is full, without spilling the water in the loop.
All the other hoses were pretty straight forward to install. The connectors on all the components are simple ones that just press inside the hose (with zip-ties for security).

I filled the loop with straight distilled water. No additives or colors yet.

To fill the loop I had to suck air out of the radiator outlet until water went in and out of the pump, then connect power and quickly put the hose back into the jar. This is because this type of pump is not self-priming, meaning it can’t suck air to pull water from the jar, it has to have water inside it before it’s powered up.

After the loop was full and all the air was removed (by rotating and flipping the block and radiator to allow the air at the high spots above the hose holes to escape), I let it run for a few minutes to make sure that there are no major leaks, no residue from the old liquid and that the loop itself is working.

The test was a success.

I pinched the radiator hose where I wanted to cut it and shut the pump down. Then I cut the hose and in one motion pulled the hose from the pump inlet and pushed the one I had pinched on to the pump instead of it.
I ended up with a little air bubble, but it quickly found its place in the top part of the radiator, never to be pulled into the loop again.

Another short test and I installed the block on the card.


Mounting In The Case And Real World Testing

There are a few ways I could mount the radiator. I initially wanted the radiator on an exhaust fan, blowing the hot air outside, but I only have one fan that fit the bill, and it is too close to the CPU cooler to mount the radiator inside the case. I could mount the radiator on the outside of the case with the hoses running through the dedicated holes in the case, but that would mean that I have to take the loop apart in order to take it out and put it in. Not ideal.

Eventually, I settled for a front intake fan. This way, the radiator will be hidden and I wouldn’t have to take everything apart whenever I want to swap components or maintain something. The only theoretical problem is that the air that is supposed to cool the CPU and MoBo is hotter.

I knew mounting everything in the case wouldn’t be trivial. I have an Antec 900 (gen 1) which has plenty of room in the front, but the drive cages and the front covers that are attached to them only go in from the outside. This means that I have to get the card itself in from the front of the case.
Fortunately, The front covers can be mounted to the case without the drive cages (normally, the front covers are attached to the fan mounts which are mounted to the drive cages, which mount to the case itself).
I mounted the fan and fan mount to the radiator by drilling through the screw holes in the fan mount and mounting the fan straight to the radiator with the fan mount sandwiched in between. The front covers went on top.


2 Minutes after installing the card and one of the heat sinks fell. The adhesive isn’t strong enough to keep the biggest heat sink in place and touching anything on the card risks more heat sinks falling. I’m not powering the card like this, I need something to secure the heat sinks in place.
As a temporary solution, because I’ve been gaming with my “old” GTX 1070 and I’m missing the performance of the GTX 1080ti, I took a piece of 100x100x0.5mm aluminium and some foam, drilled holes according to the ones on the card and put it on top of the heat sinks.
This will restrict airflow somewhat, but it should be enough.

It’s time to pray. Pray that I didn’t kill the card during the weeks it sat disassembled waiting for items to arrive in the mail and all the times it was taken in and out of the anti-static bag for measurement and fitment testing.

And… It works! The card is fine, the loop is working and we are getting good temps for now so we know the block is mounted correctly. Time for some real tests.

I started Aida64 on a GPU only stress test. After about 30 mins I could see the core did not go above 59 degC, being most of the time around 55 with some peaks. That’s a big improvement. I let it run a while longer and the results didn’t change.
In long gaming sessions I saw the same effect, peaking at 60 degC.

That’s plenty of headroom for overclocking.

Ideas For Improvement And Upgrades

Aesthetically, there’s a lot that can be done. I can make a better looking top plate to hold the heat sinks in place, preferably something with holes to allow air to pass from different directions.

Also, the controller inside the block is acting pretty strange, it makes the RPM of the fan fluctuate regardless of the load or temps, this wouldn’t bother me if the fan didn’t make revving sounds like it’s at a car show.
I tried downloading the Antec software and connecting the block to a USB port to try and manually control it, but it didn’t help.
I’m not sure if there’s something wrong with the controller or if that’s how it’s supposed to act, but I figured I don’t really need the controller anyway. The way I installed the radiator, I want the fan to work at moderately low RPM all the time to provide airflow for the CPU cooler even when the GPU is idle. The thermistor or thermocouple (not sure what they have in there) in the block is nice, but also unnecessary and the GRB LED can be controlled in countless other ways.

Removing the controller brings a few benefits, like not having 3 ugly cables coming out of the block and going to 3 different places (power from the MoBo, USB on the MoBo, power to the fan and pump).
I might as well replace the fan to a more quiet one that will be controlled by the MoBo.

I could also 3D print some cool structure in translucent filament and mount it on top of the block so it’s illuminated by the LED.

I may drill holes in the heat sinks and put thermocouples in there to monitor memory and VRM temps and make sure they are sufficiently cooled.


3D Printer Lead Screw Upgrade

I built my 3D printer more than a year ago and I think it’s time for an upgrade.

This upgrade was long due and delayed because of lack of time (I worked full time in the summer) and the crawling pace in which the local postage service here works, but enough excuses – let the fun begin!

This upgrade will concentrate on the Z axis movement only, and the replacement of the threaded rods with proper lead screws.

Lead Screw? But Why?

After a year of printing, it can clearly be seen that threaded rods are not meant for this kind of application. The rod itself is not straight (which is not that big of a deal because there are straight rods keeping the movement straight), it squeaks pretty loudly during movement and its threads get full of black goo that consists of dust, oil and metal shavings from the friction with the nut.

A threaded rod is meant to be tightened with a nut and not move, the whole principal of its operation is based on friction – a thing we don’t really want in a moving mechanism.
A lead screw is much more rigid, it’s very hard so it doesn’t bend, it has a very smooth surface and its shape is specifically designed for moving inside a nut.

Made from scratch

I searched for a premade model so I wouldn’t have to model everything from scratch, but with all the different variations and sub-models of the Prusa i3, I couldn’t find one that I was sure would fit without further alterations. Eventually, I decided to design them myself and share for everyone with a similar printer to mine.
I had some big plans and special designs for this project, but It would take a lot of time and I couldn’t stand the threaded rods any more, so I decided to take the current design and improve on it. After the printer is functional with the threaded rods installed, I could take my time and experiment.
This project took two days total over the weekend, including modeling, printing and installing.

To keep the nut in place, I embedded M3 knurl nuts in holes in the plastic about 0.5 mm smaller in diameter than the outside of the nuts. The nuts are inserted by heating them with a soldering iron and pushing them in. A screw helps keep the nut straight while it’s inserted.
The linear bearings are held in place by the plastic itself.

At first, I thought I could get away with replacing only the X axis mounts, but I didn’t account for the lead screw’s center that had to move to make room for the big nut. eventually (after disassembling the printer, swapping the mounts, reassembling and realizing the mistake) I remodeled the mounts, printed them again and reassembled everything.

The old top bracket only supported the straight rod, the threaded rod’s top was floating, which didn’t help with it not being straight.
I improved on the design by including support for the new lead screw, which barely needs it thanks to it’s rigidity.
Instead of letting the lead screw move inside a hole in the plastic, I included bearings that hold the lead screw securely in place while letting it rotate freely.

The bottom brackets are basically the same, I just had to move the straight rod’s hole further out to follow the center dictated by the X axis carriage and the bigger lead screw nut.

All parts were printed in blue PLA @ 0.2 mm layer height and 200 degrees C with no support and no heated bed.
All models are available for Free download on Thinginverse.


The lead screw and threaded rod have different thread counts (the amount of turns per length unit) so the steps per millimeter value for the Z axis needs to be changed in the firmware. This is easily done by simply moving the Z axis 100 mm (direction doesn’t matter), measuring the actual movement and multiplying the current steps per millimeter value by the actual movement measured divided by 100 (watch your units). Repeat this process a few times, each time gets you closer until you reach the accuracy wanted.
Note that the error will be more apparent with longer movements. If you move your axis 1 mm and measure you might not see the error. A 1% error would translate to 0.01 mm with a 1 mm movement (which is something my analog caliper can’t measure), but with a 100 mm movement it would be much clearer at 1 mm.


That’s it. All done. No more squeaking Z axis and wobbly rods. I don’t expect a real improvement in printing quality, although that would be nice, but an improvement in the printing experience.

Final Thoughts

I’ve had some comments about losing resolution with lead screws because of the lower thread count, so lets see if that’s true (spoiler – it’s not):
The threaded rod I had measured at about 1 mm per turn (if I turn it inside a nut once, it will move 1 mm through the nut) and the lead screw measures at around 7.5 mm.
This means that my lead screw is 7.5 times faster than my threaded rod. If I want them to move the same distance, I need to turn the lead screw 7.5 times less than the threaded rod.
If I had a continuously rotating motor, I could, theoretically, have the same resolution (infinite) but the motors used in my printer are stepper motors, these motors move in steps and not continuously. My motors take 200 steps to make a full turn, this is the maximum resolution we can reach (well, there’s microstepping but the idea is the same, there still is a step to be made that determines the maximum resolution and amount of error to be expected).
With 200 steps per turn and 1 mm per turn, we get 200 steps per millimeter. That’s 0.005 mm per step. That’s the smallest increment in length we can make without microstepping.
At 7.5 mm per turn we get 0.0375 mm per step. While this is a larger number, the smallest increment you would expect to make while printing is still even larger. So what does this mean?
This means that the Maximum resolution your axle can reach will go down, but because the actual maximum resolution a 3D printer can reach is even lower, this doesn’t matter.
The maximum resolution I reached with my printer is 0.1 mm layer height and I don’t print at that resolution often. Even if I try to reach 0.05 mm, the lead screw would still be enough. Moreover, my firmware has microstepping enabled so the maximum resolution is much higher (microstepping can go down to 1/32 or even 1/64 of a step) and if I really want to go crazy, I could get geared motors to reduce the ratio to 1:14, 1:30 or even slower.

OctoPi – Remote Control 3D Printing

Leaving a 3D printer unattended is not very smart, especially a homemade one. If you’re lucky, you’ll only mess up a print and waste some plastic. If you’re less lucky, you can cause some damage to the printer or worse, burn down your house!

This is where OctoPrint comes in. OctoPrint is a free 3D printer web interface. It includes a password protected interface with live video stream, time-lapse capturing, G-Code viewer, Terminal interface, Temperature graphs, motor and temperature control buttons, and more.
This means you can SEE what is going on in real-time and stop the printing or send some code to the printer if necessary. This is a huge convenience, I no longer have to go and check that everything is OK, I can do it from my phone.
Moreover, I can slice on any computer and send the G-Code from anywhere in the world. If I don’t have a computer with slicing software, I can even link OctoPrint to a local installation of CURA and slice remotely! now that’s amazing.

I work with two computers, a desktop and a laptop. Although OctoPrint gives me the freedom to send and monitor prints from any computer, I didn’t like the idea that my printer has to be permanently connected to one of them. I wanted the printer to be independent, autonomous. I didn’t want to have to leave my computer on or not be able to reset it is something else needed it.
A dedicated computer is a massive overkill, It takes up a lot of space and it costs too much for what it does, I was looking for a more mobile solution so that I could move the printer and still have all features available. I wanted the printer to be an all-in-one solution.
After a short search I found OctoPi, A Raspberry Pi image with OctoPrint and everything built-in, maintained by Guy Sheffer. This means I can mount a RPi on the printer and have the interface and all of its features and settings no matter where the printer is set or on which computer I’m currently working.

OctoPi also provides a GUI for a touch screen to be mounted on the printer, I have no need for this right now, but maybe I’ll add one in the future.

Raspberry Pi mounted on the printer. Excuse the cabling - i'm still working on that.
Raspberry Pi mounted on the printer. Excuse the cabling – i’m still working on that.

If you’ll notice, the USB cable is made of two cables, there are two reasons for this. One, the Arduino’s USB port is facing downwards and a straight jack would be pressed against the desk and apply force on the Arduino – not good. I used some scrap L shaped USB-B cable I had from an old scanner to prevent this. And two, the RPi and the Arduino are powered via two different power sources and both regulate the voltage seperately. This means that their operating voltages aren’t 100% identical. If I connect the RPi to the Arduino via regular USB cable, the RPi would supply its regulated 5V to the Arduino, making the Arduino receive power from two different sources – also not good. For this reason I cut the 5V line of the USB cable, thus connecting the + and – data lines and sharing ground (important!) without supplying power.
I didn’t cut the cable to length because I’m not completely sure this is the final position of all components. there are more to be mounted.

Working with a RPi meant i can use the GPIOs to make the printer smarter and add features I need (see the relay in the picture? more on that in a future post)

Wireless charging (Inductive Charging)

About two years ago, Induction Charging became a standard in almost every new smartphone. At the time, my smartphone of choice was the Samsung Galaxy S II which, of course, did not feature this technology.

After some research, I decided my phone should have this feature – so I added it myself.

the modified phone and case

This procedure is not exclusive to the SGSII nor to smartphones. In fact, induction charging (of this type) can, theoretically, be added to any device charged with 5V.

I thoroughly documented the project and published a step-by-step guide at Instructables.com (An awesome site for DIY, BTW).
Copying the guide will be redundant, so you can check it out HERE.
You can also check out my profile and more projects that I uploaded HERE.

The project was featured on the Instructables newsletter and a number of sites like Hack-A-Day, HackLife and other blogs.
Seeing people get inspired by the guide was amazing, it’s part of the reason I started this site, hope you like it too.

Playing With Glass

The build surface of a 3D printer is critical for producing good prints. There are a few things that can go bad during a print or may prevent one from even starting printing.

The main issue is adhesion. You haven’t felt frustration until a 20 hour print gets loose at the last few layers. Other important issues are flatness and warping which might not be as important for some people with certain types of prints, but can also affect adhesion and are very important to me.
There are many techniques to get the job done, I haven’t tried all of them but through trial and error i found the method that works for me.
At first, I tried to print directly on top of the hot-bed. That’s not a good idea, not only is the hot-bed flexible and not flat, it can easily be damaged by the hot-end or a print that’s stuck too well. Applying masking tape, painter’s tape (basically the same thing) or Kapton tape (thick nylon-like tape that can withstand extreme temperatures) can protect the bed from the hot end or stuck prints and some say help with adhesion, but I saw no improvement and it does not help with the hot-bed’s flexibility.
Some use commercial products like BuildTak, but I haven’t tried it yet.
Aluminium seems like a rather popular option, but it has a few drawbacks. While having good thermal conductivity, aluminium tends to warp in high temperatures. It’s relatively soft so it gets easily scratched and damaged if not handled with care. I think a better option would be copper, which has similar mechanical properties but better thermal conductivity. (to date, I haven’t seen anyone use copper)
I guess THE best surface would be made of diamond, it has the best combination of thermal conductivity and strength, but that would be a little over budget..
It was obvious to me that glass is the way to go. It’s hard, flat, can withstand a little beating if a print is stuck and it’s cheap. I actually got mine free.


I tried a few types of glass sheets, 3mm, 4mm and 6mm thick, smooth and sandblasted.
Thickness was very important because i’m using a heated bed. The 6mm and 4mm needed a lot of time and energy to warm up to the temperature i wanted, the 3mm still serves me and it’s doing a fine job.
I thought about going 2mm but that’s harder to find and i’m afraid it might be too fragile.
The 6mm glass was actually a shelf from my bathroom. It wasn’t the right size and it was a hassle fixing it to the bed.
The 4mm had a sandblasted side and a smooth side. I thought the sandblasted side would help with adhesion but i saw no difference. I got if from a glazier who cut it form a scrap piece and gave it to me free.
The 3mm was taken from a broken all-in-one printer’s scanner bed. I cut it to shape myself with a glass cutter and to maximize the printing area, I cut the corners to make room for the bolt heads and washers holding the bed.

20141122_152118Sometimes a flat and hard surface isn’t enough to make the print stick, sometimes it needs a little help.
For ABS there’s a neat trick, I use ABS Juice, that’s ABS dissolved in acetone. Once applied, the acetone evaporates and leaves a thin layer of ABS on the bed for the print to stick to.
For PLA, I use UHU stic glue (like the one in the top photo). A thin layer is enough for a number of prints and it’s removed easily with hot water.
As mentioned above, some use different tapes on top of the surface, but they didn’t really work for me.

Building The 3D Printer

Well, I didn’t document the whole building process because there are A LOT of guides and documentations out there. Plus, it would have slowed me down considerably.
This is written after the fact, obviously.

This project is not completely finished and it might never be. I see it as an evolving project, I constantly add features and change stuff.

Most of the parts were ordered off eBay.
The frame is Dibond Aluminum. That’s plastic with aluminum layers on both sides, it’s supposed to be light and strong – it is.
All plastic parts are 3D printed and came with the frame (the whole idea of the RepRap project is self-replicating 3D printers, well not fully, just the plastic parts – the goal is to get a better printed to non-printed parts ratio)
The hot end is an E3D v6 all aluminum hot end.
The motors are Nema 17 stepper motors, they are a little less powerful that the “standard” 0.4Nm ones, but they work perfectly fine.
The controller is an Arduino Mega 2560 paired with a RAMPS 1.4 driver board.
I’m using a standard 500W computer ATX power supply.

The initial build took about about 3 days. It took place during the last summer at my house with a few of my friends who wanted to help and see the wander.
The build itself wasn’t special, just a marathon of wrenching, drilling, measuring, soldering and calibrating. Oh, and pizza. lots of pizza.

I think the most exciting moment was seeing the code and motors work together. It’s not something I haven’t done before, nor was it an advanced part of the build, but seeing the pile of metal and plastic turn into something that follows commands other that the trivial “stay” was just beautiful and a sign that the hardware is fine and we are on the right track.

After 2 and a half days we had a kind-of-working 3D printer. a diamond in the rough, one might say.
It extruded plastic and moved in the right direction, but it needed calibration and lots of it.

On the evening of the 3rd day I did some work alone and kept having the same problem – I could print fine at first, but after letting the printer rest it would not extrude more plastic, every time I had to disassemble the hot end and drill out the stuck plastic.
It’s too long of a story for this post (maybe I’ll post another one with the fully detailed comedy) but I’ll give you the recap of what I learnt – Computer thermal compound is not intended for these temperatures and if your hot end came with a little fan – use it.
I ended up breaking my hot end in so many places I had to buy a new one.

The new hot end took a little time to arrive and when it did, the semester had already begun and this one was brutal, papers and assignments every week in every course. I never thought I’d wish for midterms to come sooner, Argh..
I could only invest a few hours a week for fiddling with the printer but slowly and surely, it’s up and running.

3D Printer

Yeah, so I built a 3D Printer.

I have been fascinated by 3D printers for a while now, I’ve always wanted to build one. The notion that you can think of ANYTHING and make it a reality AT YOUR DESK with not that much of an effort – if any, blew my mind.
I read a lot and followed some really cool project only to be overwhelmed by the complexity and scale of the project (which turned out not to be that complicated), thinking that if I start I might get bored or worse, stuck, and leave it half finished.

So what made me go through with it?
One day, I was sitting at a friend-of-a-friend’s house talking about projects and DIY. I mentioned how I always wanted to build a 3D printer or a CNC machine and Gal, the one who lives there, said he built one a few years back and missed it. We decided to build mine together.
He also mentioned he wanted to get into programming with Arduino, with which I was quite familiar, so he helped me choose components for the printer and I helped him build an Arduino starter-kit. Win-Win.

Here I will share my journey, thoughts, lessons and updates revolving around building, maintaining and operating my 3D printer. Enjoy.