Synology Fan
Replacement Hack

aka. "PWM to Rotor Lock"

tl;dr:

If you need a new fan for a DS411slim, DS414slim or DS416slim, watch out!
You cannot just put any fan in there.

You need one with a "rotor lock" detection, not one of those with a PWM tachometer output.


Original fan, Everfail EC6010L12ER:

For genuine Synology spare parts, see DS411slim, DS414slim, DS416slim or the complete collection.

For idiotic emergency hacks, read on...


I have quite a lot of those Synology NAS drives and all the the big ones, no matter whether 19" rack or those bread box type ones, they never caused any problems - unlike those 2.5" bay slim-thingies. They're driving me mad.

The cool thing is that the fan is ~usually~ the least of the problems.
At least my slims all died before the fan started wearing out :)

So far, I had two DS411slim. The first died after 18 months, the second one after 24. Of course, none of them was replaced by Synology, so I bought two new DS414slims, put my old disks in - et voilà! At least that worked.

One of the new ones already broke, this time it was replaced by the retailer and the other one, well - the other one started making terrible noises just one week ago...

There must have been quite some problems with fans in those units, otherwise Synology would probably not have made the fan unit detachable, in the DS414slim an newer units.

For a quick solution, I cleaned the fan and checked if the problem was caused by an bailed out circlip, but that wasn't the case. Additionally, that complete thing was coated with protective paint.

I put two stripes of paper between the fan housing and the case, trying to gain some room for the rotor and put it back into the NAS. The defect was still audible, but a lot quieter than before.

A fan. Right. I ordered a new one. 60x60x10mm, 12V, three wires, 2 bucks.
What could go wrong?

Well, my business is about nano and pico-Amperes. I don't need cooling (in fact I need to heat sensors and oscillators :) and except for building PCs, where you just take the connector and plug it in, I never cared about fans.

The fan arrived. It had a wrong connector with a wrong pitch. Not a problem. I desoldered the cable from the original one and put it on the new one.

I built it in, turned on the Synology and - two minutes later, I had that endless "beep, beep, beep, ..." fan warning. Additionally, the fan worked at 110% and the NAS almost started to float around...

So what? Wrong speed? Something completely proprietary from Synology?
Nope. Just time to discover something new.

I always thought that all 3-wire fans have a PWM output.
Lol, how wrong I was...


Although the system settings now provide the possibility to disable the fan malfunction beep in the "General" tab under "Hardware & Power", the warning annoyed me and the fan was spinning at a much to high speed.

It was Saturday evening and I needed the NAS, whose fan now completely broke, because it was set-up to make long time recordings of Bernd, our mealworm. ;-)


Hardware

Now, here is what the original Synology fan does if it is blocked.
As long as it is rotating, the signal pin is tied to ground, but left floating once the rotor stopped spinning (the output stage of these types of fans is of an open collector type and pulled up by the main board. Hence, "floating" is equivalent to "high").

Original Synology fan;
Rotor locked for 3s

And this is how a PWM or tachometer output looks like, in case you never saw one:

PWM output signal
PWM output signal with rotor blocked

PWM zoom; Fan at 5V; ~60Hz

PWM zoom; Fan at 12V; ~130Hz

So the requirements for the quick-fix were:

bioCAD schematic

I decided to go with an N-channel MOSFET here, as the filter capacitance can be made smaller, the higher Ugs (in series with the diode) forms a better (higher) threshold and the time constant (1M * 100n) is more independent from the mainboards pull-up resistor (and the drain current).
The same circuit could of course be built with an NPN bipolar transistor or Darlington...

Not much to explain here.
Every floating (aka "high") of the fan's signal output pin (YELLOW cable) will, via the diode, charge the capacitance (Tau = ~10ms) and activate the FET, pulling the output pin low (FET's drain pin).

A low output of the fan is blocked by the diode, hence the capacitance can only discharge through the 1M resistor (Tau =~ 100ms) and the FET will still be turned on.

The two following images show the filtered Ugs with minimum and maximum voltage.

Ugs at minimum fan speed (~5V, ~60Hz)
Ugs at maximum fan speed (~12V, 130Hz)

For the FET, almost any N-channel enhancement type will work, just make sure it can handle the 12V (Uds and Ugs). Of course, big packages like TO-220, D2PAK do not make any sense here. Keep it small...
There are literally thousands of components that will work here, but just to name a few (most have SOT-23 or TO-92 package), from my own stock: 2N7000, 2N7002, BS123, BSS123, BS170, BS108, Si2366, and, and, and, and, and...

The other components values are uncritical too. Just make sure that the resistance of the pull-up resistor is about 1/10 (or less) of the Ugs resistance and that the time-constant of the Ugs components (here 1M * 100n) is about 10 times longer than the longest signal pin low-time (here ~50Hz = 20ms, 10ms on, 10ms off).

Shorter time-constants will create more and more ripple, until the FET is turned off. That's not what we want, here...

It doesn't matter where you put this. On the fan's side, on the mainboard's one or even in the middle of the cable...

I decided to do it like this ;-)

Ok, probably not a solution...
...for everyone, but ¯\_(ツ)_/¯

Software

Before starting with the hardware, I spent quite some time on trying to find out if an easy, software-only hack can be applied to fix that problem (spoiler: it can't). Maybe there's some config file where the fan parameters can be altered?

And yes, there is this one, here: /usr/syno/etc/scemd.xml

While this obviously won't fix the PWM-type-fan issue, it could be worth trying to adapt your new fan via the "fan_speed" parameters... It wasn't necessary in my case, so I did not try whether this would work or explode :)


<?xml version="1.0" encoding="UTF-8"?>
<scemd>
    <fan_config period="4" threshold="6">
        <disk_temperature fan_speed="STOP"       action="NONE">0</disk_temperature>
        <disk_temperature fan_speed="ULTRA_LOW"  action="NONE">42</disk_temperature>
        <disk_temperature fan_speed="VERY_LOW"   action="NONE">50</disk_temperature>
        <disk_temperature fan_speed="LOW"        action="NONE">54</disk_temperature>
        <disk_temperature fan_speed="VERY_HIGH"  action="NONE">58</disk_temperature>
        <disk_temperature fan_speed="FULL"       action="SHUTDOWN">61</disk_temperature>
				
        <cpu_temperature fan_speed="ULTRA_LOW"  action="NONE">0</cpu_temperature>
        <cpu_temperature fan_speed="FULL"       action="NONE">85</cpu_temperature>
        <cpu_temperature fan_speed="FULL"       action="SHUTDOWN">95</cpu_temperature>
    </fan_config>

<fan_config hw_version="Synology-DX5" period="20"threshold="6" type="DUAL_MODE_HIGH_EBOX" hibernation_speed="UNKNOWN">
    <disk_temperature fan_speed="FULL" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="FULL" action="NONE">45</disk_temperature>
    <disk_temperature fan_speed="FULL" action="NONE">55</disk_temperature>
    <disk_temperature fan_speed="FULL" action="SHUTDOWN">61</disk_temperature>
</fan_config>

<fan_config hw_version="Synology-DX5" period="20"threshold="6" type="DUAL_MODE_LOW_EBOX" hibernation_speed="UNKNOWN">
    <disk_temperature fan_speed="FULL" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="FULL" action="NONE">45</disk_temperature>
    <disk_temperature fan_speed="FULL" action="NONE">55</disk_temperature>
    <disk_temperature fan_speed="FULL" action="SHUTDOWN">61</disk_temperature>
</fan_config>

<fan_config hw_version="Synology-DX510" period="20"threshold="6" type="DUAL_MODE_HIGH_EBOX" hibernation_speed="LOW">
    <disk_temperature fan_speed="MIDDLE" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="HIGH"   action="NONE">48</disk_temperature>
    <disk_temperature fan_speed="FULL"   action="SHUTDOWN">61</disk_temperature>
</fan_config>

<fan_config hw_version="Synology-DX510" period="20"threshold="6" type="DUAL_MODE_LOW_EBOX" hibernation_speed="LOW">
    <disk_temperature fan_speed="MIDDLE" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="HIGH"   action="NONE">48</disk_temperature>
    <disk_temperature fan_speed="FULL"   action="SHUTDOWN">61</disk_temperature>
</fan_config>

<disk_control>
    <disk model="ST9120821A">APM_255</disk>
    <disk model="HTS722020K9SA00">APM_255</disk>
    <disk model="ST980811AS">APM_255</disk>
    <disk model="MHV2060BH">APM_255</disk>
    <disk model="MK6034GSX">APM_254</disk>
    <disk model="ST9100824AS">APM_255</disk>
    <disk model="HM250JI">APM_255</disk>
    <disk model="MK1637GSX">APM_254</disk>
    <disk model="ST9100824AS">APM_255</disk>
    <disk model="ST9120822AS">APM_254</disk>
    <disk model="ST9160821AS">APM_254</disk>
    <disk model="WD2500BEVS-75UST0">APM_254</disk>
    <disk model="HM250JI">APM_254</disk>
    <disk model="WD2500BEVS">APM_254</disk>
    <disk model="WD1600BEVT">APM_255</disk>
    <disk model="HTS543232L9A300">APM_255</disk>
    <disk model="WD1600BEVE">APM_255</disk>
    <disk model="MK2546GSX">APM_254</disk>
    <disk model="MHV2080BHPL">APM_255</disk>
    <disk model="WD1200BEVE">APM_255</disk>
    <disk model="HTS543225L9A300">APM_255</disk>
    <disk model="WD3200BEVT">APM_254</disk>
    <disk model="MK8025GAS">APM_254</disk>
    <disk model="ST9200420AS">APM_254</disk>
    <disk model="WD3200BEVT">APM_254</disk>
    <disk model="HTS543216L9SA00">APM_254</disk>
    <disk model="MK4058GSX">APM_254</disk>
    <disk model="WD6400BEVT">APM_254</disk>
    <disk model="ST32000542AS">APM_255</disk>
    <disk model="ST95005620AS">APM_255</disk>
</disk_control>

</scemd>