Monitorer un onduleur en USB


#1

(Re)Bonjour tous,

Mon souci du jour est de mettre en place l’interface qui dialoguera avec mon onduleur (le Protection Center 500 de MGE UPS Systems), et ce via une prise USB (c’est pas comme si j’avais le choix : apparemment les interfaces sur ports série sont bien galvaudées, mais pour l’USB, ça commence juste. Quelle chance).

J’ai installé le soft fourni par le fabricant, qui n’a pas marché. Quand je me suis rendu compte qu’il était exclusivement pour la communication sur port série, j’ai désinstallé le machin.

Ensuite j’ai essayé diverses choses, de la copie à la main des fichiers du .deb fourni par l’éditeur (même pas une semaine sous Linux et déjà des fichiers vagabonds dans les arborescences :confused: ) à ce tutoriel, remarquablement bien conçu, en passant par le site du projet NUT, Open Source, qui consiste à développer une interface polyvalente pour la gestion d’onduleurs sous lInux - projet recommandé par MGE, puisqu’il y contribue financièrement).

Bref, j’ai suivi le tuto mentionné ci-dessus. Comme il est vraiment très clair, je n’ai commencé à m’interroger qu’à partir de la compilation des sources (assez tôt, en fin de compte), puisque celle-ci génère une ou deux erreurs du genre “usb.h introuvable”, ce qui est probablement gênant quand on veut faire de l’USB. Malgré cela, j’ai continué.

En fait, c’est là que je bloque :# /usr/local/ups/bin/upsdrvctl -u ups startupsdrvctl étant censé être un processus essentiel au fonctionnement de l’appli, pourquoi n’existe-t-il pas dans les éléments installés ?!

Je leur aurai bien remonté l’erreur directement, mais impossible de m’inscrire pour les forums (mon login est déjà utilisé, ou incorrect, et en dernier recours la page d’inscription m’a sorti une belle erreur Apache).

Le but est de faire en sorte que quand le courant tombe, l’onduleur attende 5 minutes avant de demander à Linux de s’éteindre, puis encore 4 minutes qu’il se soit bien éteint (j’ai connu des reboot assez longs) avant de couper l’alim’. La cerise sur le gâteau serait qu’il redémarre la bécane lors de la reprise du courant, mais cela dépend du BIOS et je ne suis pas encore allé voir.

Alors voilà : avez-vous une idée sur la façon de procéder ?


#2

Bon, personne répond mais je vais quand même vous dire où j’en suis…
J’ai installé apcupsd, et suivi les informations fournies dans son manuel, configurant le fichier qui va bien.
Au démarrage du daemon (# /etc/init.d/apcupsd start), un petit message m’annonce que tout va bien. Là où ça cloche, c’est qu’un grep sur la liste des process ne m’en trouve aucun avec “apc” dans le nom.
Confirmation : quand j’arrête apcupsd, il me dit qu’il ne tourne pas… Il semble donc que le temps de vie du process soit pour le moins assez courte.

En fait, je soupçonne maintenant qu’il pourrait bien y avoir un souci avec mes ports USB… D’où la question : comment vérifier que les ports USB sont bien reconnus par le système, et utilisés (ie : surveillés par l’OS pour remonter le branchement d’un périphérique) ?!
J’ai bien faithttp://Calcifer:/etc/apcupsd# lspci -v | grep -i usb 0000:00:02.0 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.1 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 10 [OHCI]) 0000:00:02.2 USB Controller: nVidia Corporation nForce2 USB Controller (rev a4) (prog-if 20 [EHCI])Cela semble indiquer que l’USB est au moins détecté par le système. Vu que je dispose de 6 ports USB (2 en façade et 4 derrière par blocs de 2), je présume qu’il y a un contrôleur pour deux ports.

Là où je suis plus gêné, c’est que dans les docs d’APC, sont mentionnés des périphériques du genre /dev/usbX… Hors je n’ai rien qui corresponde même un peu. Par quels noms sont donc désignés les ports USB ?!

J’en suis à penser à un problème dans la configuration du noyau et, pourquoi pas, dans le BIOS (j’ai vu un thread qiu parlait de désactiver l’USB das le BIOS pour qu’il soit reconnu sous Linux… Hemm… Bizarre).

Des idées ?


#3

bon, pour connaitre l’etat de ton usb:

  • materiel
    lsusb
    (fichu hack, nespa ?)

  • pilotes
    lsmod | grep usb

Sinon, pour tout ce qui est montage auto des modules, j’installe systematiquement le paquet “hotplug”.
Pour ce qui est du contenu de /dev, j’installe le pkt “udev”, qui monte un filesystem virtuel exhaustif sur /dev (comme devfs, mais rien à toucher dans le noyau)

les paquets hal et read-edid amelorent aussi pas mal la gestion du materiel


#4

Mortel !

Bon, procédons dans l’ordre :Calcifer:/home/essaion# lsusb Bus 003 Device 002: ID 0463:ffff MGE UPS Systems UPS Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000Bon, déjà, un grand MERCI pour cette commande, au moins je vois que l’onduleur est bien pris en compte par le système. Je suis plus inquiet par le fait que la commande ne retourne que que 4 ports, dont 3 sur des contrôleurs différents ?! :confused:

Bon, c’est toujours ça en tout cas : je n’ai effectivement que l’onduleur de branché, pour l’instant. Passons à la suite :Calcifer:/home/essaion# lsmod Module Size Used by Not tainted lsmod: QM_MODULES: Function not implementedJ’ai évoqué ce point dans un autre thread en cours (celui où il est question de recompiler le noyau suite à désinstallations un peu brutales). Pour l’instant, je ne comprends pas, sauf à dire que j’ai compilé le noyau avec quasiment tout inclus dedans (le quasiment n’est pas sûr, je n’ai peut-être laissé aucun module). Cela dit, je ne vois pas en quoi ce choix de compilation ferait planter le lsmod, puisque j’ai quand même bien activé le support des modules dans le noyau (c’est du moins ce que je crois).

Enfin, pour hal, read_edid, udev et hotplug : ils sont tous installés sur mon système. A priori pas forcément bien utiles, mais là. Par contre, je ne les ai installés que parce que j’ai vu ici ou là qu’ils pouvaient être utiles. Y a t’il des astuces (genre configuration) qui seraient bonnes à connaître ? (d’accord, je vais lire les man, aussi).


#5

bon, ton lsusb dit que tu as 3 controleurs USB (avec deux prises chacuns, donc) et que ton onduleur est branché sur la deuxieme prise du hub n°3.
Dit comme ca ca te parait correspondre mieux à ta réalité materielle ?

sinon, tu ne m’as pas dit ce qu’avait donné la modif du modprobe.conf…

finalement, as tu bien lu
www2.apcupsd.com/3.10.x-manual/m … ation-File
il semble que pour un dispositif USB, il ne faille pas préciser de DEVICE, et qu’on laisse apcupsd faire une autodetection.
Tu en es ou, maintenant, la dessus ?


#6

Pour le lsusb (rapidemant), ouais, je suis pas trop inquiet en fait. Il ne liste probablement les “Device 002” de chaque bus que s’il y a au moins quelque chose sur le premier ?! (chaque contrôleur gère 2 prises sur ma CM).

Le modprobe.conf a été modifié par l’installation de module-init-tools : j’y ai maintenant PLEIN de choses. J’hésite encore à remettre l’include dont tu m’as parlé, compte tenu du fait qu’il pourrait bien se retrouver modifié à nouveau de toute façon…

Le lsmod fonctionne maintenant, mais il ne me liste rien : aucun module de chargé, donc, ce qui est logique vu que j’ai probablement tout inclus dans le noyau.

Pour apcupsd, c’est toujours la même : j’ai beau démarrer le service, je ne vois rien dans mes processes. J’ai aussi essayé avec nut, le problème est strictement identique : c’est comme si le service ne démarrait pas :Calcifer:/usr/share/doc/nut/docs# /etc/init.d/nut start Starting Network UPS Tools: upsmon.La ligne d’info devrait aussi m’afficher que le service upsd démarre. Et quand je cherche un process upsd, rien.

Bref, ça me paraît vraiment étrange, cette histoire de service qui fait à peine semblant de démarrer. Je crois avoir vu un truc sur la compilation du noyau, en rapport avec le support de l’USB HID (support des périphériques d’entrée sur USB). Le truc disait qu’il ne fallait pas compiler le noyau avec cette option. Mais je ne comprends alors pas comment mes autres périphériques USB vont fonctionner ?!

Quoi qu’il en soit, merci de ton aide !


#7

rapidement: non, il te présente chaque hub comme un seul device, et chaque péripherique en disant sur quelle prise du hub il est connecté…

si ca marche…

absolument, et j’espere pour toi que ca va changer une fois que tu auras lu ma remarque dans le fil sur les sensors.

[quote=“essaion”]Pour apcupsd, c’est toujours la même : j’ai beau démarrer le service, je ne vois rien dans mes processes. J’ai aussi essayé avec nut, le problème est strictement identique : c’est comme si le service ne démarrait pas :Calcifer:/usr/share/doc/nut/docs# /etc/init.d/nut start Starting Network UPS Tools: upsmon.La ligne d’info devrait aussi m’afficher que le service upsd démarre. Et quand je cherche un process upsd, rien.[/quote]
as tu regardé ce que faisaient les scripts correspondants dans /etc/init.d, et lancé à la main les commandes avec des options de déboguage pour avoir une info sur l’execution.

[quote=“essaion”]Bref, ça me paraît vraiment étrange, cette histoire de service qui fait à peine semblant de démarrer. Je crois avoir vu un truc sur la compilation du noyau, en rapport avec le support de l’USB HID (support des périphériques d’entrée sur USB). Le truc disait qu’il ne fallait pas compiler le noyau avec cette option. Mais je ne comprends alors pas comment mes autres périphériques USB vont fonctionner ?!
Quoi qu’il en soit, merci de ton aide ![/quote]
de rien. les HID (human interface device) ne concernent si je ne me trompe pas que les souris, clavier, trackpad, etc… donc tout ce qui n’est pas périphérique de saisie utilisateur devrait etre actif.
Mais si tu avais compilé en module, tu pourrais faire le test en désactivant ce module :slightly_smiling: