avoid the fan whine on beelink s13 mini pc with n150 cpu by adjusting power limits and fan speeds
  • Shell 76.8%
  • Python 23.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-18 15:55:05 +02:00
vendor Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
.gitignore Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
.gitmodules Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
beelink-fan-control.example.json Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
beelink-fan-control.service Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
beelink-fan-controller.py Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
beelink-it87.conf Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
README.md Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00
setup-beelink-fan-control.sh Add fail-safe Beelink fan controller 2026-08-18 15:55:05 +02:00

Beelink Mini S13 fan control

Interactive Ubuntu installer for quiet, fail-safe fan control on an AZW/Beelink Mini S13 with an ITE IT8613E Super I/O controller. It maps and calibrates pulse-width modulation (PWM) channels, monitors CPU and Non-Volatile Memory Express (NVMe) temperatures, verifies fan speed in revolutions per minute (RPM), and optionally applies Intel Running Average Power Limit (RAPL) Power Limit 1 (PL1) and Power Limit 2 (PL2).

Use

git clone --recurse-submodules <repository-url>
cd fan-noise
./setup-beelink-fan-control.sh sweep      # optional acoustic test
./setup-beelink-fan-control.sh install
./setup-beelink-fan-control.sh status
./setup-beelink-fan-control.sh validate   # monitored ten-minute CPU load
./setup-beelink-fan-control.sh uninstall

Mutating modes require an interactive terminal and exact typed confirmations. The installer checks Desktop Management Interface (DMI) identity, rejects competing controllers, preserves original power limits, and commands near-full fan duty on control failure. It never disables hardware thermal throttling or shutdown.

Validated profile

The included example records the tested machine, not a universal configuration: PWM2/fan2, floor 96, normal ceiling 112, PL1 6 W, and PL2 25 W. A 600-second four-worker validation peaked at 75 °C CPU and 59 °C NVMe with no thermal-throttle counter increase or service failure. The IT8613E changes mode at PWM 255, so the controller uses PWM 254 (99.6% duty) as its verifiable near-full hardware command.

Files

  • setup-beelink-fan-control.sh — installer, acoustic sweep, validation, status, and uninstall.
  • beelink-fan-controller.py — installed controller.
  • beelink-fan-control.service — systemd unit.
  • beelink-fan-control.example.json — validated example; installation generates the live configuration.
  • beelink-it87.conf — module-load rule.
  • vendor/it87 — pinned frankcrawford/it87 submodule used by Dynamic Kernel Module Support (DKMS).

The installer verifies submodule commit 490f76f61900c163fac5328506c49969bd716dc6 and rejects modified build inputs. If the submodule is absent, it fetches that exact revision from upstream for standalone-script compatibility.