Установка поля ACPI в Linux

У меня есть нетбук, который работает вентилятор немного раньше, на мой вкус. Я нашел решение только для 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 ответа

Михал Котман создал модуль ядра, который позволяет вам выполнять такие команды 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
    

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

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

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

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

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

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

Другие вопросы по тегам