Monitoring temperature with acpi (sysctls)

John Baldwin john at baldwin.cx
Tue Aug 1 18:25:07 UTC 2006


On Monday 31 July 2006 09:35, Oliver Fromme wrote:
> John Baldwin wrote:
>  > Mike Jakubik wrote:
>  > > I tried that, unfortunately it does not work. All i want to know is if 
>  > > this a shortcoming of freebsd or the motherboard, if its the later, i 
>  > > will contact the manufacturer.
>  > 
>  > If ACPI doesn't include the sysctl's that's due to your BIOS, not 
FreeBSD.
>  > You can verify by doing an acpidump and seeing if you have any thermal
>  > zones listed in your ASL.
> 
> I have a similar problem.  This is what sysctl says:
> 
> hw.acpi.thermal.tz0.temperature: 8.3C
> hw.acpi.thermal.tz0.active: -1
> hw.acpi.thermal.tz0.passive_cooling: 1
> hw.acpi.thermal.tz0.thermal_flags: 0
> hw.acpi.thermal.tz0._PSV: 9.8C
> hw.acpi.thermal.tz0._HOT: -1
> hw.acpi.thermal.tz0._CRT: 31.3C
> hw.acpi.thermal.tz0._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
> dev.acpi_tz.0.%desc: Thermal Zone
> dev.acpi_tz.0.%driver: acpi_tz
> dev.acpi_tz.0.%location: handle=\_TZ_.THM0
> dev.acpi_tz.0.%pnpinfo: _HID=none _UID=0
> 
> The value of tz0.temperature is always 8.3C and never seems
> to change.  In reality it should be rathe 20C and change
> slightly during day and night.
> 
> This is an excerpt from "acpidump -d" on that machine, which
> seems to imply that it _should_ support thermal readings
> (but I'm not a low-level ACPI expert):
> 
>     Scope (_TZ)
>     {
>         Name (\TEMP, 0x0AFF)
>         ThermalZone (THM0)
>         {
>             Name (_TSP, 0x3C)
>             Name (_TC1, 0x04)
>             Name (_TC2, 0x04)
>             Name (_PSL, Package (0x01)
>             {
>                 \_PR.CPU0
>             })
>             Method (_PSV, 0, NotSerialized)
>             {
>                 Store ("_PSV Method", Debug)
>                 Return (0x0B0E)
>             }
>             Method (_SCP, 1, NotSerialized)
>             {
>                 Notify (THM0, 0x81)
>             }
>             Method (_TMP, 0, NotSerialized)
>             {
>                 Store ("_TMP Method", Debug)
>                 Return (TEMP)
>             }
>             Method (_CRT, 0, NotSerialized)
>             {
>                 Store ("_CRT Method", Debug)
>                 Return (0x0BE5)
>             }
>         }
>     }
> 
> Is it a bug in the ACPI BIOS or a bug in FreeBSD code?

Well, your _TMP method just returns the TEMP constant.  It may be that your 
BIOS is supposed to be overwriting the TEMP constant periodically.  It's not 
a bug in FreeBSD though.

-- 
John Baldwin


More information about the freebsd-stable mailing list