Linux kernel module that exposes Gigabyte Embedded Controller (EC) fan telemetry via hwmon.
This project is intentionally monitoring-only (tach + observed PWM) and does not write fan curves.
| Hardware | OS | Kernel | NVIDIA Driver Stack | Status | Notes |
|---|---|---|---|---|---|
| Gigabyte G5 MF5 | Pop!_OS 24.04 | 6.18.7-76061807-generic |
Proprietary driver | Verified | Post-boot module load required |
Policy:
- Do not assume compatibility on unlisted hardware/kernels.
- Treat unlisted environments as experimental until validated.
- No module autoload at boot.
- No udev-triggered module loading.
- Module is installed through DKMS only.
- Module is loaded post-boot by a systemd service.
- Service is installed disabled by default.
This avoids early boot ACPI/EC interactions that can deadlock with GPU init on some kernel/NVIDIA combinations.
gigabyte_ec_fan.c: kernel module sourceMakefile: local build and DKMS build entrypointdkms.conf: DKMS package definitionscripts/install.sh: production install script (root)scripts/uninstall.sh: clean rollback script (root)scripts/setup-local-guards.sh: installs local push guard formainscripts/generate-changelog.sh: generates release notes and changelog section from git historyscripts/create-release.sh: one-command auto-bump + tag + assets + GitHub release flowsystemd/ec-fanmon.service.template: deferred-load service templateCONTRIBUTING.md: contribution workflow and standardsSECURITY.md: vulnerability reporting and support policydocs/DEPLOYMENT.md: deployment and kernel-update runbookdocs/TROUBLESHOOTING.md: failure signatures and rollback stepsdocs/PUBLISHING.md: GitHub publication stepsdocs/RELEASE.md: semantic release/tag/checksum processdocs/wiki/: source pages used to publish the GitHub wikiscripts/publish-wiki.sh: syncdocs/wiki/*.mdto the GitHub wiki repositoryrelease-notes/: versioned release notes for GitHub releases
Requirements:
- Kernel headers for your running kernel
gcc,make
make
modinfo ./gigabyte_ec_fan.ko | grep vermagicRun from this repository root:
sudo ./scripts/install.sh --fanmon-bin /usr/local/bin/ec-fanmonOptional flags:
--enable-service: enable and startec-fanmon.serviceimmediately--no-softdep: skip/etc/modprobe.d/gigabyte_ecfan.conf
The install script:
- Copies source into
/usr/src/gigabyte-ec-fan-1.0/ - Runs
dkms add/build/install - Removes legacy boot autoload entries
- Installs a post-boot service unit at
/etc/systemd/system/ec-fanmon.service - Leaves service disabled unless
--enable-serviceis provided
dkms status | grep gigabyte-ec-fan
systemctl status ec-fanmon.service
systemd-analyze blame | grep -E "ec-fanmon|gpu-manager|nvidia-persistenced"
ls /sys/class/hwmon/sudo ./scripts/uninstall.shThis removes:
ec-fanmon.service- DKMS entry (
gigabyte-ec-fan/1.0) /usr/src/gigabyte-ec-fan-1.0- softdep and legacy autoload files
For a publish-grade workflow, block direct pushes to main locally as well:
./scripts/setup-local-guards.shServer-side branch protection is documented in docs/BRANCH_PROTECTION.md.
Wiki source pages are maintained in docs/wiki/.
Publish wiki content:
chmod +x ./scripts/publish-wiki.sh
./scripts/publish-wiki.sh --repo namikofficial/gigabyte-ecfanGPL-2.0-only. See LICENSE.