Hacker News new | past | comments | ask | show | jobs | submit login
A USB Fan Controller that now works under Linux (ktz.me)
161 points by arm on Oct 5, 2021 | hide | past | favorite | 68 comments



The front Noctua fan in the picture of the PC is installed backwards.


They're just trying to create some vorticity so that in the event an updraft forms right under the computer, they'll get a very nice rotating thunderstorm. Great for cooling!


Not so great for RAM clearance. It would be preferred to mount it this way since it's much easier. I spent hours trying to mount this thing horizontally in my case due to it being so big and having a fan right above it, I didn't have any room to hook on the fan wire to the tower. I had to use sewing thread to hook the inner one on. I'm never taking that thing apart again.


I don't think so, it looks like they are trying to draw air in at the bottom and out at the top. I don't know why you need that many fans though.


Someone must've used The Verge's guide.


That’d be a first for a working fan controller on Linux


I can control them almost perfectly on my linux box: the bios set the speed as a function of the temperature, so if I want to spin the fans up, I just need to fire up some intensive computation. A power virus easily bring them to top speed. Very convenient. When I want a quieter computer I just need to kill every single process, although powering the machine off seems to be the most reliable.



Back when AMD64 was relatively new I had a case with various case fans which I could control. The machine ran Linux. I controlled the fans by hand with knobs.

I know this isn't what you meant but what's inherently bad for this if its a PC you have physical access to? What I did was put the fans down when I went to sleep. Its not like you can change power profiles dynamically, only on remote computers software controlled is better. And if its remote machines, who cares about the noise?


PWM headers on desktop mobos work fine for me. I assume the author's problems are indeed specifically with server mobos as they say, not "Linux" in general.


Now if only I could figure out how to control the RGB leds in my case…


> Now if only I could figure out how to control the RGB leds in my case…

OpenRGB not working for you?

See previous HN discussion here: https://news.ycombinator.com/item?id=27457696


>commander PRO can feed 6x PWM fan control and offers 2-channel individually addressable RGB lighting control


I know it is not the main topic but. Is this just a funky fan setup or what is happening here? I have the same cpu cooler and I’ve build mine horizontally to blow out of the back. This setup looks like it is pulling from the air from the GPU.


It's not the setup of the author, it is just a stock photo.

https://unsplash.com/photos/xV3CHzfhkjE

I wouldn't use it as a build guide.


There is the mention of a server grade fan control in the article, and it looks like this is a workstation / server board.

I've seen the sockets on those boards being "90° off" in comparison to normal AM4 / 1150 / 1200 Socket motherboards which lead to those orientations.


I think it’s a workstation fan on a server board. The CPU is rotated on server boards vs workstations. When the fan matches the board it always blows to the back. RAM modules follow the orientation of the CPU. Parallel to the airflow on server boards, perpendicular on workstation boards.


Does anyone know what temperature probes they use? Is it the typical 10k Ohm NTC?

I happen to have such a 10k Ohm NTC temperature probe in my cooling water, and would much prefer to control the fans to keep the water temperature in check, instead of trying to control them based on the CPU die temperature. The fans roaring won't help if it's just one core being pegged by something, but in a warm room and all-core load they do need to spin fast.


Yes, I have one of these for that exact use case. I use this for my sensor https://www.amazon.com/gp/product/B00CMR3CC2/ref=ppx_yo_dt_b...

From what I understand if you're making fan curves from a sensor plugged into the device, it can operate independently. So you don't even need software support. Instead you could just set the curves in the nicer ui of the Windows app and leave it.


The commander pro comes with its own probes, additionally if you buy the XD5 or XD7 reservoirs, they come with a probe fitted to a G1/4 so you can probe coolant temperature.


I already have such a coolant probe in my loop, and would prefer to not open the loop (which, btw., is practically a as close to AIO as a custom loop can be while being worth the hassle of a custom loop).


I run 24 fans in my build and I have a couple of these as the final stop in the wiring chain in the back and run almost exclusively in Linux these days so this is absolutely welcome.


Out of curiosity, how does someone cram two dozen fans into a single machine? Even a quad socket Dell R940 only has 8 fans.


Now try to get the same cooling power without the noise a rack server makes. -> more larger, slower fans.


Maybe a monster case with three quad fan radiators in push pull...


This is it. The Corsair 1000D is actually a dual-system case and just has massive room. Two quad radiators and a triple 140 in push-pull, plus 2 rear fans. The two quads support one cooling loop (for one of the systems) and the triple supports another.

https://imgur.com/gallery/U2KZD07

(I don't actually keep the fans lit up like this all the time, this was post-build in a very dark garage.)


I was really happy to see this go in, along with the reverse engineered corsair psu driver as well.

I poked around once or twice with wireshark and decided I was out of my depth...


Great news! I love Supermicro boards but a bunch of them give you like half a dozen headers and you can only control them as two sets. I'd looked into supported controllers but nothing currently shipping seemed compelling.[0]

Hope Corsair doesn't rev this hardware soon, or I may have to buy a few just to sit on the shelf awaiting future deployment.

[0] Happy to hear otherwise, alternatives welcome.


As far as I can tell, Supermicro's multiple headers are all duplicates; as in, for example, it gives you like 4 case fan headers all driven off a single 2A+ PWM controller. So, basically, an onboard PWM splitter.


Now the year of the Linux Desktop can come in 2022.


The year of the Linux desktop arrives the first time someone plugs their Surface Duo 2 into a monitor & keyboard.


How does is a set of dedicated pins vs routing everything through the USB bus better?


You shouldn't pull more than ~1 to 2A from a motherboard fan header which means you can probably only have 1-2 fans per fan header. Also controlling the motherboard fan headers from the OS is always finicky (most BIOS are utter garbage anyway). This USB adapter pulls power directly from the PSU so it can have 5+ fans and can be more easily controlled from the OS. This specific one can also control some LED strips, etc.

TBH it's not really necessary but people like to have it.


I guess it depends on what fans you're running, but 1 A should be enough for at least 3 of the most commonly used ones. Noctua lists max input current for all their fans, and even the high speed industrial ones are only 0.18 A.


I don't know of any PC fan which draws more than 0.2A, apart from server fans.


Startup, stall and low-speed currents can be higher than rated becase there is less back-emf.


The pins are not better and USB might be preferable because I'm betting onboard fan controllers are frequently intertwined with ACPI which even to this day continues to give issues for operating systems other than Windows. Speculation on my part though.


I use one because I have two controllable fan headers on the mb and 6 fans to control. This lets me do a better job of managing the noise in the server while also letting me react to different temps in different areas (particularly hard drive temps)


Why does any of this need OS support? You should be able to configure fan speed via a BIOS menu as you have been since the late 1900s.


Scenarios that need OS support:

Your BIOS doesn't support fan speed at all.

Your BIOS doesn't doesn't support temperature-controlled fan curves, or doesn't let you customise the fan curve.

You want to use a different temperature sensor, or multiple, to control different fans, pumps, etc.

You want to schedule different fan profiles based on time of day or some other event.


Because motherboards may not have enough headers for the number of fans people want to run. And people want to be able to control things via a GUI on their OS and not have to reboot in to some ancient and buggy firmware config page.

It's not hard to see how a usb fan controller is desirable even if not strictly required.


My supermicro board fan controller is terrible (home server, so server board with silent fans). It keeps cycling up and down, which is annoying. I ended up adding a manual fan controller with a touch screen on the front of the server for all the non-CPU fans which aren’t too load specific (and I monitor the drives temperature programatically).

Apparently it’s a common problem. People write custom fan control scripts for supermicro motherboards which you can upload to the BIOS. But I didn’t want to have to learn another thing.


I think that you just have to read up about IPMI and find out some undocumented values for your board that you can find on some forum. I'm not impressed about how Supermicro handles fans, but I guess that this doesn't matter in a server room where there are no limits on how much noise the server produces.


Can't use the BIOS when I have to preserve my precious uptime. Do people still talk about uptime?


You make it sound like there isn't a real downside to closing all your programs and rebooting.

It also means you can never adjust the fans while things are hot to calibrate them.


I was being sincere! I absolutely hate rebooting, even laptops. These was a time when Linux was better about downtime-less updates too.


Oh, okay. I was thrown off because the annoyances of rebooting aren't really about uptime, per se.


Not if you run out of fan headers and need an expander.


Agreed, but I'd say USB headers are in shorter supply. And yeah, I know the 'splitters' are out there, but where the hell am I to mount that? Especially if you need more than one, since for some reason they only give you two headers for the price of one.


> Especially if you need more than one, since for some reason they only give you two headers for the price of one.

USB 2.0 headers have 8 working pins and 2 ports. It's physically impossible to split them into more than two. Splitters aren't hubs.


USB3 headers are in short supply, but this looks like it uses a USB2 header, no?


> This sleek black box can be had for $40-75

That’s not my kind of thing, nor do I have the experience, but at that price, wouldn’t you be better off using a Raspberry Pi (or similar) to control the fans, place thermometers, etc?

I understand that having a computer inside a computer is silly, but we are kind of in that rabbit hole anyway. And a GPIO would be more reassuring to me than depending on driver support for one motherboard/usb fan controller.

Just random thoughts


Your random thought led me to this one:

A Raspberry Pi that plugs into the a PCI slot, which gives it power and exposes a virtual serial port along with an Ethernet port that shows up on the host system and can be used to route packets to the Pi. The Pi, meanwhile, has all of the usual GPIO things and maybe even an external connector to expose GPIO outside of the PC case.


You might alreay know this: there are USB GPIO devices that get you the I/O without having to program a separate CPU. They're used in custom arcade machines, for one example.


I ran a Pihole off the USB port on a router for a while. Then made an ESP32 temperature monitor that got power off the Pi. I’m not sure why, but the parasitic setup made me happy.


No need to give up a PCIe slot. The Raspberry Pi Zero and the RPi 4 have USB On-The-Go support so they can appear to be a serial port, Ethernet port, or other types of devices using the Linux USB Gadget API. It’s even possible to appear as multiple device types at once.

Overview | Turning your Raspberry Pi Zero into a USB Gadget | Adafruit Learning System https://learn.adafruit.com/turning-your-raspberry-pi-zero-in...


A microcontroller like STM32 would be cheaper and use less power for a fan controller, and would boot instantly and never crash.


Still overkill, Commander Pro uses $10 8051 8-Bit 50MHz with 64KB flash and 8KB ram.

CY8C3246AXI-138 https://www.cypress.com/part/cy8c3246axi-138


And even a 7$/ku MCU is complete overkill (assuming that's the real price, not shortage-related, though its lead time is over a year, so the price is probably inflated), because literally any microcontroller with an ADC can easily do this. Around ten years ago I built my own on a tiny AVR, and even that would be an expensive option compared to what you could use instead in a commercial product (<0.5 $/ku ARM MCUs).

I haven't had a fan controller for many years though, because they're quite pointless if you do things right.


CY8C3246 used to be $5-3.75. Cypress chips were always expensive. Ever since I saw them they always cost as much as separate mcu + separate CPLD.


CY8C32xxx processors are based around the 8051 but they're actually part of the fairly capable Cypress PSoC 3 line[1]. The PSoC 3 includes an 8501 compatible processor along with a bunch of mixed signal peripherals and a PLD fabric to connect it all.

[1] https://www.cypress.com/products/psoc-3


Still overkill. A 555IC, a variable resistor, a thermistor and a few passives is all you need. You could get the BOM for the whole #! down to under a buck.


They do, you know, run software. Software is sometimes kind of hard to get right, which can lead to crashes even in microcontrollers.

Source: worked as an embedded software developer on mostly STM32s for about 7 years. Did see crashes occasionally.


Agreed but definitely must be quite a few orders of magnitude less crashes than a rPi for a fan controller.


You probably don't even need a uC at all. If all you need to control is a bunch of PWM devices from software you can use a USB-I2C bridge and a I2C servo controller. Off-the-shelf solution would be something like Adafruit MCP2221A + PCA9685 but you could easily build it yourself for a fraction of the price.


A rpi would probably take around half a minute to boot. I think it would be a pretty bad fan controller.


Do they really take that long? My RockPRO64 boots in about a second...


It doesn't have to run Linux.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: