ACPI Wakeup
Материал из RuVDRWiki
Содержание |
Введение
ACPI (Advanced Configuration and Power Interface) - это спецификация, которая определяет интерфейс через который соединена современная компьютерная аппаратура и операционная система. Вследствие этого операционная система не нуждается ни в каких сведениях о наличествующей аппаратуре, чтобы иметь возможность использовать эти аппаратные функции. ACPI - это совершенствование APM, PNPBIOS и других технологий. ACPI поддерживает также контроль потребления энергии, перевод компьютеров в состояние покоя и активизацию и деактивизацию устройств.
VDR и ACPI
К сожалению, в практике ACPI не всегда работает коректно с Linux. Принципиально считается, чем более актуальное в настоящее время используемое ядро (операционной системы) Linux и мат. плата включая версию BIOS, тем более перспективной является здесь запланированная затея.
Также не будем умалчивать, что в данное время поддерживается только время просыпания компьютера, день или дата не учитываются. Это значит, что компьютер будет просыпаться ежедневно в установленное время.
Установки BIOS
- Активируйте в BIOS обязательно ACPI.
- Деактивируйте возможно наличествующиеся функцию APM для просыпания компьютера посредством часов BIOS (RTC), например под "RTC Alarm Resume". Иначе различные функции могут мешать друг другу.
Тест
Перед тестом проверьте обязательно системное время и время установленное в BIOS.
Выполните следущую команду в консоли, подставив конечно ваше ауктуальное время:
echo "2006-10-22 23:59:59" >/proc/acpi/alarm
Проверьте также, прописалось ли время:
cat /proc/acpi/alarm
Если всё прописалось, тогда можно выключить компьютер
poweroff
и надеяться, что он проснётся в установленное время.
Инсталляция acpi-wakeup
tar xfj acpi-wakeup-0.1.tar.bz2 cd acpi-wakeup-0.1 gcc -o unix2iso8601 unix2iso8601.c cp unix2iso8601 /usr/bin cp vdrpoweroff.sh /usr/local/bin
При этом устанавливается программка, которая пересчитывает формат времени, который использует VDR в формат системного времени. Также нужно заменить используемый до этого скрипт для выключения компьютера на тот, что поставляется с acpi-wakeup.
Закоментируйте в файле /usr/local/bin/vdrpoweroff.sh неподходящие PATH-переменные:
#!/bin/sh ## export PATH=/bin newtime=$(($1 - 120 )) # 2 minutes earlier hwclock --systohc --utc echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm exec poweroff
Время просыпания ставится при этом на 2 минуты перед следующим запрограммированным таймером. Обратите внимание, что установки предполагают, что часы BIOS(RTC) установлены на время по GMT или UTC и не на "localtime". Такая установка имеет преимущество, так как в этом случае переход на летнее-зимнее время происходит автоматически.
Особенности
- Если имеются проблемы с автоматическим просыпанием компьютера, тогда пропишите в скрипт время просыпания два раза:
#!/bin/sh ## export PATH=/bin newtime=$(($1 - 120 )) # 2 minutes earlier hwclock --systohc --utc echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm exec poweroff
- Часто компьютер забывает также время просыпания после её установки, если при выключении компьютера HW-Clock (RTC) приравнивается времени системы. В Suse данная проблема решается, закоментировав следущие строчки в /etc/init.d/boot.clock:
stop)
if [ "$HOSTTYPE" != "s390" -a "$HOSTTYPE" != "s390x" ] ; then
## echo -n "Set Hardware Clock to the current System Time"
# write back to hardware clock and calculate adjtime
## /sbin/hwclock --systohc $HWCLOCK
rc_status -v -r
fi
;;
