Пытаюсь сделать через запись в /sys/class/rtc/rtc0/wakealarm
И возникло несколько вопросов, может кто-нибуть поможет разобраться.
Во всех руководствах говориться о необходимости переведения времени BIOS в UTC, а как должна выглядеть команда записи в файл /sys/class/rtc/rtc0/wakealarm если апаратные часы BIOS не в UTC.
Нужно-ли изменять файл /etc/init.d/hwclock.sh или достаточно вписать значение HWCLOCKACCESS=no в файл /etc/default/rc.S
Команда dmesg | grep rtc выдаёт
text
[ 0.758901] rtc_cmos 00:04: RTC can wake from S4
[ 0.758946] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[ 0.758982] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs
[ 0.760929] rtc_cmos 00:04: setting system clock to 2012-01-17 12:30:30 UTC (1326803430)
Это значит что компьютер будет включаться из ждущего режима?
просто добавить/отнять [в каком вы там часом поясе] часов. не?
хз по идее в файл /sys/class/rtc/rtc0/wakealarm должно писаться количесво секунд прошедших с начала эпохи Unix(время включения) и меня интересует как это сделать если время в BIOS не UTC
wakealarm: The time at which the clock will generate a system wakeup
event. This is a one shot wakeup event, so must be reset
after wake if a daily wakeup is required. Format is either
seconds since the epoch or, if there's a leading +, seconds
in the future.
надо просто подумать, прибавить 3 часа или отнять...
как получить unix-время man date, внимание на формат %s, ключик --date и переменную TZ.
для начала экспериментов я бы всё же перевёл всё время в UTC, а то, когда не получится долго прдётся думать, где же собака зарыта: "ресьюм не сработал или время не правильное"...
Выключаю компьютер,через 5 минут он не включаеться. Я это ожидал потому что alarm_IRQ : no
Не пойму в чём ошибка? И обязательно-ли время в BIOS должно быть UTC ?
остаётся только сравнить значения /sys/class/rtc/rtc0/wakealarm и /sys/class/rtc/rtc0/since_epoch после установки будильника. если первое больше второго на вменяемое время, то пока больше идей нет =/
stalker_tk написал:
alarm_IRQ : no
это изменяется сразу после hwclock --systohc или только после перезагрузки?
если сразу, то покажите strace hwclock --systohc - посмотрим, что он творит...
stalker_tk написал:
И обязательно-ли время в BIOS должно быть UTC ?
пока точно не могу сказать... в теории - нет. ИРЛ - шут его знает, что там накрутили...
[на всякий пожарный]
системное время не хотите менять, т.к. на той же железяке вертится ОС, которая не признаёт биос в utc?
это изменяется сразу после hwclock --systohc или только после перезагрузки?
если сразу, то покажите strace hwclock --systohc - посмотрим, что он творит...
select(4, [3], NULL, NULL, {5, 0}) = 1 (in [3], left {4, 62525})
ioctl(3, PHN_NOT_OH or RTC_UIE_OFF, 0) = 0
###### похоже не совсем то, из документации:
###### * RTC_UIE_ON, RTC_UIE_OFF ... if the RTC offers IRQs, the RTC framework
###### will emulate this mechanism.
Нашёл решение здесь команда от root echo `date -u --date "2012-01-18 23:50:00" +%s` > /sys/class/rtc/rtc0/wakealarm которая работает если время в BIOS совпадает с системным.
Хочу обратить внимание что команда с использованием sudo вида:
text
date -u --date "17:30:00" +%s | sudo tee /sys/class/rtc/rtc0/wakealarm
sudo sh -c "echo `date -u --date "2012-01-18 23:50:00" +%s` > /sys/class/rtc/rtc0/wakealarm"
лично у меня не работает(почему разбираться я не стал).
Кстати нашёл ещё один способ rtcwake сейчас разбираюсь. Поподробней здесь