ASUS z97-E/USB 3.1: Motherboard Sensors and Thermal Control on OpenSUSE 13.2

I recently put together a new desktop computer at work for data analysis for my supervisor. Here’s the parts list:

  • ASUS Z97-E/USB 3.1 motherboard
  • Intel i7-4790 processor
  • 32GB Crucial CAS 8 RAM
  • 2 Western Digital Black Series 1 TB HDDs
  • Rosewill Glacier 500M Power Supply
  • ASUS DVD Writer
  • NZXT S210-001 ATX Tower Case
  • Arctic Freezer 7 Pro CPU Fan/Heatsink

It’s a really solid processing machine and the Z97 is capable of clocking the RAM up to 1600MHz from 1333MHz using the built-in XMP. With water cooling, the Z97 could probably stably overclock the i7 up to 4.5 GHz (currently at 4 GHz). Since this machine will be used for heavy and prolonged computations, I wanted to make sure the fans were running sufficiently well to keep the i7 cool. To do this, we need to be able to monitor the fan speed and CPU temperature sensors.

The machine is running linux, specifically OpenSUSE 13.2. While I’ll focus on SUSE, this should work on any linux distribution so long as one uses the appropriate distribution specific commands. I am going to assume that the reader knows how to install software packages on SUSE 13.2. To read the CPU temperature and fan speeds, this is what I did:

1. Install lm-sensors

First I installed the lm-sensors package. The Z97-E has a Nuvoton NCT5538D that is used for fan speed measurements and control. In order for lm-sensors to read the NCT5538D we need to make sure the nct6775 kernel module is loaded (use modprobe nct6775 to immediately load it). To load the module on system start up we can either add nct6775 module to the /etc/modprobe.d/99-local.conf, or by running sensors-detect and following the instructions. If you use sensors-detect then you must make sure that the lm_sensors service is enabled and running:

systemctl enable lm_sensors
systemctl start lm_sensors

2. Modify grub Boot Options

Next we need to add the following to the GRUB_CMDLINE_LINUX_DEFAULT variable in the /etc/default/grub file: acpi_enforce_resources=lax (Many thanks to http://lists.lm-sensors.org/pipermail/lm-sensors/2014-November/042908.html for the tip). After modifying the file, we have to make sure that grub is updated by using: grub2-mkconfig -o /boot/grub2/grub.cfg.

3. Add an Entry to lm-sensors Config File (Fixed dead link: 6 December, 2015)

We now need to add an entry to the sensors configuration file. The nct6775 kernel module supports the NCT5538D chip via code for the Nuvoton NCT6791D, but we need to tell lm-sensors how to display the data it reads from the chip. Someone else already figured out the configuration for the Z97-A so I just used that and it seems to work. I added the entry discussed in the link for the Z97-A to the /etc/sensors3.conf file.

4. See If lm-sensors Works

You may want to reboot the computer at this point. We can now test to see if lm-sensors is set up correctly. If it is, when we run the sensors command in a terminal, we should see something that looks like this:

sensors

Terminal output from executing the sensors command.

5. Optional: Set the Fan Speeds

First, BE VERY CAREFUL WITH THIS. You can easily damage your processor if you mess up the fan control. Also, it’s not my fault if you do.

Now we can modify the modes that the fan speeds will be adjusted with. For example, to set the fans to Smart Fan Mode 4, we can use a command like echo 5 > /sys/class/hwmon/hwmon3/pwm2_enable for each of the fans by replacing pwm2 with the appropriate number (see here for the location of the PWM for the fans and here for information on the supported fan modes for the nct6775 kernel module). Be VERY careful while doing this. I recommend having a terminal open running watch -n1 sensors so that you can monitor fan speed and CPU temperature while playing with the fan control. It took me some trial and error to figure out which pwm# controlled which fan. If you have any questions about this process, feel free to leave a comment.

Advertisements

17 thoughts on “ASUS z97-E/USB 3.1: Motherboard Sensors and Thermal Control on OpenSUSE 13.2

    1. asreimer Post author

      Hey Auphora,

      I've fixed the dead link. For your convenience, here's config information you need to add to /etc/sensors3.conf from that link:

      chip "nct6791-*"
      # For the Asus Z97-A. Based on:
      # http://www.spinics.net/lists/lm-sensors/msg42249.html

      label in0 "CPU Vcc"
      # 'CPU Input Voltage' in UEFI
      compute in0 @ * 2, @ / 2

      label in1 "+5V"
      compute in1 @ * 5, @ / 5
      set in1_min 5 * 0.95
      set in1_max 5 * 1.05

      # From driver: label in2 "AVCC"
      set in3_min 3.3 * 0.95
      set in3_max 3.3 * 1.05

      # From driver: label in3 "+3.3V"
      set in3_min 3.3 * 0.95
      set in3_max 3.3 * 1.05

      label in4 "+12V"
      compute in4 @ * 12, @ / 12
      set in4_min 12 * 0.95
      set in4_max 12 * 1.05

      # in5: unknown

      label in6 "core 3"
      compute in6 @ * 2, @ / 2

      # From driver: label in7 "3VSB"
      # From driver: label in8 "Vbat"
      # From driver: label in9 "Vcore"

      label in10 "GPU"

      label in11 "sys agent"
      # 'CPU System Agent Voltage Offset Mode Sign' in UEFI

      label in12 "core 2"
      compute in12 @ * 2, @ / 2

      label in13 "core 1"
      compute in13 @ * 2, @ / 2

      label in14 "core 0"
      compute in14 @ * 2, @ / 2

      label fan1 "Fan 1"
      label fan2 "CPU fan"
      # The correponding pwm also controls the 'CPU Opt' fan

      label fan3 "Fan 2"
      label fan4 "Fan 3"
      label fan5 "Fan 4"
      label fan6 "CPU fan 2"
      # 'CPU Opt' header

      Reply
  1. micheal65536

    That config is not actually working. I know because I have the same chipset (different motherboard) and “acpi -t” *always* returns 29.8, 27.8 degrees for the two thermal sensors. And when I checked in the BIOS, the temperatures were different.

    Reply
    1. asreimer Post author

      Which two thermal sensors? Try using the ‘sensors’ command provided by lm-sensors. “acpi -t” doesn’t seem pick up all the thermal sensors.

      The config isn’t perfect, but with lm-sensors it allows me to see the fan speeds and CPU thermals accurately. The voltages and other thermal sensors are suspect though.

      Reply
      1. micheal65536

        Fair enough, I was talking about the “temp1” and “temp2” readings. I didn’t see the other readings, which do in fact seem realistic. Also my motherboard is in fact a different sensor chip, but the same chipset (i.e. Z97). Earlier I just thought I’d point it out though as I initially got confused by those two temperature values which always stay the same, and that could be very dangerous when evaluating thermal efficiency.

      2. micheal65536

        Also the core voltages aren’t necessarily suspect, as some cores run on very low voltages these days, but I would have to check the documentation to be sure though.

  2. Rob Taft

    Any idea how to get the extra thermal sensors working? I have 3 that are sensors on a wire I plug into the board. I put them in my radiator and use those to determine whether or not to turn the fans on. I have 1 AUXTIN that is legitimate, the other 3 are bad data, not sure if that’s where my 3 sensors are supposed to show up or not.

    Reply
    1. asreimer Post author

      Hey Rob,

      Unfortunately I do not have any idea how to get that working. If you could find a datasheet for the motherboard that might point you in the right direction.

      One thing I can say is that not all of the sensor information is necessarily mapped to the correct outputs in the config I used. I didn’t need to, but to correct the config you could compare values output by sensors with those reported in the BIOS.

      Cheers,
      Ashton

      Reply
  3. thecec

    Hi,

    your post is a life saver!
    I’m workin on my Z97 Pro with your guide and I am finally able to see fan speeds.

    Under /sys/class/hwmon I have hwmon[0-3], where hwmon2 is a symlink to a subdir of nct6775.656, while hwmon3 links to a subdir of eeepc-wmi.

    I imagine that I should work with the hwmon2 folder, correct?

    Thanks a lot for this post!

    Reply
    1. Bob KIng

      Rob –

      Interesting. Looking at my entires for my Z97-WS running Mint 18, my hwmon1 symlink points at /devices/platform/coretemp.0/hwmon/hwmon1 and my hwmon2 points at /devices/platform/eeepc-wmi/hwmon/hwmon2. I don’t see anything that resolve to nct* at all, even following all the links.

      Reply
  4. Bob KIng

    I’m seeing a similar behaviour with my Z97-WS. I’m not seeing any output for the sensors chip, so I can’t view fan speeds which is what I want. My chip is the 6791, and I have that info in sensors3.conf, but it seems as if that file is being ignored completely. Is there any known way to verify that the file IS being used or to confirm what chip is being identified or that the chip is recognized in the kernel? SO frustrating – all I want to do is add fan speeds to my conky dashboard alongside the CPU info. I’m not even interested in controlling the speeds from the OS.

    Reply
    1. asreimer Post author

      Hey Bob,

      I don’t know of any proper way to modify the config to get this working for you without digging into the source code for the driver.

      I see you posted this question on ask ubuntu as well. Hopefully you get your answer soon.

      Cheers,
      Ashton

      Reply
      1. Bob KIng

        I should have followed the instructions more closely. Adding the entry to /etc/default/grub did the trick. Now seeing all the output from the nct6791 !! Now off to modify my Conky config.

  5. Bob KIng

    sensors -u gave me the following:

    acpitz-virtual-0
    Adapter: Virtual device
    temp1:
    temp1_input: 27.800
    temp1_crit: 105.000
    temp2:
    temp2_input: 29.800
    temp2_crit: 105.000

    coretemp-isa-0000
    Adapter: ISA adapter
    Physical id 0:
    temp1_input: 32.000
    temp1_max: 80.000
    temp1_crit: 100.000
    temp1_crit_alarm: 0.000
    Core 0:
    temp2_input: 26.000
    temp2_max: 80.000
    temp2_crit: 100.000
    temp2_crit_alarm: 0.000
    Core 1:
    temp3_input: 26.000
    temp3_max: 80.000
    temp3_crit: 100.000
    temp3_crit_alarm: 0.000
    Core 2:
    temp4_input: 22.000
    temp4_max: 80.000
    temp4_crit: 100.000
    temp4_crit_alarm: 0.000
    Core 3:
    temp5_input: 24.000
    temp5_max: 80.000
    temp5_crit: 100.000
    temp5_crit_alarm: 0.000

    asus-isa-0000
    Adapter: ISA adapter
    cpu_fan:
    fan1_input: 0.000

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s