Problemas para iniciar las herramientas de UPS de red con un UPS Eaton 3S


10

Ejecutando un servidor Ubuntu en un UPS Eaton 3S 700VA. La conexión USB de Eaton va a mi servidor Ubuntu. Estoy tratando de usar NUT para administrar el UPS.

Después sudo sude

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)

Respuestas:


10

Si bien no pretendo ser un experto aquí, me preocupa que esta respuesta no resulte en un cambio de permiso persistente durante un reinicio, y / o el cable usb del UPS se traslade a un puerto diferente.

Siguiendo la información de aquí: Reflexiones de Nannerpuss: NUT - Herramientas de UPS de red - en Ubuntu .

"... El problema implica el hecho de que Ubuntu monta el dispositivo como propiedad de root, pero el demonio loco cae en una cuenta no privilegiada que no tiene el acceso necesario. La solución simple es usar udev para ajustar los permisos del dispositivo.

Conecte el dispositivo y (como root) ejecute lsusb y localícelo. Tenga en cuenta las ID de bus y dispositivo, así como el proveedor: par de ID de producto ... "

usando la salida como en la respuesta anterior:

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

nuevamente desde el enlace "... Puede crear una regla udev que controle el comportamiento de montaje en el arranque: ..." (editado para que coincida mejor con este escenario) "

  • use su editor de texto favorito para crear (muy probablemente) un nuevo archivo udev rules.d. El número debe ser mayor que cualquier otro archivo de reglas udev.d para la misma acción:

por ejemplo

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 regla busca adiciones de dispositivos USB con un proveedor y un producto que coincida con el UPS. Luego establece el modo en 0660 y el grupo en tuerca en lugar de la raíz predeterminada.

Tenga en cuenta que esta respuesta utiliza el permiso 660 en lugar del 666, ya que debería ser suficiente y más seguro.

Vuelva a cargar udev (reinicie, o tal vez desenchufe y luego vuelva a enchufar el cable USB del UPS en el puerto de la PC), luego desconecte y vuelva a conectar el dispositivo y compruebe que los nuevos permisos son correctos. No estoy claro en esta parte. En cualquier caso, una vez que el grupo de usuarios de tuercas haya leído y escrito en el dispositivo, debería poder comenzar con éxito.

La edición udev rules.d funcionó en mi sistema 12.04.2 incluso cuando moví el cable USB a un puerto diferente, lo que resultó en diferentes números de dispositivo de bus en la salida lsusb. Udev manejó todo sin intervención. De hecho, es posible que no haya tenido que reiniciar cuando lo moví, pero no puedo recordarlo con seguridad y dejaré esa prueba a otra persona.


Encontré que esto funcionó bien para mí con un APC Back-UPS CS 650 en Ubuntu 12.04.
Paul Gear

¿No debería informarse esto como un error en ubuntu? y arreglado en el paquete oficial de nueces?
Jarl

Esto funciona, pero desplazarse un poco hacia abajo y leer el mensaje más reciente "este error ya se ha solucionado" (específicamente: /lib/udev/rules.d/62-nut-usbups.rulesestá instalado ahora) significa que esta solución es técnicamente obsoleta.
dannysauer

9
  • Puede usar lsusbpara averiguar el número de bus y dispositivo

  • Luego cambie el permiso al dispositivo

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

Por ejemplo

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

3

con respecto a este error:

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

Las preguntas frecuentes de NUT en http://www.networkupstools.org/docs/FAQ.html tienen esto (el énfasis es mío):

si NUT se ha instalado recientemente, y si el cable USB del dispositivo ya estaba enchufado al instalar la tuerca [entonces] simplemente desconecte y vuelva a enchufar el cable USB, luego reinicie la tuerca.

Ese truco funcionó para mí.


Tuve que reiniciar udev ( sudo systemctl restart udev) y luego desconectar / volver a conectar el UPS, FWIW.
dannysauer

1

Como dijo ndemou, las preguntas frecuentes de NUT son conscientes del problema y se ha publicado un parche que corrige el error. Pero las antiguas distribuciones estables podrían verse afectadas. Con suerte, la solución es muy simple ...

De las preguntas frecuentes de NUT: "¡Mi USB UPS es compatible pero no funciona!" :

En Linux, se proporcionan reglas de udev para establecer los permisos correctos en el archivo del dispositivo. Esto permite que el controlador NUT se comunique con el UPS a través de este archivo de dispositivo.

Sin embargo, el controlador aún puede fallar al iniciar y admitir el dispositivo, con un mensaje como:

no se pudo reclamar el dispositivo USB: no se pudo reclamar la interfaz 0: operación no permitida

La operación no permitida es un mensaje que apunta a un problema de privilegios. El problema más frecuente es que udev no ha aplicado la regla:

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

En este caso, simplemente desenchufe y vuelva a enchufar el cable USB, luego reinicie NUT.

Hubo un error al nombrar el archivo de reglas NUT udev que resultó en que las reglas fueran anuladas por otro archivo de configuración udev. Si bien esto se ha solucionado en la rama maestra Git, su distribución aún puede verse afectada. Los detalles están disponibles en el siguiente número de Github: https://github.com/networkupstools/nut/issues/140

Mirando más allá del problema de Github, dame la solución:

Las reglas de udev se aplican demasiado tarde (prioridad 52), lo que da como resultado que se sobrescriban los privilegios de tuerca. El resultado final es que el controlador no se inicia y upsd y upsmon informan de un fallo de conexión al controlador / UPS.

La solución es simplemente establecer la prioridad a 62 cambiando el nombre del archivo de reglas:

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

Este error afecta:

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 está alejado del cable USB de su UPS (enchufar el nuevo UPS nuevo y hacer la configuración meses después porque no tiene tiempo), y reiniciar su máquina no es una opción, puede volver a activar las reglas de udev:

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

Hace el trabajo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.