Wow, Sasa, this is incredible! I've been in your shoes and thought about building it myself if I had the time and equipment. Now, here you are at rev3, and the fan software even has an API. Hats off, my friend!
Oh wow, this is so cool! I use 2 fan controllers in my PC (I've got a full tower with 7x 140mm & 4x 120mm case fans) and would have loved to know it's possible for a person to build their own! The controllers work, but it's not ideal. I'd love to be able to set per fan speeds, but you're right, it's just not possible. This is awesome work mate!
Thanks! I'm glad you like it. I couldn't find a fan controller that has all the features that I need so I built one. And it's open-source open-hardware so you can build your own too or modify the design to fit your use-case. :)
This board (and the micro version) seem (don't own one currently, will buy one though!) very interesting to maximise cooling performance of a PC! As on my current Gigabyte board, FanControl (open source fan control for Windows) simply doesn't work; as there's no reverse engineered driver available. The proprietary driver from Gigabyte themselves also doesn't allow using a mixture of multiple fan temperatures and selecting the highest temperature value, which FanControl does support (MAX group) Using such grouping allows the fan cases to e.g. react to either processor or video card temperature increases, were in standard configurations it may lead to unoptimal scenarios when e.g. running a GPU heavy but CPU light game. Thanks again for creating this and I'll be ordering a few soon! (next month(s))
My suggestion would be to add a header for rotary encoder for pwm and a register combination to select fan with dip switch or rotary encoder switch with leds x10 to to select the fans to change the pwm value it would good for manual control
For anyone looking to power this outside a PC, Streacom has a PSU that takes 12v barrel and gives internal PC power cables like SATA power. Nano90 can be ordered without the AC/DC adapter.
Thanks for mentioning this! I totally forgot Streacom has tiny PSU that works from 12V DC power supply. I believe there are also DC Barrel jack to SATA cables on AliExpress or you can make your own with DC Barrel jack to terminal connector and cutting an old SATA cable. There are options to power it externally but you still need USB for controlling the fans. :)
Very interested in the project, but I have a couple of suggestions. 1)Why not use USB C instead? 2)Having some support for 3 pins fans too would be nice. A lot of people already have a few of them laying around, and some come preinstalled with the case, some support for them would be a nice feature.
Thanks! 1) It would be extremely simple to update the design to use USB-C. Main reason was that at the time of making this video the USB-C version of the cable that goes from the motherboard (2.54" USB connector that you can see around 6:25) was 3x more expensive than the micro USB version. 2) That's a good suggestion. 3-pin fans are slightly more complex to drive but maybe in the next revision. I also have another project that should help with 2,3 and 4 pin fans, so stay tuned for that. :)
Yes! Thank you for reminding me. I will update the video description. You are searching for "PC motherboard 9P to Micro USB". I will also add links to SATA connector.
Suggestions? Ok, find some reasonable (read: cost effective) way to add a little reinforcement to the micro USB header. Accidentally put just a little bit of force during cable management, and off it came. :( That is my only bit of feedback! I Love the product, love the open source approach. Even purchased a second... immediately after the micro USB header popped off the board. Happy I found this project and could support it.
Thanks for the feedback! I really appreciate it! Sorry to hear your uUSB header tore off during cable management... that sucks. Feel free to send me an email and maybe we can salvage it. :) I will look for a better solution for the next revision. USB-C and through-hole connectors were an option but for some reason at the time when I designed it, the pricing of "custom" cables and the connector was almost 2-3x compared to the uUSB. But maybe it's worth it...
@@SasaKaranovic Thanks for the assistance on this! To future people looking at this product and considering purchasing it, know that your not just looking at a really unique product, but a great team behind it! So often we see stories about companies being horrible, so here I want to shout out to a company that is awesome, standing behind their product and customers! We need more people like you! Cheers
Thanks! If you look at the end of the video, I'm showing the rev 1 which I made using STM32. But then I realized RP2040 is probably a bit friendlier towards hobbyists and hackers since it has built in USB bootloader, you can run version of Python if you prefer that over C and also it's cheaper and in stock everywhere. :)
Looks super cool. Do you have a recommendation how could I use it in my server rack? I used Noctua 5V fans and if I am correct, it will only work with PC (12V) fans, right?
Thank you! The board basically just takes 12V from SATA connector and passes it directly to the fans. You could make a custom SATA connector and wire 5V instead of 12V rail. Although I have not tried this, so theoretically it should work fine. :) Although, regardless of OpenFAN, I would still recommend getting 12V 4-PIN/PWM fans if you can. :)
This project is awesome! 1) Can you upload a CPL file for PCB assembly in the repository, please? I don't have an Altium designer license anymore and I can't use it to export some. 2) Is it possible to make a USB Type C variant of it? 3) Can you make a video where you through ordering a unit from a PCB provider that has assembly options as well: JLCPCB etc? Thank you!
Thanks! I already answered your question on Github and then saw you posted here as well. All the manufacturing files are available in the GitHub repository. You can also order preassembled boards from my shop. They would be identical except latter option comes with preassembled and tested board, preloaded with firmware and USB-to-motherboard cable included. The USB-C version would not affect the functionality of the board at all. But maybe in the future revisions I will swap the connector.
Hello Sasa, this is truly amazing!!! Exactly what I've been looking for weeks on the web. A big thank-you. I want to use it to manage 18 fans on a large radiator. Is it possible to add flow and temperature connectors to the PCB? Hats off my friend
Thank you! I'm glad you like it! You could use two OpenFANs to control up to 20 fans. The board does not support flow sensor but with modified firmware it could. Although I would strongly recommend using a dedicated flow/temp sensor and then using OpenFAN to individually control as many fans as you need.
This is awesome, but in case that I don't need to know the RPM of the fan (and instead I'm just interested in setting an custom PWM signal) would be possible to skip the EMC2305 and just use the PWM output of the microcontroller? Or to control fans without the PWM pin you could use the pwm signal to drive a mosfet that changes the voltage going into the fan, this way every fan would be supported, my motherboard has this function and it's a life saver when you find yourself needing to replace a fan for one that doesn't have pwm
Thank you! Absolutely, you could make a very simple board and call it a day. For my use-case, I want to know what is the RPM, because you could apply power and/or PWM to the fan but that does not guarantee it will spin. Another problem for my use-case is that if you apply 50% PWM to a 1200RPM fan and 3000RPM fan, they will spin at very different speeds. Also the price difference between the 3-pin and 4-pin fans is almost negligible, especially if you consider the cost of what those fans are cooling. :)
I got round this issue by using an old supermicro board with 4 x 3amp PWM headers. Now when i use passive splitters i'm not bottlenecked by max ampeage for higher power fans, and i have dynamic control of the 4 zones via the fan plugin for unraid which allows me to set the thresholds based on the motherboard, cpu, gpu, HBA and SMART HDD values for dynamic disk speeds for the zones.
Thanks for sharing your setup/tip! I wish my server MBO was that fancy... Mine has only one extra fan header. But I basically have a very similar setup with the OpenFAN except I have 10 zones that I can individually control. For me it helps a lot to separate individual cpu/gpu/hdd/ssd cooling fans so I can keep my media server silent (which is in my living room, at least for now :) Also there is now an official Unraid plugin for OpenFAN. So you could use some fancy automation or just good old batch/cron scripts to keep things cool. :)
@@SasaKaranovic - Congrats on the project! Great to know OpenFAN has been realeased on unraid. Is there anyway of utilizing the software with the standard PWM headers on a motherboard?
I have updated the documentation to include more information about the Unraid app and other integrations. You can check it out at docs.sasakaranovic.com
Hi! Thank you so much for this build! I was wondering if the sensor connectors could be used for a temperature sensor located in a specific place of the computer and stablish in the firmware a temperature curve for the fans 🤔🤔
Thank you! I am glad you liked it! :) There are two temperature sensor connector on the board (that were designed in but they are not populated by default). I would suggest maybe re-evaluating if you really need this approach. For example if your sensor is in the middle of the case and saying "Temperature is 28C", that does not really help because your CPU/GPU/HDD could also be at 28C or it could be at 60C. I think it's far better approach to use the actual CPU/GPU/HDD temperature reading and based on that adjust the fan(s) curve.
Great question! OpenFAN is a fan controller but it also has an API which allows it to integrate easily with other applications. For example you can take a look at FanControl software that does fan curves and temperature readings etc. and then there is OpenFAN plugin for it which allows you to use OpenFAN with your existing FanControl setup. Or another example, if you have a server/virtual machine/hypervisor, you can easily integrate OpenFAN and allow any piece of software to control each individual fan through the API.
@@SasaKaranovic If it could still have the function to work off its own temperature sensors, it would be ideal for watercooled PCs where the only useful control variable for the fans is the water temperature. the controller could basically run completely autonomously once the fan curve is set wich would be great
Hi, I have just ordered your board and hope to use this in my unraid server to control the temperature of the disks and also maybe GPU etc. Have you any videos showing the software setup within unraid? Thanks, Des!
Thanks Des! The OpenFAN ships pre-programmed so when you receive it you should be good to go. There are two (public) GitHub repositories on my profile that you can try. One runs OpenFAN software and there is another one dedicated for creating profiles for Unraid (HDD groups and curves based on temperature etc). I don't have any vides on how to set up the software but it's a good suggestion. Maybe I should make a "tutorial" in the future.
I would really appreciate a short video about how to set this up and get the most from it in unraid. It could really help sell these for you too I guess if folks saw a simplified way to do this. Management of heat in servers is a very important thing, but blasting fans at full speed is noisy and inefficient so this system has real potential. Thanks 👍
Thanks! I will add it to my (ever-growing) list of videos I want to do. :) Setting and using OpenFAN should be fairly straight forward, especially for technical users. But I agree that having a video guide explaining how things work and how to set-up everything would be nice. Only minor complication is that you can integrate it and use it in so many different ways, so keeping the guide concise while covering all use-cases could be an interesting challenge. :)
Thank you! I assume you are asking where you can have it manufactured? You can use any online PCB shop. I will also soon setup a web shop where you will be able to buy these. :)
Sasa, I'd be interested in a fan controller with features like this, but with additional features. 1) External power source. I see that you used USB to power it. Some of my testing isn't next to a PC, so I'd need to be able to plug it into a wall socket. I assume that there's a power supply out there that converts to the USB (micro?) that you chose. Is that correct? 2) Display. Since I won't necessarily be able to connect to a computer (but I still love the GUI for when I can), I'd need a display that can show RPM, V, W, A, temp (I have 3 thermocouples I can take out of an Akasa FC.Trio that is proving to be quite unreliable). 3) Kill switch. Along with calibrated dials, I need a way to instantly start or stop the power to a particular fan without a linear regulator and high-quality caps and inductors (although I'm not saying I don't want those, too). I'm doing a specific test that gets fouled by delays caused by inferior components, so a switch to disconnect the circuit seems to be the simplest solution. 4) Full RPM support. The two FCs I have (the Akasa and a CopalFan FC from En-Labs) do not support below a certain point. I'm not sure what the basis for the cut-off is, but it makes it hard to determine the full range. I have some very powerful fans, including server fans, and 0 RPM fans, and I need accurate measurements of the RPM. 5) Time. I need to be able to set test durations as well as time how long it takes for a test to complete. For example, the test I mentioned in 3 needs to record the duration to completion. 6) Ports. I don't NEED a lot of ports, but it would be helpful if the FC can control 5V and 12V fans, as well as RGB and ARGB LEDs. Also, I don't want to ruin any fans by supplying them with power they can't handle. 2 ports each would be fine (2 5V, 2 12V, maybe 2 24V, 2 RGB, 2 ARGB). Did I miss anything aside from JST? It'd be pretty hard to cover ALL of the proprietary ones. 7) Power control. It'd be even better if I can control amps and/or watts, as well as RPM. 8) Data sharing. Having all the data to crunch would be great, and being able to store it until I can plug it in would be even better. Even if that means I have to plug a USB stick into it to save to, that's fine. Do you think you'd be able to help? I'm not a sparkie or any other kind of engineer, just an avid enthusiast trying to provide useful info to consumers.
Great suggestions. I will add them to the list of future improvements. Although the better approach here might be to setup a separate project to build an external stand-alone fan controller. The current one is targeted more towards users who want to use this inside their build.
I think you're correct @@SasaKaranovic that it should be a separate (related) project. Most people seem satisfied with hubs and partial-featured FCs for whatever reason, but fully-featured FCs are extremely hard to find and, usually, do not provide individual control of each fan but, rather, follow the repeater/splitter/hub methodology of "one fan to rule them all". Even the Aquacomputer Aquaero Pro 6 doesn't do what I need, and it's about $200 +tax+S&H just for that unit without RGB & ARGB control. The EN-Labs CopalFan FC can use SATA or AC, but it didn't ship with the AC power supply and I have no idea which would be used, plus it has no display and the component quality isn't high enough to eliminate delays in speed changes. It's been very frustrating for me to find what I need, so I really hope you'll be willing to help. BTW, I shared this video to my channel as I think it deserves attention!
Someone else mentioned display and encoder in the comments. The OpenFAN has expansion headers (I2C and 1-Wire) so you could potentially add a display and rotary encoder that would allow you to monitor fan status and set fan rpm. Then you just need DC to SATA power connector and you are good to go.
@@SasaKaranovic Sorry, what's an encoder? Are they easy to find? What specs would be needed for the display and encoder? And, if I didn't say this already, I think your efforts to do this are absolutely fantastic and I hope they bring you what you hope for!
I think their idea of using USB-C is pretty important, @@SasaKaranovic . I say this because I recently learned that C is becoming the new standard in USB, even for Apple, who will be phasing out their firewire.
Thank you for asking! Right now these are open-source open-hardware so you can build your own (or order one from online PCB shops). Unfortunately I already gave away the extra boards that I had so I'm all out at the moment. If there is enough interest I could maybe open an online store where people can purchase these and other boards that I made.
@SasaKaranovic I'm pretty sure that I have seen a couple of Opensource firmware projects on hardware sold already, like express erls on FPV drone receivers. I think there is nothing like that in the market now at a reasonable price. I'm sure you would find a lot of interest if you decided to sell something like that.
Cool! I love when things are open source! I hate pc parts manufacturers that use propiertary hardware/software and are not opensource, how can i trust them?? Not at all! Thanks for making an opensource fan hub. Although i would like if you could also add rgb so the rgb also is opensource and does not use random closed down firmware. And maybe you can try to make your own Aio with display on it running opensource firmware and running on a opensource application that can run on macos, linux and windows
Wow, I have looking for this forever (just ordered 4). Now I just wished this was controllable from a Raspberry Pi. Does the sata include other voltages than 12v that is needed for this or is there a way to bypass the SATA-connector? Heat shifting in homes, extraction from 3d-printer enclosure, cooling of media furniture below tv, there are so many applications.
Thank you! I'm glad you like it. I thought about making one for Raspberry Pi but the issue is that on Pi you only have 5V and also it's very limited in how much current it can deliver. But I am working on a WiFi/Stand-alone version that you would be able to power from a DC adapter and control remotely. I actually need it to cool down my media PCs that I have under the TV (inside furniture). :) Edit: Sorry I forgot to answer the SATA question. SATA connector provides only 12V. You could provide 12V externally via DC barrel jack to SATA connector.
For the ones I bought I will need aPC I realize, will probably buy Zimaboard (supplies 1 sata power) for those. Hopefully It will be possible to control from Linux. @@SasaKaranovic
Hi @martenki-71 Absolutely! The software is written in Python so you should be able to run it on Windows, Linux and Mac without any issues. It can also run as a Docker container. If you need help setting it up, please feel free to send me an email and I'll help where I can. :)
Hey! Thank you for asking! OpenFAN supports only 4-Pin (PWM) fans. Mainly because the price difference between the 3-pin and 4-pin fans has become pretty negligible. Also the cost/complexity of driving 3-pin fans compared to 4-pin fans is relatively high.
Hey, it's me again. I've been thinking of making my own based on your design. Could you please tell me where you got the PWM fan connectors? Whenever I search for them the search engine thinks I'm looking for a PWM hub. Update: Looks like they are called KF2510
I woke up a few hours before my alarm thinking about a project like this, only to find out someone already done this hahahaha Is it compatible with FanControl?
Thank you! Absolutely! I use it with FanControl on my desktop PC (there is an OpenFAN plugin). And for my server machines (Unraid, Proxmox etc) I use the provided OpenFAN docker image.
Hi, I am planning to build my own fan controller board based on EMC2305 but with esp32 and I've been wondering is there any particular reason why you regulate 3,3 V from 12 V instead of taking it directly from SATA same as 5 and 12 V?
Hey I've done the same thing! Twinsies! :) There are two new fan control products that use ESP32 being made and will be soon available on the shop page. I think you are right, you could also take 3V3 directly from the SATA connector.
@@SasaKaranovic Oh wow, interesting. Hearing that I just hope mine doesn't turn out the same as yours when it is finished, because it'd be pointless haha ;) Is it pretty much the same as the current one but using ESP32 instead of RP2040 or did you add some new cool functionalities? :)
I am not a huge PC RGB user so I had to Google that. :) The hardware is definitely capable of driving these. I would just need to add a header. :) At the same time, it may be better to adhere to the Linux philosophy of "Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features". So maybe an OpenLED driver? :)
@@SasaKaranovic I am not a computer expert like you're but I have an asus motherboard that uses Aura software that controls the lights I have plugged in using my Argb slot on my mobo. My fans are all different sizes in my case so I was looking for a controller hub that used PWM slots and Argb so I can have all my fans/lights for them plugged in and able to control each of the fan's speeds separately. Which I didn't think would be a big deal in 2024 but having trouble finding something like that except the controller you made here, since most things for sale appear to be "hubs" for people who have multiple of the same kind of fan.
This should not be a problem since I have 80mm, 120mm and 140mm fans in one of my setups and as long as they are 12V PWM fans, you can easily control them. For the ARGB lights; it might make more sense to create a separate project that controls the ARGB lights (and other common ones) so we don't cross-contaminate products with unnecessary features. At least in my mind it's better to have a really good fan controller and really good LED controller, rather than mix both of them in one product and have bloated HW/FW/SW. :)
Hello. I would like to purchase this product, but there is no shipping option to Brazil. Would it be possible to include shipping to Brazil or sell on a platform that ships, like Aliexpress?
I like the idea, but I do not see any serious protections without which it looks like a fire hazard. Devices like this are very easy to short circuit by connecting something incorrectly and even professionally made devices fail. I burned a few myself in the past. Therefore I would like to suggest for the future releases to consider adding some polyfuses or other types of protections to make sure that device is safe even with user errors.
Thanks! To be fair, everything is a smoke machine if you operate it wrong enough. So no arguments there. All connectors are keyed and polarized so it would be very very hard to reverse polarity. But polyfuse is not a bad idea. At the same time keep in mind that polyfuse would not magically protect against all user errors, especially if you take into consideration the scenario where each fan can draw 0.3-0.5A and you have 10 of them, at which point you are drawing 3-5A in normal operation.
@@SasaKaranovicSometimes bad things just happen and it is unfortunate that such events could also destroy the whole fan controller which could also cause other issues down the line. Just for inspiration you can read about Noctua NA-FH1 fan controller in their home page (search for "NA-FH1 technical backgrounds"). They write about some dangers with fan controllers in general and how most fan controllers are not safe especially when they are powered via SATA power connector. This may give you some ideas what could be improved in the future versions
Can't the RP2040 control PWM fans directly without the use of controller chips? Even 10 of them. And any algorithm you could possibly want to use, the RP2040 can definitely do that with cycles to spare. Two fewer chips would reduce manufacturing cost by just that much. Or do the fan controller chips have the ability to recognize that the connected fan is only 3 pin and adjust the voltage instead? If it can, definitely we want those chips instead. I'm switching to all four-pin fans, but I do still have some three-pin models lying about. Of course what we really need, regardless of BOM cost, is for someone to start producing these things commercially so that they're *OUT THERE* in quantity.
Just to clarify, these units are already manufactured and ready to go. You can order them from a web shop. The fan controller chip has several valuable features like rpm/pwm drive, PID tuning, integrated push-pull stage etc. The Pico2040 should have enough PWM outputs. I might consider this for some of the future revision. Although Pico-only design would require a lot more development and testing. And at volume savings of those two ICs compared to development time; especially if you consider that most people will buy one or two, not 20 of these, the price delta becomes negligible.
Wow, Sasa, this is incredible! I've been in your shoes and thought about building it myself if I had the time and equipment. Now, here you are at rev3, and the fan software even has an API. Hats off, my friend!
Thank you Reza! I'm glad you like it! :)
Thanks for making this! Needs mainline linux kernel support (mostly for broader adoption)!
This looks great! I was looking for a project like this for my NAS build.
Thank you! I use it in my desktop PC, my NAS and one of my servers and I love it. The remote access part is the MVP in my book. :)
Oh wow, this is so cool! I use 2 fan controllers in my PC (I've got a full tower with 7x 140mm & 4x 120mm case fans) and would have loved to know it's possible for a person to build their own! The controllers work, but it's not ideal. I'd love to be able to set per fan speeds, but you're right, it's just not possible.
This is awesome work mate!
Thanks! I'm glad you like it. I couldn't find a fan controller that has all the features that I need so I built one. And it's open-source open-hardware so you can build your own too or modify the design to fit your use-case. :)
This board (and the micro version) seem (don't own one currently, will buy one though!) very interesting to maximise cooling performance of a PC!
As on my current Gigabyte board, FanControl (open source fan control for Windows) simply doesn't work; as there's no reverse engineered driver available.
The proprietary driver from Gigabyte themselves also doesn't allow using a mixture of multiple fan temperatures and selecting the highest temperature value, which FanControl does support (MAX group)
Using such grouping allows the fan cases to e.g. react to either processor or video card temperature increases, were in standard configurations it may lead to unoptimal scenarios when e.g. running a GPU heavy but CPU light game.
Thanks again for creating this and I'll be ordering a few soon! (next month(s))
My suggestion would be to add a header for rotary encoder for pwm and a register combination to select fan with dip switch or rotary encoder switch with leds x10 to to select the fans to change the pwm value it would good for manual control
Great suggestion. You could re-purpose the I2C or 1-Wire header to do this or maybe make an expansion board for it. It would be super easy to make. :)
For anyone looking to power this outside a PC, Streacom has a PSU that takes 12v barrel and gives internal PC power cables like SATA power. Nano90 can be ordered without the AC/DC adapter.
Thanks for mentioning this! I totally forgot Streacom has tiny PSU that works from 12V DC power supply.
I believe there are also DC Barrel jack to SATA cables on AliExpress or you can make your own with DC Barrel jack to terminal connector and cutting an old SATA cable. There are options to power it externally but you still need USB for controlling the fans. :)
Very interested in the project, but I have a couple of suggestions.
1)Why not use USB C instead?
2)Having some support for 3 pins fans too would be nice. A lot of people already have a few of them laying around, and some come preinstalled with the case, some support for them would be a nice feature.
Thanks!
1) It would be extremely simple to update the design to use USB-C. Main reason was that at the time of making this video the USB-C version of the cable that goes from the motherboard (2.54" USB connector that you can see around 6:25) was 3x more expensive than the micro USB version.
2) That's a good suggestion. 3-pin fans are slightly more complex to drive but maybe in the next revision. I also have another project that should help with 2,3 and 4 pin fans, so stay tuned for that. :)
@@SasaKaranovicdo you have links to the two types of cables?
Yes! Thank you for reminding me. I will update the video description.
You are searching for "PC motherboard 9P to Micro USB". I will also add links to SATA connector.
Great suggestions!
Why are 3-pin fans slightly more complex, @@SasaKaranovic ? Is it because of the method of speed control using the 3rd pin and voltage(?) variation?
Suggestions? Ok, find some reasonable (read: cost effective) way to add a little reinforcement to the micro USB header. Accidentally put just a little bit of force during cable management, and off it came. :(
That is my only bit of feedback! I Love the product, love the open source approach. Even purchased a second... immediately after the micro USB header popped off the board. Happy I found this project and could support it.
Thanks for the feedback! I really appreciate it!
Sorry to hear your uUSB header tore off during cable management... that sucks. Feel free to send me an email and maybe we can salvage it. :)
I will look for a better solution for the next revision. USB-C and through-hole connectors were an option but for some reason at the time when I designed it, the pricing of "custom" cables and the connector was almost 2-3x compared to the uUSB. But maybe it's worth it...
@@SasaKaranovic Thanks for the assistance on this! To future people looking at this product and considering purchasing it, know that your not just looking at a really unique product, but a great team behind it!
So often we see stories about companies being horrible, so here I want to shout out to a company that is awesome, standing behind their product and customers! We need more people like you! Cheers
Wow. I wanted to make an identical project myself, only with stm32. It probably looks even easier on rp2040. As usual, someone was faster than me :P
Thanks! If you look at the end of the video, I'm showing the rev 1 which I made using STM32. But then I realized RP2040 is probably a bit friendlier towards hobbyists and hackers since it has built in USB bootloader, you can run version of Python if you prefer that over C and also it's cheaper and in stock everywhere. :)
@@SasaKaranovic Yes, I saw the whole movie. I didn't fully realize what possibilities RP2040 offers. Well done.
Looks super cool. Do you have a recommendation how could I use it in my server rack? I used Noctua 5V fans and if I am correct, it will only work with PC (12V) fans, right?
Thank you!
The board basically just takes 12V from SATA connector and passes it directly to the fans. You could make a custom SATA connector and wire 5V instead of 12V rail. Although I have not tried this, so theoretically it should work fine. :)
Although, regardless of OpenFAN, I would still recommend getting 12V 4-PIN/PWM fans if you can. :)
This project is awesome!
1) Can you upload a CPL file for PCB assembly in the repository, please? I don't have an Altium designer license anymore and I can't use it to export some.
2) Is it possible to make a USB Type C variant of it?
3) Can you make a video where you through ordering a unit from a PCB provider that has assembly options as well: JLCPCB etc?
Thank you!
Thanks!
I already answered your question on Github and then saw you posted here as well.
All the manufacturing files are available in the GitHub repository. You can also order preassembled boards from my shop. They would be identical except latter option comes with preassembled and tested board, preloaded with firmware and USB-to-motherboard cable included.
The USB-C version would not affect the functionality of the board at all. But maybe in the future revisions I will swap the connector.
Hello Sasa, this is truly amazing!!! Exactly what I've been looking for weeks on the web. A big thank-you. I want to use it to manage 18 fans on a large radiator. Is it possible to add flow and temperature connectors to the PCB?
Hats off my friend
Thank you! I'm glad you like it!
You could use two OpenFANs to control up to 20 fans. The board does not support flow sensor but with modified firmware it could.
Although I would strongly recommend using a dedicated flow/temp sensor and then using OpenFAN to individually control as many fans as you need.
This is awesome, but in case that I don't need to know the RPM of the fan (and instead I'm just interested in setting an custom PWM signal) would be possible to skip the EMC2305 and just use the PWM output of the microcontroller? Or to control fans without the PWM pin you could use the pwm signal to drive a mosfet that changes the voltage going into the fan, this way every fan would be supported, my motherboard has this function and it's a life saver when you find yourself needing to replace a fan for one that doesn't have pwm
Thank you!
Absolutely, you could make a very simple board and call it a day.
For my use-case, I want to know what is the RPM, because you could apply power and/or PWM to the fan but that does not guarantee it will spin. Another problem for my use-case is that if you apply 50% PWM to a 1200RPM fan and 3000RPM fan, they will spin at very different speeds. Also the price difference between the 3-pin and 4-pin fans is almost negligible, especially if you consider the cost of what those fans are cooling. :)
I got round this issue by using an old supermicro board with 4 x 3amp PWM headers. Now when i use passive splitters i'm not bottlenecked by max ampeage for higher power fans, and i have dynamic control of the 4 zones via the fan plugin for unraid which allows me to set the thresholds based on the motherboard, cpu, gpu, HBA and SMART HDD values for dynamic disk speeds for the zones.
Thanks for sharing your setup/tip! I wish my server MBO was that fancy... Mine has only one extra fan header.
But I basically have a very similar setup with the OpenFAN except I have 10 zones that I can individually control. For me it helps a lot to separate individual cpu/gpu/hdd/ssd cooling fans so I can keep my media server silent (which is in my living room, at least for now :)
Also there is now an official Unraid plugin for OpenFAN. So you could use some fancy automation or just good old batch/cron scripts to keep things cool. :)
@@SasaKaranovic - Congrats on the project! Great to know OpenFAN has been realeased on unraid. Is there anyway of utilizing the software with the standard PWM headers on a motherboard?
Thanks! The idea is that you can use OpenFAN with a PC that has any number or no PWM headers at all.
Could you please explain more of how you setup the other unraid containers to controll the fan controller via the API please
Sure, I will make a separate guide on how to set it up with Unraid.
I have updated the documentation to include more information about the Unraid app and other integrations.
You can check it out at docs.sasakaranovic.com
Seems very nice. I need a variation of it, if you can help...?
Hi! Thank you so much for this build! I was wondering if the sensor connectors could be used for a temperature sensor located in a specific place of the computer and stablish in the firmware a temperature curve for the fans 🤔🤔
Thank you! I am glad you liked it! :)
There are two temperature sensor connector on the board (that were designed in but they are not populated by default).
I would suggest maybe re-evaluating if you really need this approach. For example if your sensor is in the middle of the case and saying "Temperature is 28C", that does not really help because your CPU/GPU/HDD could also be at 28C or it could be at 60C. I think it's far better approach to use the actual CPU/GPU/HDD temperature reading and based on that adjust the fan(s) curve.
@@SasaKaranovic So... can the board access to those temperature readings from the mainboard? That's interesting
Great question!
OpenFAN is a fan controller but it also has an API which allows it to integrate easily with other applications. For example you can take a look at FanControl software that does fan curves and temperature readings etc. and then there is OpenFAN plugin for it which allows you to use OpenFAN with your existing FanControl setup.
Or another example, if you have a server/virtual machine/hypervisor, you can easily integrate OpenFAN and allow any piece of software to control each individual fan through the API.
@@SasaKaranovic Fantastic! Thanks!
@@SasaKaranovic If it could still have the function to work off its own temperature sensors, it would be ideal for watercooled PCs where the only useful control variable for the fans is the water temperature. the controller could basically run completely autonomously once the fan curve is set wich would be great
You should use right angle fan connectors. Most people like to put such boards on the back of the motherboard.
All connectors are at the edge of the board and during assembly you should be able to chose between putting vertical or right-angle connectors.
Hi, I have just ordered your board and hope to use this in my unraid server to control the temperature of the disks and also maybe GPU etc. Have you any videos showing the software setup within unraid? Thanks, Des!
Thanks Des!
The OpenFAN ships pre-programmed so when you receive it you should be good to go.
There are two (public) GitHub repositories on my profile that you can try.
One runs OpenFAN software and there is another one dedicated for creating profiles for Unraid (HDD groups and curves based on temperature etc).
I don't have any vides on how to set up the software but it's a good suggestion. Maybe I should make a "tutorial" in the future.
I would really appreciate a short video about how to set this up and get the most from it in unraid. It could really help sell these for you too I guess if folks saw a simplified way to do this. Management of heat in servers is a very important thing, but blasting fans at full speed is noisy and inefficient so this system has real potential.
Thanks 👍
Thanks! I will add it to my (ever-growing) list of videos I want to do. :)
Setting and using OpenFAN should be fairly straight forward, especially for technical users.
But I agree that having a video guide explaining how things work and how to set-up everything would be nice.
Only minor complication is that you can integrate it and use it in so many different ways, so keeping the guide concise while covering all use-cases could be an interesting challenge. :)
Nice project, exactly what I was looking for... an independent controller for each fan.
Can you tell me where you sent the project to build the sign?
Thank you!
I assume you are asking where you can have it manufactured? You can use any online PCB shop.
I will also soon setup a web shop where you will be able to buy these. :)
Thanks!
Hey I'm glad you liked it! :)
I'd like to be able to set a different rpm or pwm depending on the sensor temperature like some motherboards do
You *can* individually set PWM or RPM for each of the ten fans.
Sasa, I'd be interested in a fan controller with features like this, but with additional features.
1) External power source. I see that you used USB to power it. Some of my testing isn't next to a PC, so I'd need to be able to plug it into a wall socket. I assume that there's a power supply out there that converts to the USB (micro?) that you chose. Is that correct?
2) Display. Since I won't necessarily be able to connect to a computer (but I still love the GUI for when I can), I'd need a display that can show RPM, V, W, A, temp (I have 3 thermocouples I can take out of an Akasa FC.Trio that is proving to be quite unreliable).
3) Kill switch. Along with calibrated dials, I need a way to instantly start or stop the power to a particular fan without a linear regulator and high-quality caps and inductors (although I'm not saying I don't want those, too). I'm doing a specific test that gets fouled by delays caused by inferior components, so a switch to disconnect the circuit seems to be the simplest solution.
4) Full RPM support. The two FCs I have (the Akasa and a CopalFan FC from En-Labs) do not support below a certain point. I'm not sure what the basis for the cut-off is, but it makes it hard to determine the full range. I have some very powerful fans, including server fans, and 0 RPM fans, and I need accurate measurements of the RPM.
5) Time. I need to be able to set test durations as well as time how long it takes for a test to complete. For example, the test I mentioned in 3 needs to record the duration to completion.
6) Ports. I don't NEED a lot of ports, but it would be helpful if the FC can control 5V and 12V fans, as well as RGB and ARGB LEDs. Also, I don't want to ruin any fans by supplying them with power they can't handle. 2 ports each would be fine (2 5V, 2 12V, maybe 2 24V, 2 RGB, 2 ARGB). Did I miss anything aside from JST? It'd be pretty hard to cover ALL of the proprietary ones.
7) Power control. It'd be even better if I can control amps and/or watts, as well as RPM.
8) Data sharing. Having all the data to crunch would be great, and being able to store it until I can plug it in would be even better. Even if that means I have to plug a USB stick into it to save to, that's fine.
Do you think you'd be able to help? I'm not a sparkie or any other kind of engineer, just an avid enthusiast trying to provide useful info to consumers.
Great suggestions. I will add them to the list of future improvements.
Although the better approach here might be to setup a separate project to build an external stand-alone fan controller. The current one is targeted more towards users who want to use this inside their build.
I think you're correct @@SasaKaranovic that it should be a separate (related) project. Most people seem satisfied with hubs and partial-featured FCs for whatever reason, but fully-featured FCs are extremely hard to find and, usually, do not provide individual control of each fan but, rather, follow the repeater/splitter/hub methodology of "one fan to rule them all". Even the Aquacomputer Aquaero Pro 6 doesn't do what I need, and it's about $200 +tax+S&H just for that unit without RGB & ARGB control. The EN-Labs CopalFan FC can use SATA or AC, but it didn't ship with the AC power supply and I have no idea which would be used, plus it has no display and the component quality isn't high enough to eliminate delays in speed changes. It's been very frustrating for me to find what I need, so I really hope you'll be willing to help.
BTW, I shared this video to my channel as I think it deserves attention!
Someone else mentioned display and encoder in the comments.
The OpenFAN has expansion headers (I2C and 1-Wire) so you could potentially add a display and rotary encoder that would allow you to monitor fan status and set fan rpm. Then you just need DC to SATA power connector and you are good to go.
@@SasaKaranovic Sorry, what's an encoder? Are they easy to find? What specs would be needed for the display and encoder?
And, if I didn't say this already, I think your efforts to do this are absolutely fantastic and I hope they bring you what you hope for!
I think their idea of using USB-C is pretty important, @@SasaKaranovic . I say this because I recently learned that C is becoming the new standard in USB, even for Apple, who will be phasing out their firewire.
Where I can buy a finished product, are you selling these fan controllers anyware?
Thank you for asking! Right now these are open-source open-hardware so you can build your own (or order one from online PCB shops). Unfortunately I already gave away the extra boards that I had so I'm all out at the moment.
If there is enough interest I could maybe open an online store where people can purchase these and other boards that I made.
@@SasaKaranovic I'd be very interested in buying a couple of these fan controllers if you ended up selling them.
@SasaKaranovic I'm pretty sure that I have seen a couple of Opensource firmware projects on hardware sold already, like express erls on FPV drone receivers. I think there is nothing like that in the market now at a reasonable price. I'm sure you would find a lot of interest if you decided to sell something like that.
Cool! I love when things are open source! I hate pc parts manufacturers that use propiertary hardware/software and are not opensource, how can i trust them?? Not at all! Thanks for making an opensource fan hub. Although i would like if you could also add rgb so the rgb also is opensource and does not use random closed down firmware. And maybe you can try to make your own Aio with display on it running opensource firmware and running on a opensource application that can run on macos, linux and windows
Thanks! I'm glad that you liked the project!
I have another project that I'm working on that might solve all of your problems. Stay tuned! :)
Wow, I have looking for this forever (just ordered 4). Now I just wished this was controllable from a Raspberry Pi. Does the sata include other voltages than 12v that is needed for this or is there a way to bypass the SATA-connector? Heat shifting in homes, extraction from 3d-printer enclosure, cooling of media furniture below tv, there are so many applications.
Thank you! I'm glad you like it.
I thought about making one for Raspberry Pi but the issue is that on Pi you only have 5V and also it's very limited in how much current it can deliver. But I am working on a WiFi/Stand-alone version that you would be able to power from a DC adapter and control remotely. I actually need it to cool down my media PCs that I have under the TV (inside furniture). :)
Edit: Sorry I forgot to answer the SATA question. SATA connector provides only 12V. You could provide 12V externally via DC barrel jack to SATA connector.
For the ones I bought I will need aPC I realize, will probably buy Zimaboard (supplies 1 sata power) for those. Hopefully It will be possible to control from Linux. @@SasaKaranovic
@SasaKaranovic I Could power both the pi and your board from the Streacom PSU but could I control your board from Linux over USB?
Hi @martenki-71
Absolutely! The software is written in Python so you should be able to run it on Windows, Linux and Mac without any issues. It can also run as a Docker container.
If you need help setting it up, please feel free to send me an email and I'll help where I can. :)
Hey. Can I controller the fan speed using a 3 pin connector? I am looking to buy it. Thanks!
Hey! Thank you for asking!
OpenFAN supports only 4-Pin (PWM) fans. Mainly because the price difference between the 3-pin and 4-pin fans has become pretty negligible.
Also the cost/complexity of driving 3-pin fans compared to 4-pin fans is relatively high.
Hey, it's me again. I've been thinking of making my own based on your design. Could you please tell me where you got the PWM fan connectors? Whenever I search for them the search engine thinks I'm looking for a PWM hub.
Update: Looks like they are called KF2510
Hey! I'm glad you found it!
I woke up a few hours before my alarm thinking about a project like this, only to find out someone already done this hahahaha
Is it compatible with FanControl?
Thank you!
Absolutely! I use it with FanControl on my desktop PC (there is an OpenFAN plugin).
And for my server machines (Unraid, Proxmox etc) I use the provided OpenFAN docker image.
Is there another alternative so i can make this with atmega32u4/arduino pro micro?
Because i can't find emc2305, and isn't atmega32u4 has pwm output?
You should be able to build something similar with any microcontroller assuming you have enough PWM outputs and GPIOs for input.
Hi, I am planning to build my own fan controller board based on EMC2305 but with esp32 and I've been wondering is there any particular reason why you regulate 3,3 V from 12 V instead of taking it directly from SATA same as 5 and 12 V?
Hey I've done the same thing! Twinsies! :)
There are two new fan control products that use ESP32 being made and will be soon available on the shop page.
I think you are right, you could also take 3V3 directly from the SATA connector.
@@SasaKaranovic Oh wow, interesting. Hearing that I just hope mine doesn't turn out the same as yours when it is finished, because it'd be pointless haha ;) Is it pretty much the same as the current one but using ESP32 instead of RP2040 or did you add some new cool functionalities? :)
I don't want to spoil it for you (or anyone else). But I'm working on a video for one of them, so stay tuned. :)
Now if only this worked with argb
I am not a huge PC RGB user so I had to Google that. :)
The hardware is definitely capable of driving these. I would just need to add a header. :)
At the same time, it may be better to adhere to the Linux philosophy of "Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features". So maybe an OpenLED driver? :)
@@SasaKaranovic I am not a computer expert like you're but I have an asus motherboard that uses Aura software that controls the lights I have plugged in using my Argb slot on my mobo. My fans are all different sizes in my case so I was looking for a controller hub that used PWM slots and Argb so I can have all my fans/lights for them plugged in and able to control each of the fan's speeds separately. Which I didn't think would be a big deal in 2024 but having trouble finding something like that except the controller you made here, since most things for sale appear to be "hubs" for people who have multiple of the same kind of fan.
This should not be a problem since I have 80mm, 120mm and 140mm fans in one of my setups and as long as they are 12V PWM fans, you can easily control them.
For the ARGB lights; it might make more sense to create a separate project that controls the ARGB lights (and other common ones) so we don't cross-contaminate products with unnecessary features. At least in my mind it's better to have a really good fan controller and really good LED controller, rather than mix both of them in one product and have bloated HW/FW/SW. :)
Hello. I would like to purchase this product, but there is no shipping option to Brazil. Would it be possible to include shipping to Brazil or sell on a platform that ships, like Aliexpress?
Hey there!
Please feel free to email me at shop@sasakaranovic.com and hopefully we can get this sorted.
dope shit.
Thank you! :)
I like the idea, but I do not see any serious protections without which it looks like a fire hazard. Devices like this are very easy to short circuit by connecting something incorrectly and even professionally made devices fail. I burned a few myself in the past. Therefore I would like to suggest for the future releases to consider adding some polyfuses or other types of protections to make sure that device is safe even with user errors.
Thanks! To be fair, everything is a smoke machine if you operate it wrong enough. So no arguments there.
All connectors are keyed and polarized so it would be very very hard to reverse polarity. But polyfuse is not a bad idea.
At the same time keep in mind that polyfuse would not magically protect against all user errors, especially if you take into consideration the scenario where each fan can draw 0.3-0.5A and you have 10 of them, at which point you are drawing 3-5A in normal operation.
@@SasaKaranovicSometimes bad things just happen and it is unfortunate that such events could also destroy the whole fan controller which could also cause other issues down the line.
Just for inspiration you can read about Noctua NA-FH1 fan controller in their home page (search for "NA-FH1 technical backgrounds"). They write about some dangers with fan controllers in general and how most fan controllers are not safe especially when they are powered via SATA power connector. This may give you some ideas what could be improved in the future versions
Can't the RP2040 control PWM fans directly without the use of controller chips? Even 10 of them. And any algorithm you could possibly want to use, the RP2040 can definitely do that with cycles to spare. Two fewer chips would reduce manufacturing cost by just that much.
Or do the fan controller chips have the ability to recognize that the connected fan is only 3 pin and adjust the voltage instead? If it can, definitely we want those chips instead. I'm switching to all four-pin fans, but I do still have some three-pin models lying about.
Of course what we really need, regardless of BOM cost, is for someone to start producing these things commercially so that they're *OUT THERE* in quantity.
Just to clarify, these units are already manufactured and ready to go. You can order them from a web shop.
The fan controller chip has several valuable features like rpm/pwm drive, PID tuning, integrated push-pull stage etc.
The Pico2040 should have enough PWM outputs. I might consider this for some of the future revision.
Although Pico-only design would require a lot more development and testing. And at volume savings of those two ICs compared to development time; especially if you consider that most people will buy one or two, not 20 of these, the price delta becomes negligible.