Date: Wed, 29 Dec 1999 23:27:39 -0500 From: Ted Sikora <tsikora@home.com> To: "Chris D. Faulhaber" <jedgar@fxp.org>, "freebsd-stable@FreeBSD.ORG" <freebsd-stable@FreeBSD.ORG> Subject: Re: Temperature Message-ID: <386ADF3B.EF6E12FA@home.com> References: <Pine.BSF.4.10.9912292310090.8891-100000@pawn.primelocation.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
"Chris D. Faulhaber" wrote:
>
> On Wed, 29 Dec 1999, Ted Sikora wrote:
>
> > Marc Nicholas wrote:
> > >
> > > You're referring to the temps reported via an LM78 or similar, yes?
> > The machines bios with Winbond W83782d IC
> >
>
> That may explain it, then.
>
> > > not reporting that the machine is actually getting HOTTER under FreeBSD?
> >
> > It is HOTTER under FreeBSD. Immediatelly upon boot-up it's 26F
> > hotter under FreeBSD than under Linux. Sometime after 3.4-RC and
> > now this started. (I follow the stable branch via CVSup) Under
> > 3.3-STABLE the temerature was always the same as Linux...cool averaging
> > 89F for the CPU's. Now it's over 113F under FreeBSD only. I know it's
> > wierd but the machine does not lie. Under Linux it's the same as before
> > 87-89F.
> >
>
> The Winbond chipsets seems to have different multipliers than the LM78
> chipsets. As author of lmmon/wmlmmon, I have yet to get someone to test
> so I can verify what the correct multipliers are.
>
Check out this lm_sensor script from Linux. Maybe it can help?
Why did they report identical ranges before and now FreeBSD is hotter?
That I don't understand. The alarm went off twice now.
--
Ted Sikora
Jtl Development Group
tsikora@powerusersbbs.com
http://powerusersbbs.com
[-- Attachment #2 --]
# Hardware sensors configuration file
# This configuration file will be used by all applications linked to
# libsensors.
# This config file consists of two parts: the heavily commented LM78
# example, and the real parts. Search for '####' if you want to skip
# to the real stuff.
# Hash marks introduce comments, which continue until the end of a line
#
# Identifiers consisting of only digits and letters can be used
# unquoted; other identifiers must be quoted. Escape characters within
# quotes operate like those in C.
# A 'chip' line specifies what the following 'label', 'compute', 'set' and
# (not yet implemented) 'valid' lines refer to. In this case, until the
# next 'chip' line, everything refers to all lm78, lm78-j and lm79
# chips. Other examples are *-isa-* for everything on the ISA bus, and
# lm78-j-i2c-*-4e for all lm78-j chips on address 0x4e of any I2C bus.
#
# If more chip statements match a specific chip, they are all considered.
# Later lines overrule earlier lines, so if you set the in0 label for
# lm78-* to "This", and later on the in0 label for lm78-isa-* to "That",
# "That" is used for LM78 chips on the ISA bus, and "This" for LM78
# chips on a non-ISA bus.
#chip "lm78-*" "lm78-j-*" "lm79-*"
# A label line describes what a certain feature stands for on your
# mainboard. Programs can retrieve these names and display them.
# If no label is specified for a certain feature, the default name
# (ie. 'fan1' for fan1) is used.
# If you specify a label for in1, this label is also used for in1_min and
# in1_max, unless they have their own labels declared. There are several
# of these logical groups.
# These are as advised in the LM78 and LM79 data sheets, and used on almost
# any mainboard we have seen.
# label in0 "VCore 1"
# label in1 "VCore 2"
# label in2 "+3.3V"
# label in3 "+5V"
# label in4 "+12V"
# label in5 "-12V"
# label in6 "-5V"
# A compute line describes how to scale a certain feature. There are
# two expressions in it: the first describes how the /proc value must
# be translated to a user value, the second how a user value must be
# translated to a /proc value. '@' is the value to operate on. You may
# refer to other readable features (like '2 * vid').
# Like for the label statement, there are logical groups here. They are
# sometimes a bit different, though. For example, fan1_div is in the
# logical label group of fan1 (it gets the same label if none is declared
# for it), but it is not in the compute group of fan1 (as it uses a
# completely different system of values).
# For positive voltages (in0..in4), two resistors are used, with the following
# formula (R1,R2: resistor values, Vs: read voltage, Vin: pin voltage)
# R1 = R2 * (Vs/Vin - 1)
# For negative voltages (in5, in6) two resistors are used, with the following
# formula (Rin,Rf: resistor values, Vs: read voltage, Vin: pin voltage)
# Rin = (Vs * Rf) / Vin
# Here are the official LM78 and LM79 data sheet values.
# Vs R1,Rin R2,Rf Vin
# in3 +5.0 6.8 10 +2.98
# in4 +12.0 30 10 +3.00
# in5 -12.0 240 60 +3.00
# in6 -5.0 100 60 +3.00
# These would lead to these declarations:
# compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
# compute in4 ((30/10)+1)*@ , @/((30/10)+1)
# compute in5 -(240/60)*@ , -@/(240/60)
# compute in6 -(100/60)*@ , -@/(100/60)
# On almost any mainboard we have seen, the Winbond compute values lead to
# much better results, though.
# Vs R1,Rin R2,Rf Vin
# in4 +12.0 28 10 +3.00
# in5 -12.0 210 60.4 +3.00
# in6 -5.0 90.9 60.4 +3.00
# These leads to these declarations:
# compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
# compute in4 ((28/10)+1)*@ , @/((28/10)+1)
# compute in5 -(210/60.4)*@ , -@/(210/60.4)
# compute in6 -(90.9/60.4)*@ , -@/(90.9/60.4)
# Set statements set things like limits. Complete expressions can be
# used. Not everything can sensibly be set: setting 'in0', for example,
# is impossible! These settings are put through the compute translations;
# so if we specify '12.8' for in6, '3.2' will actually be written!
#set in0_max vid*1.05
#set in0_min vid*0.95
# Invalid statements tell certain features are not wanted. User programs can
# still read them if they really want, though; this is just an advisory
# marking. 'in0' would also invalidate 'in0_max' and 'in0_min'.
# The invalid keyword is not yet recognized by the parser.
# There is one other feature: the 'bus' statement. An example is below.
#bus "i2c-0" "SMBus PIIX4 adapter at e800" "Non-I2C SMBus adapter"
# If we refer from now on to 'i2c-0' in 'chip' lines, this will run-time
# be matched to this bus. So even if the PIIX4 is called 'i2c-5' at that
# moment, because five other adapters were detected first, 'i2c-0' in
# the config file would always only match this physical bus. In the above
# config file, this feature is not needed; but the next lines would
# only affect the LM75 chips on the PIIX4 adapter:
#chip "lm75-i2c-0-*"
# You should really use the output of /proc/bus/chips to generate bus lines,
# because one mistyped characted will inhibit the match. Wildcards are not
# yet supported; spaces at the end are ignored, though.
#### Here begins the real configuration file
chip "lm78-*" "lm78-j-*" "lm79-*" "w83781d-*" "sis5595-*"
# These are as advised in the LM78 and LM79 data sheets, and used on almost
# any mainboard we have seen.
label in0 "VCore 1"
label in1 "VCore 2"
label in2 "+3.3V"
label in3 "+5V"
label in4 "+12V"
label in5 "-12V"
label in6 "-5V"
# For positive voltages (in0..in4), two resistors are used, with the following
# formula (R1,R2: resistor values, Vs: read voltage, Vin: pin voltage)
# R1 = R2 * (Vs/Vin - 1)
# For negative voltages (in5, in6) two resistors are used, with the following
# formula (Rin,Rf: resistor values, Vs: read voltage, Vin: pin voltage)
# Rin = (Vs * Rf) / Vin
# Here are the official LM78 and LM79 data sheet values.
# Vs R1,Rin R2,Rf Vin
# in3 +5.0 6.8 10 +2.98
# in4 +12.0 30 10 +3.00
# in5 -12.0 240 60 +3.00
# in6 -5.0 100 60 +3.00
# These would lead to these declarations:
# compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
# compute in4 ((30/10)+1)*@ , @/((30/10)+1)
# compute in5 -(240/60)*@ , -@/(240/60)
# compute in6 -(100/60)*@ , -@/(100/60)
# On almost any mainboard we have seen, the Winbond compute values lead to
# much better results, though.
# Vs R1,Rin R2,Rf Vin
# in4 +12.0 28 10 +3.00
# in5 -12.0 210 60.4 +3.00
# in6 -5.0 90.9 60.4 +3.00
# These leads to these declarations:
compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
compute in4 ((28/10)+1)*@ , @/((28/10)+1)
compute in5 -(210/60.4)*@ , -@/(210/60.4)
compute in6 -(90.9/60.4)*@ , -@/(90.9/60.4)
# Here, we assume the VID readings are valid, and we use a max. 5% deviation
set in0_min vid*0.95
set in0_max vid*1.05
set in1_min vid*0.95
set in1_max vid*1.05
set in2_min 3.3 * 0.95
set in2_max 3.3 * 1.05
set in3_min 5.0 * 0.95
set in3_max 5.0 * 1.05
set in4_min 12 * 0.95
set in4_max 12 * 1.05
set in5_min -12 * 0.95
set in5_max -12 * 1.05
set in6_min -5 * 0.95
set in6_max -5 * 1.05
chip "w83782d-*" "w83783s-*"
# Same as above for w83781d except that in5 and in6 are computed differently.
# Rather than an internal inverting op amp, the 82d/83s use standard positive
# inputs and the negative voltages are level shifted by a 3.6V reference.
# The math is convoluted, so we hope that your motherboard
# uses the recommended resistor values.
label in0 "VCore 1"
label in1 "VCore 2"
label in2 "+3.3V"
label in3 "+5V"
label in4 "+12V"
label in5 "-12V"
label in6 "-5V"
label in7 "V5SB"
label in8 "VBat"
compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1)
compute in4 ((28/10)+1)*@ , @/((28/10)+1)
compute in5 (5.14 * @) - 14.91 , (@ + 14.91) / 5.14
compute in6 (3.14 * @) - 7.71 , (@ + 7.71) / 3.14
compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1)
# set limits to 5% for the critical voltages
# set limits to 10% for the non-critical voltages
# set limits to 20% for the battery voltage
set in0_min vid*0.95
set in0_max vid*1.05
set in1_min vid*0.95
set in1_max vid*1.05
set in2_min 3.3 * 0.95
set in2_max 3.3 * 1.05
set in3_min 5.0 * 0.95
set in3_max 5.0 * 1.05
set in4_min 12 * 0.90
set in4_max 12 * 1.10
set in5_min -12 * 0.90
set in5_max -12 * 1.10
set in6_min -5 * 0.95
set in6_max -5 * 1.05
set in7_min 5 * 0.95
set in7_max 5 * 1.05
set in8_min 3.0 * 0.80
set in8_max 3.0 * 1.20
# set up sensor types (thermistor is default)
# 1 = PII/Celeron Diode; 2 = 3904 transistor;
# 3435 = thermistor with Beta = 3435
# If temperature changes very little, try 1 or 2.
# set sensor1 1
# set sensor2 2
# set sensor3 3435
chip "gl518sm-r00-*" "gl518sm-r80-*"
# Factors and labels taken from GL518SM datasheet, they seem to give
# reasonable values with EISCA connected Fan78
label vdd "+5V"
label vin1 "+3.3V"
label vin2 "+12V"
label vin3 "Vcore"
# vin2 depends on external resistors (4,7k and 15k assumed here)
# vin1 and vin3 require no scaling
compute vin2 (197/47)*@ , @/(197/47)
set vdd_min 4.8
set vdd_max 5.2
set vin1_min 3.20
set vin1_max 3.40
set vin2_min 11.0
set vin2_max 13.0
set vin3_min 2.10
set vin3_max 2.30
chip "lm80-*"
# The values below should be correct if you own a qdi BX (brilliant1)
# mainboard. If not, please contact us, so we can figure out better readings.
# Many thanks go to Peter T. Breuer <ptb@it.uc3m.es> for helping us figure
# out how to handle the LM80.
# For positive voltages (in0..in4), two resistors are used, with the following
# formula (R1,R2: resistor values, Vs: read voltage, Vin: pin voltage)
# R1 = R2 * (Vs/Vin - 1)
# For negative voltages (in5, in6) two resistors are used, with the following
# formula (R3,R4: resistor values, Vs: read voltage, Vin: pin voltage,
# V5: +5V)
# R3 = R4 * (Vs - Vin) / (Vin - V5)
# Here are the official LM78 and LM79 data sheet values.
# Vs R1,R3 R2,R4 Vin
# +2.5V 23.7 75 +1.9
# +3.3V 22.1 30 +1.9
# +5.0 24 14.7 +1.9
# +12.0 160 30.1 +1.9
# -12.0 160 35.7 +1.9
# -5.0 36 16.2 +1.9
# Now curiously enough, VCore is connected with (unknown) resistors, which
# translate a +2.8V to +1.9V. So we use that in the computations below.
label in0 "+5V"
label in1 "VTT"
label in2 "+3.3V"
label in3 "+Vcore"
label in4 "+12V"
label in5 "-12V"
label in6 "-5V"
compute in0 (24/14.7 + 1) * @ , @ / (24/14.7 + 1)
compute in2 (22.1/30 + 1) * @ , @ / (22.1/30 + 1)
compute in3 (2.8/1.9) * @, @ * 1.9/2.8
compute in4 (160/35.7 + 1) * @, @ / (160/35.7 + 1)
compute in5 (160/35.7)*(@ - in0) + @, (@ + in0 * 160/25.7)/ (1 + 160/25.7)
compute in6 (36/16.2)*(@ - in0) + @, (@ + in0 * 36/16.2) / (1 + 36/16.2)
set in0_min 5 * 0.95
set in0_max 5 * 0.95
# What is your VTT? It is probably not this value...
set in1_min 2*0.95
set in1_max 2*1.05
set in2_min 3.3 * 0.95
set in2_max 3.3 * 1.05
# What is your VCore? It is probably not this value...
set in3_min 1.9 * 0.95
set in3_max 1.9 * 1.05
set in4_min 12 * 0.95
set in4_max 12 * 1.05
set in5_min -12 * 0.95
set in5_max -12 * 1.05
set in6_min -5 * 0.95
set in6_max -5 * 1.05
chip "maxilife-cg-*" "maxilife-co-*" "maxilife-as-*"
label fan1 "HDD Fan"
label fan2 "PCI Fan"
label fan3 "CPU Fan"
label temp2 "PCI Temp"
label temp4 "HDD Temp"
label temp5 "CPU Temp"
label vid1 "V+12"
# vid1 need to be scaled by 6.337 other voltages
# require no scaling
compute vid1 6.337*@ , @/6.337
chip "maxilife-cg-*"
# invalid temp1
label temp3 "BX Temp"
label vid2 "Vcpu1"
label vid3 "Vcpu2"
# invalid vid4
chip "maxilife-co-*"
label temp1 "CPU 1 Temp"
label temp3 "CPU 2 Temp"
label vid2 "Vcpu1"
label vid3 "Vcpu2"
label vid4 "VcacheL2"
chip "maxilife-as-*"
# invalid temp1
# invalid temp3
label vid2 "Vcpu"
# invalid vid3
# invalid vid4
bus "i2c-0" "SMBus PIIX4 adapter at 5000" "Non-I2C SMBus adapter"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?386ADF3B.EF6E12FA>
