Probleme beim Starten der Netzwerk-USV-Tools mit einer Eaton 3S-USV

10

Ausführen eines Ubuntu-Servers auf einer Eaton 3S 700VA-USV. Die USB-Verbindung des Eaton geht in meinen Ubuntu-Server. Ich versuche , die USV mit NUT zu verwalten.

Nach sudo sudem Ing

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)
Zeophlit
quelle

Antworten:

10

Obwohl ich hier nicht behaupte, ein Experte zu sein, befürchte ich, dass diese Antwort bei einem Neustart nicht zu einer dauerhaften Änderung der Berechtigung führt und / oder das USB-Kabel von der USV an einen anderen Port verlegt wird.

Folgen Sie den Informationen von hier: Musings of the Nannerpuss: NUT - Netzwerk-USV-Tools - auf Ubuntu .

"... Das Problem besteht darin, dass Ubuntu das Gerät als Eigentum von root bereitstellt, der Nut-Daemon jedoch auf ein nicht privilegiertes Konto wechselt, das nicht über den erforderlichen Zugriff verfügt. Die einfache Lösung besteht darin, die Geräteberechtigungen mit udev anzupassen.

Schließen Sie das Gerät an und führen Sie (als Root) lsusb aus und suchen Sie es. Beachten Sie die Bus- und Geräte-IDs sowie das Paar Hersteller: Produkt-ID .... "

Verwenden der Ausgabe wie in der obigen Antwort:

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

erneut über den Link "... Sie können eine udev-Regel erstellen, die das Mount-Verhalten beim Booten steuert: ..." (bearbeitet, um diesem Szenario besser zu entsprechen) "

  • Verwenden Sie Ihren bevorzugten Texteditor, um (höchstwahrscheinlich) eine neue Datei udev rules.d zu erstellen. Die Anzahl muss höher sein als bei jeder anderen udev.d-Regeldatei für dieselbe Aktion:

beispielsweise

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"

Die Regel sucht nach USB-Gerätezusätzen bei einem Hersteller und Produkt, die mit der USV übereinstimmen. Anschließend wird der Modus auf 0660 und die Gruppe auf Mutter anstelle der Standardwurzel gesetzt.

Beachten Sie, dass diese Antwort die Berechtigung 660 anstelle von 666 verwendet, da dies ausreichend und sicherer sein sollte.

Laden Sie udev neu (starten Sie das USB-Kabel neu oder ziehen Sie den Stecker aus der Steckdose und schließen Sie es wieder an die USV am PC-Anschluss an). Trennen Sie das Gerät, schließen Sie es wieder an und prüfen Sie, ob die neuen Berechtigungen korrekt sind. Ich bin in diesem Teil unklar. In jedem Fall sollte die Nuss-Benutzergruppe nach dem Lesen und Schreiben auf dem Gerät erfolgreich starten können.

Die Bearbeitung von udev rules.d funktionierte auf meinem 12.04.2-System auch dann, wenn ich das USB-Kabel an einen anderen Port verlegte, was zu unterschiedlichen Busgerätenummern am lsusb-Ausgang führte. Udev handhabte alles ohne Intervention. Möglicherweise musste ich beim Verschieben keinen Neustart durchführen, kann mich aber nicht sicher erinnern und überlasse diese Tests jemand anderem.

user122096
quelle
Ich fand, dass dies für mich mit einer APC Back-UPS CS 650 unter Ubuntu 12.04 gut funktionierte.
Paul Gear
Sollte dies nicht als Fehler in Ubuntu gemeldet werden? und im offiziellen Nusspaket behoben?
Jarl
Dies funktioniert, aber wenn Sie ein wenig nach unten scrollen und die neuere Meldung "Dieser Fehler wurde bereits behoben" lesen (insbesondere: /lib/udev/rules.d/62-nut-usbups.ruleswird jetzt installiert), ist diese Lösung technisch veraltet.
Dannysauer
9
  • Sie können verwenden lsusb, um die Bus- und Gerätenummer herauszufinden

  • Ändern Sie dann die Berechtigung für das Gerät

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

Beispielsweise

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

zu diesem Fehler:

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

Die NUT-FAQ unter http://www.networkupstools.org/docs/FAQ.html enthält Folgendes : Hervorhebung von mir:

Wenn die MUTTER neu installiert wurde und das USB-Kabel des Geräts bereits bei der Installation der Mutter [dann] eingesteckt war, ziehen Sie einfach das USB-Kabel ab und stecken Sie es wieder ein. Starten Sie dann die Mutter neu.

Dieser Trick hat bei mir funktioniert.

ndemou
quelle
Ich musste udev ( sudo systemctl restart udev) neu starten und dann die USV FWIW ausstecken / wieder einstecken.
Dannysauer
1

Wie bereits erwähnt, sind sich die NUT-FAQ des Problems bewusst, und es wurde ein Patch veröffentlicht, der den Fehler behebt. Aber alte stabile Distributionen könnten betroffen sein. Hoffentlich ist die Lösung sehr einfach ...

Aus den NUT FAQ: "Meine USB-USV wird unterstützt, funktioniert aber nicht!" ::

Unter Linux werden udev-Regeln bereitgestellt, um die richtigen Berechtigungen für die Gerätedatei festzulegen. Dadurch kann der NUT-Treiber über diese Gerätedatei mit der USV kommunizieren.

Möglicherweise kann der Treiber das Gerät jedoch immer noch nicht starten und unterstützen. Die Meldung lautet:

USB-Gerät konnte nicht beansprucht werden: Schnittstelle 0 konnte nicht beansprucht werden: Betrieb nicht zulässig

Vorgang nicht zulässig ist eine Meldung, die auf ein Berechtigungsproblem hinweist. Das häufigste Problem ist, dass udev die Regel nicht angewendet hat:

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

In diesem Fall ziehen Sie einfach das USB-Kabel ab und wieder ein, und starten Sie NUT neu.

Bei der Benennung der NUT-udev-Regeldatei ist ein Fehler aufgetreten, der dazu führte, dass die Regeln von einer anderen udev-Konfigurationsdatei überschrieben wurden. Während dies im Git-Master-Zweig behoben wurde, ist Ihre Distribution möglicherweise weiterhin betroffen. Details finden Sie in der folgenden Github-Ausgabe: https://github.com/networkupstools/nut/issues/140

Wenn ich weiter auf das Github-Problem schaue, gebe ich die Lösung:

udev-Regeln werden zu spät angewendet (Priorität 52), was dazu führt, dass Nussprivilegien überschrieben werden. Das Endergebnis ist, dass der Treiber nicht startet und ein Verbindungsfehler zum Treiber / zur USV von upsd und upsmon gemeldet wird.

Das Update besteht einfach darin, die Priorität auf 62 zu setzen, indem die Regeldatei umbenannt wird:

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

Dieser Fehler betrifft:

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
Trolabuntu
quelle
0

Wenn Sie sich nicht am USB-Kabel Ihrer USV befinden (die neue USV einstecken und die Konfiguration Monate später durchführen, weil Ihnen die Zeit fehlt) und ein Neustart des Computers nicht möglich ist, können Sie die udev-Regeln erneut auslösen:

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

Macht den Job.

ouinouin
quelle