I come from the 3D printing community where it is common to control 12V 2 or 3 pins fans with PWM. 4 Pin fans are quite rare and even old PC mother boards used to use 3 pin. Having taken fans apart, they don't usually have any capacitors in them, just a hall effect chip and some coils. If the frequency is low enough any fan will work with PWM since it is just interrupted DC. I.e. power a fan with 5V and it spins. Disconnect the power and it starts to slow down. It doesn't stop immediately because of the rotor inertia so if turn it on and off at the right rate it will run slow. Fast enough to be smoothed by the inertia, not too fast to upset the electronic commutation.
I agree that the 12V fan ecosystem may be much more varied than 5V one... But I don't think 4-pin 12V PWM fans are rare, practically, every modern CPU fan is 4-wire 12V PWM fan, with slightly-above-zero to 5V PWM pulse levels. I tried at least 2x 5V and 3x 12V fans against Bolt, on frequency between 50 and 300 Hz all of the fans would stutter or produce very unhealthy noise, depending on duty cycle. One that stuttered the worse is actually stock "green dot" COFAN, it wouldn't even start rotating below 50% duty cycle @ 100Hz (default). On higher frequencies like 500 to 1500 Hz all fans would produce pretty audible pitch noise, similar to coil whine. On higher frequencies, like above 3000 Hz all but one 12V fan would behave as if the current was continuous. I ain't saying that it is impossible to have fully functional 3-wire 5V PWM fan, but these things must be super rare, I'd totally appreciate if someone could point me where to buy one such thing.
I don't think you will find one advertised as a 3 pin PWM fan. As I said all fans can be PWMed but they will wine or stutter as you describe. That is the advantage of 4 pins. Perhaps one can be bodged on by taking a constant 5V from the Arduino header.
OK, here is some update. Tried two more fans, one of them being real 5V PWM fan, 4-pin Noctua NF-A6x25 5V PWM. Bolt's embedded Controller PWM would work only if I connected middle pin of CN7 aka FAN connector (FAN_POWER: +5V_ALW derived power rail for FAN, according to docs) to Noctua's PWM pin (4, blue wire). Then I connected +5V power from one of the Arduino +5V pins to Noctua pin 2, and TACHO & GND according to a common sense: Code: T P A W G C M N H ? D +---_---+ ] 3 2 1 [ CN7 FAN on Udoo Bolt +-_-_-_-+ | | | | | | | | | \ \ / \ \ \ \ / \ \ / | | | | | | +-|-|---- Arduino +5V | | | | +]-----[--+ | # # # # | 4-pin on Noctua | 1 2 3 4 | NF-A6x25 5V PWM +---------+ G + T P N 5 A W D V C M H Now, Noctua's RPM can be controlled with FAN duty cycle BIOS setting. There is still some weirdness involved, like PWM frequency setting value in BIOS not making too much sense. For example, Noctua is supposed to work on 25kHz, but setting anything above 3000 in BIOS kills PWM control (fan goes max RPM), default 100 seems to be just fine... Now, as a side note, Noctua NF-A6x25 5V PWM is one awesome fan, at Bolt's 50% duty cycle it goes ~1600 RPM, on which it gets barely audible. On 100% it goes ~3000 RPM, which makes it sort of loud, but the amount of air it pushes at that speed is remarkable! I experimenting with setting Bolt's TDP to 45W, with all CPU cores crunching mprime's large FFTs at constant 2.8GHz, and the fan was capable of stabilising the temp at 50% duty, keeping the temperature under 79C indefinitely.
Ok, I have another update regarding Bolt fan situation. Thanks to @someone_passingby who kindly sent me COFAN F-6010M05BII stock fan, an opportunity opened for me to test and compare two different stock fans as well as non-stock 60mm Noctua fan. Here are the fans in question; COFAN F-6010M05BII COFAN F-6010H05BIV Noctua NF-A6x25 5V PWM First of all, two different COFAN "stock" fans are indeed very different beasts; the only common thing is their physical appearance, the wiring as well as the PCB under the fan stickers are pretty different (sorry for a blurry image): Note how H05BIV variant PCB has 4 solder points and M05BII only 3. Also, the order of the solder points is totally different. I didn't want to tear the fans any further, but I'm pretty sure that would reveal totally different PCB & electronic components on them on these two stock fans. To compare different fans I've set BIOS "Internal FAN Settings" options to: "External FAN Control": Disabled "FAN PWM Frequency": 100 "FAN Duty Cycle (%)": 45 "Speed Change Duration": 1 COFAN fans were connected to Bolt's CN7 via their included connector, Noctua NF-A6x25 5V PWM used wiring as described on previous post (only GND was pulled from front-panel connector because I only have 2-pin connector that fits into CN7 available right now). Here are the results: COFAN F-6010M05BII This fan seems to be able to follow the Duty Cycle set in BIOS pretty fine, although at 45% it still seems pretty noisy. Regardless of speed it is set it still produces some sort of whining noise, as if the fan was not brush-less at all. Here is the RPM when set to different Duty Cycle; Code: DUTY RPM Subjective noise ----------------------------- 10% ~750 - audible 20% ~1500 - pretty audible 30% ~2000 40% ~2400 50% ~2700 60% ~3000 - very audible 70% ~3150 80% ~3300 90% ~3450 - unbearable 100% ~3600 I'd say that at 45% Duty Cycle M05BII is as noisy or slightly noisier than Noctua NF-A6x25 5V PWM at 100%, which is really bad. Setting PWM Frequency between 10-3000 does not seem to have effect on this fan, and higher than 3000 just affects the Duty Cycle scale (lower percentage gives higher RPM). COFAN F-6010H05BIV This is the infamous "green dot batch" stock fan, which was supplied with early Bolts sent to backers. It only works correctly at full speed at 100% PWM Duty Cycle, where it gets super noisy. It also does kinda work on 99% Duty Cycle, where it stutters and its RPM and noise variate in a very annoying pattern. Tested at 45% Duty Cycle fan just spins up briefly and dies shortly afterwards. Setting PWM Frequency between 10-3000 does not seem to have much effect on this fan, although higher frequencies allows fan to spin at lower Duty Cycles, but then it stutters really badly (similar to 99% Duty Cycle at "100" frequency). I'd say this fan is just not capable of working with whatever Udoo Bolt 3-wire "PWM control" expectations are, it can only work reliably when continuous voltage is supplied via CN7. Now, since there is another mysterious "P" solder point on the fan PCB, I might try wiring this fan in a similar way I did to Noctua, just maybe that could produce better control over its RPM and noise. Noctua NF-A6x25 5V PWM This fan works just great on Bolt, at anything up to 50% Duty Cyacle it is practically uadible, a shame it is 25mm deep, its size totally dominates the resto of Bolt's components. * * * An image & videos are hosted on https://imgur.com/a/Ai3At3f
Thanks for the detailed update! I indeed agree with DUTY RPM Subjective noise you provided as a previous owner. This is why I never looked back since I switched to Noctua NF-A6x25 5V PWM. Those who do not mind the height of the Noctua, NF-A6x25 5V PWM is the way to go. I'll try @Zgembo
I'll try the method @Zgembo suggested before to make NF-A6x25 5V PWM follow the duty cycle of BIOS settings when I have time. It will be really sweet if Noctua can run at 50%... (p.s. anybody can guide me how to edit a comment...?)
Edit a comment is disabled some time ago on this forum due to incorrect usage by spammers... @evaloverde perhaps enable again because your personal filter is already filtering out potential spammers.
I just bought the NF-A6x25 5V PWM and tried the described setup. In my case, I wired Code: Noctua -> BOLT black -> black (GND?) yellow -> ** Arduino 5V green -> yellow (TACH?) blue -> red (PWM?) The effect that I am observing, is that the fan starts spinning the moment that I plug the yellow Noctua wire into the Arduino 5V (even if the BOLT is still switched off). Is that the same for you? When running an OS (Manjaro Linux, in my case), the fan never spins down either. I am still running the original kickstarter BIOS, 1.04 R.C. 2. Maybe it has got to do with that?
Ciao guys, please if anyone is having an issue with the green dot fan, don't hesitate to open a ticket here. @oodarioo the new BIOS beta update is available here (direct link)
Bah, just pressed the wrong key, and the post above went out incomplete. @evaloverde we really need editing enabled. @oodarioo Flash more recent BIOS version, 1.04 RC2 does not have any PWM control in place.
Even after updating to Eva's linked BIOS, the Noctua fan keeps spinning, even when the Bolt is switched off. Must have done something wrong... What are your settings in the BIOS @Zgembo ?
Advanced -> Embedded Controller -> Internal FAN Settings: Code: External FAN Control: Enabled AC0 Temperature (C): 75 AC1 Temperature (C): 40 Temperature Hysteresis: 3 FAN Duty Cycle (%) Above AC1: 50 Speed change duration: 3 Try resetting BIOS to defaults before setting these... If it doesn't work for you double-check wiring...
Another (probably last) update into two variants of stock COFAN fans; I finally dared to bust open both COFAN F-6010M05BII and COFAN F-6010H05BIV, and indeed, the PCB and components on fan PCBs are totally and completely different. Did some signal tracing and IC googling, so this is what's really on those fans: F-6010H05BIV This PCB has 4 soldering points, marked with +, -, s and P. That P that must stand for PWM is not connected anywhere on Bolt by default. Code: COFAN F-6010H05BIV PCB 100K MLX90287 0ohm +----+ +--------------+ +----+ 68K +--+ R1 +--+8 VREF PWM 1+----+ R3 +----+ P (PWM) +----+ | +----+ | | +----+ +--+ R2 +--+----------+7 MINSP FG 2+--------------+ S (TACHO) | +----+ | | +------------+--------+6 GND OUT1 3+---+ L1 (motor) | | | | +---+5 OUT2 VDD 4+--+-----------+ + (5V) | L2 +--------------+ | | (motor) || | +----+ +---------------||---------+ +-+ R0 +-+ - (GND) + || | +----+ | C1 | 0ohm +-----------------------------+ The IC that controls this fan is MLX90287 "coil fan driver", with data-sheet available out there. In theory, this fan is a PWM capable one, and I've actually tried connecting PWM to Bolt's PWM pin while getting +5V from Arduino in the same manner as I did with Noctua, but it didn't work as expected, it went 100% all the time. I even tried removing R1 and bridging R2, to set the IC in "no minimal speed" mode, nothing changed. F-6010M05BII This fan PCB is much more simple beast. It has 3 solder points tat are not really marked in any way. Code: COFAN F-6010M05BII PCB +---------+ | G D D V | | N O O D | | D B D | GR276 | | | 4 3 2 1 | +---------+ | | | | | | | +---------------+ + (5V/PWM) | | +-----+ L1 (motor) | +-------+ L2 (motor) | | 100K | | +----+ +----+ ? (TACHO) | +-+ R1 +-+ | c | +----+ | |/ | +---+ MMBT2222 | +----+ | |\ +---+ R2 +-+ | e | +----+ + | 4.7K | +----------------+----+ - (GND) The IC in place here is simple "Hall Effect Fan Driver", and the TACHO signal seems to be generated by simple MMBT2222 transistor. The reason why this works at all with Bolt's PWM is beyond understanding. Perhaps it somehow works well in tandem with circuit documented here: Anyways, as I've run out of patience with COFAN stock fans I was able to get my hands on, I came to a conclusion that they are both bad in their own ways. I decided to actually purchase Noctua NF-A6x25 5V PWM myself (previous instance was a borrow), it works just excellent with Bolt, I guess I'd have to live with the fact the final machine is now bit bulkier.
Even after setting to default values and rechecking the wires, when following @Zgembo 's instructions, I have a fan that is always on. In fact, the Noctua fan is running at 100% irrespective of the PWM and TACH wires. As soon as I connect the yellow Noctua wire to the Arduino +5V and GND to GND, it starts spinning (even when the Bolt is switched off). However, I managed to get PWM-control somewhat by connecting the yellow Noctua wire (+5V) to the Bolt's middle (red) pin (PWM?), Noctua green (TACH) to Bold left (yellow) pin (TACH) GND to GND. The Noctua's blue wire I left dangling. In the BIOS, I use a "FAN PWM Frequency" of 70 and a "FAN Duty Cycle (%)" of 99. Setting the latter to 100 keeps the FAN running at 100%. I observed, that increasing the PWM frequency increases the fan speed so that to keep a constant fan speed at a higher frequency, one has to reduce the PWM duty cycle accordingly. E.g. frequency of 2000 and duty cycle of 80 give a fan speed of around 1800-2000 and audible coil whine (in bursts at about a second intervals), whereas a frequency of 4000 needs a duty cycle of 60 for the same fan speed (80 lets the fan spin at full speed). Frequency of 8000 needs a duty cycle around 10-15 for the same speeds. After setting such values in the BIOS when in "External FAN Control" disabled mode and then enabling it then also gives an on-demand running fan, which turns off, when the CPU is sufficiently cool. I assume that this is not the intended use of the PWM controls in the BIOS, but it works for now (although the fan does give off a weird periodic weak rattle sound, when spinning). I am, however, still curious as to why I could not get @Zgembo 's setup running. Since I get a fully spinning fan even when the Bolt is switched off, I assume that it does not even have to do with the BIOS, but the fan itself. @Zgembo: Does your fan spin, if you only connect +5V and GND?
What happens if you connect the PWM pin to ground? I would expect it to spin 100% with the PWM pin floating. Perhaps you need a pulldown resistor to ground to make it work with the Bolt.
Just double checked, my NF-A6x25 5V PWM does not spin when I connect only Arduino +5V (top connector @ MB, pin 40) and GND. Noctua only start to spin when I also connect Bolt's CN7 pin 2 (middle) to Noctua's PWM (pin 4, blue wire), and it seems to respect Bolt's BIOS PWM duty cycle setting just fine (freq @ 100). I tried this test with TACHO pin both totally disconnected, as well as connected (CN7 pin 3, Noctua pin 3, green wire), it does not change anything at all. BTW, what's your Bolt board HW revision? I have CSC40REVC V8 board in here (BIOS part number SC40-2000-0000-CO|C). Are you on latest 1.06RC4 BIOS? What "Frimware / Library Version" does you "Embedded Controller" BIOS menu show?