Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue.
Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la :
http://acpi.sourceforge.net/documentation/alarm.html
Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(
J'ai cherché sur google et dans les mailings list de acpi, amis je n'ai rien trouvé.
Est-ce que cela fonctionne ? Faut-il une version particuliere du noyau, de l'acpi ?
Je suis en noyau 2.4.23, mais je n'ai pas ma version acpi sous la main.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Erwann ABALEA
Bonjour,
On 10 May 2004, JJL wrote:
Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue. Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la : http://acpi.sourceforge.net/documentation/alarm.html Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce que je pensais, la couche ACPI utilise l'horloge RTC pour faire ce travail. Quand ton PC est éteint, historiquement, le seul composant qui fonctionne encore (sur pile) est l'horloge RTC, justement pour permettre à ton PC de ne pas perdre l'heure. Ce circuit RTC sait générer une interruption à une heure précise, et les PC savent maitenant se rallumer à la réception de cette interruption.
Manque de bol, le circuit RTC ne permet pas de spécifier une date pour la génération de l'interruption, seulement une heure. Ceci explique le comportement que tu obtiens.
En lisant les sources du noyau sur le sous-système ACPI, dans le fichier drivers/acpi/system.c, fonction acpi_system_write_alarm() (celle qui est appelée quand tu écris quelque chose dans /proc/acpi/alarm), on peut voir d'abord que des conversions sont effectuées sur les données que l'utilisateur fournit (le circuit RTC a la particularité de pouvoir au choix représenter la date et l'heure en binaire ou en BCD), puis les bonnes valeurs sont passées au circuit RTC:
----- /* write the fields the rtc knows about */ CMOS_WRITE(hr, RTC_HOURS_ALARM); CMOS_WRITE(min, RTC_MINUTES_ALARM); CMOS_WRITE(sec, RTC_SECONDS_ALARM); -----
Aucune info de date n'est prise en compte. Par contre, juste après, il y a du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce code va chercher dans la table ACPI les emplacements mémoire dans le circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- HC> Pourquoi les dates sont de la forme "04 Feb" et non "04 Fév", comme HC> on est en droit de l'attendre sur une hiérarchie francophone ? Pourquoi il y a tant d'enculeurs de mouches fainéants sur fr.* ? -+- AT in: Guide du Neuneu d'Usenet- Le dino n'est pas neuneutophone -+-
Bonjour,
On 10 May 2004, JJL wrote:
Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue.
Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la :
http://acpi.sourceforge.net/documentation/alarm.html
Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce
que je pensais, la couche ACPI utilise l'horloge RTC pour faire ce
travail. Quand ton PC est éteint, historiquement, le seul composant qui
fonctionne encore (sur pile) est l'horloge RTC, justement pour permettre à
ton PC de ne pas perdre l'heure. Ce circuit RTC sait générer une
interruption à une heure précise, et les PC savent maitenant se rallumer à
la réception de cette interruption.
Manque de bol, le circuit RTC ne permet pas de spécifier une date pour la
génération de l'interruption, seulement une heure. Ceci explique le
comportement que tu obtiens.
En lisant les sources du noyau sur le sous-système ACPI, dans le fichier
drivers/acpi/system.c, fonction acpi_system_write_alarm() (celle qui est
appelée quand tu écris quelque chose dans /proc/acpi/alarm), on peut voir
d'abord que des conversions sont effectuées sur les données que
l'utilisateur fournit (le circuit RTC a la particularité de pouvoir au
choix représenter la date et l'heure en binaire ou en BCD), puis les
bonnes valeurs sont passées au circuit RTC:
-----
/* write the fields the rtc knows about */
CMOS_WRITE(hr, RTC_HOURS_ALARM);
CMOS_WRITE(min, RTC_MINUTES_ALARM);
CMOS_WRITE(sec, RTC_SECONDS_ALARM);
-----
Aucune info de date n'est prise en compte. Par contre, juste après, il y a
du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce
code va chercher dans la table ACPI les emplacements mémoire dans le
circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit
RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)
--
Erwann ABALEA <erwann@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
HC> Pourquoi les dates sont de la forme "04 Feb" et non "04 Fév", comme
HC> on est en droit de l'attendre sur une hiérarchie francophone ?
Pourquoi il y a tant d'enculeurs de mouches fainéants sur fr.* ?
-+- AT in: Guide du Neuneu d'Usenet- Le dino n'est pas neuneutophone -+-
Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue. Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la : http://acpi.sourceforge.net/documentation/alarm.html Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce que je pensais, la couche ACPI utilise l'horloge RTC pour faire ce travail. Quand ton PC est éteint, historiquement, le seul composant qui fonctionne encore (sur pile) est l'horloge RTC, justement pour permettre à ton PC de ne pas perdre l'heure. Ce circuit RTC sait générer une interruption à une heure précise, et les PC savent maitenant se rallumer à la réception de cette interruption.
Manque de bol, le circuit RTC ne permet pas de spécifier une date pour la génération de l'interruption, seulement une heure. Ceci explique le comportement que tu obtiens.
En lisant les sources du noyau sur le sous-système ACPI, dans le fichier drivers/acpi/system.c, fonction acpi_system_write_alarm() (celle qui est appelée quand tu écris quelque chose dans /proc/acpi/alarm), on peut voir d'abord que des conversions sont effectuées sur les données que l'utilisateur fournit (le circuit RTC a la particularité de pouvoir au choix représenter la date et l'heure en binaire ou en BCD), puis les bonnes valeurs sont passées au circuit RTC:
----- /* write the fields the rtc knows about */ CMOS_WRITE(hr, RTC_HOURS_ALARM); CMOS_WRITE(min, RTC_MINUTES_ALARM); CMOS_WRITE(sec, RTC_SECONDS_ALARM); -----
Aucune info de date n'est prise en compte. Par contre, juste après, il y a du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce code va chercher dans la table ACPI les emplacements mémoire dans le circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- HC> Pourquoi les dates sont de la forme "04 Feb" et non "04 Fév", comme HC> on est en droit de l'attendre sur une hiérarchie francophone ? Pourquoi il y a tant d'enculeurs de mouches fainéants sur fr.* ? -+- AT in: Guide du Neuneu d'Usenet- Le dino n'est pas neuneutophone -+-
groups
Bonjour,
Tout d'abord, merci beaucoup pour cette reponse précise et detaillée ! Cela répond parfaitement a ma question: je ne peux pas avec l'ACPI :(
Erwann ABALEA wrote
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce ... J'ai regardé dans les sources de ma version, et c'est bien entendu
pareil.
Aucune info de date n'est prise en compte. Par contre, juste après, il y a du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce code va chercher dans la table ACPI les emplacements mémoire dans le circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;) Donc a priori ca ne sert a rien d'activer ce code et de recompiler.
Y'a-t-il un risque (materiel) à l'activer si mon circuit ne le supporte pas ?
Je vais m'orienter vers une autre solution: nvram-wakeup qui semble pouvoir gerer la date (http://sourceforge.net/projects/nvram-wakeup) et qui supporte ma carte mere.
Encore Merci Jérôme
Bonjour,
Tout d'abord, merci beaucoup pour cette reponse précise et detaillée !
Cela répond parfaitement a ma question: je ne peux pas avec l'ACPI :(
Erwann ABALEA <erwann@abalea.com> wrote
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce
...
J'ai regardé dans les sources de ma version, et c'est bien entendu
pareil.
Aucune info de date n'est prise en compte. Par contre, juste après, il y a
du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce
code va chercher dans la table ACPI les emplacements mémoire dans le
circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit
RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)
Donc a priori ca ne sert a rien d'activer ce code et de recompiler.
Y'a-t-il un risque (materiel) à l'activer si mon circuit ne le
supporte pas ?
Je vais m'orienter vers une autre solution: nvram-wakeup qui semble
pouvoir gerer la date (http://sourceforge.net/projects/nvram-wakeup)
et qui supporte ma carte mere.
Tout d'abord, merci beaucoup pour cette reponse précise et detaillée ! Cela répond parfaitement a ma question: je ne peux pas avec l'ACPI :(
Erwann ABALEA wrote
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce ... J'ai regardé dans les sources de ma version, et c'est bien entendu
pareil.
Aucune info de date n'est prise en compte. Par contre, juste après, il y a du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce code va chercher dans la table ACPI les emplacements mémoire dans le circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;) Donc a priori ca ne sert a rien d'activer ce code et de recompiler.
Y'a-t-il un risque (materiel) à l'activer si mon circuit ne le supporte pas ?
Je vais m'orienter vers une autre solution: nvram-wakeup qui semble pouvoir gerer la date (http://sourceforge.net/projects/nvram-wakeup) et qui supporte ma carte mere.