FAN_0 connector and general fan control on ADLINK COM-HPC motherboard

I recently set up a Dev Kit motherboard on my test bench.

I plugged the fan on the included heatsink into the FAN_0 header as instructed in the little getting started guide that was included with the kit.

I booted it up, installed Ubuntu 22.04, installed lm-sensors and stress-ng, then ran stress-ng -c 0 to hammer all the cores. Watching sensors in another terminal, I observed the temperature rise from 40, to 50… 60… 70… and over 83°C before I decided to halt the test.

The fan never kicked in at all, and over on Twitter it was mentioned FAN_0 isn’t actually wired up. (Not sure if that’s confirmed or not.)

For the rest of my testing, I’ve had the fan plugged into FAN_1—it seems both FAN_1 and FAN_2 are on full 100% all the time, with no correlation to SoC temps or any other temps on the board.

I glanced in my Dev Workstation prebuild, and it does have something plugged into FAN_0 as well—I think maybe the pump for the AIO water cooling setup? Will try to trace that down later.

A couple questions from this:

  1. Is FAN_0 supposed to work, as instructed in the getting started guide?
  2. Is there any way we can manage fan curves in BIOS? (I couldn’t find any.)
  3. Any way to get FAN_1 and FAN_2 PWM-controlled?

I asked about it over on the I-PI Forum ( and they confirmed it.

Thank you for contacting I-PI forum. After I confirmed the hardware circuit design of COM-HPC module, the fan signals provided by the module to carrier are optional design. The preset fan function is provided by fan header on top of the module. It need to do a rework on the module to provide the fan signals to COM-HPC carrier if customer need FAN_0 header could works.

Ian Hollier got the micro-JST header connected and confirmed that it provides fan control (

I’m running my fans from the Fan header on the COM-HPC board to have system fan control. I soldered a JST connector ( to a male fan connector to make the cable. The cable works as expected and the fan speeds change with the CPU temperature however the fan curve is way to aggressive especially for the water cooler I’m using, I have yet to find a way to adjust the fan curve. I ended up ordering a Noctua PWM manual fan controller ( and putting that inline with the fan so I’m able to tame the fans to almost silent and still get good cooling.
This is the pinout I’m using on my cable, the JST cable colors are based on the cables I purchased but pinout is left to right with the connector in the socket:

Fan connector           -->          JST connector 
pin 1 - GND                          pin 3 - yellow cable
pin 2 - +12V                         pin 4 - white cable
pin 3 - Tach input                   pin 2 - black cable
pin 4 - PWM output                   pin 1 - red cable

Hope that helps, if you are still having issues let me know and I can try and provide better instructions or send a photo of my cable.

And on managing the fan curves: the FAN_* headers are controlled from the BMC, but I haven’t found any settings in the web interface to configure them. The micro-JST is controlled from the MMC, and again I don’t think there’s any way to configure it.

I did have some good initial progress on running OpenBMC on my dev kit though, so I’m hoping that’ll provide a route to control the fans. I’m just waiting for Digikey to ship a 512MBit SPI-NOR chip that’s hopefully compatible with OpenBMC!

1 Like

this came in the mail today:

pretty nice of them, i never expected anything :slight_smile:

i connected it and it works like a charm