Наконец, после прочтения статьи из вики 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.
Получившийся конфиг тут.