пятница, 30 января 2009 г.

Настройка lm_sensors для Asus P5E3

Стандартная конфигурация lm_sensors с помощью sensors-detect нашла правильные модули для мониторинга и они показывали нормальные данные кроме вольтажа, который отличался на ±10% от номинала. И это слегка надоедало мне.

Наконец, после прочтения статьи из вики lm_sensors Asus article, я смог найти правильные формулы для вольтажа которые совпадали бы со значениями в BIOS’е.

Сначала, надо было декомпилировать таблицы ACPI (пакет iasl должен быть установлен):
# cat /proc/acpi/dsdt > dsdt.bin
# iasl -d dsdt.bin

Расшифровывание всей этой ACPI магии которая запишется в dsdt.dsl — не очень простая задача. Я искал функцию RVLT которая даёт формулу для вольтажа:
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)
} 

Переводя на нормальный язык она делает примерно следующее:
Local1 = VGET(Local0);
Local2 = VPAR[Local0][0];
Local3 = VPAR[Local0][1];
Local4 = VPAR[Local0][2];
return Local1 * (Local2 + Local3) / Local3 + Local4;

Чтобы найти параметры Local для каждого из сенсоров, пришлось найти определение VPAR:
Name (VPAR, Package (0x04)
{
    Package (0x03)
    {
        Zero,
        One,
        Zero
    },

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

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

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

Сравнивая это с порядком данных в других местах таблицы (VCore, +3.3V, +12V, +5V) можно высмотреть, что правильные коэффициенты для +12V — это 60/10, а для +5V — это 20/10.

Получившийся конфиг тут.

воскресенье, 11 января 2009 г.

Последний подарок GSoC

Наконец-то, ко мне приехала майка GSoC. Её приезд оказался полной неожиданностью, так как никакого обещанного номера от FedEx я не получал. Так что, Summer of Code 2008 официально закончился. Начался 2009! :)