Avvio problematico degli strumenti UPS di rete con un UPS Eaton 3S


10

Esecuzione di un server Ubuntu su un UPS Eaton 3S 700VA. La connessione USB di Eaton va nel mio Ubuntu Server. Sto cercando di utilizzare NUT per gestire l'UPS.

Dopo sudo su'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)

Risposte:


10

Anche se non pretendo di essere un esperto qui, sono preoccupato che questa risposta non comporterà una persistente modifica delle autorizzazioni al riavvio e / o che il cavo USB dell'UPS venga spostato in una porta diversa.

Seguendo le informazioni da qui: Musings of the Nannerpuss: NUT - Network UPS Tools - su Ubuntu .

"... Il problema riguarda il fatto che Ubuntu monta il dispositivo come di proprietà di root, ma il daemon nut passa a un account senza privilegi che non ha l'accesso necessario. La semplice soluzione è usare udev per regolare le autorizzazioni del dispositivo.

Collega il dispositivo ed esegui (come root) lsusb e localizzalo. Nota gli ID bus e dispositivo, nonché il fornitore: coppia ID prodotto .... "

usando l'output come nella risposta sopra:

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

di nuovo dal link "... È possibile creare una regola udev che controlli il comportamento di mount all'avvio: ..." (modificato per adattarsi meglio a questo scenario) "

  • usa il tuo editor di testo preferito per creare (molto probabilmente) un nuovo file udev rules.d. Il numero deve essere maggiore di qualsiasi altro file delle regole udev.d per la stessa azione:

per esempio

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 regola controlla le aggiunte di dispositivi USB con un fornitore e un prodotto che corrispondono all'UPS. Quindi imposta la modalità su 0660 e il gruppo su nut anziché la radice predefinita.

Si noti che questa risposta utilizza l'autorizzazione 660 anziché 666 poiché dovrebbe essere sufficiente e più sicura.

Ricarica udev (riavvia, o forse scollega, quindi ricollega il cavo USB dall'UPS alla porta del PC), quindi disconnetti e riconnetti il ​​dispositivo e verifica che le nuove autorizzazioni siano corrette. Sono poco chiaro su questa parte. In ogni caso, una volta che il gruppo utenti nut ha letto e scritto sul dispositivo, dovrebbe essere in grado di avviarsi correttamente.

La modifica delle regole udev ha funzionato sul mio sistema 12.04.2 anche quando ho spostato il cavo USB su una porta diversa, causando numeri di dispositivo bus diversi sull'output lsusb. Udev ha gestito tutto senza intervento. In effetti, potrei non aver dovuto riavviare quando lo ho spostato, ma non me lo ricordo per certo e lascerò quel test a qualcun altro.


Ho scoperto che ha funzionato bene per me con un APC Back-UPS CS 650 su Ubuntu 12.04.
Paul Gear,

Questo non dovrebbe essere segnalato come un bug in Ubuntu? e riparato nel pacchetto ufficiale del dado?
Jarl,

Funziona, ma scorrendo un po 'verso il basso e leggendo il messaggio più recente "questo bug è già stato corretto" (in particolare: /lib/udev/rules.d/62-nut-usbups.rulesè installato ora) significa che questa soluzione è tecnicamente obsoleta.
dannysauer,

9
  • È possibile utilizzare lsusbper scoprire il bus e il numero del dispositivo

  • Quindi modificare le autorizzazioni per il dispositivo

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

Per esempio

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

3

per quanto riguarda questo errore:

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

Le FAQ NUT su http://www.networkupstools.org/docs/FAQ.html hanno questo (enfasi sulla mia):

se NUT è stato installato di recente e se il cavo USB del dispositivo è già stato inserito durante l'installazione del dado [quindi] basta scollegare e ricollegare il cavo USB, quindi riavviare il dado.

Quel trucco ha funzionato per me.


Ho dovuto riavviare udev ( sudo systemctl restart udev) e quindi scollegare / ricollegare l'UPS, FWIW.
dannysauer,

1

Come ha detto ndemou, la FAQ NUT è a conoscenza del problema e una patch è stata rilasciata, correggendo il bug. Ma potrebbero essere interessate vecchie distro stabili. Speriamo che la soluzione sia molto semplice ...

Dalle FAQ NUT: "Il mio UPS USB è supportato ma non funziona!" :

Su Linux, vengono fornite regole udev per impostare le autorizzazioni corrette sul file del dispositivo. Ciò consente al driver NUT di comunicare con l'UPS, attraverso questo file del dispositivo.

Tuttavia, il driver potrebbe non riuscire ad avviare e supportare il dispositivo, con un messaggio come:

impossibile rivendicare il dispositivo USB: impossibile rivendicare l'interfaccia 0: operazione non consentita

Operazione non consentita è un messaggio che indica un problema di privilegio. Il problema più frequente è che udev non ha effettivamente applicato la regola:

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

In questo caso, basta scollegare e ricollegare il cavo USB, quindi riavviare NUT.

Si è verificato un errore nella denominazione del file delle regole udev NUT che ha comportato la sostituzione delle regole da un altro file di configurazione udev. Mentre questo è stato risolto nel ramo master di Git, la tua distribuzione potrebbe essere ancora interessata. I dettagli sono disponibili nel seguente numero di Github: https://github.com/networkupstools/nut/issues/140

Guardando oltre al problema di Github, mi dai la soluzione:

le regole udev sono applicate troppo tardi (priorità 52), con conseguente sovrascrittura dei privilegi della noce. Il risultato finale è che il driver non si avvia e gli errori di connessione al driver / UPS sono segnalati da ups and upmon.

La correzione consiste semplicemente nell'impostare la priorità su 62 rinominando il file delle regole:

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

Questo errore riguarda:

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

Se sei lontano dal cavo USB del tuo UPS (collegare il nuovo UPS nuovo e fare la configurazione mesi dopo perché non hai tempo) e riavviare il dispositivo non è un'opzione, è possibile riattivare le regole udev:

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

Fa il lavoro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.