Документация по ОС FreeBSD Пятница, 29.03.2024, 12:34
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » X Window

Использование ACPI во FreeBSD 6.2 на ThinkPad T42 [2007]

Прежде всего, для нормальной поддержки ACPI нужно загрузить два модуля, указав их в /boot/loader.conf:

  
acpi_video_load="YES"

acpi_ibm_load="YES"

  
Первый модуль нужен для того, чтобы после просыпания нормально работало видео, а второй — чтобы devd мог обрабатывать события при нажатии Fn-клавиш.
  
Надо заметить, что если эти модули собрать статически в ядре
 

device  acpi_video

device  acpi_ibm

  
то они не будут работать. Скорее всего, это специфика модулей acpi.
  
Модулю acpi_video нужно разрешить сбрасывать видео после просыпания:
  
sysctl hw.acpi.reset_video=1
  
Если засыпание было вызвано в X Window, то сначала делается переключение из графики в текстовую консоль, а уже затем происходит собственно засыпание. Это переключение можно запретить с помощью
  
sysctl hw.syscons.sc_no_suspend_vtswitch=1
  
однако при просыпании на экране ничего не будет видно и нужно вручную переключиться в текстовый режим, а затем обратно в X Window.
  
Для того, чтобы некоторые устройства нормально работали после просыпания, их нужно сначала выключить в скрипте /etc/rc.suspend, а затем включить снова в скрипте /etc/rc.resume. В мой /etc/rc.suspend я добавил отключение wifi, мыши и полное отключение подсветки LCD:
  
# kldunload usb

 

/etc/rc.d/netif stop iwi0

/etc/rc.d/moused stop

/usr/local/bin/radeontool light off

 

logger -t $subsystem suspend at `date +'%Y%m%d %H:%M:%S'`
 

Скрипт /etc/rc.resume делает обратную процедуру:

  
# kldload usb

 

/usr/local/bin/radeontool light on

/etc/rc.d/moused start

/etc/rc.d/netif start iwi0

 

logger -t $subsystem resumed at `date +'%Y%m%d %H:%M:%S'`

  
Явное выключение подсветки LCD нужно потому, что, по-видимому, BIOS при засыпании сам этого не делает, и из-за этого в спящем режиме быстрее расходуется батарея. Программа radeontool берётся из порта  sysutils/radeontool.
  
Однако скрипт /etc/rc.suspend запускается только в том случае, если засыпание было вызвано командой acpiconf -s 3, а по клавише Fn-F4 он не запускается. Поэтому нужно отменить действие этой клавиши
  
sysctl hw.acpi.sleep_button_state=NONE
  
и разрешить генерацию событий по нажатию Fn-клавиш:
  
sysctl dev.acpi_ibm.0.events=1
  
Эти события будут обрабатываться демоном devd. Для клавиши Fn-F4 в файл /etc/devd.conf нужно добавить описание того, что нужно запускать при её нажатии (код 0x04):
  
notify 10 {

        match "system"          "ACPI";

        match "subsystem"       "IBM";

        match "notify"          "0x04";

        action                  "/usr/sbin/acpiconf -s 3";

};

  
Аналогично можно добавить выключение и включение экрана при нажатии клавиши Fn-F3:
  
notify 10 {

        match "system"          "ACPI";

        match "subsystem"       "IBM";

        match "notify"          "0x03";

        action                  "/etc/local/backlight";

};

  
Скрипт /etc/local/backlight:
  
#!/bin/sh

 

radeontool=/usr/local/bin/radeontool

  
on="The radeon backlight looks on"

 

if [ "`$radeontool light`" = "$on" ]; then

    $radeontool light off

else

    $radeontool light on

fi

  
При закрывании ноутбука можно настроить переход в спящий режим по аналогии с обработкой клавиши Fn-F4. Я же предпочёл только полное выключение LCD:
  
notify 10 {

        match "system"          "ACPI";

        match "subsystem"       "Lid";

        match "notify"          "0x00";

        action                  "/usr/local/bin/radeontool light off";

};

 

notify 10 {

        match "system"          "ACPI";

        match "subsystem"       "Lid";

        match "notify"          "0x01";

        action                  "/usr/local/bin/radeontool light on";

};

  
И в заключение, несколько рекомендаций по увеличению времени работы при питании от батареи:
 
  собрать в ядре модуль
  
device          cpufreq
  
или загрузить его в /boot/loader.conf:
  
cpufreq_load="YES"
  
разрешить запуск powerd в /etc/rc.conf:
  
powerd_enable="YES"

powerd_flags="-a maximum -b adaptive"

  
разрешить динамическое изменение частоты видео-чипа в /etc/X11/xorg.conf:
  
Section "Device"

    VendorName  "ATI Technologies Inc"

    Driver      "ati"

    Option      "DynamicClocks" "on"

    ...

EndSection

  
уменьшить частоту переключения процессов с 1000Hz до 100Hz в ядре
  
options         HZ=100


Источник: http://www.sysoev.ru/freebsd/t42_acpi.html
Категория: X Window | Добавил: oleg (07.02.2008) | Автор: Игорь Сысоев
Просмотров: 1807 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024