Vous êtes sur la page 1sur 62

Le HOWTO des onduleurs (UPS)

Harvey J. Stein, hjstein@math.huji.ac.il, Berger Financial Research, Ltd. adaptation franaise c B.Choppy, 10 mai 1998 v2.42, 18 novembre 1997

Ce document vous aidera ` connecter un onduleur sur une machine Linux... si vous avez de la chance ... Copyright a (c) 1994, 1995, 1996, 1997 Harvey J. Stein. Vous pouvez utiliser ce document comme vous lentendez, tant quil reste intact. En particulier, cette note (ainsi que les contributions ci-dessous) doit rester intouche. NdT : La e traduction de ce HOWTO est particulierement dlicate, en ce quil int`gre de nombreux messages changs sur e e e e InterNet reproduits ` lidentique. Autant que possible, on aura conserv le sens gnral de ces messages, sans a e e e toutefois les reproduire systmatiquement en entier, leur lecture en devenant vite fastidieuse. Dans certains cas, e une partie en anglais est conserve, en particulier dans les en-ttes de messages. Les noms de signaux et broches de e e connexion ont t traduits, mais leur abrviation originelle conserv (par exemple, DCD : Dtection de porteuse). ee e e e Une copie de la notice originale de copyright est conserve, y compris dans les sources des programmes. Le e traducteur attire lattention de ses lecteurs sur le risque derreur introduite lors de la traduction des commentaires et messages dans les programmes source, pouvant rendre ceux-ci impossibles ` compiler ou inutilisables. La a rfrence en ce cas est, comme toujours, la version originelle du document (en anglais). Version originale de la ee notice de copyright : You may use this document as you see t, as long as it remains intact. In particular, this notice (along with the contributions below) must remain untouched.

Contents
1 Introduction 1.1 1.2 1.3 2 3 4 5 Contributeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Avertissement important . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Autres documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 4 4 4 5 6 8 8 9 9 11 11 11 13 15 17

Note importante concernant lobsolescence des informations Onduleur bte, onduleur intelligent e Logiciels Faites-le vous-mme e 5.1 5.2 5.3 5.4 Que faut-il faire (sommairement) ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comment est-ce suppos fonctionner ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Comment congurer tout a ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c Amliorations Utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e

6 Notes sur le matriel e 6.1 6.2 6.3 6.4 Comment raliser un cble ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e a Analyse de cbles et modication de powerd.c . . . . . . . . . . . . . . . . . . . . . . . . . . a Assignement des broches du port srie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Correspondance entre ioctl et RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1. Introduction

7 8

Que faire si lon nen sort pas ? Informations sur un certain nombre donduleurs 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 Expriences gnrales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e e Advice 1200 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . name=Trust Energy Protector 400/600 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trust UPS 400-A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sustainer S-40a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deltec Power, Fiskars Power Systems et Exide . . . . . . . . . . . . . . . . . . . . . . . . . . Onduleur Beaver mod`le UB500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Sendom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 18 19 19 20 30 31 34 34 35 36 36 36 36 37 39 40 41 61 61 62 62

8.10 Best . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.1 Avertissement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.11 GPS1000 dACCODATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.12 TrippLite BC750LAN (Standby UPS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.13 APC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Comment eteindre dautres machines sur le mme onduleur ? e 9.1 9.2 9.3 Mthode de ltat du port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e Mthode dmission en lair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e Mthode du pseudo-login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e

Introduction

Ce HOWTO concerne la connexion dun onduleur sur un PC sous Linux. Lide est dtablir la connexion e e de telle sorte que Linux puisse sarrter proprement lorsque le courant sarrte. e e Cela inclut la rfrence ` des paquetages logiciels existants facilitant ltablissement de ce genre de comee a e munications, et la mani`re dont celles-ci sont ralises. Ce dernier point est souvent superftatoire si vous e e e e pouvez trouver un paquetage tout congur pour votre onduleur. Sinon, il vous faudra lire ce qui suit. e Dans une large mesure, le prsent document est encore plus redondant que lorsque jen ai crit la premi`re e e e version en 1994. Toutes les informations de base ont toujours t prsentes dans les pages de man de powerd ee e fournies avec le paquetage SysVinit. Alors quen 1994 il arrivait souvent que les distributions ne comportent mme pas lesdites pages de man, je ne crois pas que ce soit encore le cas. e De plus, lorsque jai crit la premi`re version de ce Howto, il nexistait aucun autre logiciel que powerd pour e e la communication et le contrle entre Linux et les onduleurs. Maintenant, il existe un certain nombre de o paquetages de contrle donduleurs dans le rpertoire UPS o e de Sunsite.

1. Introduction

Malgr tout, je continue ` maintenir le Howto des onduleurs. Pourquoi donc ? Eh bien : e a une seconde source dinformations peut aider ` la comprhension de la mthode de connexion de Linux a e e a ` un onduleur, mme sil sagit simplement de la mme information, crite diremment ; e e e e le HOWTO peut servir de repository pour les donnes spciques des onduleurs - de nombreux onde e uleurs ne sont pas encore grs par les paquetages gnraux ; ee e e le HOWTO contient des dtails supplmentaires qui ne se trouvent pas dans dautres documents ; e e ce document semble avoir maintenant sa vie propre. La ncessit de cration dun Howto se fait sentir e e e clairement. Il est moins vident de dnir linstant o` il doive tre mis en sommeil. e e u e

1.1

Contributeurs

Je suis dbiteur ` vie de ceux dont jai reu de laide, des suggestions, ainsi que des donnes spciques e a c e e donduleurs. La liste inclut : Hennus Bergman (hennus@sky.nl.mugnet.org) ; Charli (mephistos@impsat1.com.ar) ; Ciro Cattuto (Ciro Cattuto) ; Nick Christenson (npc@minotaur.jpl.nasa.gov) ; Lam Dang (angit@netcom.com) ; Markus Eiden (Markus@eiden.de) ; Dan Fandrich (dan@fch.wimsey.bc.ca) ; Ben Galliart (bgallia@orion.it.luc.edu) ; Danny ter Haar (dth@cistron.nl) ; Christian G. Holtje (docwhat@uiuc.edu) ; Raymond A. Ingles (inglesra@frc.com) ; Peter Kammer (pkammer@ics.uci.edu) ; Marek Michalkiewicz (ind43@sun1000.ci.pwr.wroc.pl) ; Jim Ockers (ockers@umr.edu) ; Evgeny Stambulchik (fnevgenv@plasma-gate.weizmann.ac.il) ; Clive A. Stubbings (cas@vjet.demon.co.uk) ; Miquel van Smoorenburg (miquels@cistron.nl) ; Slavik Terletsky (ts@polynet.lviv.ua) ; Tom Webster (webster@kaiwan.com). Notez que les adresses e-mail apparaissant dans les extraits de courriers ci-apr`s peuvent tre obsol`tes. Ce e e e qui prc`de lest propablement aussi, mais quelques-unes sont plus rcentes que ce qui se trouve plus bas. e e e Mes excuses aussi ` quiconque jaie oubli de citer dans cette liste. Envoyez-moi un e-mail et je vous ajouterai. a e

2.

Note importante concernant lobsolescence des informations

1.2

Avertissement important

Je ne peux rellement pas garantir que quelque partie de ceci fonctionne pour vous. Connecter un onduleur e a ` un ordinateur peut tre un travail dastuce. Lun ou lautre, ou les deux peuvent brler, exploser, mettre le e u feu, ou commencer la Troisi`me Guerre Mondiale. De plus, je nai une exprience directe que de londuleur e e Advice 1200 A, et je nai pas eu ` fabriquer de cble. Donc, SOYEZ PRUDENT, RASSEMBLEZ TOUTE a a LINFORMATION POSSIBLE SUR VOTRE ONDULEUR. REFLECHISSEZ DABORD. NE CROYEZ PAS A PRIORI CE QUE VOUS LISEZ ICI NI AILLEURS . Dun autre ct, jai russi ` tout faire fonctionner avec mes onduleurs, sans beaucoup dinformations des oe e a constructeurs, et sans faire fumer quoi que ce soit, donc cest possible.

1.3

Autres documents

Ce document ne traite pas des fonctions et possibilits gnrales des onduleurs. Pour ce genre dinformations, e e e e e voyez la Foire Aux Questions La FAQ UPS . Elle peut aussi tre trouve sur ftp://rtfm.mit.edu/pub/usenetby-hierarchy/comp/answers/UPS-faq . Elle est maintenue par Nick Christenson , mais semble navoir pas t mise ` jour depuis 1995. Si vous lui envoyez un e-mail, il souhaiterait quapparaisse UPS ou UPS FAQ ee a ou quelque chose de similaire dans la ligne Subject de votre message. Il y a aussi de plus en plus de constructeurs donduleurs prsent sur le Net. Certains dentre aux fournissent e rellement des informations utiles sur leur site Web. Une liste pratique des sites web des constructeurs est e disponible sur Rpertoire des onduleurs . Le mme site propose aussi une FAQ des onduleurs . e e

Note importante concernant lobsolescence des informations

Je viens de dcouvrir quune partie de la documentation ci-dessous est obsol`te. En particulier, le daemon e e init fourni avec le dernier paquetage sysinit est plus sophistiqu que ce que jai dcrit. Bien quil semble que la compatibilit ascendante soit assure e e e e pour ce qui est crit ici, il appara que certaines fonctions non documentes sont tr`s importantes pour e t e e la gestion des onduleurs. Le mcanisme de contrle indiqu ci-apr`s permet seulement ` powerd denvoyer ` init un des messages e o e e a a powerfail ou powerok . init excute une commande lorsquil reoit powerfail et une autre lorsquil reoit e c c powerok . Cela complexie la logique de powerd pour la gestion des signaux de batterie faible et autres sortes de situations spciales. e Les nouvelles versions dinit (depuis la version 2.58, apparemment) sont plus sophistiques. Il est possible e de leur demander dexcuter un script parmi trois. Ainsi, init peut avoir un script powerfail pour traiter e une coupure de courant, un script powerfailnow pour raliser un arrt immdiat et un script powerok pour e e e bloquer tout arrt en cours. Cest nettement plus propre que les circonvolutions ncessaires avec le mcanisme e e e dtaill plus bas. e e Bien quune grande partie du document soit fonde sur lancienne mthode de communication avec init, je e e viens dajouter deux nouvelles sections dans lesquelles les auteurs utilisent la nouvelle mthode. Il sagit de e 8.3 (Trust Energy Protector 400/600) et APC Smart-UPS 700 . La premi`re est particuli`rement dtaille. e e e e Les deux comportent un powerd.c qui demande ` init un shutdown immdiat lorsquun signal de batterie a e faible est reu, ainsi que les lignes correspondantes de /etc/inittab. Pour tout le reste, je peux juste vous c dire de regarder dans le code source de init. Aussi, pour autant que je sache, de nombreux paquetages cits ci-dessous utilisent aussi la nouvelle mthode e e de communication.

3.

Onduleur bte, onduleur intelligent e

Onduleur bte, onduleur intelligent e

Les onduleurs peuvent se classer dans deux catgories : intelligents ou btes. La dirence entre les e e e deux rside dans la quantit dinformations que lon peut obtenir de et le niveau de contrle que lon peut e e o exercer sur londuleur. Onduleur bte e se connecte ` lordinateur par le port srie ; a e utilise les lignes de contrle modem pour communiquer avec celui-ci ; o peut indiquer si le courant est prsent ou non ; e peut typiquement indiquer si la batterie est faible ; accepte habituellement un ordre darrt de la part de lordinateur. e Onduleur intelligent se connecte ` lordinateur par le port srie ; a e communique avec celui-ci par transfert de donnes normal sur le port srie ; e e dispose typiquement dune sorte de langage de commandes que lordinateur peut utiliser pour obtenir diverses informations, positionner certains param`tres de fonctionnement et contrler e o londuleur (pour arrter celui-ci, par exemple). e Habituellement, les onduleurs intelligents peuvent fonctionner en mode bte. Cest utile, car pour autant e que je sache, les entreprises qui construisent les onduleurs les plus populaires (notamment APC) ne diusent leur protocole de communication quaux entreprises qui signent un accord de condentialit. e Autant que je sache, les seuls onduleurs intelligents avec lesquels il soit simple de communiquer sont ceux faits par Best. De plus, Best documente compl`tement le mode intelligent (ainsi que le mode bte) et fournit e e le source de programmes qui communiquent avec leurs onduleurs. Tous les paquetages indiqus dans la section 4 (Logiciels) communiqueront avec les onduleurs en mode bte. e e Cest tout ce dont on a rellement besoin. Ceux spciques des onduleurs APC annoncent diverses possibilits e e e dutilisation en mode intelligent, mais je ne sais pas exactement ce quils permettent. Une implmentation e compl`te vous achera une fentre avec toutes sortes de jauges achant diverses statistiques de londuleur, e e telles que charge, temprature intrieure, historique des coupures, voltages dentre et de sortie, etc. Il e e e semble que le paquetage smupsd-0.9-1.i386.rpm (section 4 (Logiciels) se rapproche de cela. Je ne suis pas sr pour les autres. u Le reste de ce document est essentiellement limit ` la conguration de votre syst`me avec un onduleur bte. ea e e Lide gnrale est ` peu pr`s la mme avec un onduleur intelligent, mais les dtails de fonctionnement de e e e a e e e powerd et le type de cble sont dirents pour un onduleur intelligent. a e
NdT : Il semble que la plupart des contributeurs ` ce Howto sappuient sur le redmarrage de lordinateur a e (/sbin/reboot), coupl ` une temporisation, pour raliser lextinction de londuleur. Cette mthode semble e a e e hasardeuse. Le traducteur propose humblement au lecteur dtudier la possibilit de remplacer la relance compl`te e e e (reboot) par un arrt syst`me propre (shutdown -h) ou moins propre (halt). Cette mthode permet dviter toe e e e talement le risque que londuleur sarrte trop tard dans le processus de dmarrage de lordinateur (i.e. lorsque les e e syst`mes de chiers sont dj` monts). e ea e
1

4.

Logiciels

Logiciels

Fondamentalement, tout ce quil vous faut est un excutable powerd , habituellement plac dans /sbin/powerd . e e Il fait habituellement partie du paquetage SysVinit. Pour autant que je sache, toutes les distributions actuelles de Linux contiennent une version rcente de SysVinit. Les versions tr`s anciennes ne comportaient e e pas powerd . Le seul probl`me que vous puissiez rencontrer est que votre cble ne corresponde pas ` la conguration de e a a powerd , auquel cas vous devrez, soit rebrocher votre cble, soit trouver une copie de powerd.c et le modier a pour le faire fonctionner avec votre cble. Ou, pour cela, vous pouvez toujours utiliser lun des paquetages a suivants, dont de nombreux permettent la conguration du cble. a Comme indiqu, une alternative au powerd du paquetage SysVinit est lutilisation de lun des paquetages e disponibles maintenant. il existe de nombreux paquetages qui aident ` congurer la communication entre a lordinateur et un onduleur. Aucun dentre eux ntait disponible lorsque jai crit ce Howto pour la premi`re e e e fois, cest pourquoi jai eu ` lcrire. En fait, il y a de bonnes chances que vous puissiez utiliser lun de ces a e paquetages logiciels et viter totalement le prsent Howto ! e e Au 15 mars 1997 ` peu pr`s, le rpertoire UPS a e e de Sunsite disposait dun certain nombre de paquetages. Dautres sites semblent avoir aussi des paquetages de contrle donduleurs. Voici ce que jai trouv (tous sur Sunsite sauf deux) : o e Enhanced APC BackUPS.tar.gz Un paquetage de contrle des onduleurs intelligents APC Smart-UPS. Il semble suivre basiquement le o BUPS-Howto (Back-UPS-Howto, inclus ci-apr`s), mais semble aussi disposer dune sorte de signal de e batterie faible. Enhanced APC UPSD-v1.4.tar.gz Le chier .lsm dit quil sagit du mme paquetage que le prcdent, sous forme de .tar.gz dans un e e e .tar.gz ! La documentation est lg`re. Il semble grer les onduleurs APC dans les deux modes bte et e e e e intelligent, mais je ne peux men assurer. Enhanced APC UPSD-v1.4.tar.gz Un autre paquetage de contrle des onduleurs APC Smart-UPS. Semble inclure une sorte de support o ma tre/esclave (i.e. une machine en prvient une autre de sarrter lorsque le courant est coup). e e e Semble utiliser les onduleurs en mode intelligent, par opposition ` la bascule des lignes modem. a smupsd-0.9-1.i386.rpm smupsd-0.9-1.src.rpm Lauteur ( David E. Myers ) crit : e smupsd surveille un APC Smart-UPS[TM] sous Red Hat[TM] Linux . Si le courant est coup, smupsd arrtera le syst`me et londuleur de mani`re e e e e correcte. smupsd a les fonctionnalits suivantes : e arrt du syst`me et de londuleur en fonction de la charge rsiduelle de ce dernier ou du temps e e e coul depuis la coupure de courant ; e e surveillance des param`tres e de londuleur en temps rel e depuis toute machine a ` laide du programme graphique upsmon, crit e en JavaT M ] ; tracedesparam`tresdel onduleurdansunf ichierpouranalyseetdition ; e e

4.

Logiciels

mode ma tre/esclave permettant ` des syst`mes additionnels partageant le mme onduleur de lire les a e e param`tres de celui-ci sur la machine qui lui est connecte par port srie ; e e e contrle des acc`s rseau ` laide du chier /etc/hosts.allow . o e e a genpower-1.0.1.tgz Un paquetage gnral de gestion donduleurs. Inclut des congurations pour beaucoup donduleurs e e deux pour TrippLite et trois pour APC. Contient une bonne documentation. Un bon achat. powerd-2.0.tar.gz Un powerd de remplacement de celui du paquetage SysVinit. A loppos des commentaires de la e documentation, il ne semble pas avoir t fusionn avec ce dernier (du moins jusqu` la version 2.62). ee e a Ses avantages rsident dans le fait quil puisse agir comme serveur pour dautres powerd tournant e sur dautres machines (lorsque plusieurs machines dun rseau partagent le mme onduleur) et tre e e e congur par le biais dun chier - le source ne ncessite donc ni dition ni recompilation. e e e upsd-1.0.tgz Un autre powerd de remplacement. Semble tre assez comparable en fonctionnalits avec powerde e 2.0.tar.gz. checkups.tar Ce paquetage est destin ` contrler les onduleurs Best. Il provient directement du site Web de Best. ea o Comporte des binaires pour de nombreux unix mais, plus important, inclut le code source, il est donc possible de lessayer sous Linux, et sil ne fonctionne pas, de tenter de le corriger. Le source inclut aussi bien les contrles de base (basic checkups) que les contrles avancs (advanced checkups) o o e qui sont un peu plus sophistiqus - ils dclenchent un shutdown lorsque londuleur indique une dure e e e dalimentation restante de X minutes, plutt quau bout de Y minutes apr`s la coupure de courant. Le o e programme de contrles avancs dclenche aussi sur diverses alarmes telles que temprature ambiante o e e e leve, batterie proche du minimum, tension de sortie faible ou alarme test dclenche par e e e e lutilisateur. bestups-0.9.tar.gz Un paquetage qui peut bien se trouver sur Sunsite ` linstant o` vous lisez ceci. Cest une paire de a u modules de communication qui travaillent avec les onduleurs Best Ferrups. Il g`re londuleur en mode e intelligent. Il inter-op`re correctement avec powerd-2.0 - utile si vous avez un gros Ferrups pour toutes e les machines dun rseau. e Note : ce paquetage doit encore tre charg vers Sunsite. Je continue ` presser lauteur de le nir et e e a de le charger, mais il doit encore en trouver le temps. LanSafe III Deltec Electronics (et Exide) vendent un paquetage logiciel appel LanSafe III. Il existe une version e Linux. Il est fourni avec leurs onduleurs. Ils disent quil fonctionne aussi avec dautres onduleurs (en mode bte). e apcupsd-2.8.tar.gz Lauteur ( Andre Hedrick ) crit : e apcupsd-2.1.tar.gz remplace Enhanced APC UPSD.tar.gz. Cest un paquetage tr`s complet pour les onduleurs APC. Il g`re toute leur gamme. Jai maintenant e e ajout un mode intelligent au paquetage et un support pour les cbles APC ou maison si aucun cble e a a APC nest gr. ee

5.

Faites-le vous-mme e

smartups-1.1.tgz Du chier .lsm : Un powerd et un utilitaire graphique sous X11 qui vous montre les voltages, frquences, pourcentages e de charge et niveau de batterie en temps rel. Les protocoles Safeware et Tripplite sont grs. e ee Source et binaires ELF. ups.tar.gz Du chier .lsm : Programme qui interagit avec les sauvegardes batteries (onduleurs Powerbox). usvd-2.0.0.tgz Du chier .lsm : uvsd est un daemon qui surveille ltat dun onduleur et ragit aux changements dtats (coupure de e e e courant, retour du courant, batterie faible). Vous pouvez crire vos propres scripts qui sont appels e e dans ces cas. Il ne ncessite pas SysVinit. e Notez que jai seulement jet un coup doeil aux paquetages. Je ne les ai pas utiliss. Nous tions proches e e e dutiliser bestups-0.9.tar.gz et powerd-2.0.tar.gz mais nous ne lavons jamais fait.

Faites-le vous-mme e

Ce chapitre est spciquement destin au contrle des onduleurs btes. Nammoins, une grande partie du e e o e e processus est ` peu pr`s identique pour les onduleurs intelligents. La principale dirence rside dans la a e e e mani`re dont le daemon (typiquement powerd ) de surveilance communique avec londuleur. e Avant de faire quoi que ce soit, je sugg`re lalgorithme suivant : e parcourir ce document ; tlcharger et tudier tous les paquetages qui semblent adapts spciquement ` son onduleur ; ee e e e a tlcharger et tudier les paquetages plus gnriques. Notes que certains dentre eux sont en fait plus ee e e e puissants, mieux documents et plus faciles demploi que leurs quivalents spciques ; e e e si les choses ne se passent pas bien ou si certains points restent obscurs, lire le prsent document avec e attention et bidouiller avec ardeur et prcaution... e

5.1

Que faut-il faire (sommairement) ?

brancher lordinateur sur londuleur ; connecter le port srie de lordinateur ` londuleur avec un cble spcial ; e a a e lancer powerd (ou un de ses quivalents) sur lordinateur ; e congurer init pour raliser quelque chose de raisonnable sur les vnements powerfail et powerok e e e (comme lancer un shutdown et tuer tout shutdown en cours respectivement, par exemple).

5.

Faites-le vous-mme e

5.2

Comment est-ce suppos fonctionner ? e

Travail de londuleur Lorsque le courant sarrte, londuleur continue dalimenter le PC et signale larrt du courant par e e bascule dun relais ou dun optocoupleur sur son port de contrle. o Travail du cble a Le cble est conu de telle mani`re que lorsque londuleur bascule ledit relais, cela monte un signal de a c e contrle particulier de la ligne srie (typiquement DCD, dtection de porteuse) o e e Travail de powerd Le daemon powerd contrle le port srie. Il maintient levs/baisss les signaux de contrle du port o e e e o srie dont londuleur a besoin (typiquement DTR, Terminal de Donnes Prt, doit rester lev, et touts e e e e les signaux qui coupent londuleur doivent tre maintenus baisss). Lorsque powerd voit le signal de e e contrle de londuleur monter, il crit FAIL dans /etc/powerstatus et envoie un signal SIGPWR au o e process init (les anciennes versions de powerd et init crivent dans /etc/powerfail). Lorsque le e signal de contrle redescend, il crit OK dans /etc/powerstatus et envoie un signal SIGPWR ` init. o e a Travail de init (en plus de tout ce quil fait par ailleurs) Lorsquil reoit un signal SIGPWR, il regarde dans /etc/powerstatus. Si celui-ci contient FAIL, il c excute lentre powerfail du chier /etc/inittab. Sil contient OK, il excute lentre powerokwait e e e e de inittab.

5.3

Comment congurer tout a ? c

Ce qui suit prsuppose que vous disposez dun cble qui fonctionne correctement avec powerd . Si vous nen e a tes pas sr, voyez la section : 6.2 (Analyse de cbles et modication de powerd.c) pour toute information e u a sur les cbles mal dcrits et la reconguration de powerd . Les sections 6.3 (Assignement des broches du port a e srie) et 6.4 (Correspondance entre ioctl et RS232) seront aussi utiles. e e a e Si vous devez fabriquer un cble, voyez la section : 6.1 (Comment raliser un cble ?) pour les dtails a gnraux, et la sous-section de : 8 (Informations sur un certain nombre donduleurs) qui se rapporte ` votre e e a onduleur. Cette derni`re peut aussi contenir des informations sur les cbles fournis par le constructeur. e a Vous voudrez probablement parcourir toute la section 8 (Informations sur un certain nombre donduleurs) car chaque section contient quelques dtails supplmentaires gnralement utiles. e e e e Editez /etc/inittab. Placez-y quelque chose de ce genre :
# Que faire si le courant sarrete # (arreter le systeme et vider la batterie :) : pf::powerfail:/etc/powerfailscript +5 # Si le courant revient avant la fin du shutdown, arreter celui-ci pg:0123456:powerokwait:/etc/powerokscript

Ecrivez les scripts /etc/powerfailscript et /etc/powerokscript pour arrter le syst`me apr`s cinq e e e minutes, ou mener toute action approprie, et tuer le shutdown en cours, respectivement. En fonction e de votre version de shutdown, cela sera, soit si trivial que vous naurez mme pas ` crire de script, e ae soit un script dune ligne bash, quelque chose du genre :
kill ps -aux | grep "shutdown" | grep -v grep | awk {print $2}

5.

Faites-le vous-mme e

10

et vous conserverez les scripts (au cas o` cela ne vous arriverait pas dans un parfait tat, la premi`re u e e apostrophe sur la ligne ci-dessus est une quote inverse, la seconde et la troisi`me sont des apostrophes, e e et la derni`re est aussi une quote inverse). e e Dites ` init de relire le chier inittab avec : a
telinit q

Editez rc.local pour lancer powerd lors du lancement. Syntaxe :


powerd <ligne>

Remplacez <ligne> par le port srie modem sur lequel sera connect londuleur, comme dans : e e /dev/cua1. Connectez le port srie du PC ` celui de londuleur. NE BRANCHEZ PAS ENCORE LE PC SUR e a LONDULEUR. Branchez une lampe sur londuleur. Allumez londuleur et la lampe. Lancez powerd . Testez la conguration : Dbranchez londuleur. e Contrlez que la lampe reste allume, o e Contrlez que /etc/powerfailscript est lanc, o e Contrlez que le shutdown est lanc. o e Rebranchez londuleur. Contrlez que la lampe reste allume, o e Contrlez que /etc/powerokscript est lanc, o e Contrlez que /etc/powerfailscript nest pas lanc, o e Contrlez que le shutdown est bien arrt. o ee Redbranchez londuleur. Laissez-le dbranch et vriez que le PC sarrte proprement dans un e e e e e dlai correct. e La Partie Dlicate. Une fois que tout semble correct, arrtez le PC et branchez-le sur londuleur. e e Lancez un script qui synchronise le disque dur toutes les secondes ou ` peu pr`s (sync). Simula e tanment, lancez un second script qui excute un nd sur votre disque entier. Le premier sert ` e e a rendre lopration plus sre, et le second, ` consommer le maximum de puissance. Maintenant, e u a tirez sur la prise de londuleur, vriez une fois de plus que le PC est lanc, et attendez. Assureze e vous que le PC sarrte correctement avant que la batterie soit vide. Cest dangereux, car si e la batterie nassure pas le dlai darrt du PC, vous pouvez vous retrouver avec un syst`me de e e e chiers corrompu, et peut-tre mme la perte de tous vos chiers. Vous devriez probablement e e raliser une sauvegarde compl`te avant ce test, et positionner un dlai de shutdown tr`s court e e e e pour commencer. Flicitations ! Vous avez maintenant un PC sous Linux protg par onduleur qui va sarrter proprement e e e e lors dune coupure de courant !

6. Notes sur le matriel e

11

5.4

Amliorations Utilisateur e

Bidouillez powerd.c pour surveiller la ligne indiquant un faible niveau de batterie. Dans ce cas, excutez un shutdown immediate ; e Modiez la procdure de shutdown, an que lorsquelle sexcute dans des conditions de coupure de e e courant, elle teigne londuleur apr`s avoir eectu tout le ncessaire. e e e e

6
6.1

Notes sur le matriel e


Comment raliser un cble ? e a

Cette section est juste compose de messages que jai vus sur le Net. Je ne lai pas ralis, donc je ne e e e peux parler dexprience. Si quelquun le peut, quil crive cette section pour moi :). Voir aussi le message e e e concernant le GPS1000 dans la section 8.11 (GPS1000 dACCODATA) pour ne pas citer toutes les donnes spciques de la section 8 (Informations sur un certain nombre donduleurs) e
>From miquels@caution.cistron.nl.mugnet.org Wed Jul 21 14:26:33 1993 Newsgroups: comp.os.linux Subject: Re: Interface onduleur pour Linux ? From: miquels@caution.cistron.nl.mugnet.org (Miquel van Smoorenburg) Date: Sat, 17 Jul 93 18:03:37 Distribution: world Organization: Cistron Electronics. Dans larticle <1993Jul15.184450.5193@excaliber.uucp> joel@rac1.wam.umd.edu (Joel M. Hoffman) ecrit : >Je ne vais pas tarder a acheter un onduleur, et ai remarque que certains >dentre eux ont des interfaces reseau pour prevenir celui-ci lorsque le >courant est coupe. > >Y a-t-il une telle interface pour Linux ? > >Merci.. > >-Joel >(joel@wam.umd.edu) > Lorsque je travaillais sur la derniere version de SysVinit (2.4 actuellement), jai eu temporairement un onduleur sur mon ordinateur, donc jai ajoute le support de celui-ci. Tu as peut-etre vu que dans le dernier fichier den-tete <signal.h>, il y a maintenant un #define SIGPWR 30 :-). Malgre tout, je navais pas une telle interface speciale, mais la sortie de nombreux onduleurs est juste un relais qui souvre ou se ferme en cas de coupure de courant. Jai reflechi a une methode simple pour connecter ca sur la ligne DCD du port serie. Dans le paquetage SysVinit, il y a un demon appele "powerd" qui garde un oeil sur cette ligne serie et envoie SIGPWR a init lorsque letat change, pour quinit puisse faire quelque chose (comme arreter le systeme dans les 5 minutes).

6. Notes sur le matriel e

12

La methode de connexion de londuleur a la ligne serie est decrite dans le source "powerd.c", mais je vais le dessiner ici pour explications : +------------------------o | +---+ | | resistance | | 10 kilo-Ohm | | +---+ | +-----o-------+------------------------o | | o relais | \ de l | \ onduleur | | | +-----o-------+------------------------o Joli dessin, hein ? Jesp`re que cela peut etre utile. e SysVinit peut etre trouve sur sunsite (et tsx-11 probablement) dans SysVinit2.4.tar.z Mike. DTR

Vers le port serie DCD

GND

-Miquel van Smoorenburg, <miquels@cistron.nl.mugnet.org> Ibmio.com: cannot open CONFIG.SYS: file handle broke off.

>From danny@caution.cistron.nl.mugnet.org Wed Jul 21 14:27:04 1993 Newsgroups: comp.os.linux Subject: Re: Interface onduleur pour Linux ? From: danny@caution.cistron.nl.mugnet.org (Danny ter Haar) Date: Mon, 19 Jul 93 11:02:14 Distribution: world Organization: Cistron Electronics. Dans larticle <9307174330@caution.cistron.nl.mugnet.org> miquels@caution.cistron.nl.mugnet.org (Miquel van Smoorenburg) ecrit : >La methode de connexion de londuleur a la ligne serie est decrite dans le >source "powerd.c", mais je vais le dessiner ici pour explications : Le dessin netait pas vraiment clair, utilisez plutot celui-ci ! > > +------------------------o DTR > | > +---+ > | | resistance > | | 10 kilo-Ohm > | | > +---+ Vers le port serie

6. Notes sur le matriel e

13

> > > > > > > > >

| +-----o-------+------------------------o | o relais \ de l \ onduleur | +-----o--------------------------------o

DCD

GND

Le DTR est maintenu haut. Lorsque le courant de londuleur sarrete, le relais se ferme. Lordinateur controle la descente de la ligne DCD. Lorsque cela arrive, il lance une sequence shutdown... _____ Danny -<=====================================================================> Danny ter Haar <dannyth@hacktic.nl> or <danny@cistron.nl.mugnet.org> Robins law #103: a couple of lightyears cant part good friends

6.2

Analyse de cbles et modication de powerd.c a

Essayez dobtenir la documentation des cbles que votre revendeur donduleurs fournit. En particulier, a recherchez : quelles lignes doivent tre maintenues hautes ; e quelle(s) ligne(s) teint(gnent) londuleur ; e quelles lignes londuleur modie pour indiquer que : le courant est coup, e la batterie est faible. Il vous faut ensuite modier powerd.c en consquence, ou utiliser lun des paquetages congurables cits e e plus haut (voir genpower-1.0.1.tgz , power-2.0.tar.gz ou upsd-1.0.tgz dcrits dans la section 4 (Logiciels). Si e vous utilisez lun des paquetages, suivez les instruction correspondantes. Si vous voulez bidouiller powerd.c, lisez ce qui suit. Si vous avez des probl`mes pour obtenir les informations prcites, ou si vous voulez juste les contrler (une e e e o bonne ide), le programme suivant peut vous y aider. Cest une version bidouille de powerd.c. Il vous e e permet de positionner les signaux du port depuis la ligne de commande, puis il contrle le port, en achant o ltat des signaux chaque seconde. Je lai utilis en upscheck /dev/cua1 2 (par exemple) pour monter e e le deuxi`me bit (DTR) et descendre les autres. Le nombre en base 2 indique les bits ` monter, ainsi par e a exemple pour monter les bits 1, 2 et 3 (et descendre les autres), utilisez 7. Voir le code pour les dtails. e Voici le programme (non test) upscheck.c. Il nest pas test car jai modi la version que javais utilise e e e e au dpart pour le rendre plus clair, et que je ne peux tester la nouvelle version pour le moment. e NdT : La traduction des commentaires et messages peut aussi avoir altr le comportement du programme. ee

6. Notes sur le matriel e

14

/* * upscheck Controle comment lordinateur et londuleur communiquent * * Usage: upscheck <peripherique> <bits a monter> * Par exemple, upscheck /dev/cua4 4 pour monter le bit 3 et * controler /dev/cua4. * * Author: Harvey J. Stein <hjstein@math.huji.ac.il> * (mais en realite juste une modification mineure de Miquel van * Smoorenburgs <miquels@drinkel.nl.mugnet.org> powerd.c * * Version: 1.0 19940802 * */ #include <sys/types.h> #include <sys/ioctl.h> #include <fcntl.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <signal.h> /* Programme principal. */ int main(int argc, char **argv) { int fd; /* Ces parametres TIOCM_* sont definis dans <linux/termios.h>, qui /* est inclus indirectement ici. int dtr_bit = TIOCM_DTR; int rts_bit = TIOCM_RTS; int set_bits; int flags; int status, oldstat = -1; int count = 0; int pc; */ */

if (argc < 2) { fprintf(stderr, "Usage: upscheck <peripherique> <bits-a-positionner>\n"); exit(1); } /* Ouvre le peripherique a controler. */ if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) { fprintf(stderr, "upscheck: %s: %s\n", argv[1], sys_errlist[errno]); exit(1);} /* Recupere les bits a positionner sur la ligne de commande */ sscanf(argv[2], "%d", &set_bits); while (1) { /* Positionne les bits specifies sur la ligne de commande (et */ /* seulement eux). */

6. Notes sur le matriel e

15

ioctl(fd, TIOCMSET, &set_bits); fprintf(stderr, "Positionnement de %o.\n", set_bits); sleep(1); /* Recupere les bits actuellement positionnes */ ioctl(fd, TIOCMGET, &flags); fprintf(stderr, "Les signaux sont %o.\n", flags); /* /* /* /* Piochez ici en changeant TIOM_CTS par un autre TIOCM jusqua ce que le programme detecte que le courant est coupe lorsque vous debranchez londuleur. Ensuite, vous saurez comment modifier powerd.c if (flags & TIOCM_CTS) { pc = 0 ; fprintf(stderr, "Le courant est la.\n"); } else { pc = pc + 1 ; fprintf(stderr, "Le courant est coupe.\n"); } } */ */ */ */

close(fd); }

6.3

Assignement des broches du port srie e

La section qui prc`de prsuppose la connaissance de la correspondance entre les signaux de terminal et e e e les broches du port srie. Voici une rfrence de cette correspondance, reprise du document de David Tal : e ee Cbles et connecteurs frquemment utiliss. Jinclus un diagramme illustrant les connecteurs, et une table a e e donnant la corresopondance entre les numros de broches et les signaux de ligne de terminal. e Si vous avez besoin dune rfrence gnrale sur le brochage de cbles, celle de David Tal en est une bonne, ee e e a mais je narrive plus ` localiser ce document sur le Net. Mais jai trouv un bon livre de remplacement, cest a e The Hardware Book . NdT : si un lecteur franais veut proposer une rfrence dans la langue de Moli`re, quil nhsite pas ` me c ee e e a contacter. Autres sites utiles : Yost Serial Device Wiring Standard qui contient des informations intressantes sur les connecteurs RJ-45 et les cbles quatre paires pour e a toutes les connexions srie ; e Stokely consulting pour linformation gnrale sur Unix et en particulier leur Unix Serial Port Resources ; e e Unix Workstation System Administration Education Certication qui contient : RS-232: Connectors and Cables .

6. Notes sur le matriel e

16

DB-25 Broche 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

DB-9 Broche 3 2 7 8 6 5 1

Nom FG TD RD RTS CTS DSR SG DCD QM SDCD SCTS STD TC SRD RC DCR SRTS DTR SQ RI TC

EIA AA BA BB CA CB CC AB CF SCF SCB SBA DB SBB DD SCA CD CG CE CH CI DA

CCITT 101 103 104 105 106 107 102 109 122 121 118 114 119 115 120 108.2 110 125 111 112 113

DTE-DCE > < > < < < < < < > < < > < > > < < > < <

Description Masse de chassis GND Donnes transmises, TxD e Donnes reues, RxD e c Requte pour envoyer e Prt ` envoyer e a Jeu de donnes prt e e Masse de signal, GND Dtection de porteuse e Tension positive continue de test Tension ngative continue de test e Mode dgalisation e Dtection de porteuse secondaire e Prt ` envoyer secondaire e a Donnes transmise secondaires e Signal dhorloge de lmetteur e Signal dhorloge secondaire du rcepteur e Signal dhorloge du rcepteur e Horloge divise du rcepteur e e Requte pour mettre secondaire e e Terminal de donnes prt e e Dtection de qualit de signal e e Indicateur de sonnerie Slecteur de vitesse de donnes e e Slecteur de vitesse de donnes e e Horloge transmise

4 9

Table 1: Assignement des broches de port srie (RS-232C), DB-25 et DB-9 e Incidemment, il semble que le paquetage Linuxdoc-sgml ne formate plus les tableaux tr`s bien en sortie html . e Si vous voulez pouvoir lire la table qui suit, vous devrez probablement vous rfrer ` la version DVI ou texte ee a simple du prsent document. e 1 13 _______________________________ \ . . . . . . . . . . . . . / \ . . . . . . . . . . . . / --------------------------14 25 DTE DCE RxD TxD DTR DSR RTS CTS RI : : : : : : : : : 1 5 _______________ \ . . . . . / \ . . . . / ----------6 9

Connecteurs RS-232 vus de larri`re de e lordinateur

Equipement terminal de donnes (i.e. ordinateur) e Equipement de communication de donnes (i.e. modem) e Donnes reues; 1 est transmis "bas", 0 "haut" e c Donnes envoyes; 1 est transmis "bas", 0 "haut" e e DTE annonce quil est aliment et pr^t ` communiquer e e a DCE annonce quil est pr^t ` communiquer; "bas" raccroche le modem e a DTE demande ` DCE la permission denvoyer des donnes a e DCE agre la RTS e DCE indique au DTE quil tente dtablir une connexion e

7.

Que faire si lon nen sort pas ?

17

DCD : DCE annonce quune connexion est tablie e

6.4

Correspondance entre ioctl et RS232

Puisque vous pouvez aussi devoir modier powerd.c pour monter et descendre les signaux corrects, vous pouvez aussi avoir besoin des valeurs numriques des dirents signaux de terminal. Ils peuvent tre trouvs e e e e dans /usr/include/linux/termios.h, mais sont reproduits ici comme rfrence. Puisquils peuvent tre ee e sujets ` changements, vous auriez avantage ` les vrier avec ledit chier. a a e
/* lignes modem */ #define TIOCM_LE #define TIOCM_DTR #define TIOCM_RTS #define TIOCM_ST #define TIOCM_SR #define TIOCM_CTS #define TIOCM_CAR #define TIOCM_RNG #define TIOCM_DSR #define TIOCM_CD #define TIOCM_RI

0x001 0x002 0x004 0x008 0x010 0x020 0x040 0x080 0x100 TIOCM_CAR TIOCM_RNG

Notez que la troisi`me colonne est en hexadcimal. e e

Que faire si lon nen sort pas ?

Voici une nouvelle solution pour le contrle lorsque londuleur et lordinateur ne sentendent pas. Je dois o dire qu` chaque fois que je lis cela, je suis ear de lintelligence de cette solution. a e
From: " Raymond A. Ingles" <inglesra@frc.com> To: hjstein@math.huji.ac.il Subject: UPS HOWTO tip Date: Mon, 24 Feb 1997 11:48:32 -0500 (EST)

Je ne sais pas si dautres trouveront ca utile, mais je pense pouvoir diffuser ceci pour inclusion possible dans le HOWTO. Merci de maintenir un HOWTO que je trouve si utile ! -------------------Ma fiancee ma offert un onduleur, un Tripp-Lite 400, je crois. Il etait le bienvenu et semble fonctionner comme prevu, mais malheureusement, ne dispose pas dinterface serie pour prevenir lordinateur dune coupure de courant. Il semble prevu pour une utilisation personnelle quand lordinateur ne reste pas seul. Evidemment, cela etait inacceptable et jai commence a travailler sur un systeme de surveillance de ligne, en imaginant ouvrir la boite et voir comment ajouter le hard que le constructeur avait omis. Jai alors realise quil y avait une solution plus simple et moins chere (bien quun peu moins

8.

Informations sur un certain nombre donduleurs

18

dotee en fonctionnalites). Javais un vieux modem 2 400 baud que je nutilisais pas, que jai branche sur un port serie inutilise de lordinateur. Je lai ensuite branche sur une prise anti-surtensions, elle-meme branchee sur la prise murale. Jai configure powerd avec les options suivantes : ---serialline monitor failwhen ----

/dev/ttyS1 DCD low

Maintenant, lorsque le courant est coupe (ou, bien que cela ne soit pas arrive recemment, lorsque je debranche le parasurtenseur pour tester la configuration), le modem tombe mais londuleur commence a alimenter lordinateur. Lorsque powerd se rend compte que le modem a descendu DCD, il declenche la sequence powerfail. Evidemment, il y a certaines limitations. Il nest pas possible de faire indiquer par le modem que la batterie est faible, etc. On peut seulement indiquer que le courant est coupe. Maintenant, ce nest pas cher et je deteste laisser un equipement informatique inutilise. Ces temps-ci, il est possible davoir un modem 2 400 baud quasi gratuitement. Je continue a conseiller un onduleur avec des possibilites de communication completes, mais si lon est coince avec un qui nen a pas, cela peut au moins etre utile. Sincerement, Ray Ingles (810) 377-7735 inglesra@frc.com

"Anybody who has ever seen a photograph showing the kind of damage that a trout traveling that fast can inflict on the human skull knows that such photographs are very valuable. I paid $20 for mine." - Dave Barry

Informations sur un certain nombre donduleurs

Cette section contient des informations spciques de certains onduleurs. Ce que je souhaiterais serait de e disposer des informations sur le port de contrle de londuleur (ce que fait chaque broche et ce quelle attend o qui soit fait), sur le cble fourni par le constructeur (ce quil connecte et o`), ainsi quune version modie a u e de powerd.c qui fonctionne avec londuleur. Ce que jai actuellement est une description ` peu pr`s compl`te a e e de chaque onduleur. Je voudrais essayer daner chaque information, mais comme je ne peux tester chaque onduleur, il est dicile de dcider exactement de ce qui est ncessaire. De plus, chaque onduleur semble e e avoir quelques trucs supplmentaires qui sont bien dcrits par les auteurs de chaque section. Ainsi, pour e e lheure, je laisse tout en place. Tout pour un HOWTO pais. e Veuillez menvoyer vos expriences pour les inclure ici. e

8.

Informations sur un certain nombre donduleurs

19

8.1

Expriences gnrales. e e e

Jai conserv les commentaires des gens, mais nai pas encore obtenu la permission de les inclure ici. Voici e un sommaire gnral de ce que jai entendu dire. e e APC : Ne donneront pas dinformations sur leur mode intelligent sans votre signature dun accord de condentialit. Donc, les gens sont forcs dutiliser leurs onduleurs intelligents en mode bte, comme e e e soulign plus bas. Diverses tentatives de rtro-ingnierie ont t soldes par des niveaux de russite e e e ee e e dirents. e Best : Serviables et aimables. Fournissent le code source et la documentation pour les deux modes. Tripp Lite : Une personne a dit que Tripp ne diuserait pas non plus dinformation. Upsonic : Quelquun a dit quUpsonic a discut de dtails techniques au tlphone, rpondu aux questions par e e ee e fax et est serviable en gnral. e e

8.2

Advice 1200 A

Onduleurs dAdvice Electronics, Tel Aviv, Isral (Tout leur matriel porte une tiquette ` leur nom). e e e a Spcication des broches du port de contrle. e o 2 - Coupure de courant. 5 - Batterie faible. 6 - Extinction de londuleur. 4 - Masse commune des broches 2, 5 et 6. Ils mont aussi donn le dessin suivant qui ne ma servi ` rien, mais peut vous tre utile si vous souhaitez e a e fabriquer vous-mme un cble : e a
2 ----------+ | \ \| |-------------/| \/ <--- Le "\/" indique le type de ce | transistor. Jai oubli ce que e | cela veut dire, mais ce nest +-----+ pas fondamental. / / /

5 ----------+ | \

8.

Informations sur un certain nombre donduleurs

20

\| |-------------/| \/ | | +-----+ / / /

+------------| / 10K |/ 6 --\/\/\/--| |\ \/ | | +-----+ / / /

4 ----------+ | | +-----+ / / /

Cble fourni. a Ils mont dabord donn un cble qui appartenait ` un paquetage DOS de contrle de londuleur appel e a a o e RUPS. Je lai utilis pour les tests. Une fois ceux-ci satisfaisants, ils mont donn un cble quils utilisent e e a pour les serveurs Netware connects ` des onduleurs. Il fonctionnait ` lidentique. Voici les dtails : e a a e DTR - Alimentation du cble (powerd.c doit le monter) ; a CTS - Courant prsent (descend quand le courant est coup) ; e e DSR - Batterie faible (descend lorsque la batterie faiblit) ; RTS - Extinction de londuleur (` monter pour teindre). a e (le powerd.c inclus dans SysVinit place ou laisse RTS haut, causant larrt de londuleur immdiatement lors e e du lancement de powerd !)

8.3

name=Trust Energy Protector 400/600

Cette section nest pas utile seulement pour le Trust Energy Protector. Elle illustre les nouvelles fonctionnalits dinit. e Comment utiliser un Trust Energy Protector 400/650 sous Linux ? par Ciro Cattuto Version 1.0 - 31 mars 1997

8.

Informations sur un certain nombre donduleurs

21

Connexion PC-onduleur Le Trust Energy Protector 400/650 est quip dun port de signaux. A laide dun cble adapt, il est e e a e possible de connecter celui-ci sur un ordinateur pour ragir aux vnements concernant lalimentation e e e lectrique. e Le port de signaux de londuleur Lassignement des broches du port de signaux DB-9 de londuleur est le suivant, comme indiqu dans e le manuel utilisateur : broche 2 Ce relais est ferm lorsque le courant dalimentation est coup. e e broche 4 Masse des broches 2 et 5. broche 5 Ce relais est ferm lorsque la batterie dispose de moins dune minute et demi dautonomie. e broche 6 Lutilisateur peut envoyer un signal haut (+5V ` +12V) durant plus dune milliseconde pour a teindre londuleur. Cette option ne peut tre active que durant une coupure de courant. e e e broche 7 Masse de la broche 6. le cble a Voici le cble que jai utilis pour connecter londuleur au port srie de mon ordinateur. a e e
cote ordinateur (DB-15) cote onduleur (DB-9) ==================================================================== 6 DSR --+ | 20 DTR --+----+ | | [R] [R] | | 8 DCD --+----|-------------| 7 GND -------|-------------| 5 CTS -------+-------------2 TX ---------------------[R] = resistance 10 kohm

+--- 7 | ---------------------|--- 2 | ---------------------+--- 4 ... ------------------------- 5 ------------------------- 6

====================================================================

Pour un port srie DB-9, les broches 6, 20, 8, 7, 5 et 2 correspondent respectivement aux broches 6, 4, e 1, 5, 8 et 3. Comment fonctionne le cble ? a Lordinateur monte DTR et vrie que DSR soit haut pour sassurer que le cble soit connect ` e a e a lordinateur. Tant que le courant est l`, DCD et CTS sont hauts tous les deux (` cause des rsistances). a a e Lorsque le courant est coup, le relais entre les broches 2 et 4 de londuleur se ferme, et DCD descend e pour signaler la coupure.

8.

Informations sur un certain nombre donduleurs

22

De mme, lorsque les batteries sont faibles, le relais entre les broches 5 et 4 se ferme, faisant descendre e CTS. Durant une coupure de courant, lordinateur peut teindre londuleur en montant TX durant 1 ms au e moins. Cela peut tre ralis aisment en envoyant un octet 0xFF au port srie avec une vitesse faible. e e e e e le daemon powerd Pour utiliser les informations disponibles sur le port srie, il faut utiliser un programme qu surveille e celui-ci, dcode le signal et envoie les messages appropris au syst`me dexploitation, en loccurence au e e e processus init. Ce dernier peut excuter des scripts et programmes conus pour grer (proprement !) e c e lvnement de coupure de courant. e e compiler powerd En annexe A se trouve le code de powerd, le daemon que jutilise pour surveiller le Trust Energy Protector 400/650. Pour le compiler, il faut le source du paquetage SysVinit (jai utilis celui de e sysvinit-2.60). Ecrasez simplement le powerd.c dorigine et compilez-le. Comment fonctionne powerd ? D`s le dmarrage, powerd ouvre le priphrique srie connect ` londuleur et monte DTR. Ensuite, il e e e e e ea forke un daemon et se termine en laissant celui-ci tourner. Le daemon powerd peut se trouver dans lun des trois tats suivants : e Etat 0 - le courant est bon Dans cet tat, powerd lit le port srie toutes les T0 SLEEP secondes (voir les lignes #define au e e dbut du code source). Si DCD descend, powerd bascule en tat 1. Si CTS descend, powerd bascule e e en tat 2 (cela ne doit pas arriver si DCD nest pas descendu avant, mais jai prfr assurer le e eee coup). Etat 1 - le courant est coup e Une coupure de courant a t dtecte. DCD est bas et powerd lit le port de londuleur toutes les ee e e e e T1 SLEEP secondes. Si DCD remonte, il bascule en tat 0. Si CTS tombe, il bascule en tat 2. Etat 2 - la batterie est faible La batterie de londuleur est faible. Le daemon powerd reste dans cet tat. e A chaque changement dtat de powerd , il prvient le processus init an que laction approprie soit e e e eectue. Ces vnements sont tracs ` laide du syst`me de trace du syst`me dexploitation (NdT : e e e e a e e syslogd ). Si DSR est bas, cest quil y a un probl`me au niveau du cble. powerd continue ` surveiller la ligne e a a DSR et envoit un message davertissement toutes les deux minutes au syst`me de trace. e Utiliser powerd Le daemon powerd doit tre lanc par les scripts dinitialisation durant le dmarrage du syst`me. Jai e e e e ajout les lignes suivantes dans mon script /etc/rc.d/rc.local : e
# Ajout du support de londuleur echo "Demarrage du processus powerd..." rm -f /etc/turnUPSoff stty -crtscts speed 75 < /dev/cua3 > /dev/null if [ -x /usr/sbin/powerd ] then /usr/sbin/powerd /dev/cua3 fi

8.

Informations sur un certain nombre donduleurs

23

En premier, on eace (si ncessaire) le chier /etc/turnUPSoff. Celui-ci est utilis par le script de e e shutdown (/etc/rc.d/rc.0 dans mon cas) pour dcider sil faut arrter londuleur ou non. Voir plus e e bas pour plus dinformations. Ensuite, on dsactive le contrle de ux matriel sur le priphrique srie connect ` londuleur et e o e e e e e a on positionne la vitesse ` 75 bauds. Maintenant, nous sommes sr que le signal TX restera haut a u susamment longtemps pour arrter londuleur si nous envoyons un caract`re 0xFF au port srie (` e e e a nouveau, voir plus bas). Enn, nous lanons le daemon powerd en lui indiquant le port ` surveiller. Notez que nous navons c a pas ` lire de caract`res sur ce port, donc pas dinquitude en cas de conit dinterruptions - il naura a e e aucune inuence. Le chier inittab et les scripts de shutdown Le processus powerd tourne maintenant, et il enverra des signaux ` init en cas de coupure de courant. a Il faut maintenant congurer le syst`me an quil puisse ragir de mani`re utile lorsque ces signaux e e e sont reus. c Modication de inittab Ajoutez les lignes suivantes ` proximit du dbut de votre chier /etc/inittab : a e e
# Quoi faire lorsque le courant est coupe (shutdown temporise) pf::powerfail:/etc/powerfail_script # Si le courant revient avant le shutdown, arreter celui-ci pg::powerokwait:/etc/powerokay_script # Si la batterie de londuleur est faible, faire un shutdown immediat pc::powerfailnow:/etc/powerfailnow_script

Les scripts Les scripts powerfail script, powerokay script et powerfailnow script sont excuts lorsque init e e reoit le signal correspondant. Il ont la responsabilit darrter le syst`me de mani`re propre ou c e e e e darrter un shutdown en cours au cas o` le courant reviendrait. Voici les scripts que jutilise actuellee u ment : /etc/powerfail script
#!/bin/sh /bin/sync /usr/bin/sleep 10m kill -9 ps auxw | \ grep "shutdown" | \ grep -v grep | \ awk {print $2} >/etc/turnUPSoff /sbin/shutdown -t30 -h +3 "Coupure de courant"

Mon Trust Energy Protector 400 nalimente que lordinateur, jai donc une rserve de courant assez e importante. Dans mon secteur, les coupures de courant ne durent souvent que quelques minutes, donc le syst`me ragit ` celles-ci de la mani`re suivante : Il attent 10 minutes (habituellement, le courant e e a e revient avant) puis arrte le syst`me, en laissant aux utilisateurs le temps de fermer leurs applications et e e de se dconnecter. Avant dexcuter la commande shutdown, je vrie quil ny a pas dautre shutdown e e e en cours. Je cre aussi le chier /etc/turnUPSoff an que le syst`me arrte londuleur. e e e /etc/powerokay script

8.

Informations sur un certain nombre donduleurs

24

#!/bin/sh kill ps auxw | \ grep "powerfail_script" | \ grep -v grep | \ awk {print $2} kill -9 ps auxw | \ grep "shutdown" | \ grep -v grep | \ awk {print $2} rm -f /etc/turnUPSoff

Si le courant revient, on tue le script powerfail script et tout shutdown en cours. On noublie pas de supprimer /etc/turnUPSoff. /etc/powerfailnow script
#!/bin/sh kill -9 ps auxw | \ grep "shutdown" | \ grep -v grep | \ awk {print $2} >/etc/turnUPSoff /sbin/shutdown -h now "Batterie de londuleur faible. ARRET IMMEDIAT."

Si la batterie faiblit, on sassure quaucun shutdown ne soit en cours, on cre le chier /etc/turnUPSoff e puis on arrte le syst`me immdiatement. e e e Le script darrt syst`me e e Lorsque larrt du syst`me est eectu, on peut arrter londuleur en montant le signal TX du port e e e e srie durant plus dune milliseconde. Celui-ci est dj` congur correctement par la commande stty e ea e du script rc.local. Si le chier /etc/turnUPSoff est prsent, on envoit loctet 0xFF (tous les bits ` e a 1) sur le port srie. e Pour cela, on ajoute les lignes suivantes autour de la n du script darrt (/etc/rc.d/rc.0 dans mon e cas). Lemplacement correct dpend de la mani`re dont le syst`me est congur, mais il doit pouvoir e e e e se situer avant la commande echo qui ache le message System is halted.
# Est-on dans un cas de coupure de courant ? if [ -f /etc/turnUPSoff ] then echo "Arret de londuleur" sleep 5 echo -e "\377" >/dev/cua3 exit 1 fi

Remarques gnrales e e Ce document contient des choses que jai apprises en tentant de congurer mon syst`me Linux avec le e Trust Energy Protector 400. Certaines informations (le chemin dacc`s aux scripts dinitialisation, par e exemple) peuvent tre spciques ` mon syst`me, et il vous faudra vraisemblablement faire quelques e e a e adaptations. Nammoins, jesp`re que ce document sera une trace utile pour ceux qui essaieront e e dutiliser un onduleur de ce type sous Linux. Si vous rencontrez des dicults, recherchez des infore mations plus gnrales dans le reste de ce Howto. Bonne chance ! e e Retour dinformations

8.

Informations sur un certain nombre donduleurs

25

Japprcierais normment tout retour dinformations concernant ce document, an de pouvoir aner e e e celui-ci et y corriger de possibles erreurs (je sais que langlais que jutilise nest pas excellent, mais a apr`s tout, je suis italien !2 ). Envoyez tout commentaire/suggestion/critique ` ladresse suivante : e ciro@stud.unipg.it Si vous rencontrez des probl`mes dutilisation de londuleur Trust Energy Protector 400/650 sous e Linux, vous pouvez aussi me contacter. Jessaierai de vous aider. Informations lgales e Je nai aucune relation avec Trust Networking Products. Linformation contenue dans ce document est livre telle quelle. Vous pouvez lutiliser ` vos risques e a et prils. Je ne puis tre tenu responsable dun quelconque dommage ni perte de donnes rsultant de e e e e lutilisation du code ni des informations donnes ici. e Ciro Cattuto Appendix A - Code source du daemon powerd>
powerd.c /* * powerd Recoit les evenements de coupure de courant * depuis un Trust Energy Protector 400/650 * et previent init * * Usage: powerd <port serie> * * Author: Ciro Cattuto <ciro@stud.unipg.it> * * Version 1.0 - 31 Mars 1997 * * Ce code est largement fonde sur le powerd.c original de * Miquel van Smoorenburg <miquels@drinkel.ow.org>. * * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * * Ce programme est un logiciel libre ; vous pouvez le distribuer * et/ou le modifier selon les termes de la Licence Publique Generale * GNU publiee par la Free Software Foundation version 2 ou (comme * vous le voulez) toute version ulterieure. * */ /* etat 0 - le courant est la */ #define T0_SLEEP 10 /* intervalle de lecture du port en secondes #define T0_DCD 3 /* duree avec DCD monte avant de realiser une action #define T0_CTS 3 /* duree avec CTS monte avant de realiser une action
2

*/ */ */

NdT : On se demande quelquefois sil faut vraiment tout traduire :-))

8.

Informations sur un certain nombre donduleurs

26

/* etat #define #define #define

1 - le courant est coupe */ T1_SLEEP 2 /* intervalle de lecture du port T1_DCD 3 /* idem T0_DCD T1_CTS 3 /* idem T0_CTS 2 60

*/ */ */

#define DSR_SLEEP #define DSR_TRIES

/* On utilise le nouveau mode de communication avec init. */ #define NEWINIT #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <signal.h> #include <syslog.h> #include <string.h> #include "paths.h" #ifdef NEWINIT #include "initreq.h" #endif #ifndef SIGPWR # define SIGPWR SIGUSR1 #endif #ifdef NEWINIT void alrm_handler() { } #endif /* Dire a init que le courant est coupe (1), revenu (0) ou que les batteries de londuleur sont faibles (2). */ void powerfail(int event) { int fd; #ifdef NEWINIT struct init_request req; /* On remplit la structure necessaire */ memset(&req, 0, sizeof(req)); req.magic = INIT_MAGIC; switch (event) { case 0: req.cmd = INIT_CMD_POWEROK; break; case 1: req.cmd = INIT_CMD_POWERFAIL;

8.

Informations sur un certain nombre donduleurs

27

break; case 2: default: req.cmd = INIT_CMD_POWERFAILNOW; } /* On ouvre le fifo (avec timeout) */ signal(SIGALRM, alrm_handler); alarm(3); if ((fd = open(INIT_FIFO, O_WRONLY)) >= 0 && write(fd, &req, sizeof(req)) == sizeof(req)) { close(fd); return; } /* On revient a lancienne methode... */ #endif /* On cree un fichier info pour init */ unlink(PWRSTAT); if ((fd = open(PWRSTAT, O_CREAT|O_WRONLY, 0644)) >= 0) { switch (event) { case 0: write(fd, "OK\n", 3); break; case 1: write(fd, "FAIL\n", 5); break; case 2: default: write(fd, "LOW\n", 4); break; } close(fd); } kill(1, SIGPWR); } /* Programme principal. */ int main(int argc, char *argv[]) { int fd; int dtr_bit = TIOCM_DTR; int flags; int DCD, CTS; int status = -1; int DCD_count = 0, CTS_count = 0; int tries; if (argc < 2) { fprintf(stderr, "Usage: powerd <peripherique>\n"); exit(1);

8.

Informations sur un certain nombre donduleurs

28

} /* On demarre syslog. */ openlog("powerd", LOG_CONS|LOG_PERROR, LOG_DAEMON); /* On ouvre le port a surveiller. */ if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) { syslog(LOG_ERR, "%s: %s", argv[1], sys_errlist[errno]); closelog(); exit(1); } /* La ligne est ouverte, donc DTR est haut. On le force tout de meme pour plus de surete */ ioctl(fd, TIOCMBIS, &dtr_bit); /* On passe en daemon. */ switch(fork()) { case 0: /* Fils */ closelog(); setsid(); break; case -1: /* Erreur */ syslog(LOG_ERR, "Impossible de forker."); closelog(); exit(1); default: /* Pere */ closelog(); exit(0); } /* On relance syslog. */ openlog("powerd", LOG_CONS, LOG_DAEMON); /* Maintenant, on echantillonne la ligne DCD */ while(1) { /* On lit le statut. */ ioctl(fd, TIOCMGET, &flags); /* On controle la connexion. DSR doit etre haut */ tries = 0; while((flags & TIOCM_DSR) == 0) { /* On continue a essayer, et on previent toutes les deux minutes */ if ((tries % DSR_TRIES) == 0) syslog(LOG_ALERT, "Erreur de connexion onduleur"); sleep(DSR_SLEEP); tries++; ioctl(fd, TIOCMGET, &flags); } if (tries > 0) syslog(LOG_ALERT, "Connexion onduleur OK"); /* On calcule letat en cours. */

8.

Informations sur un certain nombre donduleurs

29

DCD = flags & TIOCM_CAR; CTS = flags & TIOCM_CTS; if (status == -1) { status = (DCD != 0) ? 0 : 1; if (DCD == 0) { syslog(LOG_ALERT, "Coupure de courant. Onduleur actif."); powerfail(1); } } switch (status) { case 0: if ((DCD != 0) && (CTS != 0)) { DCD_count = 0; CTS_count = 0; sleep(T0_SLEEP); continue; } if (DCD == 0) DCD_count++; if (CTS == 0) CTS_count++; if ((DCD_count < T0_DCD) && (CTS_count < T0_CTS)) { sleep(1); continue; } if (CTS_count == T0_CTS) { status = 2; syslog(LOG_ALERT, "Batteries faibles !"); break; } status = 1; DCD_count = 0; syslog(LOG_ALERT, "Coupure de courant. Onduleur actif."); break; case 1: if ((DCD == 0) && (CTS != 0)) { DCD_count = 0; CTS_count = 0; sleep(T1_SLEEP); continue; } if (DCD != 0) DCD_count++; if (CTS == 0) CTS_count++;

8.

Informations sur un certain nombre donduleurs

30

if ((DCD_count < T1_DCD) && (CTS_count < T1_CTS)) { sleep(1); continue; } if (CTS_count == T1_CTS) { status = 2; syslog(LOG_ALERT, "Batteries faibles !"); break; } status = 0; DCD_count = 0; CTS_count = 0; syslog(LOG_ALERT, "Courant present."); break; case 2: sleep(1); continue; default: break; } powerfail(status); } /* Narrive jamais */ return(0); }

8.4

Trust UPS 400-A

Jai reu un message ` propos du Trust UPS 400-A. Je ne sais pas si cest le mme que le Trust Energy c a e Protector 400, donc voici le message3 : Marcel Amerlaan 16 juillet 1997 disponibilit e Cet onduleur ne semble plus tre fabriqu par son constructeur , mais cela ne veut pas dire quil ne soit e e plus disponible : jai achet le mien tr`s peu cher il y a seulement un mois. De plus, cette entreprise e e rtiquette souvent ses produits. ee cble a Il est facile ` fabriquer ` laide du cble dorigine pour powerd et de la documentation de Trust. a a a Il prsente deux amliorations : e e indication de batterie faible ; extinction de londuleur.
3

(NdT : le texte qui suit a t reformat. Le document dorigine comporte une copie de courrier lectronique) ee e e

8.

Informations sur un certain nombre donduleurs

31

Type : "pleur" Cable power : {TIOCM_DTR, 0} Inverter Kill : {TIOCM_RTS, 1} Inverter Kill Time : 5 Power Check : {TIOCM_CTS, 0} Battery Check : {TIOCM_CAR, 0} Cable Check : {TIOCM_RI, 0}

La fonction cable check nest pas utilise car londuleur ne semble pas la reconna e tre. conclusion Voil` tout ce que je crois savoir. Si vous voulez plus dinformations sur londuleur, le cble ou le logiciel, a a contactez-moi. Et souvenez-vous que tout ce qui est dcrit ici fonctionne pour moi mais je ne garantis pas que ce soit e le cas pour vous.
Marcel Ammerlaan CEO Pleursoft (cela explique le nom du cable, nest-ce pas :-) Pays Bas

8.5

Sustainer S-40a

Informations sur le Sustainer S-40a4 : Evgeny Stambulchik 10 septembre 1995 environnement Sustainer S-40a avec le paquetage unipower (rcemment renomm genpower), cble maison (cf. infra). e e a Jai envoy une copie de tout a ` Tom Webster, lauteur du paquetage, et cela devrait appara dans e c a tre la nouvelle version. cble a Note : les broches darrt indiques dans la documentation technique (4 et 6) sont incorrectes. e e Les bonnes sont 6 et 7, comme sur le schma joitnt ; e Note 2 : les broches ct PC entre parenth`se sont pour un connecteur 25 broches, les autres pour oe e un 9 broches.
COTE ONDULEUR COTE LINUX

2 COUPURE DE COURANT 1 (8) +----o----------------------------+------------------o DCD | | o | / | / | | 4 MASSE COMMUNE | 5 (7) +----o-------------+--------------|------------------o GND | | | \ | | \ | |
4

(NdT : le texte qui suit a t reformat. Le document dorigine comporte une copie de courrier lectronique) ee e e

8.

Informations sur un certain nombre donduleurs

32

o | | | 5 BATTERIE | FAIBLE | 8 (5) +----o-------------|--------------|--------+---------o CTS | | | | +-+-+ +-+-+ | | | | | | Resistances| | | | | | | | | | 3 x 10 kohm| | | | | +-+-+ +-+-+ | | | 4 (20) | +--------+---------o DTR | | 6 ARRET DE | LONDULEUR +-------+ 7 (4) +-+ +---o-------------|---------------+ +---------o RTS \ | | +-------+ \| -+| | <- \ / | /| -+| / | 7 | | +---o-------------+ --+----

chier unipowerd.h
/************************************************************************/ /* Fichier : unipowerd.h */ /* Programme : unipowerd Version: 1.0.0 */ /* Auteur : Tom Webster <webster@kaiwan.com> */ /* Creation : 1994/04/20 */ /* Modification : Tom Webster Date: 1995/04/09 */ /* Modification : Evgeny Stambulchik (pour onduleur Sustainer) */ /* */ /* Compilation : GCC 2.5.8 */ /* Compilateur : Linux 1.0.9 */ /* ANSI C Compatible : Non */ /* POSIX Compatible : Oui ? */ /* */ /* But : Fichier dentete pour unipowerd. */ /* : Contient les informations de configuration */ /* : de unipowerd. Editez ce fichier comme indique */ /* : pour activer les fonctionnalites et ajuster */ /* : unipowerd pour votre onduleur. */ /* */ /* Copyright : GNU Copyleft */ /************************************************************************/ /* /* /* /* /* /* /* Lignes de controle RS232 D D T C Macro Anglais E E ---------------------------------------------TIOCM_DTR DTR - Data Terminal Ready --> */ */ */ */ */ */ */

8.

Informations sur un certain nombre donduleurs

33

/* /* /* /* /*

TIOCM_RTS TIOCM_CTS TIOCM_CAR TIOCM_RNG TIOCM_DSR HIGH LOW PWRSTAT UPSSTAT

RTS CTS DCD RI DSR

Ready to send Clear To Send Data Carrier Detect Ring Indicator Data Signal Ready

--> <-<-<-<--

*/ */ */ */ */

#define #define #define #define

(1) 0 "/etc/powerstatus" "/etc/upsstatus" */ */

/* CABLEPOWER est la ligne qui alimente le cable /* pour la surveillance normale. #define CABLEPOWER TIOCM_DTR #define POWERBIT #define POWEROK TIOCM_CAR HIGH

/* CABLECHECK vaut 1 pour surveiller la batterie ??*/ /* CABELCHECK vaut 0 pour ne rien surveiller */ #define CABLECHECK 0 #define CABLEBIT TIOCM_RNG #define CABLEOK HIGH /* BATTCHECK vaut 1 pour surveiller la batterie /* BATTCHECK vaut 0 pour ne rien surveiller #define BATTCHECK 1 #define BATTBIT TIOCM_CTS #define BATTOK HIGH */ */

/* INVERTERKILL vaut 1 pour gerer larret de londuleur /* INVERTERKILL vaut 0 pour ne rien gerer. /* INVERTERBIT est la ligne qui eteint londuleur en /* mode powerfail. /* INVERTERTIME est la duree en secondes de maintien haut /* de la ligne INVERTERBIT en haut pour eteindre. #define INVERTERKILL 1 #define INVERTERBIT TIOCM_RTS #define INVERTERTIME 5

*/ */ */ */ */ */

/************************************************************************/ /* Fin du fichier unipowerd.c */ /************************************************************************/

chier genpowerd.h Pour la nouvelle version du logiciel (genpowerd ), je pense quil faut ajouter la ligne suivante :
/* Evgenys Sustainer S-40A */ {"sustainer", {TIOCM_DTR,0}, {TIOCM_RTS,1}, 5, {TIOCM_CAR,0}, {TIOCM_CTS,0}, {0,0}}

8.

Informations sur un certain nombre donduleurs

34

8.6

Systel

Une autre entreprise isralienne. Je ne leur ai jamais achet donduleur, mais il mont for aimablement fourni e e une documentation dtaille sur leur port de communication. Il devrait tre assez facile de contrler leur e e e o onduleur. Leur numro de tlphone est : e ee 972-8-409-019 (fax 972-8-407-216).

8.7
Fiskars

Deltec Power, Fiskars Power Systems et Exide

est une holding nnoise, anciennement propritaire de Deltec Power . En mars 1996, Fiskars a vendu Deltec e e Power ` Exide . A cette date, Deltec Power tait lun des plus gros constructeurs donduleurs. a Avec Fiskars, Deltec fabriquait les PowerServers 10, 20, 30 et 40. La page web de Deltec Power en mentionne dautres. Exide joint maintenant un logiciel de contrle avec ses onduleurs qui fonctionne sous Linux. Ils vendent aussi o celui-ci sparment et arment quil fonctionne avec dautres onduleurs aussi. e e Jaimerais avoir des nouvelles de gens qui utilisent ce logiciel. Voici lannonce quils mont envoye par e-mail : e Exide Electronics annonce Lansafe III, logiciel de gestion donduleurs sous Linux. Lansafe III est une application de gestion donduleurs. Elle permet larrt automatique du syst`me en cas e e de coupure de courant de longue dure qui dpasserait lautonomie de la batterie de londuleur. e e Lansafe III permet les messages broadcast et lenvoi de courriers lectroniques en fonction des rglages e e utilisateur. La squence darrt peut aussi tre paramtre. e e e e e Lansafe III fonctionne avec la plus grande partie des onduleurs Exide Electronics. Il permet aussi larrt e automatique simple avec des onduleurs dautres constructeurs. Lansafe III pour Linux fonctionne sur les syst`mes Linux ` base Intel. Deux interfaces sont fournies : mode e a caract`res et X11/Motif. e Lansafe III fonctionne sur toutes les plateformes majeures de syst`mes dexploitation : Linux, IBM AIX, e HP UX, Digital Unix, SCO Unix, Solaris, SunOS, AT&T Unix, toutes les plateformes Windows, OS/2, Novell et Macintosh en particulier. Lansafe III est fourni avec les onduleurs Exide suivant : OneUPS Plus ; NetUPS ; PowerWare Prestige ; PowerWare Prole ; PowerWare Plus 5xx. Il est aussi fourni avec les onduleurs FPS Power Systems : PowerRite Plus ; PowerRite Max ;

8.

Informations sur un certain nombre donduleurs

35

PowerWorks A30 ; PowerWorks A40 ; sries 9 000 ; e sries 10 000. e Il est aussi possible dacqurir une licence logicielle spare pour lutilisation dun onduleur plus ancien ou e e e dun autre constructeur. Les licences simples sont ` USD 149, des licences site sont disponibles. a Pour tout dtail, visitez nos sites web : www.exide.com , e www.skarsUPS.com et www.deltecpower.com Accessoirement, lorsque jai tent de me connecter ` www.skarsUPS.com, il ma t demand une identie a ee e cation et un mot de passe.

8.8

Onduleur Beaver mod`le UB500 e

Dan Fandrich crit : e Je pense avoir russi ` faire fonctionner mon vieil onduleur Beaver mod`le UB500 avec genpower. Linterface e a e utilise des niveaux de tension compatibles RS-232, donc linstallation est simple. Ily a un connecteur DB-9 femelle ` larri`re qui se connecte directement dans un port srie DB-9 de PC ` laide dun cble droit. a e e a a Les interrupteurs DIP permettent quelques ajustements. Pour muler le type donduleurs apc1-nt de gene power, ils doivent tre positionns comme suit : e e 1 on (CTS = coupure de courant) ; 2 o (CTS = batterie faible) ; 3 o (DSR = coupure de courant) ; 4 o (DSR = batterie faible) ; 5 o (CD = coupure de courant) ; 6 on (CD = batterie faible) ; 7 o (RI = coupure de courant) ; 8 o (RI = batterie faible) ; 9 on (DTR = extinction) ; 10 o (RTS = extinction). Les interrupteurs forment des groupes de paires adjacentes pour chaque broche de sortie. Ils sont exclusifs mutuellement - ne tentez pas de positionner ON les 5 et 6 ensemble, par exemple, ou vous ferez un courtcircuit entre les signaux coupure de courant et batterie faible. Cest tout ce quil y a ` dire. Vous pouvez ajouter cela ` votre documentation. a a

8.

Informations sur un certain nombre donduleurs

36

8.9
Charli crit : e

Sendom

Jai connect un onduleur Seldom avec powerd. Peut-tre que ce qui suit sera utile avec dautres onduleurs. e e Jai utilis le diagramme de la page de man de powerd : e
9 broches DTR DSR DCD GND 4 6 1 5 25 broches 20 6 8 7 ---------| > -< 10k > ------------------relais -------------------

En fait, londuleur seldom nutilise pas de relais mais quelque chose dautre et fonctionne dans un sens, mais pas dans lautre. Si donc le cble ne fonctionne pas, il faut essayer dinverser les broches sur le relais. a

8.10

Best

Linformation sur les onduleurs Best est disponible sur le site web de Best Power . Leur site contient un paquetage checkup.tar (section 4 (Logiciels)) de communication avec leurs onduleurs, aussi bien en modes intelligent que bte, fourni en sources, donc compilable sous Linux. a Best Fortress avec le logiciel de Best Mini-Howto des onduleurs Best Power par Michael Stutz et http://dsl.org/m . Version 1.0, 14 aot 1997 u 8.10.1 Avertissement

Copyright 1997 Michael Stutz5 ; cette information est libre ; elle peut tre redistribue et/ou modie selon e e e les termes de la Licence Publique Gnrale GNU (GPL) version 2 ou (` votre prfrence) ultrieure, pour e e a ee e autant que la prsente phrase soit conserve ; cette information est fournie SANS AUCUNE GARANTIE ; e e sans mme de garantie implicite dadaptation ` un besoin particulier ; se reporter ` la GPL de GNU pour e a a plus de dtails. e 8.10.2 Introduction

Best Power est constructeur donduleurs de haute qualit, et leur srie Fortress est particuli`rement bien adapte ` des e e e e a utilisateurs habituels de Linux. Bien que ses produits ne soient actuellement pas aussi bon march que e
NdT : la traduction de ce paragraphe est fournie ` titre indicatif au lecteur. Se reporter ` la version originale a a pour les termes exacts.
5

8.

Informations sur un certain nombre donduleurs

37

certains autres (comme ceux dAPC), Best Power fournit le code source de son logiciel et a t tr`s ractif ee e e quant aux questions poses par des utilisateurs de Linux. De plus, son matriel semble choisi souvent par e e les consommateurs, ce qui en fait un bon choix pour les utilisateurs de Linux. Ce document dcrit linstallation dun onduleur Best Power Fortress (le mod`le utilis est un 660a de 1996 e e e accompagn de son CD-ROM) sur une machine Linux. e 8.10.3 Installation

Matriel Installez londuleur comme indiqu par les instructions. Les sries Fortress de Best Power sont e e e fournies avec un cble RS-232 destin ` tre connect ` un port srie libre ` lari`re de lordinateur. a eae ea e a e Logiciel Voici ce qui di`re du manuel, qui ne contient pas actuellement dinstructions spciques pour e e Linux. En revanche, le CD-ROM daccompagnement conient avec le code source du logiciel de londuleur, ce qui en rend la mise en oeuvre triviale. Pour raliser celle-ci, suivez les tapes ci-dessous, et utilisez le manuel comme rfrence pour avoir une vue e e ee densemble sur le fonctionnement gnral du logiciel. Jai pris la libert de faire quelques modications dans e e e ce HOWTO sur la conguration du logiciel Fortress pour Unix dune mani`re qui me semble plus adapte ` e e a un syst`me Linux. Par exemple, jai limin la ncessit dun rpertoire /etc/best, et plac les excutables e e e e e e e e dans /usr/local/bin qui me semble un endroit plus appropri. e Dabord, crez le script upsdown destin ` tre excut lors dun arrt secteur. Celui-ci va arrter le e eae e e e e syst`me : e
cat > /etc/upsdown <<EOF #!/bin/sh shutdown -h now < /dev/console & EOF

Maintenant, crez les rpertoires pour la documentation et le code source : e e


mkdir /usr/doc/best mkdir /usr/local/src/best

Montez le CD-ROM, et dsarchivez le chier unix/checkups.tar dans un rpertoire temporaire : e e


cd /tmp tar /cdrom/unix/checkups.tar

Allez dans le rpertoire etc/best/advanced qui doit avoir t cr dans le rpertoire temporaire ` e e e ee e a partir de larchive ; Copiez la documentation et les chiers script ` leurs emplacements idoines dans le syst`me : a e
cp cp cp cp README /usr/doc/best manual.txt /usr/doc/best bestsend /etc source/*.c /usr/local/src/best

Nettoyez le chantier dans le rpertoire temporaire et compilez le logiciel : e


cd /usr/local/src/best rm -R /tmp/etc gcc -o checkups checkups.c

8.

Informations sur un certain nombre donduleurs

38

gcc -o mftalk mftalk.c mv checkups /usr/local/sbin mv mftalk /usr/local/sbin

Testez londuleur. Remplacez ttySx par le port srie de votre choix. Si votre connexion est bonne, e vous devriez voir une ligne de carac`res simprimer ` lcran : e a e
mftalk /dev/ttySx

Rendez le programme checkups excutable au dmarrage pour le tester. Cela peut tre ralis dun e e e e e certain nombre de mani`res dirents (dcrites dans le manuel). Celle que jai utilise consiste ` ajouter e e e e a une ligne dans /etc/inittab :
ups:234:once:/usr/local/sbin/checkups -c500 /dev/ttyS1

Testez le tout. Supprimez lalimentation secteur de londuleur en retirant le fusible de londuleur, et attendez quelques minutes. Le logiciel ache un message dalerte puis arrte le syst`me apr`s quelques e e e instants. Si cela fonctionne, retirez loption -c500 de la ligne de votre inittab (qui en gros implique darrter e le syst`me systmatiquement au lieu de ne le faire que lorsque le courant est coup), et vous pouvez e e e rouler ! Conclusion Toute suggestion permettant damliorer ce document ou les techniques qui y sont dcrites e e est la bienvenue. A linstant o` jcris ces lignes, Best Power semblait intress par linclusion de la prsente u e e e e information ou dune autre dans la sienne an daider les utilisateurs de Linux par rapport ` ses produits, a il sagit donc rellement dune entreprise ` promouvoir. Vous pouvez lui transmettre vos impressions ` e a a sales@bestpower.com et support@bestpower.com . Best Fortress LI-950 Quelques commentaires sur le Best Fortress, de Leonard N. Zubko , message du 25 mai 1995 dans comp.os.linux.hardware6 : Citation de nautix@community.net : Daccord avec ce que dit Craig. APC a t tr`s peu coopratif, mais je nai que de bonnes choses ee e e a ` dire sur Best. Jutilise son mod`le LI 660 ; 660 VA, des tas dindications sur le panneau frontal, e etc. Le logiciel CheckUPS est en option payante et ncessite quelques bidouillages pour entrer dans e mons syst`me de chiers FSSTND-is (NdT : File System STaNDard, le standard de rpartition des e e e lments dans les rpertoires prconis pour Linux) (les rpertoires et noms de chiers sont en dur ee e e e e pour SunOS 4.1.x). Je serai heureux de vous envoyer mes dis, si vous les voulez (jadore quand un constructeur fournit le source en tant que pratique commerciale normale !!). Le logiciel CheckUPS est limit, cependant, ` raliser des arrts automagiques (NdT : automagic dans e a e e le texte). Londuleur peut fournir des tas dinformations sur son tat ; CheckUPS ne contrle que Si e o le courant est coup, combien de temps reste-til dautonomie ` la batterie ?. e a Best suit aussi ses questionnaires de satisfaction clients. Jai indiqu ma dception que CheckUPS ne e e dispose pas de plus de fonctions dinterrogation (comme le voltage en entre, en sortie, le pourcentage e de charge, etc.) qui sont disponibles en entre. Jai demand les spcications de linterface ; ils ont e e e dit : bien sr et me lont envoy en 2 jours, gracieusement. Un contrleur dtat de londuleur u e o e complet est dans ma casserole de derri`re. Quelquun voit-il une utilit ` ce genre dutilitaire ? e ea
6

(NdT : le texte qui suit a t reformat. Le document dorigine comporte une copie de message de forum) ee e

8.

Informations sur un certain nombre donduleurs

39

Rponse de Leonard N. Zubko : e Laissez-moi ajouter une autre recommandation pour Best Power. Je viens dacheter un Fortress LI950, mais jai dclin leur ore logicielle pour CheckUPS. Contrairement ` certaines autres gammes, e e a un simple cble trois ls sut ` connecter le Fortress ` un port srie pas besoin de montage pulla a a e up ` faire dans le cble. Quelques minutes de bidouillage et javais un programme qui fait ` la fois a a a daemon darrt syst`me et qui coupe le courant de sortie ensuite lorsque le syst`me est arrt durant e e e ee une priode sur batterie. e Je pourrais ventuellement utiliser le mode de communications srie plus intelligent plutt que le simple e e o mode de contact, et jai donc demand la documentation au support technique de Best, et il est arriv e e aujourdhui, une semaine apr`s mon appel. Apr`s avoir tudi celle-ci, je dciderai si une interface plus e e e e e intelligente est rellement intressante, en particulier puisque dans certains cas jaurais besoin darrter e e e deux machines en rseau partageant londuleur. e Leonard. Best Ferrups En complment ` la documentation et au logiciel sur le site web de Best, vous pouvez aussi utiliser e a le paquetage bestups-0.9.tar.gz (section 4 (Logiciel)). Nous avons juste commenc ` le tester avec ea notre Ferrups 5 kVA. Lide de base est quil y a deux modules. Lun qui reoit des demandes dinformation du port rseau, e c e les relaie ` londuleur, et renvoit les rsultats. Le second module parle au premier, interpr`te les a e e rsultats, et rpond OK ou FAIL. e e Cest susant pour que le paquetage powerd-2.0.tar.gz (section 4 (Logiciel)) fasse le reste. Les dtails se trouvent dans le paquetage lui-mme. e e Par ailleurs, notre Ferrups 5 kVA a fonctionn sans histoire pour nos 10 ordinateurs et 30 crans. e e

8.11

GPS1000 dACCODATA
>From hennus@sky.nl.mugnet.org Thu Mar 10 15:10:22 1994 Newsgroups: comp.os.linux.help Subject: Re: shutdown automatique avec un onduleur From: hennus@sky.nl.mugnet.org (Hennus Bergman) Date: Tue, 1 Mar 1994 22:17:45 GMT Distribution: world Organization: The Organization For Removal Of On-Screen Logos Dans larticle <CRAFFERT.94Feb28125452@nostril.lehman.com>, Colin Owen Rafferty <craffert@nostril.lehman.com> ecrit : >Je suis pr^t ` acheter un onduleur pour ma machine, et jen e a >voudrais un qui sache faire un "auto-shutdown". > Je viens den acheter un vraiment pas cher :-) Cest un GPS1000 dACCODATA. Tout le monde conna^t la bonne qualite de leur production (je nai pas dactions chez eux :-() ? >Je suppose que tous ont une sorte de connexion serie qui previent le >systeme de cela. > Je lai pris ` part pour trouver comment il fonctionnait. Il y avait a trois optocoupleurs (deux sorties, une entree) connectes sur un connecteur a ` 9 broches ` larriere. Lun sallume lorsque le courant est coupe, et a

8.

Informations sur un certain nombre donduleurs

40

seteint lorsque ce dernier revient. Durant ce temps, on peut utiliser l"entree" pour arreter la batterie (il relache le relais de puissance). Le troisieme est une sorte dacquittement de la commande darret. Je pense que linterface de mon onduleur a ete concue pour etre connectee a des niveaux TTL, mais avec quelques resistances il peut etre connecte a un port serie. Il est branche de telle sorte quavec un port RS-232 on ne puisse utiliser les deux optocoupleurs de sortie; mais lacquittement de la commande darret nest pas vraiment necessaire. On peut se contenter de celui qui est important (Notez quil est possible de faire fumer la partie transistor des optocoupleurs avec des niveaux RS-232 si on le branche mal). ;-) Jesperais etre capable de le connecter a mon port de jeux inutilise, mais ce dernier na pas de sortie, nest-ce pas ? Je vais probablement finir par mettre un port parallele supplementaire pour ca. Tous les onduleurs nutilisent pas doptocoupleurs, certains se contentent de simple relais, qui sont moins difficiles a connecter, mais bien sur, pas aussi elegants. >Quelquun a-t-il ecrit un paquetage qui surveille londuleur et effectue >un shutdown (ou similaire) lorsque le courant sarrete ? SysVinit-2.4 (et probablement 2.5 aussi bien) a un demon powerd qui surveille le port serie en continu et previent init quand CD (Detection de porteuse) tombe. Init active ensuite un shutdown avec un delai. Si le courant revient apres quelques minutes, le shutdown est arrete. Tres beau. Le seul probleme que jaie eu avec est quil ne dit pas a londuleur de sarreter lorsque le shutdown est fini. Il attend simplement la avec une invite root. Je vais probablement ecrire un petit programme pour larreter >depuis /etc/brc. RSN. > Colin Rafferty, Lehman Brothers <craffert@lehman.com>

Hennus Bergman

8.12

TrippLite BC750LAN (Standby UPS)

Tom Webster , lauteur du paquetage genpower , ma envoy des informations sur le TrippLite BC750LAN . e Si vous avez lun dentre eux, cest probablement le meilleur paquetage pour commencer. Mais pour tre exhaustif, voici le diagramme de brochage du cble (ralis par ttonnements, et sans docue a e e a mentation) :
Onduleur Systeme DB-25 DB-25 1 <--------------> 1 2 <--------------> 8 <--------------> 4 8

Masse Coupure de secteur Circuit de detection Inverseur darret Circuit

3 <--------------> 2 20 <--------------> 22

8.

Informations sur un certain nombre donduleurs

41

8.13

APC

Si la plthore de paquetages pour APC cits plus haut ne vous permettent pas de dmarrer, il est possible e e e que la section qui suit soit dune certaine utilit. e Backup-UPS Il semble quil y ait une certaine controverse sur la abilit des informations indiques ici sur les APC e e Back-UPS, donc, soyez prudent. Je prface cette section avec un message davertissement que jai recu. e Il peut ne pas prendre tout son sens tant que le reste de la section nest pas lu, mais ainsi, au moins vous aves plus de chances de le voir. Et, ` nouveau, comme je nai aucun onduleur APC, je ne peux a vrier la abilit daucun de ces messages. e e Un message davertissement Message de Marek Michalkiewicz sur le BUPS-HOWTO7 : Si vous voulez connecter un onduleur APC Back-UPS sur votre machine Linux, ce qui suit peut vous intresser. e Il y a un bon BUPS-HOWTO qui dcrit comment le faire. Mais il comporte un bug. e Le signal RTS du port srie est utilis pour arrter londuleur. Celui-ci ne sarrtera que sil travaille e e e e sur batterie. Le manuel indique que le le signal darrt doit durer au moins 0,5ms. Mais un temps e infrieur est susant, au moins pour mon propre APC Back-UPS 600. e Lutilisation de RTS peut tre dangereuse, car ce dernier est mont ` louverture du priphrique. Le e ea e e programme backupsd le redescend ensuite, mais il reste haut un moment. Cela coupe le courant lors du premier lancement de backupsd sil y a une coupure secteur ` ce moment prcis. Cela peut arriver a e par exemple si londuleur est teint, et que le courant revienne seulement pour un moment. e Soit il faut lancer backupsd avant de monter les syst`mes de chiers en lecture/criture, soit (de e e prfrence) utiliser TX (broche 3) plutt que RTS (broche 7) pour teindre londuleur (la numrotation ee o e e est pour un DB-9). On peut utiliser ioctl(fd, TCSBRKP, 10); pour monter TX pendant une seconde, par exemple. Lutilisation de TX doit etre plus sre. Je posterai peut-tre les di si le temps me le u e permet... BUPS-HOWTO Luminated Software Group Prsente e HOWTO utilisation donduleurs Back-UPS (dAPC ) (pour protger votre syst`me Linux) e e Version: 1.01 BETA Document de : Christian G. Holtje Information sur le cblage et aide : Ben Galliart a Adaptation franaise : Bernard Choppy c Ce document est plac dans le Domaine Public ` une condition. Celle-ci est que ce qui appartient a e a Csar revienne ` Csar. Modiez ceci autant que vous voulez, rappelez juste que nous avons travaill e a e e dessus. Attention ! Ni moi, ni aucun de ceux qui on crit ou aid ` ce document, ne garantissons quoi que ce soit concernant e ea ces textes/sources/indications. Si quoi que ce soit est endommag, nous ny sommes POUR RIEN ! e
7

(NdT : le texte qui suit a t reformat. Le document dorigine comporte une copie de courrier lectronique) ee e e

8.

Informations sur un certain nombre donduleurs

42

Cela fonctionne POUR AUTANT QUE NOUS LE SACHIONS, mais nous pouvons avoir fait des erreurs. Donc, soyez prudent !
8

Bien, vous venez juste dacheter (ou vous allez le faire) un Back-UPS dAPC (dautres mod`les pourront e peut-tre bncier de ces informations, avec peu ou pas de modications, mais nous ne savons pas). e e e Vous avez jet un coup doeil au prix du couple logiciel/cble Power-Chute, et ntes pas sr que le e a e u jeu en vaille la chandelle. Bien, jai fait mon propre cble, et mon propre logiciel et je les utilise pour a arrter automatiquement mon syst`me Linux lors dune coupure secteur. Vous savez quoi ? Vous e e pouvez aussi ! *** Le Cble *** a Ctait la partie la plus dicile ` imaginer (je my connais peu en hardware, donc Ben a fait le plus gros e a du travail). Pour en fabriquer un, vous devez acheter ce qui suit chez votre marchand dlectronique e du coin : 1 connecteur souder subminiature mle DB-9 ; a a 1 connecteur souder subminiature femelle DB-9 ; a 2 bo tiers pour les connecteurs ci-dessus (vendus sparement en gnral) ; e e e Du cble multi-brins (pas du mono-brin). a Il vous faut aussi, mais vous pourrez peut-etre lemprunter : un fer ` souder ; a de la soudure. Ok... Voici comment connecter le tout ! Ces diagrammes montrent le ct ARRIERE (celui o` vous soudez les cbles sur les broches). Les oe u a lettres V, R et B reprsentent les couleurs des cbles que jai utiliss, et facilitent la distinction des e a e e e o lignes9 . Le manuel de lAPC utilise une numrotation dirente. Ignorez-la ! Utilisez la ntre... Je lai dj` change pour vous !). ea e
--------------------\ B R * * * / \ * * * V / -----------Cote Male (vers londuleur)

--------------------\ R * * * V / \ * B * * / ------------

Cote femelle (vers le port COM)

Pour ceux qui prf`rent les chires : ee


Male Femelle --------------------------------------1 7 Bleu 2 1 Rouge 9 5 Vert NdT : Le document dorigine contient des rfrences de pi`ces dtachees Radio-Shack, qui etaient distribues par ee e e e le rseau Tandy en France. Ce reseau nexiste plus, et les rfrences ont donc t supprimes de la version franaise. e ee ee e c Le lecteur nammoins intress pourra se reporter ` la version anglaise du prsent document. e e e a e 9 (Note : jutilise la numrotation standard RS-232 (pour autant quon puisse dire) e
8

8.

Informations sur un certain nombre donduleurs

43

- Complment : Utilisation des broches RS-232 ! - Puisque nous avons eu ` trouver cette infore a mation : Depuis lARRIERE (ct soudure), les broches sont numrotes ainsi : oe e e
--------------------\ 1 2 3 4 5 / \ 6 7 8 9 / ------------

Les broches signient


Numero 1 2 3 4 5 6 7 8 9 Nom Abreviation (parfois prefixee par D) Detection de porteuse CD Reception de donnees RD Transmission de donnees TD(?) Terminal de donnees pret DTR Masse de signal Gnd Jeu de donnees pret DSR Demande pour envoyer RTS(?) Pret a envoyer CS Indicateur de sonnerie RI

Ce que nous avons fait tait la connexion de la ligne RS-232 de londuleur Fail Output sur CD, le e chssis de londuleur sur Gnd, et lentre Shut Down sur RTS. Facile, maintenant quon vous le dit, a e non ? Je nai aucune ide du comportement du logiciel ci-dessous, si vous achetez le cble dAPC. Il peut e a fonctionner, ou non. *** Le Logiciel *** Jutilise le paquetage SysVInit de Miquel van Smoorenburg pour Linux (voir ` la n pour emplacements, a remerciements, adresses E-mail, etc.). Je ne sais ce qui doit tre chang pour utiliser linit de quelquun e e dautre, mais je sais que ce code (qui suit) fonctionne avec celui de Miquel. Simplement ainsi je remercie comme je le dois. Jai regard dans le code de Miquel pour comprendre comment ioctl() fonctionnait. e Si je navais pas eu cet exemple, jaurais eu des probl`mes. Jai aussi utilis la routine powerfail() e e (telle quelle, je crois), puisquelle doit interagir avec init, jai pens quil devait savoir a mieux que e c moi. Le chier .c est ` la n de ce document, et ncessite seulement dtre copi/coll. Pour cela, a e e e e supprimez simplement tout ce qui nest pas du code. Ce document doit se terminer par la ligne /* Fin de Fichier */... Coupez le reste. Ce programme peut, soit tre lanc comme daemon pour contrler ltat de londuleur et lindiquer e e o e a ` init, soit tre lanc pour envoyer la commande kill-power (coupure dalimentation) ` londuleur. e e a Lalimentation ne sera coupe que sil y a un probl`me secteur et que londuleur est sur batteries. Une e e fois le courant revenu, il se rallume. Pour le lancer comme dmon, entrez simplement : e
backupsd /dev/backups

/dev/backups est un lien vers /dev/cua0 (COM 1, pour les DOSseurs) actuellement. La beaut du e lien est que je nai qu` le refaire si je passe sur COM 2 ou COM 3. a Ensuite, si le secteur sarrte, init lancera les commandes de powerwait. Un exemple (qui vient de e mon /etc/inittab) :
#Voici les actions de coupure de courant pf::powerwait:/etc/rc.d/rc.power start po::powerokwait:/etc/rc.d/rc.power stop

8.

Informations sur un certain nombre donduleurs

44

Powerwait sera lanc si le courant baisse, et powerokwait sil revient. e Voici mon rc.power complet :
#! /bin/sh # # rc.power # # Version : # # Auteur : #

Ce fichier est execute par init en cas de coupure de courant @(#)/etc/rc.d/rc.power 1.50 1994-08-10

Christian Holtje, <docwhat@uiuc.edu>

# Definit le chemin PATH=/sbin:/etc:/bin:/usr/bin:/sbin/dangerous # Regarde comment nous avons ete appele case "$1" in start) echo "Attention - probleme dalimentation secteur." | wall # Sauvegarde le niveau de fonctionnement actuel ps | gawk { if (($5 == "init") && ($1 == "1")) print $6 } \ | cut -f2 -d[ | cut -f1 -d] \ > /tmp/run.level.power /sbin/shutdown -h +1m ;; stop) echo "Alimentation secteur revenue." | wall echo "Tentative darret du shutdown." | wall shutdown -c ;; *) echo "Usage: $0 [start|stop]" exit 1 ;; esac

Pas mal, non ? En fait, il y a un petit probl`me, l`... Je nai pas eu le temps de le trouver... Sil y a e a un gourou sh par ici... Jai laiss un petit dtail de ct, cest de faire couper lalimentation par londuleur si le PC est arrt e e oe ee courant coup. Cela est ralis en ajoutant la ligne suivante ` la n de votre script halt : e e e a
/sbin/backupsd /dev/backups killpower

Cela va simplement couper lalimentation si le secteur est coup. e *** Tester le tout *** Cest juste une petite section pour vous dire : SOYEZ PRUDENT ! Je vous recommande la sauvegarde de vos partitions Linux, avec plusieurs sync avant de tester, et dtre prudent en gnral. Evidemment, je ne fais que vous le recommander. Je nai pas t prudent e e e ee du tout, et jai eu ` nettoyer ma partition plusieurs fois pendant les tests de ma conguration. Mais a celle-ci fonctionne. :-) *** O` lobtenir *** u Le SysVInit de Miquel van Smoorenburgs peut se trouver sur : SysVinit-2.50.tgz

8.

Informations sur un certain nombre donduleurs

45

et une correction pour certains shell bash se trouve juste ` ct : SysVinit-2.50.patch1 a oe Pour ce qui est dobtenir ce HOWTO, vous pouvez menvoyer un E-mail, docwhat@uiuc.edu avec pour sujet :request et le mot-clef backups dans le corps du message : Demande du HOWTO original (il est possible que jautomatise cela, et dautres choses). *** Section des remerciements qui sont ds *** u Merci ` : a Miquel van Smoorenburg pour son superbe paquetage SysVInit et son powerd.c qui mont beaucoup aids ; e Christian Holtje Documentation backupsd.c (ce qui nest pas de Miquel) rc.power ; Ben Galliart Le cble, informations sur le standard RS-232 et astuces bruyantes (non rapportes ici). a e
/* * * * * * * * * * * */ backupsd.c -- Simple daemon pour lire les signaux de coupure de courant dun onduleur Back-UPS (dAPC). Certaines parties proviennent du powerd.c de Miquel van Smoorenburg Dautres sont originales de Christian Holtje <docwhat@uiuc.edu> Je crois quon peut dire que cest dans le Domaine Public, simplement noubliez pas de citer les auteurs originaux, la ou cest necessaire. Avertissement : Nous ne garantissons RIEN de ce logiciel, ni nassumons aucune responsabilit concernant son e utilisation, bonne ou mauvaise.

#include #include #include #include #include #include #include #include

<sys/types.h> <sys/ioctl.h> <fcntl.h> <errno.h> <stdlib.h> <unistd.h> <stdio.h> <signal.h>

/* Cest le fichier necessaire pour SysVInit */ #define PWRSTAT "/etc/powerstatus" void powerfail(int fail); /* Programme principal */ int main(int argc, char **argv) { int fd; int killpwr_bit = TIOCM_RTS; int flags; int status, oldstat = -1; int count = 0; if (argc < 2) { fprintf(stderr, "Usage: %s <peripherique> [killpower]\n", argv[0]); exit(1);

8.

Informations sur un certain nombre donduleurs

46

} /* Ouverture du port */ if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) { fprintf(stderr, "%s : %s : %s\n", argv[0], argv[1], sys_errlist[errno]); exit(1); } if ( argc >= 3 && (strcmp(argv[2], "killpower")==0) ) { /* Coupons lalimentation */ fprintf(stderr, "%s : Tentative de coupure dalimentation !\n", argv[0] ); ioctl(fd, TIOCMBIS, &killpwr_bit); /* Hmmm... Si vous avez une coupure dalimentation, */ /* ce code ne sera jamais execute */ exit(0); } else /* Puisquil ne faut pas couper lalimentation, il faut restaurer */ /* RTS (killpwr_bit) */ ioctl(fd, TIOCMBIC, &killpwr_bit); /* Passe en demon. */ switch(fork()) { case 0: /* Je suis le fils */ setsid(); break; case -1: /* Passage demon manque */ fprintf(stderr, "%s : fork impossible.\n", argv[0]); exit(1); default: /* Je suis le pere */ exit(0); }

/* Maintenant, on scrute la ligne DCD */ while(1) { ioctl(fd, TIOCMGET, &flags); status = (flags & TIOCM_CD); /* Si DCD est monte, le secteur est coupe */ if (oldstat == 0 && status != 0) { count++; if (count > 3) powerfail(0); else { sleep(1); continue; } } /* Si DCD est redescendu, le secteur est revenu */ if (oldstat > 0 && status == 0) { count++; if (count > 3) powerfail(1); else { sleep(1); continue; } } /* Reinit du compteur, sauvegarde de letat et sleep 2 secondes */ count = 0; oldstat = status;

8.

Informations sur un certain nombre donduleurs

47

sleep(2); } /* Erreur ! (ne doit pas arriver) */ return(1); }

/* Signale a init que le courant est coupe ou revenu */ void powerfail(ok) int ok; { int fd; /* Cree le fichier necessaire a init pour shutdown/abandon */ unlink(PWRSTAT); if ((fd = open(PWRSTAT, O_CREAT|O_WRONLY, 0644)) >= 0) { if (ok) write(fd, "OK\n", 3); else write(fd, "FAIL\n", 5); close(fd); } kill(1, SIGPWR); } /* Fin de Fichier */

Autres informations
10

Message de Jim Ockers du 12 janvier 1995 dans comp.os.linux.hardware : Selon la base de connaissances (KnowledgeBase) de Microsoft, il semble que la broche 5 du connecteur des onduleurs APC Back-UPS et Smart-UPS (test avec un Back-UPS 400 sous Windows NT ) monte e un signal batterie faible deux minutes au moins avant lpuisement de la batterie. e Ce signal est au niveau TTL collecteur ouvert, et peut tre ramen aux niveaux RS-232 selon le e e schma suivant : e

Broche 5

Broche 8 +---------+ o------| 10 kOhm |-------o +---------+

Par ailleurs, le manuel de londuleur stipule que la broche commune ` utiliser est la 4 (et non la 9, a mme si celles-ci sont branches ensemble). e e Message de Peter Kammer du 7 octobre 1996 : Les schmas de brochage sont inverss en ce qui concerne les connecteurs mles : en eet, les broches e e a sont numrotes de mani`re inverse sur les connecteurs mles et femelles (puisque leurs sens sopposent e e e a
(NdT : Le document original comporte de nombreuses copies de courriers lectroniques ` ce point. Le traducteur e a sest permis den raliser une synth`se plus courte et, il lesp`re, plus facile ` utiliser) e e e a
10

8.

Informations sur un certain nombre donduleurs

48

lors du brancement). Il faut donc considrer que les schmas pour les connecteurs mles sont vus ct e e a oe extrieur et non ct intrieur (soudure), contrairement ` ce qui est indiqu. e oe e a e Par ailleurs, il existe un document de rfrence technique pour les onduleurs Back-UPS qui se trouve ee sur le site web dAPC . Message de Troy Muller du 6 avril 1997 : Londuleur Back-UPS Pro 650 fonctionne avec le cble standard dAPC . La rfrence du cble est a ee a 940-023A et le logicel est Enhanced APC BackUPS . Ce logiciel envoit des messages globaux toutes les deux secondes, mais un eu de bidouillage de dowalll.c permet de limiter cette fonction. APC Smart-UPS De nombreuses personnes ont un APC Smart UPS. Il semble quil existe des paquetages pour utiliser ceux-ci en mode intelligent (voir les paquetages mentionns plus haut e Enhanced APC UPSD-v1.4.tar.gz, apcd-0.5.tar.gz et smupsd-0.7-1.i386.rpm dcrits dans la sece tion 4 (Logiciels)). Je ne sais pas ce que vaut le support pour chacun deux. Il semble quAPC continue a ` refuser de publier son protocole pour le mode intelligent sans un accord de non-diusion, ainsi tout le monde a d faire de la rtro-ingnirie dessus. u e e e Le consensus gnral est dinvestr dans une gamme qui publie cette information, comme Best. e e Une autre possibilit est dutiliser la version du logiciel de contrle donduleurs Powerchute dAPC e o pour SCO Unix via le paquetage de compatibilit iBCS . Clive A. Stubbings me dit que cela fonctionne e bien apr`s quelques ajustements du script dinstallation. Il dit que le seul probl`me est que linterface e e graphique semble avoir des probl`mes ` contrler des onduleurs `-travers le rseau. e a o a e Si vous possdez un APC Smart-UPS et que vous narriviez pas ` le faire fonctionner en mode intelligent e a avec aucun de ces logiciels, vous pouvez malgr tout encore lutiliser en mode bte. Les sections qui e e suivent dtaillent cette procdure. Jai reu, en particulier, des messages concernant les mod`les 600 , e e c e 700 et 1400 . Il vous faudra probablement bidouiller powerd.c comme indiqu dans la section 6.2 e (Analyse de cbles et modication de powerd.c). a Message de Lam Dang du 19 aot 1994 dans comp.os.lnux.misc : u Ralisation du cble pour un APC Smart-UPS mod`le 600 . e a e Le cable est a realiser entre un connecteur DB-9 femelle sur londuleur et un DB-25 male sur lordinateur. Le boitier du DB-25 est assez grand pour contenir un regulateur de tension et deux resistances. Linterface entre le connecteur de londuleur et celui du PC est ainsi :
Onduleur (DB-9) 1 3 4 5 9 (Extinction) (Coupure de secteur) (Commun) (Batterie faible) (Masse chassis) PC (DB-25) 20 5 7 8 1 (DTR) (CTS) (GND) (DCD) (Chassis Ground)

Vous pouvez utiliser la broche 6 de londuleur au lieu de la broche 3 (elles sont inverses lune de lautre). La complication est de monter les broches collecteur ouvert 3 (ou 6) et 5 de londuleur. Ce mod`le APC fournit une sortie non regule de 24 V continu sur la broche 8. La tension de sortie est e e disponible tout le temps (au moins un peu apr`s que le signal de batterie faible soit mont). Lintensite e e est limitee a 40mA. Pour monter, la broche 8 est lalimentation dun rgulateur de tension de +5V. La e

8.

Informations sur un certain nombre donduleurs

49

sortie de ce rgulateur passe dans deux resistances de 4,7kohm. Lautre bout dune resistance connecte e les broches 3 (Coupure de courant) de londuleur et 5 du PC (CTS). Celle de lautre resistance connecte les broches 5 de londuleur (Batterie faible) et 8 du PC (DCD). Les deux resistances consomment environ 2 mA lorsquelles sont a la masse. Lorsque londuleur est aliment, les broches 5 (CTS) et 8 (DCD) ct PC doivent tre tr`s proches de e oe e e 5V, et monter la broche 20 pendant 5 secondes ne doit avoir aucun eet. Lorsque londuleur passe sur batteries, la broche 5 (CTS) doit tomber ` 0V, la broche 8 (DCD) doit rester ` lidentique ` 5V, et a a a monter la broche 20 (DTR) en court-circuitant les broches 8 et 20, par exemple, doit teindre londuleur e apr`s environ 15 secondes. e Lorsque la diode Low Battery du panneau frontal sallume, la broche 8 (DCD) doit descendre ` 0V a aussi. Les tensions de linterface onduleur sont NEGATIVES pour la coupure de secteur (sur la broche 3 de londuleur) et la batterie faible, et POSITIVE pour larrt ` distance. Les param`tres de ligne srie e a e e comme la vitesse nont aucune importance. Liste du materiel necessaire : un bo tier DB-9 ; un connecteur sub-DB-25 femelle ; un rgulateur de tension 7805 +5Vdc ; e deux rsistances de 4,7kohm ; e un carte ` composants perfore ; a e un cble avec au moins un connecteur 9 broches mle. a a Et de plus : un multim`tre ; e un fer ` souder; a quelques heures... APC Smart-UPS 700 Voici quelques dtails sur le fonctionnement du mod`le 700 en mode bte, qui prsente une utilisation e e e e fute dun transistor plac dans le cble qui teint londuleur lorsque lordinateur est teint. e e a e e
From: Markus Eiden <Markus@eiden.de> Sender: eiden@eiden.de To: "Harvey J. Stein" <abel@netvision.net.il> Subject: Re: APC Smart-UPS Date: Sun, 30 Mar 1997 16:21:05 +0200

Jutilise un APC Smart-UPS 700 pour mon syst`me Linux sur une carte ASUS. e Pour utiliser quelques possibilites de londuleur, il faut quatre choses : 1) faire un cble RS-232 avec une petite interface ; 2) le source du powerd du paquetage sysvinit a (jutilise la version 2.6 de Miquel van Smoorenburg). Il faut ensuite modier ce powerd ; 3) changer /etc/inittab ; 4) faire un script qui lance certaines commandes si le courant est coup ou si la batterie e est faible. Quelques possibilits : e Lorsque le secteur est coup, un script est lanc et une entre est faite dans syslog. e e e

8.

Informations sur un certain nombre donduleurs

50

Si la batterie est faible, un autre script est lanc (qui arte lordinateur, videmment) et une entre est e e e e faite dans syslog. Si lordinateur est arrt et que le courant lest aussi, londuleur sera arrt ` son tour. ee eea 1) Dabord le cble : a Si lon jette un coup doeil ` larri`re de londuleur, on y trouve un connecteur femelle comme celui-ci : a e
8 X X 1 X X X 3 X X 4 X X 5 1: Eteint londuleur lorsque le courant est coupe et que la broche 1 est haute. 3: Descend en cas de coupure de curant. 4: Masse 5: Descend en cas de baisse de la batterie. 8: +24V

Dun autre ct, larri`re du PC prsente un connecteur mle comme celui-ci : oe e e a


8 X X 4 X 6 X X X 1 1: 4: 5: 6: 8: DCD DTR GND DSR CTS

X X 5

Il faut raliser linterface suivant entre ces connecteurs : e


PC UPS

#-----------------| 470 Ohm | #-----#-----#-----#-----#-----#----- ca. 9-12V | | | | | | 47 3.3 3.3 3.3 1 470 kOhm kOhm kOhm kOhm kOhm Ohm | | | | | | (8) ------------------------# | | | | | | | (6) ------------#------------------------------------------| | | | (1) ------------------#------------------------------------| | | | C#------------------------| -| | | B/ | (4) ------#-----12kOhm---------| | \>E | | | (5)-----------------------------#-------#-------------------

(8)

(5) (3) (1)

(4)

jutilise un transistor BC140, mais ` peut pr`s nimporte quel transistor NPN devrait faire a e laaire ;-) Le transistor fonctionne comme inverseur. Si lon teint lordinateur ET que le courant est e coup, la broche 4 du PC descend et la broche 1 de londuleur monte. Cela teint lnduleur pour e e conomiser la batterie. e

8.

Informations sur un certain nombre donduleurs

51

2) Le source de powerd Jai juste retouch tr`s peu le source (donc cest en fait celui de Miquel). e e (a) Emet une alerte vers syslogd si la broche 8 du PC (DCD) est basse (cest qualors, le cble nest a pas connect) ; e (b) DCD descendu ` zro -> le courant est coup -> appel de powerfail(0) -> envoi de a e e INIT CMD POWERFAIL au processus init ; (c) DCD remont -> le courant est revenu -> appel de powerfail(1) -> envoi de INIT CMD POWEROK e au processus init ; (d) DSR et DCD descendus ` zro -> le courant est coup et la batterie est faible > appel de a e e powerfail(2) -> envoi de INIT CMD POWERFAILNOW au processus init. Et voil`. a
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

powerd

Surveille la ligne DCD dun port serie connecte a un onduleur. Si le courant est coupe, previent init. Si le courant revient, previent init encore. Tant que le courant est la, DCD doit etre "haut". Lorsque le courant est coupe, DCD doit descendre. Powerd maintient DTR haut, donc en branchant une resistance de 10 kOhm entre DCD et DTR, londuleur ou un simple relais peuvent descendre DCD ` la masse. a Il faut aussi brancher DSR et DTR ensemble. Ainsi, powerd peut controler ici et la que DSR soit haut, et il sait donc que londuleur est connecte !! powerd /dev/cua4 (ou tout autre port serie). Miquel van Smoorenburg, <miquels@drinkel.cistron.nl>. Quelques changements mineurs de Markus Eiden, <Markus@Eiden.de> pour APC-Smart-UPS-powerd. 1.31, 29-Feb-1996.

Usage: Auteur:

Version: Traduction:

Bernard Choppy (choppy@imaginet.fr) Ce programme fut developpe initialement pour mon employeur ** Cistron Electronics ** qui a autorise la distribution de celui-ci pour un usage generalise. Copyright 1991-1996 Cistron Electronics.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Ce programme est un logiciel libre ; vous pouvez le diffuser et/ou modifier selon les termes de la GPL (GNU Public License) de la Free Software Foundation; au choix dans la version 2 de cette licence, ou (a votre choix) toute autre version.

8.

Informations sur un certain nombre donduleurs

52

* * */

Modifications mineures pour APC-powerd par Markus Eiden Markus@Eiden.de

/* Utilisation de la nouvelle methode de communication avec init */ #define NEWINIT #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <signal.h> #include <syslog.h> #include <string.h> #include "paths.h" #ifdef NEWINIT #include "initreq.h" #endif #ifndef SIGPWR # define SIGPWR SIGUSR1 #endif #ifdef NEWINIT void alrm_handler() { } #endif /* Avise init du changement detat du courant */ void powerfail(ok) int ok; { int fd; #ifdef NEWINIT struct init_request req; /* Remplissage de la structure de requete */ memset(&req, 0, sizeof(req)); req.magic = INIT_MAGIC;

/* * * * * *

INIT_CMD_* sont definis dans initreq.h Jetez un coup doeil a init.c et /etc/inittab ok=0 -> INIT_CMD_POWERFAIL ok=1 -> INIT_CMD_POWEROK ok=2 -> INIT_CMD_POWERFAILNOW -> powerwait -> powerokwait -> powerfailnow

* * * * * */

switch (ok) {

8.

Informations sur un certain nombre donduleurs

53

case 0 : req.cmd = INIT_CMD_POWERFAIL; /* Coupure -> alerte */ break; case 1 : req.cmd = INIT_CMD_POWEROK; /* Retour du courant -> arrete lalerte */ break; case 2 : req.cmd = INIT_CMD_POWERFAILNOW; /* Coupure et batterie faible -> arret systeme */ break; } /* Ouvre le fifo (avec timeout) */ signal(SIGALRM, alrm_handler); alarm(3); if ((fd = open(INIT_FIFO, O_WRONLY)) >= 0 && write(fd, &req, sizeof(req)) == sizeof(req)) { close(fd); return; } /* On en revient a lancienne methode... */ #endif /* Creaton dun fichier unlink(PWRSTAT); if ((fd = open(PWRSTAT, if (ok) write(fd, else write(fd, close(fd); } kill(1, SIGPWR); } /* Programme principal */ int main(int argc, char **argv) { int fd; int dtr_bit = TIOCM_DTR; int flags; int status, oldstat = -1; int count = 0; int tries = 0; int powerfailed = 0; int rebootnow = 0; if (argc < 2) { fprintf(stderr, "Usage: powerd <port>\n"); exit(1); } /* Lancement de syslog */ openlog("powerd", LOG_CONS|LOG_PERROR, LOG_DAEMON); /* Ouverture du port a surveiller */ info pour init */ O_CREAT|O_WRONLY, 0644)) >= 0) { "OK\n", 3); "FAIL\n", 5);

8.

Informations sur un certain nombre donduleurs

54

if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) { syslog(LOG_ERR, "%s: %s", argv[1], sys_errlist[errno]); closelog(); exit(1); } /* Port ouvert, DTR doit etre haut. On le force tout de meme...*/ /* * * * * * * Fonctionnement : Batterie faible -> Arret -> DTR descend -> transistor ouvert -> La broche darret onduleur monte -> londuleur sarrete apres 20 s environ. Sil y a une coupure et que lordinateur est eteint, londuleur sarrete. Si le courant revient, londuleur sallume, lordinateur demarre, et powerd est lance. * * * * * * */

ioctl(fd, TIOCMBIS, &dtr_bit);

/* Passe en daemon. */ switch(fork()) { case 0: /* Fils */ closelog(); setsid(); break; case -1: /* Erreur */ syslog(LOG_ERR, "impossible de forker."); closelog(); exit(1); default: /* Pere */ closelog(); exit(0); } /* Relance syslog. */ openlog("powerd", LOG_CONS, LOG_DAEMON); syslog(LOG_INFO, "APCpowerd demarre..."); /* On surveille DCD */ while(1) { /* Lecture de letat. */ ioctl(fd, TIOCMGET, &flags); /* Controle de connexion : CTS doit etre haut */ tries = 0; /* TIOCM_*- Se reporter a .../ams/termios.h */ while((flags & TIOCM_CTS) == 0) { /* On continue a essayer, et alerte toutes les 2 minutes */ if ((tries % 60) == 0) syslog(LOG_ALERT, "Onduleur non connecte"); sleep(2); tries++;

8.

Informations sur un certain nombre donduleurs

55

ioctl(fd, TIOCMGET, &flags); } if (tries > 0) syslog(LOG_ALERT, "Onduleur reconnecte"); /* Calcule letat en cours */ status = (flags & TIOCM_CAR); /* Si DCD est passe a zero, le courant a ete coupe */ if (oldstat != 0 && status == 0) { count++; if (count > 3) { powerfailed = 1; powerfail(0); } else { sleep(1); continue; } } /* Si DCD remonte, le courant est revenu. */ if (oldstat == 0 && status > 0) { count++; if (count > 3) { powerfailed = 0; /* eigentlich unnoetig: */ rebootnow = 0; powerfail(1); } else { sleep(1); continue; } } /* if if if { Batterie faible et courant coupe ? */ (rebootnow==0) (powerfailed==1) ((flags & TIOCM_DSR) == 0) rebootnow=1; powerfail(2); } /* Reinitialisation, stockage de letat et attente 2s. */ count = 0; oldstat = status; sleep(2); } /* Narrive jamais */ return(0); }

8.

Informations sur un certain nombre donduleurs

56

3) Modier inittab init reoit les commandes INIT CMD et lance les scripts idoines : c
pf::powerwait:/sbin/init.d/powerfail start pn::powerfailnow:/sbin/init.d/powerfail now po::powerokwait:/sbin/init.d/powerfail stop

Ce qui signie, par exemple : si le courant est coup (powerwait, e /sbin/init.d/powerfail avec le param`tre start. e 4) Le script powerfail
#! /bin/sh # Copyright (c) 1997 Markus Eiden, Markus@Eiden.de # case "$1" in start) echo "LE COURANT EST COUPE !" | wall logger "Coupure de courant" ;; now) echo "BATTERIE FAIBLE ! Arret systeme dans une minute" | wall logger "Batterie faible, arret systeme dans une minute" sync /sbin/shutdown -r -t 5 +1 ;; stop) echo "LE COURANT EST REVENU !!" | wall logger "Courant retabli" /sbin/shutdown -c >/dev/null 2>/dev/null ;; *) echo "Usage: $0 {start|now|stop}" exit 1 ;; esac exit 0

lancer le script

Eh bien, cela devrait tre simple ;-) e Vous voil` prt maintenant, mais restez prudent : cela fonctionne pour moi, mais je ne peux videmment a e e pas garantir que quoi que ce soit de cela fonctionne pour vous. Un petit conseil pour nir : si /sbin/init.d/powerfail arrte votre PC, DTR descend, donc la e broche darrt (ct onduleur) monte. D`s cet instant, il faut entre 20 et 30 secondes ` londuleur e oe e a pour sarrter. Cest de votre responsabilit dempcher votre machine Linux de redmarrer durant e e e e ces 20 secondes (en particulier, de monter les volumes disque). Cela ne fut pas un probl`me pour mon e syst`me. e Quatre mthodes simples permettent dempcher Linux de dmarrer rapidement : e e e 1. le BIOS doit raliser certaines routines (comme identier le nombre de pistes de votre lecteur de e disquettes si vous en avez un) ;

8.

Informations sur un certain nombre donduleurs

57

2. LILO peut tre congur pour attendre sil est install ; e e e 3. il peut ne rien y avoir ` faire (comme dans mons cas) ; a 4. il est possible dacheter plus de mmoire an que le dcompte dure 30 secondes. Cela doit e e correspondre environ ` 1 024 Mo ;-). a APC Smart-UPS 1 400 Autre jour, autre APC. Voici pour le Smart-UPS 1 400 , en mode bte. e
From: "Slavik Terletsky" <ts@polynet.lviv.ua> To: hjstein@math.huji.ac.il Subject: my contribution to UPS HOWTO Date: Mon, 27 Jan 1997 21:10:16 +0000

Daemon donduleur pour FreeBSD (2.1.5 - test). e Schma de branchement : e


Onduleur (broche, nom) ---------------------1 Arret 2 Courant Coupe 4 Commun 5 Batterie faible 8 Batterie (+24V) PC (broche, nom) -------------------->-----------> 4 Terminal pret >-----------> 8 Pret a emettre >-----------> 5 Masse >----------+> 1 Detection de porteuse >-|10kOhm|-+

Description
Usage: upsd <device> [wait [script]] device wait script - device name upsd interacts thru (e.g. /dev/cuaa1) - time (secs) to wait before running script, (default value 0 sec). - system shutdown script (default /etc/rc.shutdown).

Fonctionnement : upsd enregistre tous les changements dtat de londuleur (courant prsent ou absent, batterie faible e e ou bonne). Lorsque le courant est absent et que la batterie est faible, upsd active le signal darrt de e londuleur, attend le nombre de secondes indiqu sur la ligne de commande, et lance le script darrt. e e Exemple de script :
#!/bin/sh # Le script est execute lorsque le systeme sarrete PATH=/sbin:/bin:/usr/sbin:/usr/bin echo "ARRET IMMEDIAT DU SYSTEME" | wall reboot

Source dupsd :
/* * * * * daemon donduleur Copyright 1997 Slavik Terletsky. All rights reserved. Auteur: Slavik Terletsky <ts@polynet.lviv.ua> Systeme: FreeBSD Traduction: Bernard Choppy <choppy@imaginet.fr>

8.

Informations sur un certain nombre donduleurs

58

*/ #include #include #include #include #include #include #include #include #include #include #include #include

<stdio.h> <stdlib.h> <signal.h> <syslog.h> <unistd.h> <varargs.h> <fcntl.h> <errno.h> <sys/uio.h> <sys/types.h> <sys/ioctl.h> <sys/ttycom.h>

int status; int wait = 0; FILE *fd; char *scr = "/etc/rc.shutdown"; char *idf = "/var/run/upsd.pid"; void upsterm(); void upsdown(int); int main(int argc, char *argv[]) { int pd; int zero = 0; char d5, d6, d7; char low = 0; char pow = 1; /* controle des arguments */ switch(argc) { case 4: scr = argv[3]; case 3: wait = atoi(argv[2]); case 2: break; default: fprintf(stderr, "usage: %s <port> [temporisation [script]]\n", argv[0]); exit(1); } /* controle de lexistence du script */ if(!(fd = fopen(scr, "r"))) { fprintf(stderr, "fopen: %s: %s\n", scr, sys_errlist[errno]); exit(1); } fclose(fd); /* controle si upsd sexecute deja */ if(fd = fopen(idf, "r")) { fprintf(stderr, "fopen: le fichier %s existe deja\n", idf); exit(1); }

8.

Informations sur un certain nombre donduleurs

59

/* passe en daemon */ switch(fork()) { case -1: /* erreur */ fprintf(stderr, "fork: %s\n", sys_errlist[errno]); exit(1); case 0: /* fils */ break; default: /* pere */ exit(0); } /* sauvegarde du pid */ if(!(fd = fopen(idf, "w"))) { fprintf(stderr, "fopen: %s: %s\n", idf, sys_errlist[errno]); exit(1); } fprintf(fd, "%d\n", (int)getpid()); fclose(fd); /* ouverture du port a surveiller */ if((pd = open(argv[1], O_RDWR | O_NDELAY)) < 0) { fprintf(stderr, "open: %s: %s\n", argv[1], sys_errlist[errno]); exit(1); } /* le daemon fonctionne */ openlog("upsd", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "daemon demarre"); /* reaction au signal */ (void)signal(SIGTERM, upsterm); /* surveillance du port */ while(1) { /* reinitialisation des bits */ if(ioctl(pd, TIOCMSET, &zero) < 0) { fprintf(stderr, "ioctl: %s\n", sys_errlist[errno]); exit(1); } /* lecture de letat du port */ if(ioctl(pd, TIOCMGET, &status) < 0) { fprintf(stderr, "ioctl: %s\n", sys_errlist[errno]); exit(1); } /* d5 d6 d7 determination de letat */ = status & 0x20; = status & 0x40; = status & 0x80;

/* courant present */ if(!(d7 + d5)) { if(!pow) {

8.

Informations sur un certain nombre donduleurs

60

syslog(LOG_CRIT, "courant present"); pow = 1; } /* courant coupe */ } else { if(pow) { syslog(LOG_CRIT, "courant coupe"); pow = 0; } } /* batterie faible */ if(!d6 && !low) { syslog(LOG_ALERT, "batterie faible"); low = 1; /* arret onduleur */ if(!pow) { upsdown(pd); } } /* batterie ok */ if(d6 && low) { syslog(LOG_CRIT, "batterie ok"); low = 0; } sleep(1); } /* jamais atteint */ return 0; } void upsterm() { /* message de trace de fin */ syslog(LOG_INFO, "arret du daemon"); /* effacement du fichier de pid */ unlink(idf); exit(0); } void upsdown(int pd) { /* message de trace darret */ syslog(LOG_ALERT, "arret du systeme"); /* effacement du fichier de pid */ unlink(idf); /* mesure de securite : vidange des tampons decriture */ system("/bin/sync");

9. Comment eteindre dautres machines sur le mme onduleur ? e

61

system("/bin/sync"); system("/bin/sync"); /* arret de londuleur */ status = TIOCM_DTR; if(ioctl(pd, TIOCMSET, &status) < 0) { fprintf(stderr, "ioctl: %s\n", sys_errlist[errno]); exit(1); } /* attente puis lancement du script */ sleep(wait); system(scr); } # Slavik Terletsky # University "Lvivska Poytechnika" # # Network Administrator # mailto:ts@polynet.lviv.ua #

Comment eteindre dautres machines sur le mme onduleur ? e

Certaines personnes (y compris moi-mme), ont plusieurs PC Linux connects sur un onduleur. Un PC e e contrle londuleur et doit teindre les autres PC lorsque le secteur est coup. o e e Nous supposons que les PC peuvent communiquer sur un rseau. Appelons le PC qui surveille londuleur le e ma tre, et les autres PC, les esclaves. Dans les temps anciens, cela ncessitait une amusante programmation. e Maintenant, la meilleure chose ` faire semble tre de trouver lun des paquetages powerd-2.0.tar.gz ou a e upsd-1.0.tgz cits ` la section 4 (Logiciels) et de suivre les instructions. Les deux sont capables de e a fonctionner sur les esclaves dans un mode qui les connecte ` un processus powerd ou upsd sexcutant sur a e le ma pour lui demander ltat de londuleur. Certains des paquetages spciques pour APC semblent tre e e disposer aussi de cette fonctionnalit. e Nammoins, si votre rseau nest pas sr, vous pouvez tre amen ` souhaiter plus de scurit dans ce e e u e e a e e montage, puisquil est possible de pirater un powerd esclave pour lui faire croire que le courant est coup. e Une autre possibilit est dutiliser le protocole SNMP (Simple Network Management Protocol - protocole e simpli dadministration de rseau). Le dtail de lutilisation de SNMP dpasse le cadre de ce document, e e e e pour ne pas dire que cela me dpasse tout court actuellement. e

9.1

Mthode de ltat du port e e

Congurez un port sur le ma qui, lorsquon y est connect, envoie soit OK, soit FAIL, soit BATtre e LOW lorsque le courant est l`, quil est coup, ou que la batterie est faible, respectivement. Montez cela a e sur le port 13 (le port time) sur lequel vous pouvez faire un telnet et recevoir lheure locale. Montez sur les esclaves une version de powerd qui lit ce port plutt que de contrler une ligne srie. o o e Je pense que cest probablement la meilleure mthode, et jai lintention dupgrader mes syst`mes pour e e lutiliser.

9. Comment eteindre dautres machines sur le mme onduleur ? e

62

9.2

Mthode dmission en lair e e

e e e Identique ` la section 9.1 (Mthode de ltat du port), mais par mission dun message broadcast Ethernet a signiant lvnement. e e Cela peut avoir des implications de scurit, puisquil peut tre {{spoofed}} e e e

9.3

Mthode du pseudo-login e

Congurez les pseudo-login sur les esclaves avec les noms powerok et powerfail, tous les deux avec le mme e UID. Faites de /etc/powerokscript le shell du user powerok, et de /etc/powerfailscript celui du user powerfail. Sur le ma tre, faites en sorte que le script /etc/powerokscript fasse un rlogin sur chaque esclave en tant que user powerok et que le script /etc/powerfailscript fasse un rlogin en tant que powerfail sur chaque esclave. Placez un chier .rhosts sur chaque esclave dans le rpertoire par dfaut de powerok et e e powerfail pour autoriser le root du master ` entrer comme users powerok et powerfail sur chaque esclave. a Cest le syst`me que jutilise actuellement. Malheureusement, jai quelques dicults ` faire que les e e a login distants sexcutent et rendent la main sans se bloquer. Il faudrait probablement que le script e /etc/powerfailscript fasse les rsh sur les esclaves en tche de fond pour lui viter de bloquer. Nammoins, a e e je nai jamais obtenu de login correct en tche de fond. Jai mme essay des combinaisons complexes comme a e e faire se loger toto sur lesclave. Tout ce que jai utilis avait des probl`mes et se trouvait bloqu par un e e e entre tty (ou sortie, je ne men rappelle plus). e En plus, cela peut crer des trous de scurit. e e e

Vous aimerez peut-être aussi