Forum Astuces.divers Mise en place d'un watchdog par microcontroleur

Posté par . Licence CC by-sa
Tags : aucun
4
15
déc.
2014

Bonjour.

JKe cherche à mettre en place un watchdog pour PC à l'aide d'un microcontrôleur.

Je pourrais faire ça avec une carte style RPi mais je trouve que c'est du gachis. Aussi j'aimerais plutôt utiliser un microcontrôleur pour faire ce travail, le microcontrôleur étant chargé de redémarrer le PC si celui-ci ne répond plus.

L'inconvénient de cette méthode est qu'il faut que je trouve un signal quelque part que le PC pourrait m'envoyer. Sur certaines machines, j'ai du RS232, mais pas sur toutes. Je pourrais éventuellement passer par un convertisseur USB/Série (ce que je ferai si je n'ai pas plus simple), mais peut-être y aurait-il un autre moyen.

Auriez-vous une idée de signal à repiquer sur un PC qui permettrait de s'assurer que la machine est UP et pas figée (donc pas une alim de port USB par exemple) ?

Idéalement il faudrait que mon microcontroleur puisse modifier un signal (sortie pour lui, entrée pour le PC) : cette modification serait détectée par l'UC qui modifierait un autre signal (sortie pour le PC et entrée pour le microcontroleur) en retour.

Merci d'avance pour vos suggestions.

  • # carte reseau, heartbeat, ping, ou autre

    Posté par . Évalué à 3.

    une carte reseau sur chaque appareil, ensuite libre a toi de mettre les tests que tu veux,
    ca peut aller du simple ping à des trucs plus sophistiqués

    • [^] # Re: carte reseau, heartbeat, ping, ou autre

      Posté par . Évalué à 3.

      Je préfèrerais quelque chose de plus basique …

      • [^] # Re: carte reseau, heartbeat, ping, ou autre

        Posté par . Évalué à 3.

        on ne peut pas faire plus simple :
        ca existe sur beaucoup d'appareil,
        ca se controle par ping pour le plus simple des tests, tu peux faire des trucs plus compliqué si tu script.

        va faire la meme chose avec un port serie qui n'existe plus sur les machines recentes,
        ou tu peux te retrouver avec l'USB planté mais une machine fonctionnelle, et ou ton port USB/Serie ne sera pas fonctionnel,
        tu vas rebooter la machine juste pour ca ?

        alors oui, tu peux aussi essayer de piloter ta machine en branchant ton microcontroleur sur le bus I2C de ton ordi
        encore faut-il que ce bus existe…

        • [^] # Re: carte reseau, heartbeat, ping, ou autre

          Posté par . Évalué à 3.

          on ne peut pas faire plus simple

          Avec un microcontroleur ? Il faut sortir la grosse artillerie avec une interface ethernet, et je n'ai pas envie. Ce que je voudrais, c'est juste un microcontrôleur, une sortie pour le reset, une sortie pour le power on/off, et une sortie vers le 220V pour débloquer la machine si les actions sur reset ou power-off n'ont rien donné. Une version de microcontroleur avec 8 pattes devrait largement suffire.

          va faire la meme chose avec un port serie qui n'existe plus sur les machines recentes,

          Avec un port série (s'il existe), tu prends les lignes de contrôle (RTS/CTS ou je ne me rappelle plus le nom) et ça marche …

          tu peux te retrouver avec l'USB planté mais une machine fonctionnelle, et ou ton port USB/Serie ne sera pas fonctionnel,
          tu vas rebooter la machine juste pour ca ? A priori non, si je peux éviter, d'ou la question posée.

          alors oui, tu peux aussi essayer de piloter ta machine en branchant ton microcontroleur sur le bus I2C de ton ordi
          encore faut-il que ce bus existe…

          J'y avais pensé : le problème ne doit pas être son existence mais plutôt son accessibilité.

      • [^] # Re: carte reseau, heartbeat, ping, ou autre

        Posté par (page perso) . Évalué à 2.

        C'est pourtant la méthode la plus simple, étant donné que tu souhaites réaliser un watchdog sur un PC tout entier et non seulement sur un programme.

        Comme on est sur linuxfr, je fais l'hyptohèse que tes PC sont sous linux ;) Un petit cron sur chacun d'entre eux, qui fait un ping vers ton watchdog.

        Sur ton watchdog, tu récupères les pings. Si jamais un PC ne ping pas pendant un certains temps --> tu le redémarres.

        A noter aussi que tu peux le faire dans l'autre sens : c'est le watchdog qui ping et non le PC. Les deux approchent se défendent :
        - d'un côté tu as juste à t'assurer que les PC répondent au ping, et c'est au watchdog de savoir les adresses IP des PC à surveiller.
        - de l'autre, tu configures un cron sur tes PC, et il faut que chaque PC connaisse l'adresse du watchdog.

        • [^] # Re: carte reseau, heartbeat, ping, ou autre

          Posté par . Évalué à 3. Dernière modification le 15/12/14 à 23:09.

          C'est pourtant la méthode la plus simple, étant donné que tu souhaites réaliser un watchdog sur un PC tout entier et non seulement sur un programme.

          Ben disons que le programme peut faire un diagnostic du PC et ne pas envoyer de signal si celui-ci se trouve dans un état anormal. Et pour s'assurer que le programme tourne toujours, même s'il se plante, un respawn (ou équivalent) fera l'affaire.

          Quand je parle de basique, c'est d'un point de vue hardware.

          Comme on est sur linuxfr, je fais l'hyptohèse que tes PC sont sous linux ;)

          Perdu :) Celui que je veux surveiller de cette façon est sous NetBSD. C'est un xenhost qui a la facheuse manie de se figer de temps en temps lorsque je le charge trop (je n'ai pas encore trouvé pourquoi). Et c'est le seul que je veux surveiller. Plus tard je paserai peut-être par une solution un peu plus sophistiquée, mais pour l'instant je veux garder quelque chose d'assez simple.

          Un petit cron sur chacun d'entre eux, qui fait un ping vers ton watchdog.

          Je pensais plutôt à un prog qui tourne en permanence … avec un respawn (comme dit plus haut). Celà dit le lancement par cron n'est pas non plus à négliger …

          • [^] # Re: carte reseau, heartbeat, ping, ou autre

            Posté par (page perso) . Évalué à 2.

            Ben disons que le programme peut faire un diagnostic du PC et ne pas envoyer de signal si celui-ci se trouve dans un état anormal.

            C'est le principe initial du watchdog ;)

            Perdu :)

            Bon, unix like :) Les NetBSD ont bien un cron (ou équivalent) ? Non ? :D

            Je pensais plutôt à un prog qui tourne en permanence … avec un respawn (comme dit plus haut). Celà dit le lancement par cron n'est pas non plus à négliger …

            C'est tout aussi possible. Il n'y a pas forcément une approche qui est meilleure qu'une autre pour réaliser un watchdog. Si par contre tu veux faire quelque chose de plus pousser et lancer un diagnostic si quelque chose cloche, je pense que le programme qui tourne en permanence est plus adapté.

  • # La led du disque dur ?

    Posté par . Évalué à 2.

    C'est pas fiable à 100%, mais c'est simple à mettre en place.

    Pour plus de fiabilité, il y a le haut-parleur. Là tu peux avoir une appli qui envoi du son quand tout fonctionne.

    • [^] # Re: La led du disque dur ?

      Posté par . Évalué à 2.

      Le haut-parleur, ça me parait être une idée intéressante. A creuser effectivement. D'autres idées ? Sinon, la LED du disque dur j'y avais pensé aussi, mais je ne pense pas que ce soit fiable non plus.

      • [^] # Re: La led du disque dur ?

        Posté par . Évalué à 5.

        surtout que la led du disque dur, c'est comme le clignotant d'une voiture,
        un coup ca marche, un coup ca ne marche pas…

        :p

        • [^] # Re: La led du disque dur ?

          Posté par . Évalué à 2.

          C'est surtout que des fois ça peut ne pas marcher pendant très longtemps, et des fois ça peut marcher pendant très longtemps (accès disques massif …) et de façon aléatoire.

          Tiens en écrivant, j'ai pensé à un autre port : le port clavier : je peux peut-être faire quelque chose avec.

  • # Port Parallèle ?

    Posté par . Évalué à 2.

    Je vais peut-être dire une ânerie mais tes PC ne sont-ils pas encore équipés d'un port parallèle ? S'il y a du RS/232 (port série) alors le port imprimante est en général disponible. Le RS/232 a été le premier à disparaître pour promouvoir l'USB dans le courant des années 2000 mais l'autre avait eu un sursis.

    Dans l'affirmative, alors le port parallèle est à la fois ce qu'il y a de plus simple à programmer, de plus simple à bricoler et pas loin d'être le plus robuste également. Tous les geeks des années 1980 à 2010 qui ont fait un peu d'électronique se sont un jour amusés à brancher une LED dessus et à essayer de la piloter.

    • [^] # Re: Port Parallèle ?

      Posté par . Évalué à 3.

      Il est plus simple de trouver des machines avec un port série qu'avec un port parallèle, de nos jours.
      Le port //, plus personne ne l'utilise, alors que le port série à encore une utilité, lui (même si je doute qu'on puisse encore en trouver sur des PC portables, mais bon).
      Le //, à part pour les imprimantes, je ne l'ai jamais vu servir à quoique ce soit, alors que le port série est encore utilisé de nos jours, entres autres pour configurer les routeurs/switch paramétrables.

    • [^] # Re: Port Parallèle ?

      Posté par . Évalué à 2. Dernière modification le 16/12/14 à 13:24.

      Le RS/232 a été le premier à disparaître pour promouvoir l'USB dans le courant des années 2000 mais l'autre avait eu un sursis.

      bizarre il me semblait que c'etait l'inverse,
      les premiers peripheriques USB ayant été les claviers/souris et les imprimantes

      pour preuve, j'ai des portables avec USB et port Serie, mais sans port parallele :/

      • [^] # Re: Port Parallèle ?

        Posté par . Évalué à 2.

        Vos réponses m'étonnent un peu mais il est vrai que je ne remplace mes PC que rarement.

        Je confirme ce que j'ai affirmé : ce sont bien les ports séries RS/232 qui ont été incriminés au départ entre 2000 et 2002 pour favoriser l'USB ('faut dire qu'ils commençaient à être lents), et mon Toshiba Satellite 2410 (un portable) à peine plus jeune est bien équipé d'un port parallèle bien large, sans port série, mais avec 3 ports USB.

        Je me souviens aussi qu'au départ, les imprimantes USB étaient presqu'aussi chiantes à faire fonctionner que les modems ADSL de la même connectique, mais ça n'a pas duré longtemps. La vraie révolution s'étant déroulée avec les clés USB, à commencer par la DiskOnKey d'IBM : http://www.01net.com/editorial/156993/diskonkey-dibm-le-plein-de-memoire-a-la-clef/

  • # Question bête mais ...

    Posté par (page perso) . Évalué à 4.

    Tu as regardé si tu n'avais pas déjà un watchdog utilisable sur ta machine ? La sortie de dmesg devrait t'aider à l'identifier. C'est rare qu'il n'y ait pas, par exemple, un watchdog NMI sur les CPU x86 récents. Ces watchdogs permettent de détecter un système planté sans kernel panic, le cas des kernels panic étant gérés autrement. Bien sûr, ceci est valable en supposant que ton PC est sous Linux :)

  • # Watchdog intégré et I2C

    Posté par . Évalué à 5.

    As-tu vérifié qu'il n'y avait pas de watchdog déjà intégré dans le chipset de la carte mère ?

    La plus part des intel depuis les core 2 duo en ont.

    Sinon, les cartes mères ont souvent un bus i2c qui se trimballe sur la carte mère utilisé notamment par les capteurs de températures. Un sensors-detect peut te permettre de la voir. Le plus dur consiste ensuite à le trouver physiquement.

  • # itco

    Posté par . Évalué à 8.

    Si tu as une carte mère avec un chipset intel qui a moins de 10 ans, tu as déjà un watchdog intégré: iTCO
    il est géré sous linux par le driver itco_wdt
    sinon le noyau linux supporte plein d'autres cartes watchdog PCI que tu peux trouver sur internet.

    • [^] # Re: itco

      Posté par . Évalué à 3.

      Merci. Je ne sais plus si cette carte mère a moins de 10 ans : je vais regarder.

      +1 à vous tous, merci pour ces infos.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.