Changing nvidia fan speed on Ubuntu

I recently mentioned the only thing bugging me about my recent Ubuntu incursion was that my gfx card (Geforce GTS 250) wasn’t supported by nvclock so I couldn’t set it’s fan speed to whatever I want it to ending up with a serious decibel issue right next to me.

Turns out nvidia’s driver itself is able to do so, though it’s an unsupported feature and thus it’s not as easy as 1 2 3 to activate it. The Coolbits option in our xorg.conf comes into place, allowing us to overclock and/or change several features directly in the driver’s settings panel. Now, I never did overclock anything and I seriously doubt I ever will since I really don’t like to reduce the life expectancy of any given piece of hardware, but being able to reduce that HORRIBLE NOISE when I’m idling in my desktop surfing the web or chatting with friends is a blessing. I always keep an eye on temperatures and obviously I won’t lock the fan speed when playing games and such so I think it should be just fine.

On to the goods, nvidia’s config options available here state the following:

Option “Coolbits” “integer”

Enables various unsupported features, such as support for GPU clock manipulation in the NV-CONTROL X extension. This option accepts a bit mask of features to enable.

WARNING: this may cause system damage and void warranties. This utility can run your computer system out of the manufacturer’s design specifications, including, but not limited to: higher system voltages, above normal temperatures, excessive frequencies, and changes to BIOS that may corrupt the BIOS. Your computer’s operating system may hang and result in data loss or corrupted images. Depending on the manufacturer of your computer system, the computer system, hardware and software warranties may be voided, and you may not receive any further manufacturer support. NVIDIA does not provide customer service support for the Coolbits option. It is for these reasons that absolutely no warranty or guarantee is either express or implied. Before enabling and using, you should determine the suitability of the utility for your intended use, and you shall assume all responsibility in connection therewith.

When “1” (Bit 0) is set in the “Coolbits” option value, the nvidia-settings utility will contain a page labeled “Clock Frequencies” through which clock settings can be manipulated. “Coolbits” is only available on GeForce FX, Quadro FX and newer desktop GPUs. On GeForce FX and newer mobile GPUs, limited clock manipulation support is available when “1” is set in the “Coolbits” option value: clocks can be lowered relative to the default settings; overclocking is not supported due to the thermal constraints of notebook designs.

When “2” (Bit 1) is set in the “Coolbits” option value, the NVIDIA driver will attempt to initialize SLI when using GPUs with different amounts of video memory.

When “4” (Bit 2) is set in the “Coolbits” option value, the nvidia-settings Thermal Monitor page will allow configuration of GPU fan speed, on graphics boards with programmable fan capability.

The default for this option is 0 (unsupported features are disabled).

The Coolbits option I care about is number 4, so all I had to do was open my favorite text editor and add the following to my xorg.conf:

Section “Device”

Option “Coolbits” “4”

EndSection

This way I ended up with a control within the driver’s settings panel to control the fan’s speed as seen on the screenshot attached to this post. It’s running smoothly (and silently) at 35% while keeping the GPU Temp at a stable 49ºC while doing stuff not GPU intensive.

More useful info here and here.