Masalah memulai Network UPS Tools dengan Eaton 3S UPS


10

Menjalankan Server Ubuntu pada UPS Eaton 3S 700VA. Koneksi USB Eaton masuk ke Server Ubuntu saya. Saya mencoba menggunakan NUT untuk mengelola UPS.

Setelah 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)

Jawaban:


10

Walaupun saya tidak mengklaim sebagai ahli di sini, saya khawatir bahwa jawaban ini tidak akan menghasilkan perubahan izin terus-menerus selama reboot, dan / atau kabel usb dari UPS dipindahkan ke port yang berbeda.

Berikut informasi dari sini: Renungan Nannerpuss: NUT - Network UPS Tools - di Ubuntu .

"... Masalahnya melibatkan fakta bahwa Ubuntu memasang perangkat seperti yang dimiliki oleh root, tetapi kacang daemon jatuh ke akun tidak terprivat yang tidak memiliki akses yang diperlukan. Perbaikan sederhana adalah menggunakan udev untuk menyesuaikan izin perangkat.

Hubungkan perangkat dan (sebagai root) jalankan lsusb dan temukan. Catat ID Bus dan Perangkat serta Vendor: Pasangan ID Produk .... "

menggunakan output seperti pada jawaban di atas:

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

lagi dari tautan "... Anda dapat membuat aturan udev yang mengontrol perilaku mount saat boot: ..." (diedit agar sesuai dengan skenario ini dengan lebih baik) "

  • gunakan editor teks favorit Anda untuk membuat (kemungkinan besar) file aturan udev baru.d. Jumlahnya harus lebih tinggi daripada file aturan udev.d lainnya untuk tindakan yang sama:

sebagai contoh

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"

Aturan mengawasi penambahan perangkat USB dengan vendor dan produk yang cocok dengan UPS. Ini kemudian mengatur mode ke 0660 dan grup untuk kacang bukan root default.

Perhatikan bahwa jawaban ini menggunakan 660 izin daripada 666 karena itu harus cukup dan lebih aman.

Muat ulang udev (reboot, atau mungkin mencabut kabel lalu pasang kembali kabel usb dari UPS di port pc), kemudian lepaskan dan sambungkan kembali perangkat dan uji apakah izin baru sudah benar. Saya tidak jelas pada bagian ini. Bagaimanapun, begitu grup pengguna kacang telah membaca dan menulis pada perangkat, itu harus dapat memulai dengan sukses.

Edit udev rules.d berhasil pada sistem 12.04.2 saya bahkan ketika saya memindahkan kabel USB ke port yang berbeda, menghasilkan nomor Device Bus yang berbeda pada output lsusb. Udev menangani semuanya tanpa intervensi. Bahkan, saya mungkin tidak harus reboot ketika saya memindahkannya tetapi tidak dapat mengingat dengan pasti dan akan menyerahkan pengujian itu kepada orang lain.


Saya menemukan ini bekerja dengan baik untuk saya dengan Back-UPS CS 650 APC di Ubuntu 12.04.
Paul Gear

Haruskah ini tidak dilaporkan sebagai bug di ubuntu? dan diperbaiki dalam paket kacang resmi?
Jarl

Ini berfungsi, tetapi sedikit menggulir ke bawah dan membaca pesan "bug ini sudah diperbaiki" yang lebih baru (khususnya: /lib/udev/rules.d/62-nut-usbups.rulessudah diinstal sekarang) berarti solusi ini sudah usang secara teknis.
dannysauer

9
  • Anda dapat menggunakan lsusbuntuk mengetahui nomor bus dan perangkat

  • Kemudian ubah izin ke perangkat

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

Sebagai contoh

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

3

tentang kesalahan ini:

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

FAQ NUT di http://www.networkupstools.org/docs/FAQ.html memiliki ini (penekanan milik saya):

jika NUT baru saja dipasang, dan jika kabel USB perangkat sudah terhubung ketika memasang mur [maka] cabut dan pasang kembali kabel USB, kemudian nyalakan kembali mur.

Trik itu berhasil untukku.


Saya harus memulai ulang udev ( sudo systemctl restart udev) dan kemudian mencabut / memasang kembali UPS, FWIW.
dannysauer

1

Seperti yang dikatakan ndemou, FAQ NUT menyadari masalah tersebut, dan patch telah dirilis, mengoreksi bug. Tetapi distro stabil lama bisa terpengaruh. Semoga solusinya sangat sederhana ...

Dari FAQ NUT: "UPS USB saya didukung tetapi tidak berfungsi!" :

Di Linux, aturan udev disediakan untuk mengatur izin yang benar pada file perangkat. Ini memungkinkan driver NUT untuk berkomunikasi dengan UPS, melalui file perangkat ini.

Namun, driver mungkin masih gagal untuk memulai dan mendukung perangkat, dengan pesan seperti:

gagal mengklaim perangkat USB: tidak dapat mengklaim antarmuka 0: Operasi tidak diizinkan

Operasi tidak diizinkan adalah pesan yang menunjuk ke masalah hak istimewa. Masalah yang paling sering adalah udev belum benar-benar menerapkan aturan:

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

Dalam hal ini, cukup cabut dan pasang kembali kabel USB, lalu mulai kembali NUT.

Ada kesalahan dalam penamaan file aturan NUT udev yang mengakibatkan aturan ditimpa oleh file konfigurasi udev lain. Meskipun hal ini telah diperbaiki di cabang master Git, distribusi Anda mungkin masih terpengaruh. Detail tersedia dalam masalah Github berikut: https://github.com/networkupstools/nut/issues/140

Melihat lebih jauh ke masalah Github memberi saya solusi:

Aturan udev diterapkan terlambat (prioritas 52), mengakibatkan hak istimewa kacang ditimpa. Hasil akhirnya adalah bahwa driver tidak memulai, dan kegagalan koneksi ke driver / UPS dilaporkan oleh upsd dan upsmon.

Cara mengatasinya hanya untuk menetapkan prioritas ke 62 dengan mengubah nama file aturan:

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

Bug ini memengaruhi:

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

Jika Anda jauh dari kabel USB UPS Anda (menghubungkan UPS baru yang baru dan melakukan konfigurasi beberapa bulan kemudian karena Anda kekurangan waktu), dan memulai ulang mesin Anda bukanlah suatu pilihan, Anda dapat retrigger aturan udev:

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

Apakah pekerjaan itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.