얼마 후 nut usbhid-ups의 연결이 끊어집니다.

얼마 후 nut usbhid-ups의 연결이 끊어집니다.

USB를 통해 Debian(proxmox)의 너트에 CyperPower OR500LCDRM1U를 연결했습니다. 일정 시간(몇 시간?)이 지나면 UPS와의 연결이 끊어집니다. UPS는 중요한 구성 요소이므로 매우 실망스럽습니다. 그것가능한USB가 다시 초기화되면 몇 초 동안 장치를 일시적으로 사용할 수 없게 됩니다. 나는 모른다. 로그에는 특별한 내용이 없지만 몇 시간 후에 발생하고 다음날 깨닫기 때문에 실제로 모니터링할 수는 없습니다.

어쨌든, 이 경우에는 장치를 다시 켜야 할 것으로 예상됩니다!

내 일기장은 가득하다

Jul 30 00:19:36 pve1 upsmon[2066730]: UPS [ups@localhost]: connect failed: Connection failure: Connection timed out
Jul 30 00:19:36 pve1 upsmon[2066730]: UPS ups@localhost is unavailable
Jul 30 00:21:51 pve1 upsmon[2066730]: UPS [ups@localhost]: connect failed: Connection failure: Connection timed out
Jul 30 00:24:06 pve1 upsmon[2066730]: UPS [ups@localhost]: connect failed: Connection failure: Connection timed out
Jul 30 00:26:21 pve1 upsmon[2066730]: UPS [ups@localhost]: connect failed: Connection failure: Connection timed out
Jul 30 00:26:21 pve1 upsmon[2066730]: UPS ups@localhost is unavailable

strace -p이것을 처리하면 다음과 같은 usbhid-ups -a ups결과를 얻습니다.

select(7, [5 6], NULL, NULL, {tv_sec=1, tv_usec=898414}) = 0 (Timeout)
ioctl(4, USBDEVFS_SUBMITURB, 0x7ffe4f699750) = 0
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = -1 EAGAIN (Resource temporarily unavailable)
select(5, NULL, [4], NULL, {tv_sec=0, tv_usec=1000}) = 1 (out [4], left {tv_sec=0, tv_usec=251})
ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7ffe4f699718) = 0

너트 드라이버( systemctl restart nut-driver.service)를 다시 시작하면 항상 다시 작동합니다(몇 시간 동안).

내가 만든 것 /etc/udev/rules.d/90-nut-ups.rules:

# Rule for the UPS - use lsusb for idVendor and idProduct
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0764", ATTR{idProduct}=="0601", MODE="0660", GROUP="nut"

내 것에는 /etc/nut/ups.conf다음이 있습니다.

maxretry = 3

[ups]
driver = usbhid-ups
port = auto
desc = "CyberPower PR1500LCDRT2U"
vendorid = 0764
productid = 0601

내 UPS는 다음 장치 파일로 사용할 수 있습니다.

# ls -la /dev/bus/usb/001/004 
crw-rw-r-- 1 root nut 189, 3 Aug  4 02:30 /dev/bus/usb/001/004

upsc ups이 문제는 분명히 usbhid-ups 드라이버 및 연결 실패와 관련되어 있으므로 나머지 너트 구성 파일은 제공하지 않습니다 .

# cat /etc/debian_version 
11.6
# uname -a
Linux pve1 5.15.85-1-pve #1 SMP PVE 5.15.85-1 (2023-02-01T00:00Z) x86_64 GNU/Linux
# 

이 문제를 해결하기 위해 제가 할 수 있는 일이 있나요?

답변1

pollInterval저는 기본값(2초)을 15초로 늘려서 이 문제를 해결했습니다.

/etc/nut/ups.conf:

maxretry = 3

[ups]
    driver = usbhid-ups
    port = auto
    desc = "CyberPower PR1500LCDRT2U"
    vendorid = 0764
    productid = 0601
    pollinterval = 15 # seconds

관련 정보