Friday, 30 January 2009

Configuring lm_sensors for Asus P5E3 motherboard

Standard configuration of lm_sensors with sensors-detect find right monitoring chip and it was showing all reasonable data except voltage, that was differing by more than 10% of nominal. And it was slightly bothering me.

Finally, after reading lm_sensors Asus article, I was able to craft right voltage sensor formulas for my Asus P5E3 motherboard that give the same values as BIOS.

First, need to decompile description tables (iasl package had to be installed):
# cat /proc/acpi/dsdt > dsdt.bin
# iasl -d dsdt.bin

Deciphering all ACPI magic that is written to dsdt.dsl is not very easy. I was looking for RVLT function that gives the formula for voltage:
Method (RVLT, 1, NotSerialized)
{
    And (Arg0, 0xFFFF, Local0)
    Store (VGET (Local0), Local1)
    Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), Zero)),
        Local2)
    Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), One)),
        Local3)
    Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x02)),
        Local4)
    Multiply (Local1, Add (Local2, Local3), Local5)
    Divide (Local5, Local3, , Local5)
    Add (Local5, Local4, Local5)
    Return (Local5)
} 

Translating to normal language it does approximately the following:
Local1 = VGET(Local0);
Local2 = VPAR[Local0][0];
Local3 = VPAR[Local0][1];
Local4 = VPAR[Local0][2];
return Local1 * (Local2 + Local3) / Local3 + Local4;

To find out Local parameters for each sensors, need to look at VPAR definition:
Name (VPAR, Package (0x04)
{
    Package (0x03)
    {
        Zero,
        One,
        Zero
    },

    Package (0x03)
    {
        0x22,
        0x22,
        Zero
    },

    Package (0x03)
    {
        0x14,
        0x0A,
        Zero
    },

    Package (0x03)
    {
        0x3C,
        0x0A,
        Zero
    }
})

Comparing this to order of data in other places of tables (VCore, +3.3V, +12V, +5V) one can see that right coefficients for +12V is 60/10 and for +5V is 20/10.

Resulting config is here.

Sunday, 11 January 2009

Final GSoC gift

Finally, I’ve received my t-shirt. That was complete surprise for me, as I didn’t get any FedEx tracking number. So, Summer of Code 2008 is officially end for me. 2009 starts! :)