Установка поля ACPI в Linux - PullRequest
1 голос
/ 03 мая 2010

У меня нетбук, на котором мне нравится вентилятор. Я нашел решение для снижения шума вентилятора только для Windows, но на этом компьютере я использую Ubuntu.

В решении Windows парень использует программу под названием Notebook Hardware Control (NHC), которая, насколько я могу судить, считывает и устанавливает значения ACPI. (http://hpmini110c.siteboard.eu/f3t31-lueftersteuerung-fuer-den-mini.html, соответствующий источник в 7z-файле, в .cs-файле есть C # -файл с логикой включения вентилятора)

Часть, которую я хотел бы найти способ тиражировать в среде Linux:

# Where the value is being set
write = ACPI.FIELD.Write("_SP.PCIO.SBRG.ECO.CTPM", 40);
# Reading the temperature
int temp1 = 0;
bool _tmp = APCI.FIELD.Read("_SB.PCIO.SBRG.ECO.TPM1", ref temp1)

Я буду честен, потому что у меня над головой это, но если бы кто-то мог подтолкнуть меня в правильном направлении, я был бы очень благодарен!

Ответы [ 3 ]

5 голосов
/ 12 сентября 2011

Михал Котман создал модуль ядра, который позволяет выполнять такие команды ACPI. Он был разработан для вызова команд для переключения видеокарт, но может использоваться и для других целей. Доступно с Github , инструкции по установке ниже:

  1. Установить заголовки ядра, соответствующие текущему ядру
  2. Получить исходный код и собрать его

    git clone git://github.com/mkottman/acpi_call.git
    cd acpi_call
    make
    
  3. Загрузить модуль:

    /sbin/insmod acpi_call.ko
    

    Если все прошло хорошо, теперь у вас должен быть /proc/acpi/call "файл".

  4. Чтобы выполнить команду, запишите ее в /proc/acpi/call. Я полагаю, вы сделали опечатку с _SP и заменили ее на \_SB:

    echo '\_SB.PCIO.SBRG.ECO.CTPM' > /proc/acpi/call
    
  5. Чтобы получить результат этой команды, проверьте журнал ядра (dmesg) или прочитайте результат:

    cat /proc/acpi/call
    

    После прочтения значение будет очищено, поэтому обязательно сохраните вывод где-нибудь, если вы захотите использовать его позже.

0 голосов
/ 30 ноября 2010

Reflector говорит, что NHC.exe является управляемой сборкой и содержит классы, которые предоставляют ACPI.FIELD.Write() и ACPI.FIELD.Read() и так далее. Автор NHC описал в файле chm, как создавать свои собственные классы, которые включают в себя вызовы этих вещей, для определенных типов оборудования, что-то вроде модели плагинов.

Вместо того, чтобы помещать .DLL, вы помещаете фактический код C # в специальную папку; очевидно, nhc.exe динамически компилирует и запускает этот код при запуске nhc.exe. Если все это так, вы сможете написать свое собственное приложение, использующее вызовы ACPI.FIELD.Read и Write, скомпилировать его в исполняемый файл, указав nhc.exe в качестве ссылки.

Однако, кикер - это то, что nhc.exe запутан, и все эти классы не видны. Поэтому вы не можете просто запустить csc.exe и ссылаться на nhc.exe. Я не знаю точно, но мне кажется, что этот код можно запустить только в контексте nhc.exe, который выполняет специальную компиляцию для его обработки.

Другая плохая новость заключается в том, что разработка NHC, похоже, прекратилась; сайт форума мертв, а последнее обновление было от 2007 года.

0 голосов
/ 03 мая 2010

Не уверен, что это именно то, что вы хотите, но изучили ли вы lm_sensors ? Они поддерживают мониторинг hw с драйверами ядра, но предоставляют библиотеку пространства пользователя.

...