From d67ecbd80a025896951ce4b181b2d281368a92e1 Mon Sep 17 00:00:00 2001 From: air5551 Date: Mon, 26 Jan 2026 20:11:41 -0500 Subject: [PATCH 1/9] Added Liebert PSI5 PSI5-800RT120 Signed-off-by: air5551 --- ...Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev new file mode 100644 index 0000000..4d9adc4 --- /dev/null +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -0,0 +1,85 @@ +# Please add if relevant: DEVICE:URL:REPORT: +# Please add if relevant: DEVICE:URL:VENDOR: +# DEVICE:URL:VENDOR: https://www.vertiv.com/en-us/products-catalog/critical-power/uninterruptible-power-supplies-ups/psi5-800rt120/ + + +# Please add comments for humans here and perhaps raise concerns about the data points, +# see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax +# strip sensitive data (passwords, SNMP community, serial number, IP address, host name...) +# and post as a pull request to https://github.com/networkupstools/nut-ddl/ +# DEVICE:COMMENT: +# There is a temprature sensor inside this UPS but its not reported here +# +# [UPS] +# driver = "usbhid-ups" +# port = "auto" +# vendorid = "10AF" +# productid = "0002" +# product = "Liebert PSI5" +# vendor = "Vertiv Co." +# These are the most important parameters +# Otherwise the UPS reports OB and no Battery % +# usb_hid_rep_index = 1 +# usb_hid_desc_index = 1 +# pollonly = 1 +# +# # bus = "001" +# # device = "002" +# # busport = "001" +# DEVICE:EOC + +# :; upsc UPS +battery.capacity: 800 +battery.charge: 100 +battery.charge.warning: 20 +battery.runtime: 12600 +battery.type: PbAc +battery.voltage: 27.3 +battery.voltage.nominal: 24 +device.mfr: Vertiv Co. +device.model: Liebert PSI5 +device.serial: [REDACTED] +device.type: ups +driver.debug: 0 +driver.flag.allow_killpower: 0 +driver.name: usbhid-ups +driver.parameter.pollfreq: 30 +driver.parameter.pollinterval: 2 +driver.parameter.port: auto +driver.parameter.product: Liebert PSI5 +driver.parameter.productid: 0002 +driver.parameter.serial: [REDACTED] +driver.parameter.synchronous: auto +driver.parameter.usb_hid_desc_index: 1 +driver.parameter.usb_hid_rep_index: 1 + + +#driver.parameter.pollonly:COMMENT +#If its not set the driver may crash or have some odd error +driver.parameter.pollonly 1 +#driver.parameter.pollonly:EOC + + +driver.parameter.vendor: Vertiv Co. +driver.parameter.vendorid: 10AF +driver.state: quiet +driver.version: 2.8.2.1 +driver.version.data: Belkin/Liebert HID 0.21 +driver.version.internal: 0.54 +driver.version.usb: libusb-1.0.28 (API: 0x100010a) +input.frequency: 60.0 +input.voltage: 121.4 +input.voltage.nominal: 120 +output.frequency: 60.0 +output.voltage: 121.5 +output.voltage.nominal: 120 +ups.load: 6 +ups.mfr: Vertiv Co. +ups.model: Liebert PSI5 +ups.productid: 0002 +ups.serial: [REDACTED] +ups.status: OL CHRG +ups.vendorid: 10af + + + From e325699c64a19ef9a34c239bfaed907b9dbae320 Mon Sep 17 00:00:00 2001 From: air5551 Date: Mon, 26 Jan 2026 20:26:01 -0500 Subject: [PATCH 2/9] Added RW variables Signed-off-by: air5551 --- Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev index 4d9adc4..5d0e87f 100644 --- a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -81,5 +81,18 @@ ups.serial: [REDACTED] ups.status: OL CHRG ups.vendorid: 10af +# DEVICE:COMMENT-BLOCK:FIXME:UPSRW: UPS +# [driver.debug] +# Current debug verbosity level of the driver program +# Type: NUMBER +# Value: 0 + +# [driver.flag.allow_killpower] +# Safety flip-switch to allow the driver daemon to send UPS shutdown command (accessible via driver.killpower) +# This is NOT tested, Use at your own Risk +# Type: NUMBER +# Value: 0 +# DEVICE:EOC + From 214b56cbfa53aab565e36d0cc10ba7e76c489127 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 08:56:34 +0100 Subject: [PATCH 3/9] Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev: fix syntactic typo Signed-off-by: Jim Klimov --- Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev index 5d0e87f..864448c 100644 --- a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -1,8 +1,6 @@ # Please add if relevant: DEVICE:URL:REPORT: -# Please add if relevant: DEVICE:URL:VENDOR: # DEVICE:URL:VENDOR: https://www.vertiv.com/en-us/products-catalog/critical-power/uninterruptible-power-supplies-ups/psi5-800rt120/ - # Please add comments for humans here and perhaps raise concerns about the data points, # see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax # strip sensitive data (passwords, SNMP community, serial number, IP address, host name...) @@ -55,8 +53,8 @@ driver.parameter.usb_hid_rep_index: 1 #driver.parameter.pollonly:COMMENT -#If its not set the driver may crash or have some odd error -driver.parameter.pollonly 1 +#If it is not set, the driver may crash or have some odd error +driver.parameter.pollonly: 1 #driver.parameter.pollonly:EOC From b0720224b637ec5edda327feedcc8a0e0b4089fb Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 09:11:52 +0100 Subject: [PATCH 4/9] Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev: remove empty lines in comment [#57] Signed-off-by: Jim Klimov --- Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev index 864448c..2e335c6 100644 --- a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -84,9 +84,7 @@ ups.vendorid: 10af # Current debug verbosity level of the driver program # Type: NUMBER # Value: 0 - - - +# # [driver.flag.allow_killpower] # Safety flip-switch to allow the driver daemon to send UPS shutdown command (accessible via driver.killpower) # This is NOT tested, Use at your own Risk From 635d04506ba80c24059e39b84bd0886026ce65a2 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 09:12:14 +0100 Subject: [PATCH 5/9] Makefile: upper-case the first word in sentence Signed-off-by: Jim Klimov --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 516cb33..7f89674 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ check-content-markup: find . -type f -name '*.dev' | ( \ echo "`date -u`: Sanity-checking the *.dev files..." >&2 ; \ if [ -x $(NUT_WEBSITE_DIR)/tools/nut-ddl.py ] ; then \ - echo "`date -u`: will use $(NUT_DDL_PYTHON) $(NUT_WEBSITE_DIR)/tools/nut-ddl.py for deeper checks" >&2 ; \ + echo "`date -u`: Will use $(NUT_DDL_PYTHON) $(NUT_WEBSITE_DIR)/tools/nut-ddl.py for deeper checks" >&2 ; \ fi ; \ FAILED=""; \ PASSED=""; \ From c7051959c90976b6145ec5979d54f55a47f04580 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 09:12:50 +0100 Subject: [PATCH 6/9] Makefile: report a non-empty RES when failing checks without a nut-ddl.py too Signed-off-by: Jim Klimov --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7f89674..597b215 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ check-content-markup: echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && continue; \ fi ; \ fi ; \ - egrep -v '^( *\#.*|.*:.*)$$' "$$F" | egrep -v '^$$' >&2 && echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && continue; \ + egrep -v '^( *\#.*|.*:.*)$$' "$$F" | egrep -v '^$$' >&2 && echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && RES=2 && continue; \ PASSED="$$PASSED $$F"; \ done; \ if [ -n "$$FAILED" ]; then echo "`date -u`: FAILED sanity-check (got RES=$$RES) in following file(s) : $$FAILED" >&2; exit 1; fi; \ From 50be5777e43249844e6636623293daee843244cb Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 10:49:52 +0100 Subject: [PATCH 7/9] Makefile: check-content-markup: fix accounting of non-zero worst result Signed-off-by: Jim Klimov --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 597b215..4621979 100644 --- a/Makefile +++ b/Makefile @@ -44,19 +44,21 @@ check-content-markup: fi ; \ FAILED=""; \ PASSED=""; \ + WORSTRES=0; \ while read F ; do \ if [ -x $(NUT_WEBSITE_DIR)/tools/nut-ddl.py ] ; then \ RES=0 ; $(NUT_DDL_PYTHON) $(NUT_WEBSITE_DIR)/tools/nut-ddl.py "$$F" "$$F.tmp.html" &2 || RES=$$? ; \ rm -f "$$F.tmp.html" ; \ if [ "$$RES" != 0 ] ; then \ + WORSTRES=$$RES; \ echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && continue; \ fi ; \ fi ; \ - egrep -v '^( *\#.*|.*:.*)$$' "$$F" | egrep -v '^$$' >&2 && echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && RES=2 && continue; \ + egrep -v '^( *\#.*|.*:.*)$$' "$$F" | egrep -v '^$$' >&2 && echo "^^^ $$F" >&2 && FAILED="$$FAILED $$F" && WORSTRES=2 && continue; \ PASSED="$$PASSED $$F"; \ done; \ - if [ -n "$$FAILED" ]; then echo "`date -u`: FAILED sanity-check (got RES=$$RES) in following file(s) : $$FAILED" >&2; exit 1; fi; \ - if [ x"$$RES" != x0 ]; then echo "`date -u`: FAILED sanity-check : got RES=$$RES" >&2; exit $$RES; fi; \ + if [ -n "$$FAILED" ]; then echo "`date -u`: FAILED sanity-check (got WORSTRES=$$WORSTRES) in following file(s) : $$FAILED" >&2; exit 1; fi; \ + if [ x"$$WORSTRES" != x0 ]; then echo "`date -u`: FAILED sanity-check : got WORSTRES=$$WORSTRES" >&2; exit $$RES; fi; \ echo "`date -u`: OK : All *.dev files have passed the basic sanity check : $$PASSED"; \ exit 0; \ ) From 3391f1f04b8ef5c830f2e10a68eba5ca01585302 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 11:14:59 +0100 Subject: [PATCH 8/9] Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev: convert markup to DEVICE:COMMENT-BLOCK:UPSCONF; there should be no TABs in it [#57] Signed-off-by: Jim Klimov --- ...Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev index 2e335c6..ae94d1c 100644 --- a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -5,25 +5,25 @@ # see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax # strip sensitive data (passwords, SNMP community, serial number, IP address, host name...) # and post as a pull request to https://github.com/networkupstools/nut-ddl/ -# DEVICE:COMMENT: -# There is a temprature sensor inside this UPS but its not reported here -# + +# DEVICE:COMMENT-BLOCK:UPSCONF: +# > There is a temprature sensor inside this UPS but its not reported here # [UPS] -# driver = "usbhid-ups" -# port = "auto" -# vendorid = "10AF" -# productid = "0002" -# product = "Liebert PSI5" -# vendor = "Vertiv Co." -# These are the most important parameters -# Otherwise the UPS reports OB and no Battery % -# usb_hid_rep_index = 1 -# usb_hid_desc_index = 1 -# pollonly = 1 -# -# # bus = "001" -# # device = "002" -# # busport = "001" +# driver = "usbhid-ups" +# port = "auto" +# vendorid = "10AF" +# productid = "0002" +# product = "Liebert PSI5" +# vendor = "Vertiv Co." +# ### These are the most important parameters +# ### Otherwise the UPS reports OB and no Battery % +# usb_hid_rep_index = 1 +# usb_hid_desc_index = 1 +# pollonly = 1 +# ### Optional: +# # bus = "001" +# # device = "002" +# # busport = "001" # DEVICE:EOC # :; upsc UPS From 7932c707fb48b4302d7a0e1957e13ec9cda9bc82 Mon Sep 17 00:00:00 2001 From: Jim Klimov Date: Tue, 27 Jan 2026 11:15:20 +0100 Subject: [PATCH 9/9] Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev: convert markup to inline #COMMENT for one data point [#57] Signed-off-by: Jim Klimov --- Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev index ae94d1c..8b0f63d 100644 --- a/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev +++ b/Liebert/Liebert__PSI5__usbhid-ups__2.8.2.1__01.dev @@ -50,14 +50,7 @@ driver.parameter.serial: [REDACTED] driver.parameter.synchronous: auto driver.parameter.usb_hid_desc_index: 1 driver.parameter.usb_hid_rep_index: 1 - - -#driver.parameter.pollonly:COMMENT -#If it is not set, the driver may crash or have some odd error -driver.parameter.pollonly: 1 -#driver.parameter.pollonly:EOC - - +driver.parameter.pollonly: 1 #COMMENT: If it is not set, the driver may crash or have some odd error driver.parameter.vendor: Vertiv Co. driver.parameter.vendorid: 10AF driver.state: quiet