Problèmes de démarrage des outils UPS réseau avec un onduleur Eaton 3S


10

Exécution d'un serveur Ubuntu sur un onduleur Eaton 3S 700VA. La connexion USB d'Eaton est connectée à mon serveur Ubuntu. J'essaie d'utiliser NUT pour gérer l'onduleur.

Après sudo suING

cat /etc/nut/ups.conf:

[eaton]
    driver = usbhid-ups
    port = auto
    desc = "Eaton 3S"

upsdrvctl -t start

Network UPS Tools - UPS driver controller 2.6.1
*** Testing mode: not calling exec/kill
   0.000000 
   0.000805 Starting UPS: eaton
   0.000955 exec:  /lib/nut/usbhid-ups -a eaton

upsdrvctl start

Network UPS Tools - UPS driver controller 2.6.1
Network UPS Tools - Generic HID driver 0.35 (2.6.1)
USB communication driver 0.31
Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)

Réponses:


10

Bien que je ne prétende pas être un expert ici, je crains que cette réponse n'entraîne un changement d'autorisation persistant lors d'un redémarrage et / ou que le câble USB de l'onduleur soit déplacé vers un port différent.

En suivant les informations d'ici: Réflexions sur le Nannerpuss: NUT - Network UPS Tools - sur Ubuntu .

"... Le problème concerne le fait qu'Ubuntu monte le périphérique comme appartenant à root, mais le démon nut tombe sur un compte non privilégié qui n'a pas l'accès nécessaire. La solution simple consiste à utiliser udev pour ajuster les autorisations du périphérique.

Connectez l'appareil et (en tant que root) exécutez lsusb et localisez-le. Notez les ID de bus et de périphérique ainsi que la paire Vendor: Product ID .... "

en utilisant la sortie comme dans la réponse ci-dessus:

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply   

à nouveau à partir du lien "... Vous pouvez créer une règle udev qui contrôle le comportement de montage au démarrage: ..." (modifié pour mieux correspondre à ce scénario) "

  • utilisez votre éditeur de texte préféré pour créer (très probablement) un nouveau fichier udev rules.d. Le nombre doit être supérieur à tout autre fichier de règles udev.d pour la même action:

par exemple

sudo nano /etc/udev/rules.d/90-nut-ups.rules

# /etc/udev/rules.d/90-nut-ups.rules
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="051d", ATTR{idProduct}=="0002", \
MODE="0660", GROUP="nut"

La règle surveille les ajouts de périphériques USB avec un fournisseur et un produit correspondant à l'onduleur. Il définit ensuite le mode sur 0660 et le groupe sur nut au lieu de la racine par défaut.

Notez que cette réponse utilise l'autorisation 660 plutôt que 666 car cela devrait être suffisant et plus sécurisé.

Rechargez udev (redémarrez, ou peut-être débranchez puis rebranchez le câble USB de l'onduleur au port pc), puis déconnectez et reconnectez l'appareil et vérifiez que les nouvelles autorisations sont correctes. Je ne suis pas clair sur cette partie. Dans tous les cas, une fois que le groupe d'utilisateurs nut a lu et écrit sur l'appareil, il doit pouvoir démarrer correctement.

L'édition udev rules.d a fonctionné sur mon système 12.04.2 même lorsque j'ai déplacé le câble USB vers un autre port, ce qui a entraîné des numéros de périphérique de bus différents sur la sortie lsusb. Udev a tout géré sans intervention. En fait, je n'ai peut-être pas dû redémarrer lorsque je l'ai déplacé, mais je ne m'en souviens pas avec certitude et je laisserai ce test à quelqu'un d'autre.


J'ai trouvé que cela fonctionnait bien pour moi avec un APC Back-UPS CS 650 sur Ubuntu 12.04.
Paul Gear

Cela ne devrait-il pas être signalé comme un bogue dans Ubuntu? et fixé dans le paquet de noix officiel?
Jarl

Cela fonctionne, mais en faisant défiler un peu et en lisant le nouveau message "ce bogue a déjà été corrigé" (en particulier: /lib/udev/rules.d/62-nut-usbups.rulesest installé maintenant) signifie que cette solution est techniquement obsolète.
dannysauer

9
  • Vous pouvez utiliser lsusbpour connaître le numéro de bus et de périphérique

  • Ensuite, changez l'autorisation sur l'appareil

    chmod 0666 /dev/bus/usb/[bus number]/[device number]
    

Par exemple

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
$ chmod 0666 /dev/bus/usb/002/004

3

concernant cette erreur:

 failed to claim USB device: could not claim interface 0: Operation not permitted

La FAQ NUT sur http://www.networkupstools.org/docs/FAQ.html a ceci (soulignement le mien):

si NUT a été fraîchement installé et si le cordon USB de l'appareil était déjà branché lors de l'installation de l'écrou [alors] débranchez et rebranchez simplement le cordon USB, puis redémarrez l'écrou.

Cette astuce a fonctionné pour moi.


J'ai dû redémarrer udev ( sudo systemctl restart udev) puis débrancher / rebrancher l'onduleur, FWIW.
dannysauer

1

Comme l'a dit ndemou, la FAQ NUT est consciente du problème, et un correctif a été publié, corrigeant le bogue. Mais les anciennes distributions stables pourraient être affectées. Espérons que la solution soit très simple ...

De la FAQ NUT: "Mon UPS USB est pris en charge mais ne fonctionne pas!" :

Sous Linux, des règles udev sont fournies pour définir les autorisations correctes sur le fichier du périphérique. Cela permet au pilote NUT de communiquer avec l'onduleur via ce fichier de périphérique.

Cependant, le pilote peut toujours ne pas démarrer et prendre en charge le périphérique, avec un message comme:

impossible de réclamer le périphérique USB: impossible de revendiquer l'interface 0: opération non autorisée

Une opération non autorisée est un message pointant vers un problème de privilège. Le problème le plus fréquent est que udev n'a pas réellement appliqué la règle:

if NUT has been freshly installed,
and if the device USB cord was already plugged when installing NUT. 

Dans ce cas, débranchez et rebranchez simplement le cordon USB, puis redémarrez NUT.

Une erreur s'est produite dans la dénomination du fichier de règles udev NUT, ce qui a entraîné le remplacement des règles par un autre fichier de configuration udev. Bien que cela ait été corrigé dans la branche principale de Git, votre distribution peut toujours être affectée. Les détails sont disponibles dans le numéro Github suivant: https://github.com/networkupstools/nut/issues/140

En regardant plus loin le problème Github, donnez-moi la solution:

Les règles udev sont appliquées trop tard (priorité 52), ce qui entraîne l'écrasement des privilèges écrous. Le résultat final est que le pilote ne démarre pas, et les échecs de connexion au pilote / UPS sont signalés par upsd et upsmon.

Le correctif consiste simplement à définir la priorité sur 62 en renommant le fichier de règles:

$ mv /lib/udev/rules.d/{5,6}2-nut-usbups.rules

Ce bug affecte:

Debian: http://bugs.debian.org/721600
Fedora / Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=488368
Ubuntu: https://bugs.launchpad.net/debian/+source/nut/+bug/1099947 and probably all Linux distribution

0

Si vous êtes loin du cordon USB de votre onduleur (brancher le nouvel onduleur frais et faire la configuration des mois plus tard parce que vous manquez de temps), et redémarrer votre machine n'est pas une option, vous pouvez redéclencher les règles udev:

udevadm control --reload
udevadm trigger
systemctl restart nut-server

Fait le travail.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.