Note: I have now replaced the "tall blue" heatsink with something else. The new heatsink is gold in colour, can easily have a fan attached and fits perfectly into the XU4. See this article for more details - Another Odroid XU4 standard heatsink and fan replacement
I wanted to go for an almost silent option so used the Noctua NF-A4x10 5V fan, which was more or a less a drop in replacement after minor soldering work. For the heatsink I used the 40 x 40 x 25 mm Tall Blue Heat Sink from the Odroid shop.
The space inside my server was very limited. The new heatsink just barely came flush with the top cover in fact. The new fan was also going to sit flush with the cover and above the USB ports. That's right the fan wasn't going to blow air into the heatsink but work as an exhaust fan instead, that was all due to space limitations but worked out well. I'll comment on temperatures later in this article.
The standard heatsink was held in place with some nylon pegs that could be pushed together and then pushed through the board. The peg on the side of the board was easy to remove, however the one that was closer to the centre of the board gave me a bit of trouble. That peg was surrounded by tiny surface mounted components so using standard sized needle nose pliers didn't work, I had to use the smallest angled pliers that I had.
I removed the fan though it was not strictly necessary, as long as it was unplugged the whole unit would have come out. The heatsink gave me a bit of trouble at first as it seemed fused to the CPU, but then I discovered that if I used a screwdriver to pry it up next to the on switch it began to peel off. Once that corner was lifted up, the rest came off without any trouble.
The blue heatsink came with thermal compound which I spread evenly in a not-too-think a layer across the whole heatsink surface.
Then it was a matter of aligning the heatsink to the holes on the board and pushing the pegs through. Overall the heatsink was not very stable but it didn't fall off so I just went with that. The XU4 booted after replacing the heatsink meaning I didn't wreck anything.
The fan was placed right next to the heatsink with a whole drilled through the top cover. I also 3D printed a grille in blue plastic to match. I cut off the original fan's connector and then clipped off the new fan's wires a few centimetres away from the fan body. Then I connected the original connector to the new fan by matching the wires black to black and red to red, the yellow PWM wire on the new fan was left disconnected.
Interestingly with the new heatsink the CPU was running much cooler without the fan turning even on. With the old heatsink the CPU would run at 44C+ and the fan would be switching on/off quite regularly, the new heatsink held temperatures at around the 38C mark. That was a huge difference especially considering it was effectively passively cooled.
I did some tests with ffmpeg encoding of large files and was able to push temperatures to the 98C range but as soon as CPU activity reduced the temperature went down to idle levels very quickly. I guess having a larger surface area really helped dissipate the heat even without a fan running.
In terms of the fan, when it was running it was very quiet. I don't notice when the fan turns on any more. Huge difference.
So there you go, that has been a fairly expensive upgrade for the components involved, mostly due to the shipping cost for the heatsink and the price of the Noctua fan (why is it so expensive?) It's definitely been worth it though. I'm considering rearranging where the XU4 is located within my server enclosure, maybe if I move it further down I can mount the fan on top of heatsink, will have an update if I do.
-i