Неисправность запуска сетевых инструментов ИБП с ИБП Eaton 3S

10

Запуск сервера Ubuntu на ИБП Eaton 3S 700VA. USB-соединение Eaton входит в мой Ubuntu Server. Я пытаюсь использовать NUT для управления ИБП.

После того, как sudo su«Инг

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)
Zeophlite
источник

Ответы:

10

Хотя я не претендую на звание эксперта здесь, я обеспокоен тем, что этот ответ не приведет к постоянному изменению разрешений при перезагрузке и / или USB-кабель от ИБП будет перемещен на другой порт.

Следующая информация отсюда: Musings of Nannerpuss: NUT - Сетевые инструменты UPS - на Ubuntu .

«... Проблема заключается в том, что Ubuntu монтирует устройство как принадлежащее пользователю root, но демон-гнев переходит в непривилегированную учетную запись, которая не имеет необходимого доступа. Простое решение заключается в использовании udev для настройки разрешений устройства.

Подключите устройство и (от имени root) запустите lsusb и найдите его. Обратите внимание на идентификаторы шины и устройства, а также пару Vendor: Product ID .... "

используя вывод как в ответе выше:

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

снова по ссылке "... Вы можете создать правило udev, которое управляет поведением монтирования при загрузке: ..." (отредактировано для лучшего соответствия этому сценарию) "

  • используйте ваш любимый текстовый редактор, чтобы создать (скорее всего) новый файл udev rules.d. Число должно быть больше, чем любой другой файл правил udev.d для того же действия:

например

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"

Правило следит за добавлениями USB-устройств у поставщиков и продуктов, соответствующих ИБП. Затем он устанавливает режим на 0660 и группу на гайку вместо корня по умолчанию.

Обратите внимание, что в этом ответе используется разрешение 660, а не 666, поскольку этого должно быть достаточно и более безопасно.

Перезагрузите udev (перезагрузите или, возможно, отключите и снова подключите USB-кабель от ИБП к порту ПК), затем отсоедините и снова подключите устройство и проверьте правильность новых разрешений. Я неясный в этой части. В любом случае, как только пользовательская группа ореха прочтет и запишет на устройстве, она сможет успешно запускаться.

Редактирование udev rules.d работало в моей системе 12.04.2, даже когда я переместил USB-кабель в другой порт, что привело к различным номерам шинных устройств на выходе lsusb. Удев справился со всем без вмешательства. На самом деле, возможно, мне не пришлось перезагружаться, когда я его переместил, но точно не помню, и оставлю это тестирование кому-то другому.

user122096
источник
Я обнаружил, что это хорошо работает для меня с APC Back-UPS CS 650 на Ubuntu 12.04.
Пол Гир
Не следует ли сообщить об этом как об ошибке в Ubuntu? а исправили в официальной гайке пакет?
Ярл
Это работает, но прокручивая немного вниз и читая новое сообщение «эта ошибка уже исправлена» (в частности: /lib/udev/rules.d/62-nut-usbups.rulesустановлено сейчас), это означает, что это решение технически устарело.
dannysauer
9
  • Вы можете использовать, lsusbчтобы узнать номер шины и устройства

  • Затем измените разрешение на устройство

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

Например

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
$ chmod 0666 /dev/bus/usb/002/004
marekNpl
источник
3

относительно этой ошибки:

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

ЧАВО NUT на http://www.networkupstools.org/docs/FAQ.html содержит следующее (выделено мной):

если NUT был недавно установлен, и если USB-кабель устройства уже был подключен при установке гайки [затем], просто отсоедините и снова подключите USB-кабель, затем перезапустите гайку.

Этот трюк сработал для меня.

ndemou
источник
Мне пришлось перезапустить udev ( sudo systemctl restart udev), а затем отключить / снова подключить ИБП, FWIW.
dannysauer
1

Как сказал ndemou, FAQ по NUT знает об этой проблеме, и был выпущен патч, исправляющий ошибку. Но старые стабильные дистрибутивы могут быть затронуты. Надеюсь, решение очень простое ...

Из NUT FAQ: «Мой USB-ИБП поддерживается, но не работает!» :

В Linux предусмотрены правила udev для установки правильных прав доступа к файлу устройства. Это позволяет драйверу NUT связываться с ИБП через этот файл устройства.

Тем не менее, драйвер может по-прежнему не запускаться и поддерживать устройство, с сообщением, как:

не удалось получить доступ к USB-устройству: не удалось получить доступ к интерфейсу 0: операция не разрешена

Операция не разрешена - это сообщение, указывающее на проблему с привилегиями. Наиболее частая проблема заключается в том, что udev фактически не применял правило:

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

В этом случае просто отключите и снова подключите USB-кабель, затем перезапустите NUT.

Произошла ошибка в именовании файла правил NUT udev, в результате чего правила были переопределены другим файлом конфигурации udev. Хотя это было исправлено в основной ветке Git, ваш дистрибутив все еще может быть затронут. Подробности доступны в следующем выпуске Github: https://github.com/networkupstools/nut/issues/140

Глядя дальше на проблему Github, дайте мне решение:

Правила udev применяются слишком поздно (приоритет 52), что приводит к перезаписи привилегий. Окончательный результат заключается в том, что драйвер не запускается, а об ошибках подключения к драйверу / ИБП сообщают upsd и upsmon.

Чтобы исправить это, просто установите приоритет 62, переименовав файл правил:

$ mv /lib/udev/rules.d/ enj5,6 enj2-nut-usbups.rules

Эта ошибка влияет на:

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
источник
0

Если вы не подключены к USB-шнуру вашего ИБП (подключите новый ИБП и выполните настройку через несколько месяцев, потому что у вас нет времени), и перезапуск вашего компьютера невозможен, вы можете повторить действие правил udev:

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

Делает работу.

ouinouin
источник