Pöytätietokoneeni Dell OptiPlex 7000 firmware päivittyi versioon 1.43.0. Sen jälkeen koneen tuuletin on pitänyt ikävää mekkalaa, pyörien jatkuvasti 3 500 kierroksen nopeudella, joka aiheuttaa häiritsevää suhinaa.
Avasin koneen, irrotin tuulettimen ja katsoin, että johdot olivat varmasti oikeilla paikoillaan. Se ei auttanut, tuuletin jatkoi huutamista.
Löysin reddit-keskustelun, jossa kirjoittajalla oli samanlainen ongelma Dellinsä kanssa ja hän oli ratkaisuut sen kirjoittamalla Python ohjelman, joka säätää tuulettimen kierroksia sen lämpötilan mukaan sekunnin välein.
Ensimmäinen vaihe oli konvertoida skripti python3-yhteensopivaksi.
Ubuntu 26.04 käyttää oletuksena apt-paketinhallintaa ja GRUB-käynnistyslataajaa (toisin kuin Reddit-oppaan Arch/Pacman-ympäristö). Jotta skripti toimii Ubuntu 26.04 -versiossa, kernel-asetukset ja moduulin oikeudet on konfiguroitava oikein Ubuntu-pohjaiselle järjestelmälle.
1. Esivalmistelut Ubuntu 26.04:ssä
Asenna tarvittavat työkalut:
bash sudo apt update && sudo apt install lm-sensors python3 -y
Aja tunnistus (ja vastaa YES tai y kaikkiin kysymyksiin):
bash sudo sensors-detect
2. Dell-ajurin pakotus ja rajoitusten poisto
Ubuntun oletusasetuksissa Dellin SMM-ajuri saattaa olla rajoitettu tai estetty (`restricted=1`). Luo tai päivitä ajurin asetustiedosto:
bash sudo nano /etc/modprobe.d/dell_smm_hwmon.conf
Lisää tiedostoon seuraava rivi:
options dell_smm_hwmon force=1 restricted=0 ignore_dmi=1
Tallenna tiedosto (`Control+o`, Enter, sitten `Control+x`).
Lataa ajuri uudelleen, jotta muutokset astuvat voimaan heti:
bash sudo modprobe -r dell_smm_hwmon sudo modprobe dell_smm_hwmon force=1 restricted=0 ignore_dmi=1
3. Grub-käynnistysparametrit
Ubuntu 26.04 käyttää GRUBia. Lisää tarvittava parametri käynnistykseen:
Avaa GRUB-konfiguraatio tiedosto /etc/default/grub
Etsi rivi, joka alkaa `GRUB_CMDLINE_LINUX_DEFAULT`, ja lisää loppuun (ennen lainausmerkkiä) `dell_smm_hwmon.ignore_dmi=1`:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash dell_smm_hwmon.ignore_dmi=1"
Tallenna ja päivitä GRUB:
bash sudo update-grub
4. Python3-skripti (`ultra_fan.py`)
Tässä on optimoitu ja nykyaikaisille Python 3 -standardeille päivitetty versio skriptistä, joka etsii `dell_smm`- ja `coretemp`-polut dynaamisesti.
Koodi löytyy githubista: ultra-fan
Tallenna koodi kotihakemistoosi nimellä `ultra_fan.py` ja anna sille suoritusoikeudet:
bash chmod +x ~/ultra_fan.py
5. Järjestelmäpalvelun (Systemd) luominen
Ohjeistettu tarkemmin skriptin repositoryssä, Quickstart kohdassa.
Lopuksi
Voit tarkistaa tilatiedot ja livenä tulevat tulosteet komennolla:
bash journalctl -u dell-fan.service -f
Tuloksen pitäisi näyttää tälle:
![]() |
| Klikkaamalla kuva suuremmaksi |
Dell firmware riippuvuus
Tämä ei aluksi toiminut, mutta kun palautin edellisen 1.42.0 firmware-version koneeseen (Dell onneksi tukee edelliseen firmware-version palauttamista), yllä olevat muutokset toimivat!
Näyttää sille, että Dellin järjestelmähallinta (SMM, System Management Mode) estää käyttöjärjestelmää ottamasta suoraa kontrollia tuulettimen rekistereistä uudemmassa firmwaressa. Dell on kyseisessä 1.43.0 versiossa tiukentanut emolevyn turvatasoja ja lukinnut SMM-väylän niin, että käyttöjärjestelmän kautta tulevat kirjoituskomennot (pwm1_enable ja pwm1) torjutaan suoraan rautasuojauksella, mistä I/O error johtuu.
Kone toimii nyt lähes äänettömästi ja ultra_fan.py tarkkailee prosessorin lämpöä ja muokkaa tuulettimen kierroksia lennossa.
Otan kiitollisena vastaan mahdolliset parannukset ohjelmaan.














