Acpi драйвер для linux

ACPI/ru

ACPI (Advanced Configuration and Power Management Interface – усовершенствованный интерфейс управления конфигурацией и питанием) – это система управления питанием, являющаяся частью BIOS.

Установка

Ядро

Для работы ACPI необходимо активировать следующие опции ядра:

Power management and ACPI options ---> [*] Power Management support [*] ACPI (Advanced Configuration and Power Interface) Support --->
Дополнительные драйверы

Опция Модуль Рекомендуется? Описание
Устаревшие файлы в /proc/acpi No Создаёт устаревшие файлы в файловой системе procfs, которые теперь заменены файлами в файловой системе sysfs.
Устаревшие папки для контроля питания в /proc/acpi No Создаёт устаревшие файлы в файловой системе procfs, которые теперь заменены файлами в файловой системе sysfs.
Доступ к встроенному контроллеру (EC) для чтения/записи через /sys/kernel/debug/ec ec-debugfs No Отладочный интерфейс для встроенного контроллера.
Устаревшая поддержка /proc/acpi/event No Создаёт устаревшие файлы в файловой системе procfs, которые теперь заменены input layer или событиями netlink.
Адаптер переменного тока (AC adapter) ac Для ноутбуков Создаёт файлы, указывающие, подключена ли ваша система к сети переменного тока.
Аккумулятор (Battery) battery Для ноутбуков Создаёт файлы, указывающие, питается ли ваша система от батареи.
Кнопка (Button) button Обрабатывает события, связанные с кнопками питания, сна и закрывающейся крышкой.
Видео (Video) video Поддерживает основные операции для графических адаптеров.
Кулер (Fan) fan Поддерживает вентиляторы с интерфейсом ACPI, позволяя пользовательским приложениям выполнять базовое управление вентиляторами (включение, выключение, состояние).
Док (Dock) dock Поддерживает док-станции с интерфейсом ACPI и съёмные отсеки для дисков, см. статью acpi dock.
Процессор (Processor) processor Устанавливает ACPI в качестве обработчика режима ожидания для Linux и использует состояния процессора ACPI C2 и C3 для экономии энергии.
Агрегатор процессора (Processor Aggregator) processor-aggregator Функция ACPI 4.0 для выполнения специфической конфигурации и управления процессором.
Thermal Zone thermal Yes Поддерживает ACPI Thermal Zone для защиты процессора от перегрева.
Поддержка NUMA
Сообщения об отладке (Debug statements) No
Драйвер обнаружения слота PCI pci-slot No Помогает сопоставить адреса шины PCI с физическими слотами
Container and Module Devices container Поддерживает устройства ACPI Container and Module для горячего подключения узлов, процессоров и памяти.
Smart Battery System sbs, sbshc Поддерживает другой тип доступа к информации об аккумуляторе, встречающийся на некоторых ноутбуках.
Hardware Error Device hed Поддерживает «ardware Error Device», которое используется для сообщения о некоторых аппаратных ошибках.
Разрешить вставку/замену методов ACPI во время работы системы custom-method No
ACPI Platform Error Interface (APEI) APEI позволяет сообщать операционной системе об ошибках (например, от чипсета).
Читайте также:  Renaming user in linux

Установка

Окружение рабочего стола реагирует на общие события, генерируемые ACPI. В случае если окружение рабочего стола не установлено и нужно или чтобы система реагировала на особые события, можно установить пакет ACPI. Установка пакета sys-power/acpid:

USE-флаги

Некоторые пакеты знают о глобальном USE-флаге acpi . На данный момент нет каких-либо use-флагов для sys-power/acpid.

SELinux

Чтобы acpid мог выключить SELinux подсистему, убедитесь, что пакет sec-policy/selinux-shutdown установлен и испольняемый файл /sbin/shutdown перемаркирован:

Настройка

Скрипты, находящиеся в /etc/acpi определяют как система должна реагировать на события ACPI. Они могут быть отредактированы под потребности пользователя.

Сервисы

OpenRC

Сервис acpid теперь может быть запущен. В случае использования OpenRC запустите:

Добавьте сервис acpid на уровень запуска по умолчанию, чтобы сервис он запускался во время загрузки:

systemd

В случае если systemd используется как система инициализцации, включите сервис acpid для запуска во время загрузки запустив:

Чтобы запустить сервсис сейчас:

Расширенные примеры

Настройки ACPI по умолчанию могут быть удовлетворительными для некоторых пользователей, тем не менее небольшие дополнительные настройки могут быть необходимы чтобы демон acpid правильно обрабатывал некоторые базовые ACPI события (подключение/отключение источника бесперебойного питания, мультимедия кнопки и так далее).

При необходимости изменения могут быть внесены в /etc/acpi/default.sh вместе с /etc/acpi/events/default . Почему бы не создать сложную установку, использующую возможности /etc/acpi/actions и /etc/acpi/events ? Просто добавьте сценарии и файлы событий в данные расположения для продвинутого использования.

Базового файла default.sh скорее всего будет достаточно для большинства пользователей, однако ниже представлен пример того, что может быть сделано с использованием default.sh :

 
#!/bin/sh # # $Header: /etc/acpi/default.sh Exp $ # $Author: (c) 2012-2014 -tclover Exp $ # $License: MIT (or 2-clause/new/simplified BSD) Exp $ # $Version: 2014/12/24 21:09:26 Exp $ # log()  logger -p daemon "ACPI: $*"; > uhd()  log "event unhandled: $*"; > set $* group=$1%/*> action=$1#*/> device=$2 id=$3 value=$4 [ -d /dev/snd ] && alsa=true || alsa=false [ -d /dev/oss ] && oss=true || oss=false amixer="amixer -q set Master" ossmix="ossmix -- vmix0-outvol" case $group in ac_adapter) case $value in *0) log "switching to power.bat power profile" hprofile power.bat;; *1) log "switching to power.adp power profile" hprofile power.adp;; *) uhd $*;; esac ;; battery) case $value in *0) log "switching to power.adp power profile" hprofile power.adp;; *1) log "switching to power.adp power profile" hprofile power.adp;; *) uhd $*;; esac ;; button) case $action in lid) case "$id" in close) hibernate-ram;; open) :;; *) uhd $*;; esac ;; power) shutdown -H now;; sleep) hibernate-ram;; mute) $alsa && $amixer toggle;; volumeup) $alsa && $amixer 3dB+ $oss && $ossmix +3;; volumedown) $alsa && $amixer 3dB- $oss && $ossmix -3;; *) uhd $*;; esac ;; cd) case $action in play) :;; stop) :;; prev) :;; next) :;; *) uhd $*;; esac ;; jack) case $id in *plug) :;; *) uhd $*;; esac ;; video) case $action in displayoff) :;; *) uhd $*;; esac ;; *) uhd $*;; esac unset alsa oss amixer ossmix group action device id # vim:fenc=utf-8:ft=sh:ci:pi:sts=4:sw=4:ts=4: 

Заметка
Стоит отметить, что приведённый выше скрипт совместим и с ALSA, и с OSS, поэтому при переключении между ними никаких дополнительных действий не требуется. Не бойтесь редактировать скрипт!

Заметка
Приведённый выше скрипт также использует профиль управления питанием с помощью hprofile. См. статью hprofile для получения дополнительных сведений.

Userspace utilities

Many packages use ACPI functions. A few are listed here:

  • sys-power/acpi: to show information from the /proc filesystem, such as battery status or thermal information
  • sys-power/acpitool: a small command line application, intended to be a replacement for the apm tool
  • sys-power/acpilight: replacement for xbacklight that uses the ACPI interface to set brightness
  • app-laptop/laptop-mode-tools: linux kernel laptop_mode user-space utilities
  • x11-misc/cbatticon: a lightweight and fast battery icon that sits in your system tray
  • app-admin/conky: an advanced, highly configurable system monitor for X

См. также

  • ACPI/ThinkPad-special-buttons — describes how to configure ACPI events and actions for the Lenovo ThinkPad T410 laptop.
  • Suspend and hibernate — describes how to suspend or hibernate a Gentoo system.
  • Knowledge Base:Disabling ACPI support at boot time

Источник

ACPI modules

The Advanced Configuration and Power Interface (ACPI) specification was developed to establish industry common interfaces enabling robust operating system (OS) directed motherboard device configuration and power management of both devices and entire systems. ACPI is the key element in OS-directed configuration and Power Management (OSPM).

ACPI modules are kernel modules for different ACPI parts. They enable special ACPI functions or add information to /proc or /sys . These information can be parsed by acpid for events or other monitoring applications.

Which modules are available?

This is a small list and summary of ACPI kernel modules:

  • ac (power connector status)
  • asus-laptop (useful on ASUS/medion laptops)
  • battery (battery status)
  • bay (bay status)
  • button (catch button events, like LID or POWER BUTTON)
  • container (container status)
  • dock (docking station status)
  • fan (fan status)
  • i2c_ec (EC SMBus driver)
  • thinkpad_acpi (useful on Lenovo ThinkPad laptops)
  • processor (processor status)
  • sbs (smart battery status)
  • thermal (status of thermal sensors)
  • toshiba_acpi (useful for Toshiba laptops)
  • video (status of video devices)

A complete list for your running kernel can be obtained with the following command:

$ ls -l /usr/lib/modules/$(uname -r)/kernel/drivers/acpi
total 112 -rw-r--r-- 1 root root 2808 Aug 29 23:58 ac.ko.gz -rw-r--r-- 1 root root 3021 Aug 29 23:58 acpi_ipmi.ko.gz -rw-r--r-- 1 root root 3354 Aug 29 23:58 acpi_memhotplug.ko.gz -rw-r--r-- 1 root root 4628 Aug 29 23:58 acpi_pad.ko.gz drwxr-xr-x 2 root root 4096 Aug 29 23:59 apei -rw-r--r-- 1 root root 7120 Aug 29 23:58 battery.ko.gz -rw-r--r-- 1 root root 3700 Aug 29 23:58 button.ko.gz -rw-r--r-- 1 root root 2181 Aug 29 23:58 container.ko.gz -rw-r--r-- 1 root root 1525 Aug 29 23:58 custom_method.ko.gz -rw-r--r-- 1 root root 1909 Aug 29 23:58 ec_sys.ko.gz -rw-r--r-- 1 root root 2001 Aug 29 23:58 fan.ko.gz -rw-r--r-- 1 root root 1532 Aug 29 23:58 hed.ko.gz -rw-r--r-- 1 root root 3241 Aug 29 23:58 pci_slot.ko.gz -rw-r--r-- 1 root root 17742 Aug 29 23:58 processor.ko.gz -rw-r--r-- 1 root root 3073 Aug 29 23:58 sbshc.ko.gz -rw-r--r-- 1 root root 7098 Aug 29 23:58 sbs.ko.gz -rw-r--r-- 1 root root 6311 Aug 29 23:58 thermal.ko.gz -rw-r--r-- 1 root root 8891 Aug 29 23:58 video.ko.gz

How to select the correct ones

You have to try yourself which module works for your machine using modprobe yourmodule , then check if the module is supported on your hardware by using dmesg. It may help to add a grep text search to narrow your results:

[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 5.066752] ACPI: acpi_idle yielding to intel_idle [ 5.438998] acpi device:04: registered as cooling_device4

You can load the module at boot to make the change permanent for the working ones.

Getting information

To read out battery information, you can simply install the package acpi and run acpi -i .

Using /proc to store ACPI information has been discouraged and deprecated since Linux 2.6.24. The same data is available in /sys now, and interested parties can (should) subscribe to ACPI events from the kernel via netlink. For example, for battery:

Troubleshooting

DSDT fix

If problems with power management persist despite having loaded the proper modules, a Linux-unfriendly DSDT might be the cause.

ACPI fix for notebooks

Sometimes you see "ACPI: EC: input buffer is not empty, aborting transaction". This is a problem with ACPI, more specifically an incompatibility of the BIOS. There may be four ways to solve this issue:

  • If available, flash BIOS.
  • Use acpi=off as kernel parameter, however this will kill all ACPI functionality like battery charging and power saving.
  • In some cases disabling DPMS has been reported to solve the issue [1]. However, screen brightness may no longer be fully controllable:

See also

Источник

Оцените статью
Adblock
detector