Skip to content

Instantly share code, notes, and snippets.

@bakman2
Last active January 31, 2026 15:52
Show Gist options
  • Select an option

  • Save bakman2/e801f342aaa7cade62d7bd54fd3eabd8 to your computer and use it in GitHub Desktop.

Select an option

Save bakman2/e801f342aaa7cade62d7bd54fd3eabd8 to your computer and use it in GitHub Desktop.

PWM fan control in Linux with a Gigabyte Aorus motherboard

  • install lm-sensors with your package manager

sensors

If it won't show any fan/speed, continue

sensor-detect

Say YES to at least "Super I/O sensors"

Expected output:

Trying family `ITE'...                                      Yes
Found unknown chip with ID 0x8688

If similar, continue

git clone https://github.com/frankcrawford/it87

cd it87
sudo make clean
sudo make install
sudo modprobe it87 ignore_resource_conflict=1 force_id=0x8622

sensors

The fans should show up now, if yes, continue to make them available at boot:

echo options it87 ignore_resource_conflict=1 force_id=0x8622 > /etc/modprobe.d/it87.conf
echo it87 >> /etc/modules
@lindonm
Copy link

lindonm commented Jun 30, 2025

Thanks for much for this! :)

Running Debian 12, Gigabyte x570 Aorus Pro Wifi

git clone https://github.com/frankcrawford/it87
cd it87
sudo make clean
sudo make
sudo make install

---- This one didn't seem to do anything
sudo modprobe it87 ignore_resource_conflict=1 force_id=0x8622

But after I rebooted, I now have all sesnsors.

it8688-isa-0a40
Adapter: ISA adapter
in0: 1.42 V (min = +0.00 V, max = +3.06 V)
in1: 2.02 V (min = +0.00 V, max = +3.06 V)
in2: 2.02 V (min = +0.00 V, max = +3.06 V)
in3: 1.99 V (min = +0.00 V, max = +3.06 V)
in4: 1.07 V (min = +0.00 V, max = +3.06 V)
in5: 900.00 mV (min = +0.00 V, max = +3.06 V)
in6: 1.36 V (min = +0.00 V, max = +3.06 V)
3VSB: 3.26 V (min = +0.00 V, max = +6.12 V)
Vbat: 3.22 V
fan1: 620 RPM (min = 0 RPM)
fan2: 427 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 553 RPM (min = 0 RPM)
temp1: +32.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: -55.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +55.0°C (low = +127.0°C, high = +127.0°C) sensor = AMD AMDSI
temp4: +45.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp5: +41.0°C (low = +0.0°C, high = -125.0°C) sensor = thermistor
temp6: +49.0°C (low = -16.0°C, high = +90.0°C) sensor = thermistor

@SinisterCrayon
Copy link

Can confirm this works on the Gigabyte B850M Gaming X Wifi6E motherboard like a champ.

@emilyhorsman
Copy link

Gigabyte X870E Aorus Elite Wifi7 required ignore_resource_conflict=1. force_id and force_addr were insufficient.

> sudo modprobe it87 ignore_resource_conflict=1

> lsmod | grep it87
it87                   86016  0

> sensors
it8696-isa-0a40
Adapter: ISA adapter
in0:         948.00 mV (min =  +0.00 V, max =  +3.06 V)
in1:           1.98 V  (min =  +0.00 V, max =  +3.06 V)
in2:           2.02 V  (min =  +0.00 V, max =  +3.06 V)
in3:           2.04 V  (min =  +0.00 V, max =  +3.06 V)
in4:           1.26 V  (min =  +0.00 V, max =  +3.06 V)
in5:           1.15 V  (min =  +0.00 V, max =  +3.06 V)  ALARM
in6:           1.38 V  (min =  +0.00 V, max =  +3.06 V)  ALARM
3VSB:          3.31 V  (min =  +0.00 V, max =  +6.12 V)
Vbat:          3.17 V
+3.3V:         3.07 V
fan1:        1086 RPM  (min =    0 RPM)
fan2:         872 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
fan5:           0 RPM  (min =    0 RPM)
fan6:           0 RPM  (min =    0 RPM)
temp1:        +30.0°C  (low  = +127.0°C, high = +127.0°C)
temp2:        +49.0°C  (low  = +127.0°C, high = +127.0°C)
temp3:        +40.0°C  (low  = +127.0°C, high = +127.0°C)
temp4:        +41.0°C  (low  = +127.0°C, high = +127.0°C)
temp5:        +36.0°C  (low  =  +0.0°C, high = -125.0°C)
temp6:         +0.0°C  (low  =  +0.0°C, high = +127.0°C)
pwm1:             33%  (freq = 23437 Hz)
pwm2:             32%  (freq = 23437 Hz)
pwm3:             32%  (freq = 23437 Hz)
pwm4:             32%  (freq = 23437 Hz)
pwm5:             33%  (freq = 23437 Hz)
pwm6:             32%  (freq = 23437 Hz)
intrusion0:  ALARM

@NeatNit
Copy link

NeatNit commented Aug 24, 2025

On my system the it87 module already existed, simply running sudo modprobe it87 ignore_resource_conflict=1 force_id=0x8622 made the fans appear. Is there any downside/risk to this? Is there any reason I need the version in git?

My system:
Linux Mint 22.1 Cinnamon
Kernel: 6.15.10-061510-generic (installed via Mainline)
Gigabyte X870E Aorus Pro

@scj643
Copy link

scj643 commented Oct 11, 2025

On my Z690 AORUS ELITE AX DDR4 I only get the fan sensors but no control over them.

@rmHawk765
Copy link

B550 Aorus Elite AX V2 - fans show up in sensors and CoolerControl, but I have no control over them. ignore_resource_conflict does nothing, I had to add acpi_enforce_resources=lax to GRUB.

@julienwetzel
Copy link

B550 Aorus Elite AX V2 - fans show up in sensors and CoolerControl, but I have no control over them. ignore_resource_conflict does nothing, I had to add acpi_enforce_resources=lax to GRUB.

Hi! I had the exact same issue with a similar Gigabyte setup. The reason ignore_resource_conflict doesn't work is that the kernel driver sees the resource as busy, and acpi_enforce_resources=lax is indeed the first step, but often not enough to gain write access to the PWM registers on the IT8686E.

Try the following steps to unlock full control:

1. Update your GRUB definitively
Ensure your /etc/default/grub contains both parameters:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_enforce_resources=lax"
Then run sudo update-grub.

2. Force the driver configuration
The it87 driver needs to be told explicitly to ignore the virtual ACPI device. Create a configuration file:
sudo nano /etc/modprobe.d/it87.conf
Add this line:
options it87 ignore_resource_conflict=1

3. The BIOS "Full Speed" Trick (Crucial)
On B550 Aorus boards, if the BIOS 'Smart Fan 5' is set to 'Auto' or 'Normal', the hardware controller often overrides software PWM signals.

  • Go into your BIOS.
  • Set the fans you want to control to Full Speed.
  • This hands over the PWM duty cycle control to the OS. Once you boot back into Linux, your Fan Control app should be able to down-regulate them from 100% to your desired curve.

@envido32
Copy link

Thanks for much for this! :)

Running Debian 12, Gigabyte x570 Aorus Pro Wifi

git clone https://github.com/frankcrawford/it87 cd it87 sudo make clean sudo make sudo make install

---- This one didn't seem to do anything sudo modprobe it87 ignore_resource_conflict=1 force_id=0x8622

But after I rebooted, I now have all sesnsors.

it8688-isa-0a40 Adapter: ISA adapter in0: 1.42 V (min = +0.00 V, max = +3.06 V) in1: 2.02 V (min = +0.00 V, max = +3.06 V) in2: 2.02 V (min = +0.00 V, max = +3.06 V) in3: 1.99 V (min = +0.00 V, max = +3.06 V) in4: 1.07 V (min = +0.00 V, max = +3.06 V) in5: 900.00 mV (min = +0.00 V, max = +3.06 V) in6: 1.36 V (min = +0.00 V, max = +3.06 V) 3VSB: 3.26 V (min = +0.00 V, max = +6.12 V) Vbat: 3.22 V fan1: 620 RPM (min = 0 RPM) fan2: 427 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) fan4: 0 RPM (min = 0 RPM) fan5: 553 RPM (min = 0 RPM) temp1: +32.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp2: -55.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp3: +55.0°C (low = +127.0°C, high = +127.0°C) sensor = AMD AMDSI temp4: +45.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor temp5: +41.0°C (low = +0.0°C, high = -125.0°C) sensor = thermistor temp6: +49.0°C (low = -16.0°C, high = +90.0°C) sensor = thermistor

I can also confirm that this fix worked on my Aorus B450 Pro Wifi running Fedora43
It detected a it8622-isa-0a40
Thank you so much!

@apalazzi
Copy link

On Gigabyte Aorus Elite X570 works with just modprobe it87, no parameters needed. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment