Sziasztok! A címben szereplő Sapphire Radeon R9 380X Nitro kártyával rendelkezem, és szeretném *buntu 16.04 alatt használni. Egyedüli gondom, hogy a videókártya ventillátorai alapból nem akarnak működni. Alap használatnál nincs gond, de 2 perc játék után már 95 fokosan kapkod levegőért:


[21:36]:~\ > sensors | head -3
amdgpu-pci-0100
Adapter: PCI adapter
temp1:        +82.0°C  (crit =  +0.0°C, hyst =  +0.0°C)
Nekem valamiért gyanús az a két 0-ás érték. Teljes lshw: http://pastebin.com/paprh76t lshw idevágó része:

ioport:c0000000(size=270532608)
           *-display
                description: VGA compatible controller
                product: Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X]
                vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                physical id: 0
                bus info: pci@0000:01:00.0
                version: f1
                width: 64 bits
                clock: 33MHz
                capabilities: vga_controller bus_master cap_list rom
                configuration: driver=amdgpu latency=0
                resources: irq:127 memory:c0000000-cfffffff memory:d0000000-d01fffff ioport:e000(size=256) memory:dfe00000-dfe3ffff memory:dfe40000-dfe5ffff
Amiket eddig csináltam 1. Zárt meghajtók nincsenek*, a gép nem ajánl fel. ( *erről legalul) 2. Terminálban futtattam az alábbiakat:

sudo sensors-detect # (ez hozzáadta a coretemp és nct6775 modulokat az /etc/modules file-hoz)
sudo update-usbids # infok frissítése
sudo update-pciids  # infok frissítése
lsmod kimenet: http://pastebin.com/bVBMTm4w 3. Grub-ban boot opciókhoz hozzáadtam:
amdgpu.powerplay=1 # dinamikus energiagazdálkodást engedélyezi
amdgpu.dpm=1 # DPM support (akármi legyen is az, sok embernek ez segített)
Ami majdnem megoldani látszott a gondomat: (és jelenleg ezt használom) Fancontrol service (jelenleg nem fut) és a hozzá tartozó pwmconfig. A pwmconfig arra való, hogy érzékelje mely szenzorokhoz mely ventillátorok csatlakoznak és szükség esetén generáljon a fancontrol számára egy manuális beállítást. Sajnos a videokártyám manuális vezérlése nem engedélyezett, így a program fel sem ajánlja hogy bármit csináljak vele:

[21:45]:~\ 61 files > sudo pwmconfig 
[sudo] password for hallgat: 
# pwmconfig revision 6243 (2014-03-20)
...
Found the following devices:
   hwmon0 is amdgpu
   hwmon1 is nct6791
   hwmon2 is coretemp

Found the following PWM controls:
   hwmon0/pwm1           current value: 51
hwmon0/pwm1 stuck to 137
Manual control mode not supported, skipping hwmon0/pwm1.
   hwmon1/pwm1           current value: 165
hwmon1/pwm1 is currently setup for automatic speed control.
...
DE! DE! De, ha ezt a pwmconfig parancsot kiadom, akkor hirtelen a videókártya ventillátorai is maguhoz térnek, és néhány perc alatt kellemes 40-50 fok körülire hűtik a kártyát. -> Tehát a gép azt hazudja hogy nem vezérelhetem manuálisan a kártyát, de pont az az alkalmazás kapcsolja be a ventillátorokat az indulásakor, ami elvileg nem engedi a manuális vezérlést. Ez nyilvánvalóan nem egy elegáns megoldás, nem akarok egy konfiguráló alkalmazást rendszergazda módban indítani, majd kilépni minden egyes bootnál. Jelenleg nincs pwmconfig-gal generált fancontrol beállításom, mert a pwmconfig nem hajlandó a videókártyámat figyelembe venni. (ergo minden ventillátorvezérlés "gyári") Kérdéseim: -Van-e elegáns driver/modul megoldása a dolognak? -Van-e valami olyan parancs ami emulálja a pwmconfig mellékhatását? (a ventillátorok bekapcsolását) -Meggyőzhető-e a pwmconfig hogy ugyan legyen már a videókari manuálisan konfigurálható? Ui: *: Tudom hogy létezik egy amdgpu-pro driver, ami ezt a kártyát (is) támogatja. Az az egyszerű telepítés után teljesen kikapcsolta a kijelzőt, és még az amdgpu-pro driver uninstallálásával, blacklistelésével sem volt hajlandó többet videókártyástól indulni. Egy újratelepítés után nem szívesen próbálkoznék vele újra, hiszen a telepítése elég egyszerű és nem hiszem hogy legutóbb én rontottam el valamit. UPDATE 1: Közben megtaláltam hogy a videókari beállításai a következő "fájlokban" vannak:

/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_crit_hyst 
/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_crit
/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/pwm1_min
Sajnos ezeknek az értékét még root-ként sem lehet írni. A pwmconfig pedig csak egy shellscript. Ha rájönnék, hogy mely része kapcsolja be a videókártyámat, akkor lehetne rá írni egy kis scriptet. ( cat /usr/sbin/pwmconfig ) UPDATE 2: Rájöttem hogy eddig rossz helyen kotorásztam:

find /sys -name pwm1_enable
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon0/pwm1_enable
/sys/devices/platform/nct6775.656/hwmon/hwmon1/pwm1_enable
find: „/sys/kernel/debug”: Engedély megtagadva
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon0/ <--amdgpu Elvileg az itt található a "fájlok" (device power pwm1_enable pwm1_min temp1_crit temp1_input name pwm1 pwm1_max subsystem temp1_crit_hyst uevent) már írhatóak, csak majd jobban körülnézek a neten mielőtt beléjük nyúlkálok. UPDATE 3: Magamtól nem is nyúlkálhatok bele a fájlokba :( Ugyanakkor meg tudtam őket vizsgálni a pwmconfig indítása előtt és után. A következő értékek változtak: pwm1: 51 -> pwm1: 137 # gondolom ez valami beállításkód temp1_input: 40000 -> temp1_input:38000 # ez meg cszerintem csak a hőmérsékletadatok kiolvasásának gyakorisága millisecben. ERGO: Ha találok rá módot hogy a pwm1-et már rendszerindításkor 137-re állítsam, szerintem megoldódik a túlmelegedéses gondom. Még rootként sem lehet szerkeszteni. UPDATE 4: Kibeleztem a pwmconfig scriptből a kód nagy részét, csak az elejét hagytam meg ami a videókártyám számára előnyös mellékhatással jár. (ergo bekapcsolja a ventit) LINK A pwmdisable függvény valahol leteszteli a kártyát hogy írható-e, és velem ellentétben neki sikerül a próbaírás, ami valamiért bekapcsolja a ventit :) A másik érdekes dolog, hogy 6 darab ventillátornak látszó tárgy van a gépemben, de mind olyan mintha processzorventi lenne. A videókártyáé nem tűnik fel külön hardverként. UPDATE 5: Jelenleg ezt a scriptet "fejlesztettem", ezt futtatom grafikus runlevelben a bootnál. UPDATE 6: Sikerült visszafejtenem a script értelmét, a számomra érdemi rész ennyi:


#!/bin/bash
if [ "`id -u`" != "0" ]
then
	echo "You need to be root to run this script."
	exit 1
fi

cd /sys/class/hwmon
echo 1 2>/dev/null > hwmon0/pwm1_enable # pwm bekapcsolása
echo 255 2>/dev/null > hwmon0/pwm1 # pwm értéke 137 lesz tőle (valamiért az a max)
exit 0

Utolsó UPDATE: Összedobtam egy service-t, mert egy service kevésbé gáz mint egy sima script :) https://github.com/hallgat89/pwmenable

OFF Én csak azt nem értem, miért engedik a hardver gyártók, hogy a termékeik az operációs rendszer martaléka legyen? Mennyiből tartana beleépíteni egy hőérzékelőt, ami elindítja a hűtést? 370Ft? ON Persze ez nem elegáns, de egy szétégett VGA mégkevésbé: a pwmconfigot automatikusan indítsd a gép indulásával, ha önmagában nem is lehet, de tutira készíthető egy script erre a célra.

    dmesg|grep dpm dmesg|grep radeon dmesg|grep amdgpu Mit mondanak?

      sömikeVan benne érzékelő. csak ezeket a drágább cuccokat úgy tervezik hogy a "gémerek" még bele tudjanak nyúlni és állítgathassák. Nekem persze jobb lenne az alap hülyebiztos működés :) 95 foknál bekapcsol a venti 1-1 másodpercre, de azt is inkább segélykiáltás jelleggel teszi. Ez a pwmconfigos megoldás lesz az utolsó mentsváram ha más nem segít. Lévén a pwmconfig nem egy service vagy daemon, hanem egy kérdezz-felelek jellegű terminálos progi ami az usertől várja az utasításokat. Remélem ennél elegánsabb megoldás is létezik :)

      lev2581. [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-31-generic root=UUID=8acc925a-0f7d-4b4c-9c6a-fd87ca30358c ro quiet splash amdgpu.powerplay=1 amdgpu.dpm=1 vt.handoff=7 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-31-generic root=UUID=8acc925a-0f7d-4b4c-9c6a-fd87ca30358c ro quiet splash amdgpu.powerplay=1 amdgpu.dpm=1 vt.handoff=7 2. - üres kimenet, a radeon drivert nem használja a rendszer ha van amdgpu is. (Újratelepítés előtt a radeon-t is betettem /etc/modules-ba, de nem tapasztaltam észlelhető változást a gép viselkedésében) 3. : http://pastebin.com/ZLDA940P

        lev258Eddig a pillanatig ez volt a legfrissebb. Az előbb jött egy update, de nem hiszem hogy sokat számít. Szerintem valami ehhez hasonló beállítás hiányzik neki.

          hallgatOlyan kernelre gondoltam, ami nem a frissítésekkel jön, hanem te rakod fel.

            A 16.04-hez annyira új az X, hogy ahhoz az AMD még nem csinálta meg a zárt meghajtót. Az én laptopomban is AMD-s gpu-k vannak, ezért Isten őrizz, hogy frissítsem a jól működő 14.04-et 16.04-re!

              lev258Az úgy elég tág fogalom. Nem szívesen legóznék unsable béta kernelekkel.

                ariszloRossz az elképzelés. Az a zárt már megszűnt, az új zárt pedig csak amdgpu-s kerneldrivert használó kártyákkal működik.

                hallgatAnnyira azért nem béták. Én most épp 4.4.14-et használok, te megnézhetnéd ezzel, valamint egy ennél is újabbal (4.6 vagy 4.7-es változattal). Bármikor választhatsz korábbi kernelt (eredeti) is. http://kernel.ubuntu.com/~kernel-ppa/mainline/ Minden kernelhez 3 csomagot kell telepíteni (headers-...-generic, headers-...-all, image-...-generic).

                Ennyivel később: 6 év