ATTN BLENDER LINUX USERS Dual GPU/Monitor setup goodies w auto fan control

Just thought I’d share some of my cool stuff I use for Ubuntu 12.04 on a dual screen setup with two GPU’s and also an automatic fan control script so you never have to touch a fan control when rendering in Blender or whatever else uses a lot of your GPU’s power.

First is the x.conf file for the xserver which uses one Video Card per monitor with a dual GPU dual monitor setup.
Desktop is like twinview you can drag windows between monitors and despite popular misinformation you must have a SLI connecter between the video cards to use the SLI Mosaic mode enabled in the x.conf file. However, the system does not see an SLI setup so Blender renders just as fast with dual GPU’s and no SLI connector.

Second is a simple script that auto adjust the cards fan speeds based on the temperature just like Windows.
Just place it in your ‘root/bin’ name it whatever and add it to your default startup programs so it will start on login.

Last note, the fan control script should work with any Nvida card that has the “coolbits” option enabled in the xconfig file-- don’t have to use this one.
:yes:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 319.17  (buildd@chindi10)  Fri May  3 15:33:37 UTC 2013



Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Ancor Communications Inc ASUS VH196"
    HorizSync       30.0 - 80.0
    VertRefresh     55.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"

    # HorizSync source: unknown, VertRefresh source: unknown
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "SEK SE222FS"
    HorizSync       30.0 - 65.0
    VertRefresh     50.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 580"
    BusID          "PCI:3:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 580"
    BusID          "PCI:4:0:0"
EndSection

Section "Screen"

# Removed Option "MetaModes" "GPU-0.DFP-0: 1440x900+1360+0, GPU-1.DFP-1: 1360x768+0+0"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Coolbits" "5"
    Option         "SLI" "Mosaic"
    Option         "BaseMosaic" "True"
    Option         "Stereo" "0"
    Option         "metamodes" "1440x900 +1360+0, 1360x768 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Coolbits" "5"
    Option         "SLI" "Mosaic"
    Option         "BaseMosaic" "True"
    Option         "Stereo" "0"
    Option         "MetaModes" "GPU-0.DFP-0: 1440x900+1360+0, GPU-1.DFP-1: 1360x768+0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


Above: x.conf
Below: fan script!!

#!/bin/bash

#nvautofanadjust


while :
do
    #set fan speed if above 20%
    cur_tempA=$(nvidia-settings -t -q [GPU:0]/GPUCoreTemp)
    cur_speedA=$(nvidia-settings -t -q [fan:0]/GPUCurrentFanSpeed)    
    new_speedA=$(( 100 * $cur_tempA / 80 ))
    #cur_tempA=$(nvidia-settings -t -q [GPU:0]/GPUCoreTemp)
    echo 'gpu temp A is' $cur_tempA 'set fan to' $new_speedA '%'     
    if [ $new_speedA -gt 20 ]; then
         nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUCurrentFanSpeed=$new_speedA
    fi
    
    cur_tempB=$(nvidia-settings -t -q [GPU:1]/GPUCoreTemp)
    cur_speedB=$(nvidia-settings -t -q [fan:1]/GPUCurrentFanSpeed)    
    new_speedB=$(( 100 * $cur_tempB / 80 ))
    echo 'gpu temp B is' $cur_tempB 'set fan to' $new_speedB '%'
    if [ $new_speedB -gt 20 ]; then
        nvidia-settings -a [gpu:1]/GPUFanControlState=1 -a [fan:1]/GPUCurrentFanSpeed=$new_speedB 
    fi    
    sleep 3


done

Great, I like linux rendering speed on my gpu but the inability to control my fan speed on mi gtx 590 drives me away from rendering, does it work for Elementary OS? it is based on ubuntu.

Its just what’s called a bash script so theoretically it should work with any linux flavor…