Discussion:
[lm-sensors] [NCT6775] Additional temperature sensors on nct6791d
Ville Aakko
2015-04-10 16:15:49 UTC
Permalink
Hi,

I'd like to know if it would be possible to add support for additional
sensors on a motherboard having an nct6791d sensor chip, and -
presuming it is possible, how much work / difficult that would be.

I'm currently using the Asus Maximus Gaming VII Gene motherboard. It
has one additional temperature sensor (T_SENSOR1), which I have
connected a working sensor to. From BIOS I can see it is working,
since it gives sensible readings. The nct6775 driver (which I'm just
presuming is also handling the additional sensor, though I'm not 100%
sure) does not report the temperature for this sensor, however:

$ sensors nct6791-* | grep °C
SYSTIN: +36.0°C (high = +55.0°C, hyst = +75.0°C)
sensor = thermistor
CPUTIN: +50.5°C (high = +80.0°C, hyst = +75.0°C)
sensor = thermistor
AUXTIN0: +45.0°C sensor = thermistor
AUXTIN1: +127.0°C sensor = thermistor
AUXTIN2: +37.0°C sensor = thermistor
AUXTIN3: +55.0°C sensor = thermistor
PECI Agent 0: +63.5°C
PCH_CHIP_CPU_MAX_TEMP: +0.0°C
PCH_CHIP_TEMP: +0.0°C
PCH_CPU_TEMP: +0.0°C

I'd presume it should be one of the AUXTIN[0-3] sensors, but they give
seemingly bogus (see *) information, that is exactly the same wether
the sensor is connected or not (I was doing some very intensive
computation while taking the reading above, which causes them to be
quite high).

I'd be happy to provide any information to help add proper
support.Testing some patches and compiling the kernel module is not a
problem. I've also figured I can dump some of the registers via
isadump and looked at the source, but I haven't figured out (at least
yet) where to look for the values, and where the temperature data
might be in the dumps - and if it is available, how the source should
be modified. I didn't give it too much effor though since I might be
totally on the wrong track. But in case someone (I presume the author
is on this list?) can point me in the right direction, I might even be
able to make the necessary changes and test them myself.

I'd be pleased for any help or comments!

Thanks,
- Ville

*) AUXTIN0,1 and 3 wary from anywhere between -127 to +127 seemingly
unrelated to anything, and 2 is always around 37°C. Also, I have tried
to cool / warm the sensor while 'watch sensors' to see some
correlation, to rule out a some kind of computation fault in the
driver, but that does not seem to be the case. To me it seems that
AUXTIN[0-3] is looking at the wrong (or unconnected in my MB) address.
SYSTIN and CPUTIN give something usefull, though I'm not sure where
they are on the sensors, PECI Agent is self-explanatory, the rest
below that are always 0°C.
--
--
Ville Aakko - ***@gmail.com
Guenter Roeck
2015-04-11 02:12:52 UTC
Permalink
Post by Ville Aakko
Hi,
I'd like to know if it would be possible to add support for additional
sensors on a motherboard having an nct6791d sensor chip, and -
presuming it is possible, how much work / difficult that would be.
I'm currently using the Asus Maximus Gaming VII Gene motherboard. It
has one additional temperature sensor (T_SENSOR1), which I have
connected a working sensor to. From BIOS I can see it is working,
since it gives sensible readings. The nct6775 driver (which I'm just
presuming is also handling the additional sensor, though I'm not 100%
$ sensors nct6791-* | grep °C
SYSTIN: +36.0°C (high = +55.0°C, hyst = +75.0°C)
sensor = thermistor
CPUTIN: +50.5°C (high = +80.0°C, hyst = +75.0°C)
sensor = thermistor
AUXTIN0: +45.0°C sensor = thermistor
AUXTIN1: +127.0°C sensor = thermistor
AUXTIN2: +37.0°C sensor = thermistor
AUXTIN3: +55.0°C sensor = thermistor
PECI Agent 0: +63.5°C
PCH_CHIP_CPU_MAX_TEMP: +0.0°C
PCH_CHIP_TEMP: +0.0°C
PCH_CPU_TEMP: +0.0°C
I'd presume it should be one of the AUXTIN[0-3] sensors, but they give
seemingly bogus (see *) information, that is exactly the same wether
the sensor is connected or not (I was doing some very intensive
computation while taking the reading above, which causes them to be
quite high).
I'd be happy to provide any information to help add proper
support.Testing some patches and compiling the kernel module is not a
problem. I've also figured I can dump some of the registers via
isadump and looked at the source, but I haven't figured out (at least
yet) where to look for the values, and where the temperature data
might be in the dumps - and if it is available, how the source should
be modified. I didn't give it too much effor though since I might be
totally on the wrong track. But in case someone (I presume the author
is on this list?) can point me in the right direction, I might even be
able to make the necessary changes and test them myself.
I'd be pleased for any help or comments!
Thanks,
- Ville
*) AUXTIN0,1 and 3 wary from anywhere between -127 to +127 seemingly
unrelated to anything, and 2 is always around 37°C. Also, I have tried
to cool / warm the sensor while 'watch sensors' to see some
correlation, to rule out a some kind of computation fault in the
driver, but that does not seem to be the case. To me it seems that
AUXTIN[0-3] is looking at the wrong (or unconnected in my MB) address.
SYSTIN and CPUTIN give something usefull, though I'm not sure where
they are on the sensors, PECI Agent is self-explanatory, the rest
below that are always 0°C.
If the sensor is connected to AUXTIN[0123], it _should_ be working.

Registers to directly read temperatures from the chip are as follows:

Bank 4:
0x90 SYSTIN
0x91 CPUTIN
0x92 AUXTIN0
0x93 AUXTIN1
0x94 AUXTIN2
0x95 AUXTIN3

Additional temperature registers:

Bank 0:
0x27 SMIOVT1

The temperature source for this register is set in bank 6, register 0x21.

0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction, 0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5

The temperature sources for those registers are set in bank 1, 2, 3, 8, and 9,
in register 0 of each bank. There is another source select register in bank 0xa,
register 0, which you could check as well.

Bank 1:
0x50 SMIOVT2

The temperature source for this register is set in bank 6, register 0x22.

In the source select registers, the lower 5 bits define the temperature
source. There are too many to list each individually, but here are some
important values.
0x01 - 0x06 SYSSTIN to AUXTIN3
0x08 - 0x0f SMBus master sources (not explained in detail)
0x10, 0x11 PECI0, PECI1
0x12 - 0x19 PCH temperatures
0x1a BYTE_TEMP, not explained in detail
0x1f Virtual_TEMP, not explained in detail

You can try reading any of these registers to see if changes in temperature
are reflected. We can then go from there and try to determine what is missing
in the driver.

Thanks,
Guenter
Guenter Roeck
2015-04-12 15:40:10 UTC
Permalink
Post by Guenter Roeck
If the sensor is connected to AUXTIN[0123], it _should_ be working.
Hi Guenter, thanks for your reply!
At least for now, I haven't found anything in the registers which
could look like the data from the additional sensor (as additional
tools, I've used the room temperature, my hands, graphics card
heatsink, a glass of ice water, and a cold beer though I didn't put
the sensor in the latter).
But bear with me, I'm quite novice to these things, so I might have
done something wrongly here with isadump (though I think the
additional sensor is just being elusive). Below I will give my output
from the registers along with the isadump commands I have used.
So, unless you can give any more suggestions what I could try, I think
I can live with it for the time being - the additional sensor is
something nice to tinker with, but not that essential for my project
(but if I can provide any more information I will happily do so).
Post by Guenter Roeck
0x90 SYSTIN
0x91 CPUTIN
0x92 AUXTIN0
0x93 AUXTIN1
0x94 AUXTIN2
0x95 AUXTIN3
I think I have found these (so I think I have understod correctly how
$ sudo isadump -y 0x295 0x296 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff
20: ff ff ff 96 64 96 64 e1 96 00 ff ff ff ff ff ff
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
40: ff ff 00 00 ff ff ff ff ff ff 00 00 00 00 04 ff
50: 00 73 ff ff 00 00 00 ff ff 00 52 10 09 00 ff ff
60: ff 01 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: 74 7d d2 d2 7e f7 00 d6 cd 7f 00 65 00 08 20 00
90: 22 24 7f 80 24 4f 00 32 80 24 24 24 24 7c 10 7f
a0: ff 22 ff ff ff ff ff 35 63 63 00 00 00 00 00 00
b0: ff 1f 18 07 47 0c 45 1e ff 1f ff 1f 00 00 ff ff
c0: 00 00 06 cd 02 4f 02 5b 00 00 00 00 ff ff ff ff
d0: 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff
e0: ff a7 01 01 ff ff ff ff ff ff ff ff ff ff ff ff
f0: 27 40 00 00 24 00 fd 00 50 00 51 00 00 00 00 ff
0x90 to 0x95 seem to match to what is reported by lm-sensors at the
time at least for SYSTIN, CPUTIN and AUXTIN2 (in hexadecimal; although
lmsensors is giving .5°C more precision, so there's one bit of
information lm-sensors is gathering from somewhere else, it seems).
Yes, from the registers at 0x73 onwards.
Also AUXTIN1,3 and 4 kind-of match (their data is not usefull in any
case ATM). Nothing here reacting to manipulating the additional sensor
(as expected), at least AFAICT.
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
$ sudo isadump -y 0x295 0x296 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff
10: 00 fc 00 fc fc fc ff ff ff ff ff ff ff ff ff ff
20: ff 01 02 00 ff ff ff ff ff ff ff ff ff ff ff 1f
30: ff 1f 18 0a 47 07 45 1d ff 1f ff 1f ff 1f ff 1f
40: ff 1f ff 1f 02 02 02 02 02 02 ff ff ff ff 06 ff
50: 7f 7f 7f 7f 00 00 00 00 06 c7 02 50 02 5b 00 00
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
$ sudo isadump -y 0x295 0x296 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 ff 04 a7 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 00 04 ff 03 ff 40 7f 00 65 00 08 00 00
20: 74 7e d2 d2 7e f7 23 22 ff ff ff da 00 83 77 d9
30: c4 d9 c4 83 77 ff ea 51 38 37 32 ff ff ff ff ff
40: 03 1e 17 ff df 08 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 23 00 23 00 23 00 23 00 51 00 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 33 00 04 00 00 06 80 00 04 00
c0: ff ff ff ff ff ff ff ff ff 0c 06 06 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 6f ff ff ff
Post by Guenter Roeck
The temperature sources for those registers are set in bank 1, 2, 3, 8, and 9,
in register 0 of each bank.
There is another source select register in bank
0xa,
register 0, which you could check as well.
$ sudo isadump -y 0x295 0x296 0xa
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 03 00 00 0a 0a 01 01 3c 00 ff ff 00 00 ff ff ff
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
20: ff 19 23 2d 37 ff ff 8c aa c8 e6 ff ff ff ff ff
30: ff 00 ff ff 00 3c 00 cc 00 ff ff ff ff ff ff 00
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0a ff
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
60: ff ff ff ff ff ff 00 00 ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Post by Guenter Roeck
0x50 SMIOVT2
$ sudo isadump -y 0x295 0x296 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 10 00 40 01 01 01 01 3c 00 ff ff ff 00 ff ff ff
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
20: ff 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff
30: ff 00 ff ff 00 4b 00 cc 02 ff ff ff ff ff ff 00
40: ff ff ff ff ff 00 00 ff ff ff ff ff ff ff 01 ff
50: 24 00 00 4b 00 50 00 ff ff ff ff ff ff ff ff ff
60: ff ff ff ff ff ff 11 00 ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Post by Guenter Roeck
The temperature source for this register is set in bank 6, register 0x22.
In the source select registers, the lower 5 bits define the temperature
source. There are too many to list each individually, but here are some
important values.
0x01 - 0x06 SYSSTIN to AUXTIN3
0x08 - 0x0f SMBus master sources (not explained in detail)
0x10, 0x11 PECI0, PECI1
0x12 - 0x19 PCH temperatures
0x1a BYTE_TEMP, not explained in detail
0x1f Virtual_TEMP, not explained in detail
0x0 in banks 1, 2, 3 and 8 is set to 0x10 and 9 to 0x03 (I can provide
the dumps if that helps). So that means PECI0 and AUXTIN0?
Yes, nothing special here.
Post by Guenter Roeck
You can try reading any of these registers to see if changes in temperature
are reflected. We can then go from there and try to determine what is missing
in the driver.
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.

The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.

The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.

sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0

If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.

I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?

Thanks,
Guenter
Ville Aakko
2015-04-19 08:37:16 UTC
Permalink
Hi again,

Sorry for a late reply - I apprecieate your help. I had other duties
(and then I had a flu), to do so I didin't have time to look into this
and reply before.

But, I believe I've had no luck so far. Maybe the additional sensor is
[SNIP]
Post by Guenter Roeck
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
Yes, I was confused about the bank in question since I haven't fiddled
with this kind of things before =). But I think I understand now what
you meant.
Post by Guenter Roeck
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.
The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.
The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.
sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0
If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.
I did this. At first I need to load (after a reboot) the nct6775
driver - otherwise, all the registers would report all 0xff's when I
tried to dump them with isadump. So something is initialized by the
driver, is this normal? But after modprobe I removed the driver and
tried the commands. I even did it again after a fresh reboot, in case
the chip was in some odd state because I could have mad a mistake /
after I had been running lm_sensors initialization script (I disabled
the script / service to make sure nothing has been done to the
registers).

In 0x79 I usually had 0xfd, but I had seen anything from 0xfe to 0xff
without any apparent pattern. 0x7a is always 00.

I also dumped bank 8 to check 0x00 that it was written corretly - and
it was. I also wrote the value for PCH and SYSTIN in the select
register, since I know what PCH and SYSTIN should approximately show,
and the right values seemed to appear in bank 0 / 0x79-0x7a.

So, any other ideas?

If you are running out of ideas, I was thinking about contacting ASUS
support, maybe they'd like to share some information on this (where
the additional sensor is actually handled and if they'd like to
disclose any information). Hearing / reading about their reputation
earlier on Linux support, I'd doubt that would help, but I guess it
couldn't hurt either to ask.

(I can provide the dumps from isadump if you wish, but I didn't notice
anything peculiar in them)
Post by Guenter Roeck
I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?
Yes. I tried it (in real time while watching the figure) in room
temperature (21-22°C), glass of (fresh / really cold and full of ice)
water (0°C) and my graphics card heat sink (44°C, though I don't have
a reference measurement for the heat sink).

Thanks for your help!
--
--
Ville Aakko - ***@gmail.com
Ville Aakko
2016-01-23 22:52:38 UTC
Permalink
Hi,

After all this time I've made a small discovery by chance: changing
the BIOS to control a fan (CASE fan 2) via the additional sensor
(T_SENSOR1), will expose the sensor at 0x77 in bank 0:

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 ff 04 4e 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 61 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 28 ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 1e 07 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 2d 00 2d 00 16 00 2d 00 74 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3b 00 04 00 00 09 2c 40 04 00
c0: ff ff ff ff ff ff ff ff ff 03 02 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 00 00 16 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 6f ff ff ff

Here, the sensor is in my room which is 0x16=22 (°C). Verified by
trying a hot cup of water and ice water (1-77°C).

It occured to me that maybe BIOS has written to bank 3 at 0x0. It
seems it reads out 0x10 if the control is CPU and 0x1f if the control
is set to the additional sensor. However, writing 0x1f to bank3 0x0
will only mess up the BIOS fan control until reboot, and I can not
find the temperature in the bank 0.

So, BIOS is doing something else here (and, in your previous message
you said 0x1f = virtual temp, which is not explained in detail).

I can provide the dumps of the registers in case that helps, in both
BIOS configurations.

Cheers!
Post by Ville Aakko
Hi again,
Sorry for a late reply - I apprecieate your help. I had other duties
(and then I had a flu), to do so I didin't have time to look into this
and reply before.
But, I believe I've had no luck so far. Maybe the additional sensor is
[SNIP]
Post by Guenter Roeck
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
Yes, I was confused about the bank in question since I haven't fiddled
with this kind of things before =). But I think I understand now what
you meant.
Post by Guenter Roeck
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.
The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.
The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.
sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0
If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.
I did this. At first I need to load (after a reboot) the nct6775
driver - otherwise, all the registers would report all 0xff's when I
tried to dump them with isadump. So something is initialized by the
driver, is this normal? But after modprobe I removed the driver and
tried the commands. I even did it again after a fresh reboot, in case
the chip was in some odd state because I could have mad a mistake /
after I had been running lm_sensors initialization script (I disabled
the script / service to make sure nothing has been done to the
registers).
In 0x79 I usually had 0xfd, but I had seen anything from 0xfe to 0xff
without any apparent pattern. 0x7a is always 00.
I also dumped bank 8 to check 0x00 that it was written corretly - and
it was. I also wrote the value for PCH and SYSTIN in the select
register, since I know what PCH and SYSTIN should approximately show,
and the right values seemed to appear in bank 0 / 0x79-0x7a.
So, any other ideas?
If you are running out of ideas, I was thinking about contacting ASUS
support, maybe they'd like to share some information on this (where
the additional sensor is actually handled and if they'd like to
disclose any information). Hearing / reading about their reputation
earlier on Linux support, I'd doubt that would help, but I guess it
couldn't hurt either to ask.
(I can provide the dumps from isadump if you wish, but I didn't notice
anything peculiar in them)
Post by Guenter Roeck
I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?
Yes. I tried it (in real time while watching the figure) in room
temperature (21-22°C), glass of (fresh / really cold and full of ice)
water (0°C) and my graphics card heat sink (44°C, though I don't have
a reference measurement for the heat sink).
Thanks for your help!
--
--
--
--
Ville Aakko - ***@gmail.com
Guenter Roeck
2016-01-24 02:27:31 UTC
Permalink
Post by Ville Aakko
Hi,
After all this time I've made a small discovery by chance: changing
the BIOS to control a fan (CASE fan 2) via the additional sensor
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 ff 04 4e 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 61 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 28 ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 1e 07 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 2d 00 2d 00 16 00 2d 00 74 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3b 00 04 00 00 09 2c 40 04 00
c0: ff ff ff ff ff ff ff ff ff 03 02 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 00 00 16 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 6f ff ff ff
Here, the sensor is in my room which is 0x16=22 (°C). Verified by
trying a hot cup of water and ice water (1-77°C).
It occured to me that maybe BIOS has written to bank 3 at 0x0. It
seems it reads out 0x10 if the control is CPU and 0x1f if the control
is set to the additional sensor. However, writing 0x1f to bank3 0x0
will only mess up the BIOS fan control until reboot, and I can not
find the temperature in the bank 0.
So, BIOS is doing something else here (and, in your previous message
you said 0x1f = virtual temp, which is not explained in detail).
Try writing a value into register 0xec and check if that makes a difference.
Its definition is "AUX0FAN Virtual Temperature Register". Maybe it
provides the values for register 0x77, and maybe it is updated (?)
by the BIOS.

Guenter
Post by Ville Aakko
I can provide the dumps of the registers in case that helps, in both
BIOS configurations.
Cheers!
Post by Ville Aakko
Hi again,
Sorry for a late reply - I apprecieate your help. I had other duties
(and then I had a flu), to do so I didin't have time to look into this
and reply before.
But, I believe I've had no luck so far. Maybe the additional sensor is
[SNIP]
Post by Guenter Roeck
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
Yes, I was confused about the bank in question since I haven't fiddled
with this kind of things before =). But I think I understand now what
you meant.
Post by Guenter Roeck
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.
The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.
The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.
sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0
If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.
I did this. At first I need to load (after a reboot) the nct6775
driver - otherwise, all the registers would report all 0xff's when I
tried to dump them with isadump. So something is initialized by the
driver, is this normal? But after modprobe I removed the driver and
tried the commands. I even did it again after a fresh reboot, in case
the chip was in some odd state because I could have mad a mistake /
after I had been running lm_sensors initialization script (I disabled
the script / service to make sure nothing has been done to the
registers).
In 0x79 I usually had 0xfd, but I had seen anything from 0xfe to 0xff
without any apparent pattern. 0x7a is always 00.
I also dumped bank 8 to check 0x00 that it was written corretly - and
it was. I also wrote the value for PCH and SYSTIN in the select
register, since I know what PCH and SYSTIN should approximately show,
and the right values seemed to appear in bank 0 / 0x79-0x7a.
So, any other ideas?
If you are running out of ideas, I was thinking about contacting ASUS
support, maybe they'd like to share some information on this (where
the additional sensor is actually handled and if they'd like to
disclose any information). Hearing / reading about their reputation
earlier on Linux support, I'd doubt that would help, but I guess it
couldn't hurt either to ask.
(I can provide the dumps from isadump if you wish, but I didn't notice
anything peculiar in them)
Post by Guenter Roeck
I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?
Yes. I tried it (in real time while watching the figure) in room
temperature (21-22°C), glass of (fresh / really cold and full of ice)
water (0°C) and my graphics card heat sink (44°C, though I don't have
a reference measurement for the heat sink).
Thanks for your help!
--
--
Ville Aakko
2016-01-24 15:56:10 UTC
Permalink
Post by Guenter Roeck
Post by Ville Aakko
Hi,
After all this time I've made a small discovery by chance: changing
the BIOS to control a fan (CASE fan 2) via the additional sensor
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 ff 04 4e 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 61 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 28 ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 1e 07 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 2d 00 2d 00 16 00 2d 00 74 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3b 00 04 00 00 09 2c 40 04 00
c0: ff ff ff ff ff ff ff ff ff 03 02 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 00 00 16 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 6f ff ff ff
Here, the sensor is in my room which is 0x16=22 (°C). Verified by
trying a hot cup of water and ice water (1-77°C).
It occured to me that maybe BIOS has written to bank 3 at 0x0. It
seems it reads out 0x10 if the control is CPU and 0x1f if the control
is set to the additional sensor. However, writing 0x1f to bank3 0x0
will only mess up the BIOS fan control until reboot, and I can not
find the temperature in the bank 0.
So, BIOS is doing something else here (and, in your previous message
you said 0x1f = virtual temp, which is not explained in detail).
Try writing a value into register 0xec and check if that makes a difference.
Its definition is "AUX0FAN Virtual Temperature Register". Maybe it
provides the values for register 0x77, and maybe it is updated (?)
by the BIOS.
I can write to 0xec, which seems to also contain the temperature
(didn't notice that before!). This written value will be copied into
0x77, but only momentarily until BIOS updates it again (<1 second).

A few other things I've noticed after posting:

* The temperature is also reported in bank4, at 0x9b (again: only if
case fan 2 is controlled by this sensor).

* The temperature value shifts in the registers, if I change which
fan(s) is controlled by it, like this:

Chassis fan 1, temperature in bank 0: 0x73, 0xea; bank4: 0x99
Chassis fan 2, temperature in bank 0: 0x77, 0xec; bank4: 0x9b
Chassis fan 3, temperature in bank 0: 0x79, 0xed; bank4: 0x9c

I presume this is so that BIOS can control as many fans as I like via
this sensor, and indeed it is reported in all of the above registers
if all fans are set accordingly. See dumps at the end of this post, in
case I've made an error.

- Ville

Here for these dumps I have temporarily sed all chassis fans
controlled by T_SENSOR1 in BIOS - i.e. chassis fans 1-3.

Btw. the temperature for CPU fan seems to be in bank 0, 0x75 and
bank4, 0x9a - i.e. between temperature controlling Chassis fans 1&2.

$ sudo isadump -y 0x295 0x296 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff
20: ff ff ff 96 64 96 64 e1 96 00 ff ff ff ff ff ff
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
40: ff ff 00 00 ff ff ff ff ff ff 00 00 00 00 04 ff
50: 00 73 ff ff 00 00 00 ff ff 00 12 00 09 00 ff ff
60: ff 01 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: 74 7e d2 d2 7e f7 00 d6 ce 7f 00 64 00 00 00 00
90: 29 29 80 80 25 7f 00 3b c0 15 29 15 15 80 02 80
a0: ff 29 ff ff ff ff 33 35 4f 4f 00 00 00 00 00 00
b0: ff 1f 48 0f ff 1f ff 1f ff 1f ff 1f 00 00 ff ff
c0: 00 00 02 46 00 00 00 00 00 00 00 00 ff ff ff ff
d0: 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff
e0: 00 35 00 00 ff ff ff ff ff ff ff ff ff ff ff ff
f0: 2e 80 00 00 29 00 fb 00 50 00 51 00 00 00 00 ff

$ sudo isadump -y 0x295 0x296 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 00 04 35 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 00 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 2a ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 00 00 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 15 00 29 80 15 00 15 00 71 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3c 00 04 00 00 34 28 40 04 00
c0: ff ff ff ff ff ff ff ff ff 1d 06 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 15 00 15 15 00 00

p.s. It seems I sent this first to Guenter only, sorry for spamming your inbox
Post by Guenter Roeck
Guenter
Post by Ville Aakko
I can provide the dumps of the registers in case that helps, in both
BIOS configurations.
Cheers!
Post by Ville Aakko
Hi again,
Sorry for a late reply - I apprecieate your help. I had other duties
(and then I had a flu), to do so I didin't have time to look into this
and reply before.
But, I believe I've had no luck so far. Maybe the additional sensor is
[SNIP]
Post by Guenter Roeck
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1
(0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
Yes, I was confused about the bank in question since I haven't fiddled
with this kind of things before =). But I think I understand now what
you meant.
Post by Guenter Roeck
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.
The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.
The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.
sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0
If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.
I did this. At first I need to load (after a reboot) the nct6775
driver - otherwise, all the registers would report all 0xff's when I
tried to dump them with isadump. So something is initialized by the
driver, is this normal? But after modprobe I removed the driver and
tried the commands. I even did it again after a fresh reboot, in case
the chip was in some odd state because I could have mad a mistake /
after I had been running lm_sensors initialization script (I disabled
the script / service to make sure nothing has been done to the
registers).
In 0x79 I usually had 0xfd, but I had seen anything from 0xfe to 0xff
without any apparent pattern. 0x7a is always 00.
I also dumped bank 8 to check 0x00 that it was written corretly - and
it was. I also wrote the value for PCH and SYSTIN in the select
register, since I know what PCH and SYSTIN should approximately show,
and the right values seemed to appear in bank 0 / 0x79-0x7a.
So, any other ideas?
If you are running out of ideas, I was thinking about contacting ASUS
support, maybe they'd like to share some information on this (where
the additional sensor is actually handled and if they'd like to
disclose any information). Hearing / reading about their reputation
earlier on Linux support, I'd doubt that would help, but I guess it
couldn't hurt either to ask.
(I can provide the dumps from isadump if you wish, but I didn't notice
anything peculiar in them)
Post by Guenter Roeck
I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?
Yes. I tried it (in real time while watching the figure) in room
temperature (21-22°C), glass of (fresh / really cold and full of ice)
water (0°C) and my graphics card heat sink (44°C, though I don't have
a reference measurement for the heat sink).
Thanks for your help!
--
--
--
--
Ville Aakko - ***@gmail.com
Guenter Roeck
2016-01-24 16:38:46 UTC
Permalink
Post by Ville Aakko
Post by Guenter Roeck
Post by Ville Aakko
Hi,
After all this time I've made a small discovery by chance: changing
the BIOS to control a fan (CASE fan 2) via the additional sensor
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 ff 04 4e 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 61 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 28 ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 1e 07 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 2d 00 2d 00 16 00 2d 00 74 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3b 00 04 00 00 09 2c 40 04 00
c0: ff ff ff ff ff ff ff ff ff 03 02 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 00 00 16 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 6f ff ff ff
Here, the sensor is in my room which is 0x16=22 (°C). Verified by
trying a hot cup of water and ice water (1-77°C).
It occured to me that maybe BIOS has written to bank 3 at 0x0. It
seems it reads out 0x10 if the control is CPU and 0x1f if the control
is set to the additional sensor. However, writing 0x1f to bank3 0x0
will only mess up the BIOS fan control until reboot, and I can not
find the temperature in the bank 0.
So, BIOS is doing something else here (and, in your previous message
you said 0x1f = virtual temp, which is not explained in detail).
Try writing a value into register 0xec and check if that makes a difference.
Its definition is "AUX0FAN Virtual Temperature Register". Maybe it
provides the values for register 0x77, and maybe it is updated (?)
by the BIOS.
I can write to 0xec, which seems to also contain the temperature
(didn't notice that before!). This written value will be copied into
0x77, but only momentarily until BIOS updates it again (<1 second).
* The temperature is also reported in bank4, at 0x9b (again: only if
case fan 2 is controlled by this sensor).
* The temperature value shifts in the registers, if I change which
Chassis fan 1, temperature in bank 0: 0x73, 0xea; bank4: 0x99
Chassis fan 2, temperature in bank 0: 0x77, 0xec; bank4: 0x9b
Chassis fan 3, temperature in bank 0: 0x79, 0xed; bank4: 0x9c
Nice catch. Downside is that the registers in bank 4 are undocumented,
so we won't be able to do anything with them. Not sure if there is anything
else we can do at this point; at least for my part I have no idea.

Guenter
Post by Ville Aakko
I presume this is so that BIOS can control as many fans as I like via
this sensor, and indeed it is reported in all of the above registers
if all fans are set accordingly. See dumps at the end of this post, in
case I've made an error.
- Ville
Here for these dumps I have temporarily sed all chassis fans
controlled by T_SENSOR1 in BIOS - i.e. chassis fans 1-3.
Btw. the temperature for CPU fan seems to be in bank 0, 0x75 and
bank4, 0x9a - i.e. between temperature controlling Chassis fans 1&2.
$ sudo isadump -y 0x295 0x296 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff
20: ff ff ff 96 64 96 64 e1 96 00 ff ff ff ff ff ff
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
40: ff ff 00 00 ff ff ff ff ff ff 00 00 00 00 04 ff
50: 00 73 ff ff 00 00 00 ff ff 00 12 00 09 00 ff ff
60: ff 01 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
80: 74 7e d2 d2 7e f7 00 d6 ce 7f 00 64 00 00 00 00
90: 29 29 80 80 25 7f 00 3b c0 15 29 15 15 80 02 80
a0: ff 29 ff ff ff ff 33 35 4f 4f 00 00 00 00 00 00
b0: ff 1f 48 0f ff 1f ff 1f ff 1f ff 1f 00 00 ff ff
c0: 00 00 02 46 00 00 00 00 00 00 00 00 ff ff ff ff
d0: 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff
e0: 00 35 00 00 ff ff ff ff ff ff ff ff ff ff ff ff
f0: 2e 80 00 00 29 00 fb 00 50 00 51 00 00 00 00 ff
$ sudo isadump -y 0x295 0x296 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 00 04 35 00 ff ff ff ff ff ff ff ff ff ff ff
10: 04 00 04 00 04 ff 03 ff 40 7f 00 64 00 00 00 00
20: 74 7e d2 d2 7e f7 00 2a ff ff ff da 00 83 77 e3
30: ba e3 ba 83 77 ff ea 51 00 37 32 ff ff ff ff ff
40: 03 00 00 ff df 00 1e ff 2d ff ff 10 00 55 00 a3
50: 05 ff ff ff ff ff ff ff c1 ff ff ff ff 01 00 ff
60: 00 00 ff ff ff 01 00 ff ff ff ff ff ff ff ff ff
70: 00 0a 00 15 00 29 80 15 00 15 00 71 80 ff ff ff
80: ff 7f 3f bf ff 05 05 05 00 00 00 00 00 00 00 00
90: 0a 00 00 00 00 fd fd fd 0a 95 ef 80 ff 40 46 c4
a0: 0e ff 00 00 ff 00 00 ff 00 00 80 66 06 06 01 00
b0: 00 00 00 00 00 00 3c 00 04 00 00 34 28 40 04 00
c0: ff ff ff ff ff ff ff ff ff 1d 06 05 ff ff ff ff
d0: 05 05 05 05 00 00 00 00 00 00 00 00 fd fd fd fd
e0: 55 80 00 00 00 ff ff ff ff ff 15 00 15 15 00 00
p.s. It seems I sent this first to Guenter only, sorry for spamming your inbox
Post by Guenter Roeck
Guenter
Post by Ville Aakko
I can provide the dumps of the registers in case that helps, in both
BIOS configurations.
Cheers!
Post by Ville Aakko
Hi again,
Sorry for a late reply - I apprecieate your help. I had other duties
(and then I had a flu), to do so I didin't have time to look into this
and reply before.
But, I believe I've had no luck so far. Maybe the additional sensor is
[SNIP]
Post by Guenter Roeck
Post by Guenter Roeck
0x27 SMIOVT1
The temperature source for this register is set in bank 6, register 0x21.
0x73, 0x74 Monitor Temperature Register 1 (0x73=fraction,
0x74=Integer)
0x75, 0x76 Reg 2
0x77, 0x78 Reg 3
0x79, 0x7a Reg 4
0x7b, 0x7c Reg 5
However, if I've understod your information correctly, SMIOVT1 is
always shoving 0x24 or 0x25, and SMIOVT2 seems to be 0x33. The select
registers are set to 01 and 02, (and reg 0x0, bank 0xa to 0x03), which
does not make sense? They should be set to 0x73 to 0x7c to provide
I hope I did not say that ;-). The source select registers always
have the same definition, and that definition is further below.
0x01 is SYSTIN, 0x02 is CPUTIN.
Yes, I was confused about the bank in question since I haven't fiddled
with this kind of things before =). But I think I understand now what
you meant.
Post by Guenter Roeck
Should I try to write to registers (0x0 in bank 1, 2, 3, 8 or 9 to
anything ranging from 0x0 to 0x20 and the corresponding set registers)
with isaset? I'm not sure exactly what I should input, and the isaset
man page does not actually encourage tinkering if one is not totally
sure what he/she is doing =). How to select bank with isaset? I'll be
responsible of course if I will blow up my computer with isaset, but
I'd still like to know if that is the right thing to do before I try
it.
You could try that with bank 8. The PCH temperatures as well as BYTE_TEMP
are also reported in bank 4, registers 0x00 to 0x1a (two registers per
temperature). Those all report 0 per your log above.
The only unreported temperatures are therefore the temperatures
reported through the SMBUs master sources. So you could set register
0x00 of bank 8 to 0x08 .. 0x0f and see if that makes a difference
for the temperature reported at 0x79 / 0x7a.
The bank register is at register 0x4e in every page. You would set
the bank first with isaset, followed by the actual isaset command.
sudo isaset -y 0x295 0x296 0x4e 8
sudo isaset -y 0x295 0x296 0x0 0x08 [0x09, 0x0a, ... , 0x0f]
sudo isadump -y 0x295 0x296 0
If 0x79 / 0x7a reports anything but 0, we may have found your sensor.
You might want to unload the nct6775 driver before doing those tests.
I did this. At first I need to load (after a reboot) the nct6775
driver - otherwise, all the registers would report all 0xff's when I
tried to dump them with isadump. So something is initialized by the
driver, is this normal? But after modprobe I removed the driver and
tried the commands. I even did it again after a fresh reboot, in case
the chip was in some odd state because I could have mad a mistake /
after I had been running lm_sensors initialization script (I disabled
the script / service to make sure nothing has been done to the
registers).
In 0x79 I usually had 0xfd, but I had seen anything from 0xfe to 0xff
without any apparent pattern. 0x7a is always 00.
I also dumped bank 8 to check 0x00 that it was written corretly - and
it was. I also wrote the value for PCH and SYSTIN in the select
register, since I know what PCH and SYSTIN should approximately show,
and the right values seemed to appear in bank 0 / 0x79-0x7a.
So, any other ideas?
If you are running out of ideas, I was thinking about contacting ASUS
support, maybe they'd like to share some information on this (where
the additional sensor is actually handled and if they'd like to
disclose any information). Hearing / reading about their reputation
earlier on Linux support, I'd doubt that would help, but I guess it
couldn't hurt either to ask.
(I can provide the dumps from isadump if you wish, but I didn't notice
anything peculiar in them)
Post by Guenter Roeck
I am wondering - when you do all your tests in the BIOS, do you
see the temperature (changes) reported there correctly ?
Yes. I tried it (in real time while watching the figure) in room
temperature (21-22°C), glass of (fresh / really cold and full of ice)
water (0°C) and my graphics card heat sink (44°C, though I don't have
a reference measurement for the heat sink).
Thanks for your help!
--
--
Loading...