Kłopoty z uruchomieniem narzędzi zasilacza sieciowego UPS z zasilaczem UPS Eaton 3S

10

Uruchamianie serwera Ubuntu na zasilaczu UPS Eaton 3S 700VA. Połączenie USB Eatona przechodzi do mojego serwera Ubuntu. Próbuję użyć NUT do zarządzania UPS.

Po 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)
Zeophlite
źródło

Odpowiedzi:

10

Chociaż nie twierdzę, że jestem tutaj ekspertem, obawiam się, że ta odpowiedź nie spowoduje trwałej zmiany uprawnień po ponownym uruchomieniu i / lub kabel USB z UPS zostanie przeniesiony do innego portu.

Po informacji tutaj: Rozmyślania o Nannerpuss: NUT - Network UPS Tools - na Ubuntu .

„... Problem polega na tym, że Ubuntu montuje urządzenie jako własność root, ale demon nakrętki spada na nieuprzywilejowane konto, które nie ma niezbędnego dostępu. Prostym rozwiązaniem jest użycie udev w celu dostosowania uprawnień urządzenia.

Podłącz urządzenie i (jako root) uruchom lsusb i zlokalizuj je. Zanotuj identyfikatory magistrali i urządzeń, a także parę dostawca: identyfikator produktu .... ”

używając wyjścia jak w powyższej odpowiedzi:

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

ponownie z linku „... Możesz utworzyć regułę udev, która kontroluje zachowanie montowania podczas rozruchu: ...” (edytowana w celu lepszego dopasowania do tego scenariusza) ”

  • użyj swojego ulubionego edytora tekstu, aby (najprawdopodobniej) nowy plik udev rules.d. Liczba musi być większa niż jakikolwiek inny plik reguł udev.d dla tej samej akcji:

na przykład

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"

Reguła dotyczy dodatków urządzeń USB z dostawcą i produktem pasującym do UPS. Następnie ustawia tryb na 0660, a grupa na nutę zamiast domyślnego katalogu głównego.

Pamiętaj, że ta odpowiedź używa uprawnień 660 zamiast 666, ponieważ powinno to być wystarczające i bardziej bezpieczne.

Ponownie załaduj udev (uruchom ponownie, a może odłączaj, a następnie podłącz ponownie kabel USB z zasilacza UPS do portu komputera), a następnie odłącz i ponownie podłącz urządzenie i sprawdź, czy nowe uprawnienia są prawidłowe. Nie jestem w tej kwestii niejasny. W każdym razie, gdy grupa użytkowników nakrętki przeczyta i zapisze na urządzeniu, powinna móc rozpocząć pomyślnie.

Edycja udev rules.d działała na moim systemie 12.04.2, nawet gdy przeniosłem kabel USB do innego portu, co spowodowało, że na wyjściu lsusb wystąpiły różne numery urządzeń magistrali. Udev poradził sobie bez interwencji. W rzeczywistości może nie musiałem restartować się po przeniesieniu, ale nie pamiętam tego na pewno i pozostawię to testowanie komuś innemu.

użytkownik122096
źródło
Przekonałem się, że to działa dobrze dla mnie z zasilaczem APC Back-UPS CS 650 na Ubuntu 12.04.
Paul Gear
Czy nie powinno to być zgłaszane jako błąd w Ubuntu? i naprawione w oficjalnym pakiecie nakrętek?
Jarl
To działa, ale przewinięcie nieco w dół i przeczytanie nowszego komunikatu „ten błąd został już naprawiony” (konkretnie: /lib/udev/rules.d/62-nut-usbups.rulesteraz jest zainstalowany) oznacza, że ​​to rozwiązanie jest technicznie przestarzałe.
dannysauer
9
  • Możesz użyć, lsusbaby znaleźć numer magistrali i urządzenia

  • Następnie zmień uprawnienia do urządzenia

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

Na przykład

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

w odniesieniu do tego błędu:

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

FAQ NUT na http://www.networkupstools.org/docs/FAQ.html ma to (moje wyróżnienie):

jeśli NUT został świeżo zainstalowany, a przewód USB urządzenia został już podłączony podczas instalowania nakrętki [to] wystarczy odłączyć i ponownie podłączyć przewód USB, a następnie ponownie uruchomić nakrętkę.

Ta sztuczka zadziałała dla mnie.

ndemou
źródło
Musiałem zrestartować udev ( sudo systemctl restart udev), a następnie odłączyć / ponownie podłączyć UPS, FWIW.
dannysauer
1

Jak powiedział ndemou, FAQ NUT jest świadomy problemu, a łatka została wydana, poprawiając błąd. Ale stare stabilne dystrybucje mogą zostać naruszone. Mamy nadzieję, że rozwiązanie jest bardzo proste ...

Z NUT FAQ: „Mój zasilacz USB jest obsługiwany, ale nie działa!” :

W systemie Linux dostępne są reguły udev w celu ustawienia poprawnych uprawnień do pliku urządzenia. Pozwala to sterownikowi NUT komunikować się z UPS za pośrednictwem tego pliku urządzenia.

Jednak sterownik może nadal nie uruchomić się i nie obsługiwać urządzenia, z komunikatem:

nie można odebrać urządzenia USB: nie można zgłosić roszczenia do interfejsu 0: Operacja niedozwolona

Operacja niedozwolona to komunikat wskazujący na problem z uprawnieniami. Najczęstszym problemem jest to, że udev nie zastosował reguły:

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

W takim przypadku wystarczy odłączyć i podłączyć przewód USB, a następnie ponownie uruchomić NUT.

Wystąpił błąd w nazywaniu pliku reguł udev NUT, co spowodowało zastąpienie reguł przez inny plik konfiguracyjny udev. Chociaż zostało to naprawione w gałęzi Git master, twoja dystrybucja może nadal mieć wpływ. Szczegóły są dostępne w następującym numerze Github: https://github.com/networkupstools/nut/issues/140

Patrząc dalej na problem Github, daj mi rozwiązanie:

Reguły udev są stosowane zbyt późno (priorytet 52), co powoduje zastąpienie uprawnień orzechów. Ostateczny wynik jest taki, że sterownik nie uruchamia się, a awarie połączenia ze sterownikiem / UPS są zgłaszane przez upsd i upsmon.

Poprawka polega na ustawieniu priorytetu na 62 poprzez zmianę nazwy pliku reguł:

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

Ten błąd dotyczy:

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
źródło
0

Jeśli nie masz dostępu do kabla USB zasilacza UPS (podłączając nowy UPS i wykonując konfigurację kilka miesięcy później, ponieważ brakuje Ci czasu), a ponowne uruchomienie urządzenia nie jest możliwe, możesz ponownie uruchomić reguły udev:

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

Wykonuje pracę.

ouinouin
źródło