From d102d57f3de9998bf8dc7d524fdb6652dd070e40 Mon Sep 17 00:00:00 2001
From: Jim Klimov <jim@jimklimov.com>
Date: Thu, 09 Nov 2023 13:27:56 +0100
Subject: [PATCH] Update sysutils/nut to v2.8.1

---
 components/sysutils/nut/nut-common.p5m                 |   27 
 components/sysutils/nut/nut-drivers-ipmi.p5m           |   46 
 components/sysutils/nut/nut-monitor-gui.p5m            |   30 
 components/sysutils/nut/manifests/sample-manifest.p5m  |  243 +
 components/sysutils/nut/nut-drivers-software.p5m       |   56 
 components/sysutils/nut/nut-drivers-serial.p5m         |  118 +
 components/sysutils/nut/nut-devtools.p5m               |    6 
 components/sysutils/nut/patches/07-man.patch           | 4528 +++++++++++++++++++++++++++++--------------
 components/sysutils/nut/nut-cgi.p5m                    |   10 
 components/sysutils/nut/nut-libs-pynut.p5m             |   34 
 components/sysutils/nut/nut-monitor-gui-py3qt5.p5m     |   41 
 components/sysutils/nut/nut-server.p5m                 |  118 +
 components/sysutils/nut/nut-drivers-neon.p5m           |   46 
 components/sysutils/nut/nut-clients.p5m                |   75 
 components/sysutils/nut/pkg5                           |   33 
 components/sysutils/nut/nut-drivers-powerman.p5m       |   46 
 components/sysutils/nut/nut-drivers-usb.p5m            |   62 
 components/sysutils/nut/nut-drivers.p5m                |  125 -
 components/sysutils/nut/patches/08-upsmon-txt.patch    |   13 
 components/sysutils/nut/nut.p5m                        |   12 
 components/sysutils/nut/patches/09-libusb-no-sfw.patch |   14 
 /dev/null                                              |   97 
 components/sysutils/nut/patches/10-nut-2155.patch      |   15 
 components/sysutils/nut/nut-monitor-gui-common.p5m     |   78 
 components/sysutils/nut/Makefile                       |  136 +
 components/sysutils/nut/nut-drivers-snmp.p5m           |   46 
 components/sysutils/nut/nut-drivers-modbus.p5m         |   56 
 components/sysutils/nut/nut-augeas.p5m                 |   19 
 components/sysutils/nut/nut-libs.p5m                   |   34 
 29 files changed, 4,304 insertions(+), 1,860 deletions(-)

diff --git a/components/sysutils/nut/Makefile b/components/sysutils/nut/Makefile
index eaad12f..5143ce9 100644
--- a/components/sysutils/nut/Makefile
+++ b/components/sysutils/nut/Makefile
@@ -10,23 +10,24 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
-BUILD_BITS= 64
+# NUT 2.8.0+ is diligently tested to benefit from parallel builds and succeed
+USE_PARALLEL_BUILD=	yes
+
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=	nut
-COMPONENT_VERSION=	2.7.4
-COMPONENT_REVISION=	5
+COMPONENT_VERSION=	2.8.1
 COMPONENT_SUMMARY=	Network UPS Tools (NUT)
 COMPONENT_DESCRIPTION=	Network UPS Tools (NUT) is a versatile power-device monitoring toolkit to facilitate safe shutdowns
 COMPONENT_SRC=	$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH=	\
-  sha256:d580915fdf7090655c1c7c98eb116b61952553f06f0039b1f93c9f5a13e2d36b
+  sha256:7da48ee23b1f0d8d72560bb0af84f5c5ae4dbe35452b84cb49840132e47f099c
 COMPONENT_ARCHIVE_URL=	\
-  https://github.com/networkupstools/$(COMPONENT_NAME)/archive/v$(COMPONENT_VERSION).tar.gz
+  https://github.com/networkupstools/$(COMPONENT_NAME)/releases/download/v$(COMPONENT_VERSION)/$(COMPONENT_SRC).tar.gz
 COMPONENT_PROJECT_URL=	https://networkupstools.org
 COMPONENT_FMRI=	system/management/$(COMPONENT_NAME)
 COMPONENT_CLASSIFICATION=	System/Administration and Configuration
@@ -38,16 +39,15 @@
 CXXFLAGS += $(CXXFLAGS.$(BITS))
 CFLAGS   += $(CFLAGS.$(BITS))
 
-# Document generation can fail with -jN
-COMPONENT_BUILD_ARGS=
-
-COMPONENT_PREP_ACTION =	( cd $(SOURCE_DIR) && ./autogen.sh )
+# Drop *.8 man pages (we patch to regenerate them into *.1m - see patches/07-man.patch)
+# Fix up upsmon.txt encoding that might have gone wrong into the 2.8.1 release tarball
+COMPONENT_PREP_ACTION =	( cd $(SOURCE_DIR) && ./autogen.sh && cd docs/man && rm -f *.8 && { dos2unix upsmon.txt > upsmon.txt.tmp && mv -f upsmon.txt.tmp upsmon.txt; }  )
 
 COMPONENT_PRE_CONFIGURE_ACTION =	( $(CLONEY) $(SOURCE_DIR) $(@D) )
 
 # We deliver only 64-bit binaries
-CONFIGURE_BINDIR.64 = $(USRBINDIR)
-CONFIGURE_SBINDIR.64 = $(USRSBINDIR)
+CONFIGURE_BINDIR.64 =	$(USRBINDIR)
+CONFIGURE_SBINDIR.64 =	$(USRSBINDIR)
 
 CONFIGURE_ENV     +=	LDFLAGS="$(LDFLAGS.64)"
 
@@ -56,6 +56,15 @@
 CONFIGURE_OPTIONS +=	--disable-static
 CONFIGURE_OPTIONS +=	--enable-shared
 
+CONFIGURE_OPTIONS +=	--with-solaris-smf=yes
+CONFIGURE_OPTIONS +=	--with-solaris-init=no
+CONFIGURE_OPTIONS +=	--with-solaris-pkg-svr4=no
+CONFIGURE_OPTIONS +=	--with-solaris-pkg-ips=no
+
+CONFIGURE_OPTIONS +=	--with-systemdsystemunitdir=no
+CONFIGURE_OPTIONS +=	--with-systemdshutdowndir=no
+CONFIGURE_OPTIONS +=	--with-systemdtmpfilesdir=no
+
 CONFIGURE_OPTIONS +=	--with-user=nut
 CONFIGURE_OPTIONS +=	--with-group=nut
 CONFIGURE_OPTIONS +=	--sysconfdir=/etc/nut
@@ -63,26 +72,40 @@
 CONFIGURE_OPTIONS +=	--datarootdir=/usr/share/nut
 CONFIGURE_OPTIONS +=	--with-hotplug-dir=no
 CONFIGURE_OPTIONS +=	--with-udev-dir=no
+
+#  --with-statepath=PATH   path for ups state files (${STATEPATH}, typically
+#                          /var/state/ups)
+#  --with-altpidpath=PATH  path for NUT driver/upsd .pid files not running as
+#                          root (<statepath>)
+#  --with-pidpath=PATH     Path for root-owned .pid files (${PIDPATH},
+#                          typically /var/run)
+#  --with-powerdownflag=PATH
+#                          default path for upsmon POWERDOWNFLAG file
+#                          (${POWERDOWNFLAG}, typically /etc/killpower)
+CONFIGURE_OPTIONS +=	--with-pidpath=/var/run/nut
 CONFIGURE_OPTIONS +=	--with-altpidpath=/var/run/nut
+CONFIGURE_OPTIONS +=	--with-powerdownflag=/var/run/nut/killpower
 CONFIGURE_OPTIONS +=	--with-statepath=/var/db/nut
-CONFIGURE_OPTIONS +=	--with-systemdsystemunitdir=no
+
 CONFIGURE_OPTIONS +=	--with-dev
 CONFIGURE_OPTIONS +=	--with-libltdl
 CONFIGURE_OPTIONS +=	--with-ssl
 CONFIGURE_OPTIONS +=	--with-openssl
 CONFIGURE_OPTIONS +=	--with-gd-includes=-I/usr/include/gd2
 
+CONFIGURE_OPTIONS +=	--libexecdir=/usr/lib/nut/bin
 CONFIGURE_OPTIONS +=	--with-drvpath=/usr/lib/nut/bin
 CONFIGURE_OPTIONS +=	--with-cgipath=/usr/lib/nut/cgi-bin
 CONFIGURE_OPTIONS +=	--with-gd-libs=-L/usr/lib/$(MACH64)
 
-# No separate toggle for this yet
-#CONFIGURE_OPTIONS +=	--with-nut-scanner=yes
+CONFIGURE_OPTIONS +=	--with-nut-scanner=yes
 
 # Minimize guesswork: these are features we can and do build and deliver in
 # package manifest, so the build host must have relevant packages installed
 CONFIGURE_OPTIONS +=	--with-serial=yes
-CONFIGURE_OPTIONS +=	--with-usb=yes
+#CONFIGURE_OPTIONS +=	--with-usb=yes
+CONFIGURE_OPTIONS +=	--with-usb=libusb-1.0
+CONFIGURE_OPTIONS +=	--with-modbus=yes
 CONFIGURE_OPTIONS +=	--with-neon=yes
 CONFIGURE_OPTIONS +=	--with-avahi=yes
 CONFIGURE_OPTIONS +=	--with-powerman=yes
@@ -101,27 +124,98 @@
 # Note: building the numerous documents of this projects is time-consuming
 # and we only need one copy. Also, we don't ship "dblatex" (needed here for
 # compiling PDFs) and probably don't require "html-chunked" chapters.
-CONFIGURE_OPTIONS +=        --with-doc="man=yes"
+CONFIGURE_OPTIONS +=	--with-doc="man=yes"
+
+# NUT-Monitor GUI client
+CONFIGURE_OPTIONS +=	--with-nut-monitor=yes
+CONFIGURE_OPTIONS +=	--with-pynut=yes
+CONFIGURE_OPTIONS +=	--with-python2=no
+CONFIGURE_OPTIONS +=	--with-python=python$(PYTHON_VERSION)
+
+# Be sure package is squeaky clean
+CONFIGURE_OPTIONS +=	--enable-Werror --enable-warnings --enable-Wcolor
+CONFIGURE_OPTIONS +=	--enable-keep_nut_report_feature
+CONFIGURE_OPTIONS +=	--enable-silent-rules
+
+# What do we run in case of `make check`?
+CONFIGURE_OPTIONS +=	--enable-spellcheck
+# NUT Integration Test suite, can take time and might fail due
+# to environment (busy ports, congested hsots and timeouts):
+#CONFIGURE_OPTIONS +=	--enable-check-NIT
+# No CPPCHECK here yet:
+CONFIGURE_OPTIONS +=	--disable-cppcheck
 
 CONFIGURE_OPTIONS +=	$(CONFIGURE_OPTIONS.$(BITS))
+
+# TOTHINK? variant.opensolaris.zone=global
+$(BUILD_DIR)/nut-usb-driver.p5m.include: $(BUILD_DIR)/$(MACH64)/scripts/udev/nut-usbups.rules
+	(echo "# NUT USB VID:PID pairs supported by some USB-capable driver"; \
+	 echo "# Parsed from $< during package build"; \
+	 echo "driver name=ugen \\" ; \
+	 grep -E 'ATTR.*idVendor.*idProduct' < "$<" | \
+	 $(GSED) 's/^.*ATTR{idVendor}=="0*\([a-fA-F0-9][a-fA-F0-9]*\)".*ATTR{idProduct}=="0*\([a-fA-F0-9][a-fA-F0-9]*\)".*$$/    alias="usb\1,\2.*" \\/' ; \
+	 echo '    perms="* 0664 root nut"' ; \
+	) > "$@"
+
+# Inject into build chain, to patch .mogrified file used to create .mangled and beyond
+$(BUILD_DIR)/.injected.nut-usb-driver.p5m.include: $(BUILD_DIR)/manifest-$(MACH)-nut-drivers-usb.mogrified $(BUILD_DIR)/nut-usb-driver.p5m.include
+	cat "$(BUILD_DIR)/nut-usb-driver.p5m.include" >> "$(BUILD_DIR)/manifest-$(MACH)-nut-drivers-usb.mogrified"
+	touch "$@"
+
+$(BUILD_DIR)/manifest-$(MACH)-nut-drivers-usb.mangled: $(BUILD_DIR)/nut-usb-driver.p5m.include $(BUILD_DIR)/.injected.nut-usb-driver.p5m.include
+
+# NUT-Monitor UI has two similar implementations, for py2gtk and py3qt5.
+# The PyNUT.py (general binding) module is written to work with both 2.x
+# and 3.x interpreters as the same source file (patched for shebang and
+# installed to different vendor/site locations several times in practice).
+# Fiddle with packaging:
+# * move man1m pages to target directory (see also patches/07-man.patch)
+# * move python stuff to vendor-packages
+# * make sure full python program name is in the shebang
+#   (and note we can not use ...\1${PYVER} because it is
+#    also numbers and SED gets confused about group \12 or so)
+# * pre-compile PYC files
+# * apply a little hack to comment away the import which
+#   confuses pkgdepend (it looks for "import" lines and
+#   disregards "try/except" around it)
+COMPONENT_POST_INSTALL_ACTION += \
+    $(MKDIR) $(PROTOUSRSHAREMANDIR)/man1m \
+        && $(MV) $(PROTOUSRSHAREMANDIR)/man1/*.1m $(PROTOUSRSHAREMANDIR)/man1m/ \
+        || { echo "FAILED to fix up man1m" >&2 ; exit 1; } ; \
+    for PYVER in $(PYTHON_VERSIONS) ; do \
+        $(MKDIR) "$(PROTOUSRLIBDIR)/python$${PYVER}/vendor-packages" \
+            && $(MV) "$(PROTOUSRLIBDIR)/python$${PYVER}/site-packages/"* "$(PROTOUSRLIBDIR)/python$${PYVER}/vendor-packages/" \
+            && find "$(PROTOUSRLIBDIR)/python$${PYVER}/vendor-packages/" -name '*.py' | while read F ; do \
+                $(GSED) '/^\(\#\!.*\/python\)$$/ s/$$/'"$${PYVER}"'/' -i "$$F" || exit ; \
+            done \
+        && python$${PYVER} -m compileall "$(PROTOUSRLIBDIR)/python$${PYVER}/vendor-packages" || exit ; \
+        case "$${PYVER}" in \
+        2.*) python$${PYVER} -c "import pygtk;pygtk.require('2.0');import pynotify" >/dev/null || { \
+                echo "Neutering import of pynotify in NUT-Monitor-py2gtk2 for this build with python$${PYVER}" >&2 ; \
+                $(GSED) -i "$(PROTOUSRSHAREDIR)/nut/nut-monitor/app/NUT-Monitor-py2gtk2" \
+                    -e 's,\(\s\)\(import pynotify\),\1return; \#\#\#NOT_HERE_\2,' || exit ; \
+            } ; \
+        esac ; \
+    done;
 
 # Manually added dependencies:
 REQUIRED_PACKAGES += text/asciidoc
 REQUIRED_PACKAGES += library/augeas-tools
 
 # Auto-generated dependencies
+PYTHON_REQUIRED_PACKAGES += runtime/python
 REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
 REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
 REQUIRED_PACKAGES += library/gd
+REQUIRED_PACKAGES += library/libmodbus
 REQUIRED_PACKAGES += library/libtool/libltdl
+REQUIRED_PACKAGES += library/libusb-1
 REQUIRED_PACKAGES += library/neon
-REQUIRED_PACKAGES += library/security/openssl
+REQUIRED_PACKAGES += library/python/pyqt5
+REQUIRED_PACKAGES += library/security/openssl-31
 REQUIRED_PACKAGES += shell/ksh93
-REQUIRED_PACKAGES += SUNWcs
 REQUIRED_PACKAGES += system/library
 REQUIRED_PACKAGES += system/library/math
-REQUIRED_PACKAGES += system/library/usb/libusb
 REQUIRED_PACKAGES += system/management/freeipmi
-#REQUIRED_PACKAGES += system/management/nut/libs
 REQUIRED_PACKAGES += system/management/powerman
 REQUIRED_PACKAGES += system/management/snmp/net-snmp
diff --git a/components/sysutils/nut/files/nut-client.xml b/components/sysutils/nut/files/nut-client.xml
deleted file mode 100644
index 6d6f13c..0000000
--- a/components/sysutils/nut/files/nut-client.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#
-# This file and its contents are supplied under the terms of the
-# Common Development and Distribution License ("CDDL"), version 1.0.
-# You may only use this file in accordance with the terms of version
-# 1.0 of the CDDL.
-#
-# A full copy of the text of the CDDL should have accompanied this
-# source.  A copy of the CDDL is also available via the Internet at
-# http://www.illumos.org/license/CDDL.
-#
--->
-
-<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
-<!--
-#
-# Copyright 2016 Jim Klimov
-#
--->
-
-<service_bundle type='manifest' name='nut-client'>
-
-	<service name='system/power/nut-client' type='service' version='1'>
-
-	<!--
-	  Configure a default instance for the service since it doesn't
-	  require additional configuration intervention before it starts.
-	-->
-		<create_default_instance enabled='false' />
-			
-	<!--
-	  Wait for all local and usr filesystem to be mounted - project is
-	  located in /usr/sbin.
-	-->
-		<dependency
-		name='fs-local'
-		type='service'
-		grouping='require_all'
-		restart_on='none'>
-			<service_fmri value='svc:/system/filesystem/local' />
-		</dependency>
-		
-		<dependency
-		name='filesystem-usr'
-		grouping='require_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri
-		value='svc:/system/filesystem/usr:default'/>
-		</dependency>
-
-	<!--
-	  Wait for syslog to be started in order to write system
-	  messages from the kernel.
-	-->
-		<dependency
-		name='syslog'
-		grouping='optional_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri
-		value='svc:/system/system-log:default'/>
-		</dependency>
-
-	<!--
-	  Wait for network to be started in order to reach remote hosts.
-	-->
-		<dependency
-		name='network-service'
-		grouping='optional_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri value='svc:/network/service' />
-		</dependency>
-
-	<!--
-	  Wait for NUT upsd to be started, if it's enabled
-	-->
-		<dependency
-		name='nut-service'
-		grouping='optional_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri value='svc:/system/power/nut' />
-		</dependency>
-
-	<!--
-	  The nut start/stop methods.
-	-->
-
-		<exec_method
-		type='method'
-		name='start'
-		exec='/lib/svc/method/svc-nut-client %m'
-		timeout_seconds='60'/>
-
-		<exec_method
-		type='method'
-		name='stop'
-		exec=':kill'
-		timeout_seconds='60' />
-
-		<property_group name='startd' type='framework'>
-		<!--
-		  Sub-process core dumps and external kill signals are not
-		  considered errors, so the service should be restarted.
-			-->
-			<propval name='ignore_error' type='astring'
-			 value='core,signal' />
-		</property_group>
-
-	<!-- Really unstable - this service should be evolved! -->
-		<stability value='Unstable' />
-
-		<template>
-			<common_name>
-				<loctext xml:lang='C'>
-				NUT ups monitoring service
-				</loctext>
-			</common_name>
-			<documentation>
-				<manpage title='upsmon' section='8'
-				manpath='/usr/share/man' />
-				<manpage title='upsmon.conf' section='5'
-				manpath='/usr/share/man' />
-			</documentation>
-		</template>
-	</service>
-
-</service_bundle>
diff --git a/components/sysutils/nut/files/nut.xml b/components/sysutils/nut/files/nut.xml
deleted file mode 100644
index eea8895..0000000
--- a/components/sysutils/nut/files/nut.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#
-# This file and its contents are supplied under the terms of the
-# Common Development and Distribution License ("CDDL"), version 1.0.
-# You may only use this file in accordance with the terms of version
-# 1.0 of the CDDL.
-#
-# A full copy of the text of the CDDL should have accompanied this
-# source.  A copy of the CDDL is also available via the Internet at
-# http://www.illumos.org/license/CDDL.
-#
--->
-
-<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
-<!--
-#
-# Copyright 2016 Jim Klimov
-#
--->
-
-<service_bundle type='manifest' name='nut'>
-
-	<service name='system/power/nut' type='service' version='1'>
-
-	<!--
-	  Configure a default instance for the service since it doesn't
-	  require additional configuration intervention before it starts.
-	-->
-		<create_default_instance enabled='false' />
-			
-	<!--
-	  Wait for all local and usr filesystem to be mounted - project is
-	  located in /usr/sbin.
-	-->
-		<dependency
-		name='fs-local'
-		type='service'
-		grouping='require_all'
-		restart_on='none'>
-			<service_fmri value='svc:/system/filesystem/local' />
-		</dependency>
-		
-		<dependency
-		name='filesystem-usr'
-		grouping='require_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri
-		value='svc:/system/filesystem/usr:default'/>
-		</dependency>
-
-	<!--
-	  Wait for syslog to be started in order to write system
-	  messages from the kernel.
-	-->
-		<dependency
-		name='syslog'
-		grouping='optional_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri
-		value='svc:/system/system-log:default'/>
-		</dependency>
-
-	<!--
-	  Wait for network to be started in order to reach remote hosts.
-	-->
-		<dependency
-		name='network-service'
-		grouping='optional_all'
-		restart_on='none'
-		type='service'>
-			<service_fmri value='svc:/network/service' />
-		</dependency>
-
-	<!--
-	  The nut start/stop methods.
-	-->
-
-		<exec_method
-		type='method'
-		name='start'
-		exec='/lib/svc/method/svc-nut %m'
-		timeout_seconds='60'/>
-
-		<exec_method
-		type='method'
-		name='stop'
-		exec=':kill'
-		timeout_seconds='60' />
-
-		<property_group name='startd' type='framework'>
-		<!--
-		  Sub-process core dumps and external kill signals are not
-		  considered errors, so the service should be restarted.
-			-->
-			<propval name='ignore_error' type='astring'
-			 value='core,signal' />
-		</property_group>
-
-	<!-- Really unstable - this service should be evolved! -->
-		<stability value='Unstable' />
-
-		<template>
-			<common_name>
-				<loctext xml:lang='C'>
-				NUT ups information service
-				</loctext>
-			</common_name>
-			<documentation>
-				<manpage title='upsdrvctl' section='8'
-				manpath='/usr/share/man' />
-				<manpage title='upsd' section='8'
-				manpath='/usr/share/man' />
-				<manpage title='ups.conf' section='5'
-				manpath='/usr/share/man' />
-				<manpage title='upsd.conf' section='5'
-				manpath='/usr/share/man' />
-				<manpage title='upsd.users' section='5'
-				manpath='/usr/share/man' />
-			</documentation>
-		</template>
-	</service>
-
-</service_bundle>
diff --git a/components/sysutils/nut/files/svc-nut b/components/sysutils/nut/files/svc-nut
deleted file mode 100755
index 3538fa1..0000000
--- a/components/sysutils/nut/files/svc-nut
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/sbin/sh
-
-# Trivial (better is yet to come) SMF method script to start nut services
-# Adapted for OpenIndiana userland from init.d script template in NUT sources
-# Adaptation copyright (C) 2016 Jim Klimov
-
-if [ -z "$SMF_FMRI" ]; then
-    echo "$0 must be called in SMF context!" &>2
-    exit 1
-fi
-
-# smf(5)
-. /lib/svc/share/smf_include.sh || exit
-
-NUT_DIR="/usr"
-NUT_SBIN_DIR="$NUT_DIR/sbin"
-NUT_RUN_DIR="/var/run/nut"
-NUTUSER="nut"
-NUTGROUP="nut"
-
-ups_start () {
-	# Default rights inspired by NUT scripts/Solaris/postinstall.in
-	mkdir -p "$NUT_RUN_DIR" && \
-	chown "root:$NUTGROUP" "$NUT_RUN_DIR" && \
-	chmod 770 "$NUT_RUN_DIR" \
-	|| exit $SMF_EXIT_ERR_FATAL
-
-	"${NUT_SBIN_DIR}"/upsdrvctl start #> /dev/null 2>&1
-	"${NUT_SBIN_DIR}"/upsd #> /dev/null 2>&1
-}
-
-case "$1" in
-'start')
-	ups_start
-	;;
-
-*)
-	echo ""
-	echo "Usage: '$0' {start}"
-	echo ""
-	exit $SMF_EXIT_ERR_CONFIG
-	;;
-esac
-
-exit $?
diff --git a/components/sysutils/nut/files/svc-nut-client b/components/sysutils/nut/files/svc-nut-client
deleted file mode 100755
index 32ab199..0000000
--- a/components/sysutils/nut/files/svc-nut-client
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/sbin/sh
-
-# Trivial (better is yet to come) SMF method script to start nut services
-# Adapted for OpenIndiana userland from init.d script template in NUT sources
-# Adaptation copyright (C) 2016 Jim Klimov
-
-if [ -z "$SMF_FMRI" ]; then
-    echo "$0 must be called in SMF context!" &>2
-    exit 1
-fi
-
-# smf(5)
-. /lib/svc/share/smf_include.sh || exit
-
-NUT_DIR="/usr"
-NUT_SBIN_DIR="$NUT_DIR/sbin"
-NUT_RUN_DIR="/var/run/nut"
-NUTUSER="nut"
-NUTGROUP="nut"
-
-ups_start () {
-	if [ "$MODE" = "none" ];then
-		echo "No NUT mode set" >&2
-		exit $SMF_EXIT_ERR_CONFIG
-	fi
-
-	# Default rights inspired by NUT scripts/Solaris/postinstall.in
-	mkdir -p "$NUT_RUN_DIR" && \
-	chown "root:$NUTGROUP" "$NUT_RUN_DIR" && \
-	chmod 770 "$NUT_RUN_DIR" \
-	|| exit $SMF_EXIT_ERR_FATAL
-
-	"${NUT_SBIN_DIR}"/upsmon #> /dev/null 2>&1
-}
-
-case "$1" in
-'start')
-	ups_start
-	;;
-
-*)
-	echo ""
-	echo "Usage: '$0' {start}"
-	echo ""
-	exit $SMF_EXIT_ERR_CONFIG
-	;;
-esac
-
-exit $?
diff --git a/components/sysutils/nut/manifests/sample-manifest.p5m b/components/sysutils/nut/manifests/sample-manifest.p5m
index 08a9a93..426bf46 100644
--- a/components/sysutils/nut/manifests/sample-manifest.p5m
+++ b/components/sysutils/nut/manifests/sample-manifest.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2022 <contributor>
+# Copyright 2023 <contributor>
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY)"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -32,6 +33,7 @@
 file path=etc/nut/upsset.conf.sample
 file path=etc/nut/upsstats-single.html.sample
 file path=etc/nut/upsstats.html.sample
+file path=usr/bin/NUT-Monitor
 file path=usr/bin/nut-scanner
 file path=usr/bin/upsc
 file path=usr/bin/upscmd
@@ -44,24 +46,33 @@
 file path=usr/html/nut-banner.png
 file path=usr/include/nut-scan.h
 file path=usr/include/nutclient.h
+file path=usr/include/nutclientmem.h
 file path=usr/include/nutscan-device.h
 file path=usr/include/nutscan-init.h
 file path=usr/include/nutscan-ip.h
+file path=usr/include/nutscan-serial.h
 file path=usr/include/parseconf.h
 file path=usr/include/upsclient.h
-link path=usr/lib/$(MACH64)/libnutclient.so target=libnutclient.so.0.0.0
-link path=usr/lib/$(MACH64)/libnutclient.so.0 target=libnutclient.so.0.0.0
-file path=usr/lib/$(MACH64)/libnutclient.so.0.0.0
-link path=usr/lib/$(MACH64)/libnutscan.so target=libnutscan.so.1.0.0
-link path=usr/lib/$(MACH64)/libnutscan.so.1 target=libnutscan.so.1.0.0
-file path=usr/lib/$(MACH64)/libnutscan.so.1.0.0
-link path=usr/lib/$(MACH64)/libupsclient.so target=libupsclient.so.4.0.0
-link path=usr/lib/$(MACH64)/libupsclient.so.4 target=libupsclient.so.4.0.0
-file path=usr/lib/$(MACH64)/libupsclient.so.4.0.0
+link path=usr/lib/$(MACH64)/libnutclient.so target=libnutclient.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutclient.so.2 target=libnutclient.so.2.0.2
+file path=usr/lib/$(MACH64)/libnutclient.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutclientstub.so target=libnutclientstub.so.1.0.1
+link path=usr/lib/$(MACH64)/libnutclientstub.so.1 \
+    target=libnutclientstub.so.1.0.1
+file path=usr/lib/$(MACH64)/libnutclientstub.so.1.0.1
+link path=usr/lib/$(MACH64)/libnutscan.so target=libnutscan.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutscan.so.2 target=libnutscan.so.2.0.2
+file path=usr/lib/$(MACH64)/libnutscan.so.2.0.2
+link path=usr/lib/$(MACH64)/libupsclient.so target=libupsclient.so.6.0.1
+link path=usr/lib/$(MACH64)/libupsclient.so.6 target=libupsclient.so.6.0.1
+file path=usr/lib/$(MACH64)/libupsclient.so.6.0.1
 file path=usr/lib/$(MACH64)/pkgconfig/libnutclient.pc
+file path=usr/lib/$(MACH64)/pkgconfig/libnutclientstub.pc
 file path=usr/lib/$(MACH64)/pkgconfig/libnutscan.pc
 file path=usr/lib/$(MACH64)/pkgconfig/libupsclient.pc
+file path=usr/lib/nut/bin/adelsystem_cbi
 file path=usr/lib/nut/bin/al175
+file path=usr/lib/nut/bin/apc_modbus
 file path=usr/lib/nut/bin/apcsmart
 file path=usr/lib/nut/bin/apcsmart-old
 file path=usr/lib/nut/bin/apcupsd-ups
@@ -81,7 +92,9 @@
 file path=usr/lib/nut/bin/etapro
 file path=usr/lib/nut/bin/everups
 file path=usr/lib/nut/bin/gamatronic
+file path=usr/lib/nut/bin/generic_modbus
 file path=usr/lib/nut/bin/genericups
+file path=usr/lib/nut/bin/huawei-ups2000
 file path=usr/lib/nut/bin/isbmex
 file path=usr/lib/nut/bin/ivtscd
 file path=usr/lib/nut/bin/liebert
@@ -91,13 +104,16 @@
 file path=usr/lib/nut/bin/mge-shut
 file path=usr/lib/nut/bin/mge-utalk
 file path=usr/lib/nut/bin/microdowell
+file path=usr/lib/nut/bin/microsol-apc
 file path=usr/lib/nut/bin/netxml-ups
+file path=usr/lib/nut/bin/nut-driver-enumerator.sh
 file path=usr/lib/nut/bin/nut-ipmipsu
 file path=usr/lib/nut/bin/nutdrv_atcl_usb
 file path=usr/lib/nut/bin/nutdrv_qx
-file path=usr/lib/nut/bin/oldmge-shut
+file path=usr/lib/nut/bin/nutdrv_siemens-sitop
 file path=usr/lib/nut/bin/oneac
 file path=usr/lib/nut/bin/optiups
+file path=usr/lib/nut/bin/phoenixcontact_modbus
 file path=usr/lib/nut/bin/powercom
 file path=usr/lib/nut/bin/powerman-pdu
 file path=usr/lib/nut/bin/powerpanel
@@ -107,7 +123,10 @@
 file path=usr/lib/nut/bin/riello_usb
 file path=usr/lib/nut/bin/safenet
 file path=usr/lib/nut/bin/skel
+file path=usr/lib/nut/bin/sms_ser
 file path=usr/lib/nut/bin/snmp-ups
+file path=usr/lib/nut/bin/sockdebug
+file path=usr/lib/nut/bin/socomec_jbus
 file path=usr/lib/nut/bin/solis
 file path=usr/lib/nut/bin/tripplite
 file path=usr/lib/nut/bin/tripplite_usb
@@ -118,83 +137,98 @@
 file path=usr/lib/nut/cgi-bin/upsimage.cgi
 file path=usr/lib/nut/cgi-bin/upsset.cgi
 file path=usr/lib/nut/cgi-bin/upsstats.cgi
+file path=usr/lib/python$(PYVER)/vendor-packages/PyNUT.py
+file path=usr/lib/python$(PYVER)/vendor-packages/test_nutclient.py
 file path=usr/sbin/upsd
 file path=usr/sbin/upsdrvctl
+file path=usr/sbin/upsdrvsvcctl
 file path=usr/sbin/upsmon
 file path=usr/sbin/upssched
-file path=usr/share/augeas/lenses/nuthostsconf.aug
-file path=usr/share/augeas/lenses/nutnutconf.aug
-file path=usr/share/augeas/lenses/nutupsconf.aug
-file path=usr/share/augeas/lenses/nutupsdconf.aug
-file path=usr/share/augeas/lenses/nutupsdusers.aug
-file path=usr/share/augeas/lenses/nutupsmonconf.aug
-file path=usr/share/augeas/lenses/nutupsschedconf.aug
-file path=usr/share/augeas/lenses/nutupssetconf.aug
-file path=usr/share/man/man1/al175.1m
-file path=usr/share/man/man1/apcsmart-old.1m
-file path=usr/share/man/man1/apcsmart.1m
-file path=usr/share/man/man1/apcupsd-ups.1m
-file path=usr/share/man/man1/bcmxcp.1m
-file path=usr/share/man/man1/bcmxcp_usb.1m
-file path=usr/share/man/man1/belkin.1m
-file path=usr/share/man/man1/belkinunv.1m
-file path=usr/share/man/man1/bestfcom.1m
-file path=usr/share/man/man1/bestfortress.1m
-file path=usr/share/man/man1/bestuferrups.1m
-file path=usr/share/man/man1/bestups.1m
-file path=usr/share/man/man1/blazer_ser.1m
-file path=usr/share/man/man1/blazer_usb.1m
-file path=usr/share/man/man1/clone.1m
-file path=usr/share/man/man1/dummy-ups.1m
-file path=usr/share/man/man1/etapro.1m
-file path=usr/share/man/man1/everups.1m
-file path=usr/share/man/man1/gamatronic.1m
-file path=usr/share/man/man1/genericups.1m
-file path=usr/share/man/man1/isbmex.1m
-file path=usr/share/man/man1/ivtscd.1m
-file path=usr/share/man/man1/liebert-esp2.1m
-file path=usr/share/man/man1/liebert.1m
-file path=usr/share/man/man1/masterguard.1m
-file path=usr/share/man/man1/metasys.1m
-file path=usr/share/man/man1/mge-shut.1m
-file path=usr/share/man/man1/mge-utalk.1m
-file path=usr/share/man/man1/microdowell.1m
-file path=usr/share/man/man1/netxml-ups.1m
-file path=usr/share/man/man1/nut-ipmipsu.1m
-file path=usr/share/man/man1/nut-recorder.1m
-file path=usr/share/man/man1/nut-scanner.1m
-file path=usr/share/man/man1/nutdrv_atcl_usb.1m
-file path=usr/share/man/man1/nutdrv_qx.1m
-file path=usr/share/man/man1/nutupsdrv.1m
-file path=usr/share/man/man1/oneac.1m
-file path=usr/share/man/man1/optiups.1m
-file path=usr/share/man/man1/powercom.1m
-file path=usr/share/man/man1/powerman-pdu.1m
-file path=usr/share/man/man1/powerpanel.1m
-file path=usr/share/man/man1/rhino.1m
-file path=usr/share/man/man1/richcomm_usb.1m
-file path=usr/share/man/man1/riello_ser.1m
-file path=usr/share/man/man1/riello_usb.1m
-file path=usr/share/man/man1/safenet.1m
-file path=usr/share/man/man1/snmp-ups.1m
-file path=usr/share/man/man1/solis.1m
-file path=usr/share/man/man1/tripplite.1m
-file path=usr/share/man/man1/tripplite_usb.1m
-file path=usr/share/man/man1/tripplitesu.1m
-file path=usr/share/man/man1/upsc.1m
-file path=usr/share/man/man1/upscmd.1m
-file path=usr/share/man/man1/upscode2.1m
-file path=usr/share/man/man1/upsd.1m
-file path=usr/share/man/man1/upsdrvctl.1m
-file path=usr/share/man/man1/upsimage.cgi.1m
-file path=usr/share/man/man1/upslog.1m
-file path=usr/share/man/man1/upsmon.1m
-file path=usr/share/man/man1/upsrw.1m
-file path=usr/share/man/man1/upssched.1m
-file path=usr/share/man/man1/upsset.cgi.1m
-file path=usr/share/man/man1/upsstats.cgi.1m
-file path=usr/share/man/man1/usbhid-ups.1m
-file path=usr/share/man/man1/victronups.1m
+file path=usr/share/augeas/lenses/dist/nuthostsconf.aug
+file path=usr/share/augeas/lenses/dist/nutnutconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsdconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsdusers.aug
+file path=usr/share/augeas/lenses/dist/nutupsmonconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsschedconf.aug
+file path=usr/share/augeas/lenses/dist/nutupssetconf.aug
+file path=usr/share/man/man1m/adelsystem_cbi.1m
+file path=usr/share/man/man1m/al175.1m
+file path=usr/share/man/man1m/apc_modbus.1m
+file path=usr/share/man/man1m/apcsmart-old.1m
+file path=usr/share/man/man1m/apcsmart.1m
+file path=usr/share/man/man1m/apcupsd-ups.1m
+file path=usr/share/man/man1m/bcmxcp.1m
+file path=usr/share/man/man1m/bcmxcp_usb.1m
+file path=usr/share/man/man1m/belkin.1m
+file path=usr/share/man/man1m/belkinunv.1m
+file path=usr/share/man/man1m/bestfcom.1m
+file path=usr/share/man/man1m/bestfortress.1m
+file path=usr/share/man/man1m/bestuferrups.1m
+file path=usr/share/man/man1m/bestups.1m
+file path=usr/share/man/man1m/blazer_ser.1m
+file path=usr/share/man/man1m/blazer_usb.1m
+file path=usr/share/man/man1m/clone.1m
+file path=usr/share/man/man1m/dummy-ups.1m
+file path=usr/share/man/man1m/etapro.1m
+file path=usr/share/man/man1m/everups.1m
+file path=usr/share/man/man1m/gamatronic.1m
+file path=usr/share/man/man1m/generic_modbus.1m
+file path=usr/share/man/man1m/genericups.1m
+file path=usr/share/man/man1m/huawei-ups2000.1m
+file path=usr/share/man/man1m/isbmex.1m
+file path=usr/share/man/man1m/ivtscd.1m
+file path=usr/share/man/man1m/liebert-esp2.1m
+file path=usr/share/man/man1m/liebert.1m
+file path=usr/share/man/man1m/masterguard.1m
+file path=usr/share/man/man1m/metasys.1m
+file path=usr/share/man/man1m/mge-shut.1m
+file path=usr/share/man/man1m/mge-utalk.1m
+file path=usr/share/man/man1m/microdowell.1m
+file path=usr/share/man/man1m/microsol-apc.1m
+file path=usr/share/man/man1m/netxml-ups.1m
+file path=usr/share/man/man1m/nut-driver-enumerator.1m
+file path=usr/share/man/man1m/nut-ipmipsu.1m
+file path=usr/share/man/man1m/nut-recorder.1m
+file path=usr/share/man/man1m/nut-scanner.1m
+file path=usr/share/man/man1m/nutdrv_atcl_usb.1m
+file path=usr/share/man/man1m/nutdrv_qx.1m
+file path=usr/share/man/man1m/nutdrv_siemens_sitop.1m
+file path=usr/share/man/man1m/nutupsdrv.1m
+file path=usr/share/man/man1m/oneac.1m
+file path=usr/share/man/man1m/optiups.1m
+file path=usr/share/man/man1m/phoenixcontact_modbus.1m
+file path=usr/share/man/man1m/powercom.1m
+file path=usr/share/man/man1m/powerman-pdu.1m
+file path=usr/share/man/man1m/powerpanel.1m
+file path=usr/share/man/man1m/rhino.1m
+file path=usr/share/man/man1m/richcomm_usb.1m
+file path=usr/share/man/man1m/riello_ser.1m
+file path=usr/share/man/man1m/riello_usb.1m
+file path=usr/share/man/man1m/safenet.1m
+file path=usr/share/man/man1m/sms_ser.1m
+file path=usr/share/man/man1m/snmp-ups.1m
+file path=usr/share/man/man1m/sockdebug.1m
+file path=usr/share/man/man1m/socomec_jbus.1m
+file path=usr/share/man/man1m/solis.1m
+file path=usr/share/man/man1m/tripplite.1m
+file path=usr/share/man/man1m/tripplite_usb.1m
+file path=usr/share/man/man1m/tripplitesu.1m
+file path=usr/share/man/man1m/upsc.1m
+file path=usr/share/man/man1m/upscmd.1m
+file path=usr/share/man/man1m/upscode2.1m
+file path=usr/share/man/man1m/upsd.1m
+file path=usr/share/man/man1m/upsdrvctl.1m
+file path=usr/share/man/man1m/upsdrvsvcctl.1m
+file path=usr/share/man/man1m/upsimage.cgi.1m
+file path=usr/share/man/man1m/upslog.1m
+file path=usr/share/man/man1m/upsmon.1m
+file path=usr/share/man/man1m/upsrw.1m
+file path=usr/share/man/man1m/upssched.1m
+file path=usr/share/man/man1m/upsset.cgi.1m
+file path=usr/share/man/man1m/upsstats.cgi.1m
+file path=usr/share/man/man1m/usbhid-ups.1m
+file path=usr/share/man/man1m/victronups.1m
 file path=usr/share/man/man3/libnutclient.3
 file path=usr/share/man/man3/libnutclient_commands.3
 file path=usr/share/man/man3/libnutclient_devices.3
@@ -234,7 +268,10 @@
 file path=usr/share/man/man3/nutscan_add_option_to_device.3
 file path=usr/share/man/man3/nutscan_cidr_to_ip.3
 file path=usr/share/man/man3/nutscan_display_parsable.3
+file path=usr/share/man/man3/nutscan_display_sanity_check.3
+file path=usr/share/man/man3/nutscan_display_sanity_check_serial.3
 file path=usr/share/man/man3/nutscan_display_ups_conf.3
+file path=usr/share/man/man3/nutscan_display_ups_conf_with_sanity_check.3
 file path=usr/share/man/man3/nutscan_free_device.3
 file path=usr/share/man/man3/nutscan_get_serial_ports_list.3
 file path=usr/share/man/man3/nutscan_init.3
@@ -245,7 +282,7 @@
 file path=usr/share/man/man3/nutscan_scan_nut.3
 file path=usr/share/man/man3/nutscan_scan_snmp.3
 file path=usr/share/man/man3/nutscan_scan_usb.3
-file path=usr/share/man/man3/nutscan_scan_xml_http.3
+file path=usr/share/man/man3/nutscan_scan_xml_http_range.3
 file path=usr/share/man/man3/upscli_add_host_cert.3
 file path=usr/share/man/man3/upscli_cleanup.3
 file path=usr/share/man/man3/upscli_connect.3
@@ -256,7 +293,9 @@
 file path=usr/share/man/man3/upscli_list_next.3
 file path=usr/share/man/man3/upscli_list_start.3
 file path=usr/share/man/man3/upscli_readline.3
+file path=usr/share/man/man3/upscli_readline_timeout.3
 file path=usr/share/man/man3/upscli_sendline.3
+file path=usr/share/man/man3/upscli_sendline_timeout.3
 file path=usr/share/man/man3/upscli_splitaddr.3
 file path=usr/share/man/man3/upscli_splitname.3
 file path=usr/share/man/man3/upscli_ssl.3
@@ -273,4 +312,38 @@
 file path=usr/share/man/man5/upsset.conf.5
 file path=usr/share/man/man5/upsstats.html.5
 file path=usr/share/nut/cmdvartab
+file path=usr/share/nut/config.nut_report_feature.log
 file path=usr/share/nut/driver.list
+file path=usr/share/nut/nut-monitor/README
+file path=usr/share/nut/nut-monitor/app/NUT-Monitor
+file path=usr/share/nut/nut-monitor/app/NUT-Monitor-py3qt5
+file path=usr/share/nut/nut-monitor/app/README
+file path=usr/share/nut/nut-monitor/app/icons/256x256/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/48x48/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/64x64/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/scalable/nut-monitor.svg
+file path=usr/share/nut/nut-monitor/app/locale/fr/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/locale/it/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/locale/ru/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/nut-monitor-py3qt5.desktop
+file path=usr/share/nut/nut-monitor/app/nut-monitor.appdata.xml
+file path=usr/share/nut/nut-monitor/app/nut-monitor.desktop
+file path=usr/share/nut/nut-monitor/app/pixmaps/on_battery.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/on_line.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/var-ro.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/var-rw.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/warning.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-1.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-2.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-3.png
+file path=usr/share/nut/nut-monitor/app/ui/aboutdialog1.ui
+file path=usr/share/nut/nut-monitor/app/ui/dialog1.ui
+file path=usr/share/nut/nut-monitor/app/ui/dialog2.ui
+file path=usr/share/nut/nut-monitor/app/ui/window1.ui
+file path=usr/share/nut/solaris-smf/manifest/nut-driver-enumerator.xml
+file path=usr/share/nut/solaris-smf/manifest/nut-driver.xml
+file path=usr/share/nut/solaris-smf/manifest/nut-monitor.xml
+file path=usr/share/nut/solaris-smf/manifest/nut-server.xml
+file path=usr/share/nut/solaris-smf/manifest/nut.xml
+file path=usr/share/nut/solaris-smf/method/svc-nut-monitor
+file path=usr/share/nut/solaris-smf/method/svc-nut-server
diff --git a/components/sysutils/nut/nut-augeas.p5m b/components/sysutils/nut/nut-augeas.p5m
index f812bee..d19a4d2 100644
--- a/components/sysutils/nut/nut-augeas.p5m
+++ b/components/sysutils/nut/nut-augeas.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/augeas@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT Augeas config-mgmt lenses"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -32,11 +33,11 @@
 depend fmri=library/augeas-tools type=require
 
 ### Augeas configuration licenses for NUT
-file path=usr/share/augeas/lenses/nuthostsconf.aug
-file path=usr/share/augeas/lenses/nutnutconf.aug
-file path=usr/share/augeas/lenses/nutupsconf.aug
-file path=usr/share/augeas/lenses/nutupsdconf.aug
-file path=usr/share/augeas/lenses/nutupsdusers.aug
-file path=usr/share/augeas/lenses/nutupsmonconf.aug
-file path=usr/share/augeas/lenses/nutupsschedconf.aug
-file path=usr/share/augeas/lenses/nutupssetconf.aug
+file path=usr/share/augeas/lenses/dist/nuthostsconf.aug
+file path=usr/share/augeas/lenses/dist/nutnutconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsdconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsdusers.aug
+file path=usr/share/augeas/lenses/dist/nutupsmonconf.aug
+file path=usr/share/augeas/lenses/dist/nutupsschedconf.aug
+file path=usr/share/augeas/lenses/dist/nutupssetconf.aug
diff --git a/components/sysutils/nut/nut-bins.p5m b/components/sysutils/nut/nut-bins.p5m
deleted file mode 100644
index 1a14401..0000000
--- a/components/sysutils/nut/nut-bins.p5m
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# This file and its contents are supplied under the terms of the
-# Common Development and Distribution License ("CDDL"), version 1.0.
-# You may only use this file in accordance with the terms of version
-# 1.0 of the CDDL.
-#
-# A full copy of the text of the CDDL should have accompanied this
-# source.  A copy of the CDDL is also available via the Internet at
-# http://www.illumos.org/license/CDDL.
-#
-
-#
-# Copyright 2016 Jim Klimov
-#
-
-set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/bins@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
-set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT Command-line binaries and scripts"
-set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
-set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
-set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
-
-license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
-
-<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
-<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1/%<1> >
-
-depend fmri=$(COMPONENT_FMRI)-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
-
-### NUT Command-line binaries and scripts (daemons, clients)
-
-### Note: While nut-scanner can use snmp, neon/xml, ipmi and usb libs, it loads
-### them truly dynamically (if available) and skips otherwise. Installing the
-### NUT driver packages should pull their relevant libs by harder ELF reqs.
-### Reasonably, if you don't want those UPSes (got no drivers) why scan them? :)
-
-file path=usr/bin/nut-scanner
-file path=usr/bin/upsc
-file path=usr/bin/upscmd
-file path=usr/bin/upslog
-file path=usr/bin/upsrw
-
-file path=usr/sbin/upsd
-file path=usr/sbin/upsdrvctl
-file path=usr/sbin/upsmon
-file path=usr/sbin/upssched
-
-# Example notification script for UPSMON
-file files/notifyme path=usr/lib/nut/bin/notifyme mode=0755 preserve=renamenew
-
-# This is an example script for handling upssched
-file path=usr/bin/upssched-cmd preserve=renamenew
-
-# Init-scripts for NUT, not perfect - but better than nothing for a start.
-# NUT should start generally after networking (if SNMP or NetXML is used,
-# or if this box is a client to remote upsd). Ending is trickier - could
-# want it to issue killpower late in shutdown, but have network to be able
-# to do so (for remote UPSes). This can be tuned in XML manifest by user.
-file files/svc-nut path=lib/svc/method/svc-nut
-file files/nut.xml path=var/svc/manifest/application/nut.xml
-
-file files/svc-nut-client path=lib/svc/method/svc-nut-client
-file files/nut-client.xml path=var/svc/manifest/application/nut-client.xml
-
-file path=usr/share/man/man5/hosts.conf.5
-file path=usr/share/man/man5/ups.conf.5
-file path=usr/share/man/man5/upsd.conf.5
-file path=usr/share/man/man5/upsd.users.5
-file path=usr/share/man/man5/upsmon.conf.5
-file path=usr/share/man/man5/upssched.conf.5
-
-file path=usr/share/man/man1m/nut-scanner.1m
-file path=usr/share/man/man1m/upsc.1m
-file path=usr/share/man/man1m/upscmd.1m
-file path=usr/share/man/man1m/upsd.1m
-file path=usr/share/man/man1m/upsdrvctl.1m
-file path=usr/share/man/man1m/upslog.1m
-file path=usr/share/man/man1m/upsmon.1m
-file path=usr/share/man/man1m/upsrw.1m
-file path=usr/share/man/man1m/upssched.1m
-
-# We deliver the sample configs as the ones to use,
-# at worst they have no actual information inside and do nothing.
-file etc/nut/ups.conf.sample path=etc/nut/ups.conf \
-    group=nut owner=root mode=0640 preserve=true
-file etc/nut/upsd.conf.sample path=etc/nut/upsd.conf \
-    group=nut owner=root mode=0640 preserve=true
-file etc/nut/upsd.users.sample path=etc/nut/upsd.users \
-    group=nut owner=root mode=0640 preserve=true
-file etc/nut/upsmon.conf.sample path=etc/nut/upsmon.conf \
-    group=nut owner=root mode=0640 preserve=true
-file etc/nut/upssched.conf.sample path=etc/nut/upssched.conf \
-    group=nut owner=root mode=0640 preserve=true
-
-file build/$(MACH64)/scripts/avahi/nut.service path=usr/share/nut/nut.avahi-service.example
-
-file scripts/logrotate/nutlogd path=usr/share/nut/nutlogd.example
-
-file scripts/misc/nut.bash_completion path=usr/share/bash-completion/completions/nut
diff --git a/components/sysutils/nut/nut-cgi.p5m b/components/sysutils/nut/nut-cgi.p5m
index 716a9c8..21538fe 100644
--- a/components/sysutils/nut/nut-cgi.p5m
+++ b/components/sysutils/nut/nut-cgi.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/cgi@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT CGI clients"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -25,15 +26,18 @@
 <transform file path=usr/lib/nut/cgi-bin/.+ -> default mode 0555>
 <transform dir path=usr/lib/nut/cgi-bin -> set group bin>
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
-<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
 
-depend fmri=$(COMPONENT_FMRI)-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=library/security/openssl-31 type=require
 
 ### NUT CGI clients, require libgd
 file path=usr/lib/nut/cgi-bin/upsimage.cgi
 file path=usr/lib/nut/cgi-bin/upsset.cgi
 file path=usr/lib/nut/cgi-bin/upsstats.cgi
 
+file path=usr/share/man/man5/hosts.conf.5
 file path=usr/share/man/man5/upsset.conf.5
 file path=usr/share/man/man5/upsstats.html.5
 
diff --git a/components/sysutils/nut/nut-clients.p5m b/components/sysutils/nut/nut-clients.p5m
new file mode 100644
index 0000000..694fd50
--- /dev/null
+++ b/components/sysutils/nut/nut-clients.p5m
@@ -0,0 +1,75 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/clients@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT command-line and daemon clients"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+depend fmri=$(COMPONENT_FMRI)/common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=library/security/openssl-31 type=require
+
+### NUT Command-line binaries and scripts (upsmon daemon, other clients)
+file path=usr/bin/upsc
+file path=usr/bin/upscmd
+file path=usr/bin/upslog
+file path=usr/bin/upsrw
+
+file path=usr/sbin/upsmon
+file path=usr/sbin/upssched
+
+# Example notification script for UPSMON
+file files/notifyme path=usr/lib/nut/bin/notifyme mode=0755 preserve=renamenew
+
+# This is an example script for handling upssched
+file path=usr/bin/upssched-cmd preserve=renamenew
+
+# Services for monitoring client (generally does not have to be present
+# and running on the same system as a data server and drivers).
+file path=usr/share/nut/solaris-smf/method/svc-nut-monitor
+file path=usr/share/nut/solaris-smf/manifest/nut-monitor.xml
+link path=lib/svc/manifest/system/power/nut-monitor.xml \
+    target=../../../../../usr/share/nut/solaris-smf/manifest/nut-monitor.xml \
+    restart_fmri=svc:/system/manifest-import:default
+
+file path=usr/share/man/man5/upsmon.conf.5
+file path=usr/share/man/man5/upssched.conf.5
+
+file path=usr/share/man/man1m/upsc.1m
+file path=usr/share/man/man1m/upscmd.1m
+file path=usr/share/man/man1m/upslog.1m
+file path=usr/share/man/man1m/upsmon.1m
+file path=usr/share/man/man1m/upsrw.1m
+file path=usr/share/man/man1m/upssched.1m
+
+# We deliver the sample configs as the ones to use,
+# at worst they have no actual information inside and do nothing.
+file etc/nut/upsmon.conf.sample path=etc/nut/upsmon.conf \
+    group=nut owner=root mode=0640 preserve=true
+file etc/nut/upssched.conf.sample path=etc/nut/upssched.conf \
+    group=nut owner=root mode=0640 preserve=true
diff --git a/components/sysutils/nut/nut-common.p5m b/components/sysutils/nut/nut-common.p5m
index 3205ee9..5f7a5ff 100644
--- a/components/sysutils/nut/nut-common.p5m
+++ b/components/sysutils/nut/nut-common.p5m
@@ -18,11 +18,12 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2016 Jim Klimov. All rights reserved.
+# Copyright (c) 2016-2023 Jim Klimov. All rights reserved.
 #
 
 set name=pkg.fmri \
-    value=pkg:/$(COMPONENT_FMRI)-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+    value=pkg:/$(COMPONENT_FMRI)/common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) (Base accounts and dirs)"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
@@ -40,9 +41,31 @@
     group=nut group-list=root \
     password=NL username=nut uid=77
 
+# NUT service names are grouped as "system/power/nut*", hence the directory:
+dir group=sys owner=root mode=0755 path=lib/svc/manifest/system/power
+
 # These directories can hold some content generated or downloaded at runtime
 # and can become lost+found when you un/re-install the core packages (if these
 # pkg actions are delivered there instead)
 dir group=nut owner=root mode=0775 path=etc/nut
 dir group=nut owner=root mode=0770 path=var/db/nut
 file files/README-NUT-etc.txt path=etc/nut/README-NUT-etc.txt owner=root group=bin
+
+# Configuration report with details of this build
+file path=usr/share/nut/config.nut_report_feature.log
+
+# NUT umbrella service
+# Services for monitoring client (upsmon) generally does not have to be
+# present and running on the same system as a data server and drivers.
+# NUT should start generally after networking (if SNMP or NetXML is used,
+# or if this box is a client to remote upsd). Ending is trickier - could
+# want it to issue killpower late in shutdown, but have network to be able
+# to do so (for remote UPSes). This can be tuned in XML manifest by user.
+file path=usr/share/nut/solaris-smf/manifest/nut.xml
+link path=lib/svc/manifest/system/power/nut.xml \
+    target=../../../../../usr/share/nut/solaris-smf/manifest/nut.xml \
+    restart_fmri=svc:/system/manifest-import:default
+
+# Common to clients, server, drivers...
+file scripts/misc/nut.bash_completion path=usr/share/bash-completion/completions/nut
+file scripts/logrotate/nutlogd path=usr/share/nut/nutlogd.example
diff --git a/components/sysutils/nut/nut-devtools.p5m b/components/sysutils/nut/nut-devtools.p5m
index 5bc82ee..7db936b 100644
--- a/components/sysutils/nut/nut-devtools.p5m
+++ b/components/sysutils/nut/nut-devtools.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/devtools@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT DDL development helper tools"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -23,7 +24,8 @@
 license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
-<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
 
 ### NUT Tools for project development and debugging
 file tools/nut-recorder.sh path=usr/bin/nut-recorder
diff --git a/components/sysutils/nut/nut-drivers-ipmi.p5m b/components/sysutils/nut/nut-drivers-ipmi.p5m
new file mode 100644
index 0000000..28c0a8b
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-ipmi.p5m
@@ -0,0 +1,46 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/ipmi@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT IPMI PSU drivers"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/nut-ipmipsu
+
+# Man pages
+file path=usr/share/man/man1m/nut-ipmipsu.1m
diff --git a/components/sysutils/nut/nut-drivers-modbus.p5m b/components/sysutils/nut/nut-drivers-modbus.p5m
new file mode 100644
index 0000000..0104d6c
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-modbus.p5m
@@ -0,0 +1,56 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/modbus@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT drivers communicating via ModBus (may be Serial/USB/TCP...)"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/adelsystem_cbi
+file path=usr/lib/nut/bin/apc_modbus
+file path=usr/lib/nut/bin/generic_modbus
+file path=usr/lib/nut/bin/huawei-ups2000
+file path=usr/lib/nut/bin/phoenixcontact_modbus
+file path=usr/lib/nut/bin/socomec_jbus
+
+# Man pages
+file path=usr/share/man/man1m/adelsystem_cbi.1m
+file path=usr/share/man/man1m/apc_modbus.1m
+file path=usr/share/man/man1m/generic_modbus.1m
+file path=usr/share/man/man1m/huawei-ups2000.1m
+file path=usr/share/man/man1m/phoenixcontact_modbus.1m
+file path=usr/share/man/man1m/socomec_jbus.1m
diff --git a/components/sysutils/nut/nut-drivers-neon.p5m b/components/sysutils/nut/nut-drivers-neon.p5m
new file mode 100644
index 0000000..1f008b4
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-neon.p5m
@@ -0,0 +1,46 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/neon@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT drivers communicating via XML/HTTP protocol"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/netxml-ups
+
+# Man pages
+file path=usr/share/man/man1m/netxml-ups.1m
diff --git a/components/sysutils/nut/nut-drivers-powerman.p5m b/components/sysutils/nut/nut-drivers-powerman.p5m
new file mode 100644
index 0000000..9c3f4df
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-powerman.p5m
@@ -0,0 +1,46 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/powerman@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT Powerman PDU drivers"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/powerman-pdu
+
+# Man pages
+file path=usr/share/man/man1m/powerman-pdu.1m
diff --git a/components/sysutils/nut/nut-drivers-serial.p5m b/components/sysutils/nut/nut-drivers-serial.p5m
new file mode 100644
index 0000000..eca5da3
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-serial.p5m
@@ -0,0 +1,118 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/serial@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT drivers communicating via Serial port"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. There are no specific third
+# party dependencies for this driver set.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/al175
+file path=usr/lib/nut/bin/apcsmart
+file path=usr/lib/nut/bin/apcsmart-old
+file path=usr/lib/nut/bin/bcmxcp
+file path=usr/lib/nut/bin/belkin
+file path=usr/lib/nut/bin/belkinunv
+file path=usr/lib/nut/bin/bestfcom
+file path=usr/lib/nut/bin/bestfortress
+file path=usr/lib/nut/bin/bestuferrups
+file path=usr/lib/nut/bin/bestups
+file path=usr/lib/nut/bin/blazer_ser
+file path=usr/lib/nut/bin/etapro
+file path=usr/lib/nut/bin/everups
+file path=usr/lib/nut/bin/gamatronic
+file path=usr/lib/nut/bin/genericups
+file path=usr/lib/nut/bin/isbmex
+file path=usr/lib/nut/bin/ivtscd
+file path=usr/lib/nut/bin/liebert
+file path=usr/lib/nut/bin/liebert-esp2
+file path=usr/lib/nut/bin/masterguard
+file path=usr/lib/nut/bin/metasys
+file path=usr/lib/nut/bin/mge-shut
+file path=usr/lib/nut/bin/mge-utalk
+file path=usr/lib/nut/bin/microdowell
+file path=usr/lib/nut/bin/microsol-apc
+file path=usr/lib/nut/bin/nutdrv_siemens-sitop
+file path=usr/lib/nut/bin/oneac
+file path=usr/lib/nut/bin/optiups
+file path=usr/lib/nut/bin/powercom
+file path=usr/lib/nut/bin/powerpanel
+file path=usr/lib/nut/bin/rhino
+file path=usr/lib/nut/bin/riello_ser
+file path=usr/lib/nut/bin/safenet
+file path=usr/lib/nut/bin/sms_ser
+file path=usr/lib/nut/bin/solis
+file path=usr/lib/nut/bin/tripplite
+file path=usr/lib/nut/bin/tripplitesu
+file path=usr/lib/nut/bin/upscode2
+file path=usr/lib/nut/bin/victronups
+
+# Man pages
+file path=usr/share/man/man1m/al175.1m
+file path=usr/share/man/man1m/apcsmart-old.1m
+file path=usr/share/man/man1m/apcsmart.1m
+file path=usr/share/man/man1m/bcmxcp.1m
+file path=usr/share/man/man1m/belkin.1m
+file path=usr/share/man/man1m/belkinunv.1m
+file path=usr/share/man/man1m/bestfcom.1m
+file path=usr/share/man/man1m/bestfortress.1m
+file path=usr/share/man/man1m/bestuferrups.1m
+file path=usr/share/man/man1m/bestups.1m
+file path=usr/share/man/man1m/blazer_ser.1m
+file path=usr/share/man/man1m/etapro.1m
+file path=usr/share/man/man1m/everups.1m
+file path=usr/share/man/man1m/gamatronic.1m
+file path=usr/share/man/man1m/genericups.1m
+file path=usr/share/man/man1m/isbmex.1m
+file path=usr/share/man/man1m/ivtscd.1m
+file path=usr/share/man/man1m/liebert-esp2.1m
+file path=usr/share/man/man1m/liebert.1m
+file path=usr/share/man/man1m/masterguard.1m
+file path=usr/share/man/man1m/metasys.1m
+file path=usr/share/man/man1m/mge-shut.1m
+file path=usr/share/man/man1m/mge-utalk.1m
+file path=usr/share/man/man1m/microdowell.1m
+file path=usr/share/man/man1m/oneac.1m
+file path=usr/share/man/man1m/optiups.1m
+file path=usr/share/man/man1m/powercom.1m
+file path=usr/share/man/man1m/powerpanel.1m
+file path=usr/share/man/man1m/rhino.1m
+file path=usr/share/man/man1m/riello_ser.1m
+file path=usr/share/man/man1m/safenet.1m
+file path=usr/share/man/man1m/solis.1m
+file path=usr/share/man/man1m/tripplite.1m
+file path=usr/share/man/man1m/tripplitesu.1m
+file path=usr/share/man/man1m/upscode2.1m
+file path=usr/share/man/man1m/victronups.1m
diff --git a/components/sysutils/nut/nut-drivers-snmp.p5m b/components/sysutils/nut/nut-drivers-snmp.p5m
new file mode 100644
index 0000000..255a0e3
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-snmp.p5m
@@ -0,0 +1,46 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/snmp@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT drivers communicating via SNMP protocol"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/snmp-ups
+
+# Man pages
+file path=usr/share/man/man1m/snmp-ups.1m
diff --git a/components/sysutils/nut/nut-drivers-software.p5m b/components/sysutils/nut/nut-drivers-software.p5m
new file mode 100644
index 0000000..ccbee4d
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-software.p5m
@@ -0,0 +1,56 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/software@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT software drivers (relays, emulators)"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers.
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=library/security/openssl-31 type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/apcupsd-ups
+file path=usr/lib/nut/bin/clone
+file path=usr/lib/nut/bin/clone-outlet
+file path=usr/lib/nut/bin/dummy-ups
+
+# Sample data for dummy-ups
+file data/epdu-managed.dev \
+    path=usr/share/nut/etc-samples/epdu-managed.dev.dummy-ups.sample
+file data/evolution500.seq \
+    path=usr/share/nut/etc-samples/evolution500.seq.dummy-ups.sample
+
+# Man pages
+file path=usr/share/man/man1m/apcupsd-ups.1m
+file path=usr/share/man/man1m/clone.1m
+# no clone-outlet.1m (nor source .txt) as of nut-v2.8.1
+file path=usr/share/man/man1m/dummy-ups.1m
diff --git a/components/sysutils/nut/nut-drivers-usb.p5m b/components/sysutils/nut/nut-drivers-usb.p5m
new file mode 100644
index 0000000..bca456d
--- /dev/null
+++ b/components/sysutils/nut/nut-drivers-usb.p5m
@@ -0,0 +1,62 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers/usb@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups NUT drivers communicating via USB port"
+# Also drivers that talk both serial and usb - so require libusb
+# But not modbus ones which (may) require it intermediately
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/sbin/(.+) -> default mode 0555>
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+# The server package also includes some baseline tools, services
+# and configuration files for drivers. Third-party dependencies
+# for the actual drivers are guessed by package build from other
+# information in the recipe.
+depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# Actual drivers
+file path=usr/lib/nut/bin/bcmxcp_usb
+file path=usr/lib/nut/bin/blazer_usb
+file path=usr/lib/nut/bin/nutdrv_atcl_usb
+file path=usr/lib/nut/bin/nutdrv_qx
+file path=usr/lib/nut/bin/richcomm_usb
+file path=usr/lib/nut/bin/riello_usb
+file path=usr/lib/nut/bin/tripplite_usb
+file path=usr/lib/nut/bin/usbhid-ups
+
+# Man pages
+file path=usr/share/man/man1m/bcmxcp_usb.1m
+file path=usr/share/man/man1m/blazer_usb.1m
+file path=usr/share/man/man1m/nutdrv_atcl_usb.1m
+file path=usr/share/man/man1m/nutdrv_qx.1m
+file path=usr/share/man/man1m/richcomm_usb.1m
+file path=usr/share/man/man1m/riello_usb.1m
+file path=usr/share/man/man1m/tripplite_usb.1m
+file path=usr/share/man/man1m/usbhid-ups.1m
diff --git a/components/sysutils/nut/nut-drivers.p5m b/components/sysutils/nut/nut-drivers.p5m
index d90ecc0..6a2bf1a 100644
--- a/components/sysutils/nut/nut-drivers.p5m
+++ b/components/sysutils/nut/nut-drivers.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/drivers@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups all types of NUT drivers"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -22,117 +23,11 @@
 
 license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
 
-<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
-<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1/%<1> >
-
-dir path=usr/lib/nut/bin group=bin
-
-file path=usr/lib/nut/bin/al175
-file path=usr/lib/nut/bin/apcsmart
-file path=usr/lib/nut/bin/apcsmart-old
-file path=usr/lib/nut/bin/apcupsd-ups
-file path=usr/lib/nut/bin/bcmxcp
-file path=usr/lib/nut/bin/bcmxcp_usb
-file path=usr/lib/nut/bin/belkin
-file path=usr/lib/nut/bin/belkinunv
-file path=usr/lib/nut/bin/bestfcom
-file path=usr/lib/nut/bin/bestfortress
-file path=usr/lib/nut/bin/bestuferrups
-file path=usr/lib/nut/bin/bestups
-file path=usr/lib/nut/bin/blazer_ser
-file path=usr/lib/nut/bin/blazer_usb
-file path=usr/lib/nut/bin/clone
-file path=usr/lib/nut/bin/clone-outlet
-file path=usr/lib/nut/bin/dummy-ups
-file path=usr/lib/nut/bin/etapro
-file path=usr/lib/nut/bin/everups
-file path=usr/lib/nut/bin/gamatronic
-file path=usr/lib/nut/bin/genericups
-file path=usr/lib/nut/bin/isbmex
-file path=usr/lib/nut/bin/ivtscd
-file path=usr/lib/nut/bin/liebert
-file path=usr/lib/nut/bin/liebert-esp2
-file path=usr/lib/nut/bin/masterguard
-file path=usr/lib/nut/bin/metasys
-file path=usr/lib/nut/bin/mge-shut
-file path=usr/lib/nut/bin/mge-utalk
-file path=usr/lib/nut/bin/microdowell
-file path=usr/lib/nut/bin/netxml-ups
-file path=usr/lib/nut/bin/nut-ipmipsu
-file path=usr/lib/nut/bin/nutdrv_atcl_usb
-file path=usr/lib/nut/bin/nutdrv_qx
-file path=usr/lib/nut/bin/oldmge-shut
-file path=usr/lib/nut/bin/oneac
-file path=usr/lib/nut/bin/optiups
-file path=usr/lib/nut/bin/powercom
-file path=usr/lib/nut/bin/powerman-pdu
-file path=usr/lib/nut/bin/powerpanel
-file path=usr/lib/nut/bin/rhino
-file path=usr/lib/nut/bin/richcomm_usb
-file path=usr/lib/nut/bin/riello_ser
-file path=usr/lib/nut/bin/riello_usb
-file path=usr/lib/nut/bin/safenet
-file path=usr/lib/nut/bin/snmp-ups
-file path=usr/lib/nut/bin/solis
-file path=usr/lib/nut/bin/tripplite
-file path=usr/lib/nut/bin/tripplite_usb
-file path=usr/lib/nut/bin/tripplitesu
-file path=usr/lib/nut/bin/upscode2
-file path=usr/lib/nut/bin/usbhid-ups
-file path=usr/lib/nut/bin/victronups
-file data/epdu-managed.dev \
-    path=usr/share/nut/etc-samples/epdu-managed.dev.dummy-ups.sample
-file data/evolution500.seq \
-    path=usr/share/nut/etc-samples/evolution500.seq.dummy-ups.sample
-file path=usr/share/man/man1m/al175.1m
-file path=usr/share/man/man1m/apcsmart-old.1m
-file path=usr/share/man/man1m/apcsmart.1m
-file path=usr/share/man/man1m/apcupsd-ups.1m
-file path=usr/share/man/man1m/bcmxcp.1m
-file path=usr/share/man/man1m/bcmxcp_usb.1m
-file path=usr/share/man/man1m/belkin.1m
-file path=usr/share/man/man1m/belkinunv.1m
-file path=usr/share/man/man1m/bestfcom.1m
-file path=usr/share/man/man1m/bestfortress.1m
-file path=usr/share/man/man1m/bestuferrups.1m
-file path=usr/share/man/man1m/bestups.1m
-file path=usr/share/man/man1m/blazer_ser.1m
-file path=usr/share/man/man1m/blazer_usb.1m
-file path=usr/share/man/man1m/clone.1m
-file path=usr/share/man/man1m/dummy-ups.1m
-file path=usr/share/man/man1m/etapro.1m
-file path=usr/share/man/man1m/everups.1m
-file path=usr/share/man/man1m/gamatronic.1m
-file path=usr/share/man/man1m/genericups.1m
-file path=usr/share/man/man1m/isbmex.1m
-file path=usr/share/man/man1m/ivtscd.1m
-file path=usr/share/man/man1m/liebert-esp2.1m
-file path=usr/share/man/man1m/liebert.1m
-file path=usr/share/man/man1m/masterguard.1m
-file path=usr/share/man/man1m/metasys.1m
-file path=usr/share/man/man1m/mge-shut.1m
-file path=usr/share/man/man1m/mge-utalk.1m
-file path=usr/share/man/man1m/microdowell.1m
-file path=usr/share/man/man1m/netxml-ups.1m
-file path=usr/share/man/man1m/nut-ipmipsu.1m
-file path=usr/share/man/man1m/nutdrv_atcl_usb.1m
-file path=usr/share/man/man1m/nutdrv_qx.1m
-file path=usr/share/man/man1m/nutupsdrv.1m
-file path=usr/share/man/man1m/oneac.1m
-file path=usr/share/man/man1m/optiups.1m
-file path=usr/share/man/man1m/powercom.1m
-file path=usr/share/man/man1m/powerman-pdu.1m
-file path=usr/share/man/man1m/powerpanel.1m
-file path=usr/share/man/man1m/rhino.1m
-file path=usr/share/man/man1m/richcomm_usb.1m
-file path=usr/share/man/man1m/riello_ser.1m
-file path=usr/share/man/man1m/riello_usb.1m
-file path=usr/share/man/man1m/safenet.1m
-file path=usr/share/man/man1m/snmp-ups.1m
-file path=usr/share/man/man1m/solis.1m
-file path=usr/share/man/man1m/tripplite.1m
-file path=usr/share/man/man1m/tripplite_usb.1m
-file path=usr/share/man/man1m/tripplitesu.1m
-file path=usr/share/man/man1m/upscode2.1m
-file path=usr/share/man/man1m/usbhid-ups.1m
-file path=usr/share/man/man1m/victronups.1m
+depend fmri=$(COMPONENT_FMRI)/drivers/software@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/drivers/serial@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/drivers/usb@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=library/libusb-1
+depend fmri=$(COMPONENT_FMRI)/drivers/snmp@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=system/management/snmp/net-snmp
+depend fmri=$(COMPONENT_FMRI)/drivers/neon@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=library/neon
+depend fmri=$(COMPONENT_FMRI)/drivers/ipmi@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=system/management/freeipmi
+depend fmri=$(COMPONENT_FMRI)/drivers/powerman@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=system/management/powerman
+depend fmri=$(COMPONENT_FMRI)/drivers/modbus@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=library/libmodbus
diff --git a/components/sysutils/nut/nut-libs-pynut.p5m b/components/sysutils/nut/nut-libs-pynut.p5m
new file mode 100644
index 0000000..fbdf4c1
--- /dev/null
+++ b/components/sysutils/nut/nut-libs-pynut.p5m
@@ -0,0 +1,34 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2023 Jim Klimov
+#
+
+# This file should cover several versions of python
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/libs/pynut@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT client bindings (Python $(PYVER))"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/lib/python$(PYVER)/vendor-packages/.+ -> default mode 0555>
+
+# Auto-added for *-PYVER.p5m processing:
+#depend type=require fmri=runtime/python-$(PYV)
+
+file path=usr/lib/python$(PYVER)/vendor-packages/PyNUT.py
+file path=usr/lib/python$(PYVER)/vendor-packages/test_nutclient.py
diff --git a/components/sysutils/nut/nut-libs.p5m b/components/sysutils/nut/nut-libs.p5m
index 484be7f..ab68b15 100644
--- a/components/sysutils/nut/nut-libs.p5m
+++ b/components/sysutils/nut/nut-libs.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - headers, libraries and their manpages"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -27,22 +28,28 @@
 ### NUT Development files - headers, libraries and their manpages
 file path=usr/include/nut-scan.h
 file path=usr/include/nutclient.h
+file path=usr/include/nutclientmem.h
 file path=usr/include/nutscan-device.h
 file path=usr/include/nutscan-init.h
 file path=usr/include/nutscan-ip.h
+file path=usr/include/nutscan-serial.h
 file path=usr/include/parseconf.h
 file path=usr/include/upsclient.h
 
-file path=usr/lib/$(MACH64)/libnutclient.so.0.0.0
-link path=usr/lib/$(MACH64)/libnutclient.so target=libnutclient.so.0.0.0
-link path=usr/lib/$(MACH64)/libnutclient.so.0 target=libnutclient.so.0.0.0
-file path=usr/lib/$(MACH64)/libnutscan.so.1.0.0
-link path=usr/lib/$(MACH64)/libnutscan.so target=libnutscan.so.1.0.0
-link path=usr/lib/$(MACH64)/libnutscan.so.1 target=libnutscan.so.1.0.0
-file path=usr/lib/$(MACH64)/libupsclient.so.4.0.0
-link path=usr/lib/$(MACH64)/libupsclient.so target=libupsclient.so.4.0.0
-link path=usr/lib/$(MACH64)/libupsclient.so.4 target=libupsclient.so.4.0.0
+file path=usr/lib/$(MACH64)/libnutclient.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutclient.so target=libnutclient.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutclient.so.2 target=libnutclient.so.2.0.2
+file path=usr/lib/$(MACH64)/libnutclientstub.so.1.0.1
+link path=usr/lib/$(MACH64)/libnutclientstub.so target=libnutclientstub.so.1.0.1
+link path=usr/lib/$(MACH64)/libnutclientstub.so.0 target=libnutclientstub.so.1.0.1
+file path=usr/lib/$(MACH64)/libnutscan.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutscan.so target=libnutscan.so.2.0.2
+link path=usr/lib/$(MACH64)/libnutscan.so.2 target=libnutscan.so.2.0.2
+file path=usr/lib/$(MACH64)/libupsclient.so.6.0.1
+link path=usr/lib/$(MACH64)/libupsclient.so target=libupsclient.so.6.0.1
+link path=usr/lib/$(MACH64)/libupsclient.so.6 target=libupsclient.so.6.0.1
 file path=usr/lib/$(MACH64)/pkgconfig/libnutclient.pc
+file path=usr/lib/$(MACH64)/pkgconfig/libnutclientstub.pc
 file path=usr/lib/$(MACH64)/pkgconfig/libnutscan.pc
 file path=usr/lib/$(MACH64)/pkgconfig/libupsclient.pc
 
@@ -85,7 +92,10 @@
 file path=usr/share/man/man3/nutscan_add_option_to_device.3
 file path=usr/share/man/man3/nutscan_cidr_to_ip.3
 file path=usr/share/man/man3/nutscan_display_parsable.3
+file path=usr/share/man/man3/nutscan_display_sanity_check.3
+file path=usr/share/man/man3/nutscan_display_sanity_check_serial.3
 file path=usr/share/man/man3/nutscan_display_ups_conf.3
+file path=usr/share/man/man3/nutscan_display_ups_conf_with_sanity_check.3
 file path=usr/share/man/man3/nutscan_free_device.3
 file path=usr/share/man/man3/nutscan_get_serial_ports_list.3
 file path=usr/share/man/man3/nutscan_init.3
@@ -96,7 +106,7 @@
 file path=usr/share/man/man3/nutscan_scan_nut.3
 file path=usr/share/man/man3/nutscan_scan_snmp.3
 file path=usr/share/man/man3/nutscan_scan_usb.3
-file path=usr/share/man/man3/nutscan_scan_xml_http.3
+file path=usr/share/man/man3/nutscan_scan_xml_http_range.3
 file path=usr/share/man/man3/upscli_add_host_cert.3
 file path=usr/share/man/man3/upscli_cleanup.3
 file path=usr/share/man/man3/upscli_connect.3
@@ -107,7 +117,9 @@
 file path=usr/share/man/man3/upscli_list_next.3
 file path=usr/share/man/man3/upscli_list_start.3
 file path=usr/share/man/man3/upscli_readline.3
+file path=usr/share/man/man3/upscli_readline_timeout.3
 file path=usr/share/man/man3/upscli_sendline.3
+file path=usr/share/man/man3/upscli_sendline_timeout.3
 file path=usr/share/man/man3/upscli_splitaddr.3
 file path=usr/share/man/man3/upscli_splitname.3
 file path=usr/share/man/man3/upscli_ssl.3
diff --git a/components/sysutils/nut/nut-monitor-gui-common.p5m b/components/sysutils/nut/nut-monitor-gui-common.p5m
new file mode 100644
index 0000000..8b3b2c6
--- /dev/null
+++ b/components/sysutils/nut/nut-monitor-gui-common.p5m
@@ -0,0 +1,78 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/nut-monitor-gui-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT-Monitor GUI client (common components)"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform dir path=usr/share/nut/nut-monitor -> set group bin>
+<transform dir path=usr/share/nut/nut-monitor/(.*) -> set group bin>
+
+### NUT GUI clients, require python3+QT5
+depend type=require fmri=library/python/pyqt5
+depend type=require fmri=runtime/python-$(PYV)
+
+# The exposed binary is a dispatcher script which evaluates the
+# run-time enviroment and launches the suitable implementation
+# (delivered by another package)
+file path=usr/bin/NUT-Monitor mode=0555
+
+dir path=usr/share/nut/nut-monitor
+dir path=usr/share/nut/nut-monitor/app
+dir path=usr/share/nut/nut-monitor/app/icons
+dir path=usr/share/nut/nut-monitor/app/icons/48x48
+dir path=usr/share/nut/nut-monitor/app/icons/64x64
+dir path=usr/share/nut/nut-monitor/app/icons/256x256
+dir path=usr/share/nut/nut-monitor/app/icons/scalable
+dir path=usr/share/nut/nut-monitor/app/locale
+dir path=usr/share/nut/nut-monitor/app/locale/fr
+dir path=usr/share/nut/nut-monitor/app/locale/fr/LC_MESSAGES
+dir path=usr/share/nut/nut-monitor/app/locale/it
+dir path=usr/share/nut/nut-monitor/app/locale/it/LC_MESSAGES
+dir path=usr/share/nut/nut-monitor/app/locale/ru
+dir path=usr/share/nut/nut-monitor/app/locale/ru/LC_MESSAGES
+dir path=usr/share/nut/nut-monitor/app/pixmaps
+dir path=usr/share/nut/nut-monitor/app/screenshots
+
+file path=usr/share/nut/nut-monitor/README
+file path=usr/share/nut/nut-monitor/app/NUT-Monitor mode=0555
+file path=usr/share/nut/nut-monitor/app/README
+file path=usr/share/nut/nut-monitor/app/icons/256x256/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/48x48/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/64x64/nut-monitor.png
+file path=usr/share/nut/nut-monitor/app/icons/scalable/nut-monitor.svg
+file path=usr/share/nut/nut-monitor/app/locale/fr/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/locale/it/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/locale/ru/LC_MESSAGES/NUT-Monitor.mo
+file path=usr/share/nut/nut-monitor/app/nut-monitor.appdata.xml
+link path=usr/share/metainfo/nut-monitor.appdata.xml \
+    target=../nut/nut-monitor/app/nut-monitor.appdata.xml
+file path=usr/share/nut/nut-monitor/app/nut-monitor.desktop
+link path=usr/share/applications/nut-monitor.desktop \
+    target=../nut/nut-monitor/app/nut-monitor.desktop
+file path=usr/share/nut/nut-monitor/app/pixmaps/on_battery.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/on_line.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/var-ro.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/var-rw.png
+file path=usr/share/nut/nut-monitor/app/pixmaps/warning.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-1.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-2.png
+file path=usr/share/nut/nut-monitor/app/screenshots/nut-monitor-3.png
diff --git a/components/sysutils/nut/nut-monitor-gui-py3qt5.p5m b/components/sysutils/nut/nut-monitor-gui-py3qt5.p5m
new file mode 100644
index 0000000..5abd2c2
--- /dev/null
+++ b/components/sysutils/nut/nut-monitor-gui-py3qt5.p5m
@@ -0,0 +1,41 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/nut-monitor-gui-py3qt5@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT-Monitor GUI client (Python 3.x with QT5)"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform dir path=usr/share/nut/nut-monitor/app -> set group bin>
+<transform dir path=usr/share/nut/nut-monitor/app/ui -> set group bin>
+
+depend fmri=$(COMPONENT_FMRI)/nut-monitor-gui-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+dir path=usr/share/nut/nut-monitor/app group=bin
+dir path=usr/share/nut/nut-monitor/app/ui group=bin
+
+file path=usr/share/nut/nut-monitor/app/NUT-Monitor-py3qt5 mode=0555
+file path=usr/share/nut/nut-monitor/app/nut-monitor-py3qt5.desktop
+link path=usr/share/applications/nut-monitor-py3qt5.desktop \
+    target=../nut/nut-monitor/app/nut-monitor-py3qt5.desktop
+file path=usr/share/nut/nut-monitor/app/ui/aboutdialog1.ui
+file path=usr/share/nut/nut-monitor/app/ui/dialog1.ui
+file path=usr/share/nut/nut-monitor/app/ui/dialog2.ui
+file path=usr/share/nut/nut-monitor/app/ui/window1.ui
diff --git a/components/sysutils/nut/nut-monitor-gui.p5m b/components/sysutils/nut/nut-monitor-gui.p5m
new file mode 100644
index 0000000..db0b1c7
--- /dev/null
+++ b/components/sysutils/nut/nut-monitor-gui.p5m
@@ -0,0 +1,30 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/nut-monitor-gui@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT-Monitor GUI client (umbrella)"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+depend type=require \
+    fmri=$(COMPONENT_FMRI)/nut-monitor-gui-py3qt5@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+
+depend type=require \
+    fmri=$(COMPONENT_FMRI)/nut-monitor-gui-common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
diff --git a/components/sysutils/nut/nut-server.p5m b/components/sysutils/nut/nut-server.p5m
new file mode 100644
index 0000000..1c35f27
--- /dev/null
+++ b/components/sysutils/nut/nut-server.p5m
@@ -0,0 +1,118 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016-2023 Jim Klimov
+#
+
+set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
+set name=pkg.summary value="$(COMPONENT_SUMMARY) - NUT data server and shared items for drivers"
+set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
+set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
+set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+
+license $(COMPONENT_LICENSE_FILE) license='$(COMPONENT_LICENSE)'
+
+<transform file path=usr/lib/nut/bin/(.+) -> default mode 0555>
+<transform dir path=usr/lib/nut/bin -> set group bin>
+<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
+<transform file path=usr/share/man/man1/(.+) -> set action.hash usr/share/man/man1/%<1> >
+<transform file path=usr/share/man/man1m/(.+) -> set action.hash usr/share/man/man1m/%<1> >
+
+dir path=usr/lib/nut/bin group=bin
+
+depend fmri=$(COMPONENT_FMRI)/common@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+
+# NUT data server binaries, shared baseline for drivers, and other resources.
+# The upsd should be on the same system as drivers (talking over Unix sockets
+# to them) but may be a different system from monitoring clients which just
+# want to shut down in time.
+
+### Data server and its resources
+file path=usr/sbin/upsd
+
+# For troubleshooting or last-resort automation: tap into Unix sockets
+# between upsd and drivers. See nut/docs/sock-protocol.txt for details.
+file path=usr/lib/nut/bin/sockdebug
+file path=usr/share/man/man1m/sockdebug.1m
+
+# Services for data server and drivers.
+# NUT should start generally after networking (if SNMP or NetXML is used,
+# or if this box is a client to remote upsd). Ending is trickier - could
+# want it to issue killpower late in shutdown, but have network to be able
+# to do so (for remote UPSes). This can be tuned in XML manifest by user.
+file path=usr/share/nut/solaris-smf/method/svc-nut-server
+file path=usr/share/nut/solaris-smf/manifest/nut-server.xml
+link path=lib/svc/manifest/system/power/nut-server.xml \
+    target=../../../../../usr/share/nut/solaris-smf/manifest/nut-server.xml \
+    restart_fmri=svc:/system/manifest-import:default
+
+file path=usr/share/man/man1m/upsd.1m
+file path=usr/share/man/man5/upsd.conf.5
+file path=usr/share/man/man5/upsd.users.5
+
+# We deliver the sample configs as the ones to use,
+# at worst they have no actual information inside and do nothing.
+file etc/nut/upsd.conf.sample path=etc/nut/upsd.conf \
+    group=nut owner=root mode=0640 preserve=true
+file etc/nut/upsd.users.sample path=etc/nut/upsd.users \
+    group=nut owner=root mode=0640 preserve=true
+
+# Note: this is not a systemd *.service but an avahi one ;)
+file build/$(MACH64)/scripts/avahi/nut.service path=usr/share/nut/nut.avahi-service.example
+
+### Items below might be some nut/drivers-common package, but given how
+### the NUT data server always resides with the drivers, they are here.
+
+# Tools and services for driver instance (and group) management
+file path=usr/sbin/upsdrvctl
+file path=usr/sbin/upsdrvsvcctl
+
+file path=usr/share/man/man1m/upsdrvctl.1m
+file path=usr/share/man/man1m/upsdrvsvcctl.1m
+file path=usr/share/man/man1m/nutupsdrv.1m
+
+# Note: While nut-scanner can use snmp, neon/xml, ipmi and usb libs, it loads
+# them truly dynamically (if available) and skips otherwise. Installing the
+# NUT driver packages should pull their relevant libs by harder ELF reqs.
+# Reasonably, if you don't want those UPSes (got no drivers) why scan them? :)
+file path=usr/bin/nut-scanner
+file path=usr/share/man/man1m/nut-scanner.1m
+
+# Script and service to define nut-driver service instances
+# separately for each ups.conf device section definition -
+# so failing independently and allowing for separate service
+# dependencies (e.g. some need a network, others do not).
+file path=usr/lib/nut/bin/nut-driver-enumerator.sh
+file path=usr/share/man/man1m/nut-driver-enumerator.1m
+
+file path=usr/share/nut/solaris-smf/manifest/nut-driver.xml
+file path=usr/share/nut/solaris-smf/manifest/nut-driver-enumerator.xml
+link path=lib/svc/manifest/system/power/nut-driver.xml \
+    target=../../../../../usr/share/nut/solaris-smf/manifest/nut-driver.xml \
+    restart_fmri=svc:/system/manifest-import:default
+link path=lib/svc/manifest/system/power/nut-driver-enumerator.xml \
+    target=../../../../../usr/share/nut/solaris-smf/manifest/nut-driver-enumerator.xml \
+    restart_fmri=svc:/system/manifest-import:default
+
+### Shared by data server and drivers
+
+# Technically this is file is relevant to a nut-server (upsd) and to
+# drivers, but they should be on same system anyway and NDE above uses
+# it directly. Also upsd may be told to start without any driver config
+# (to report "I am alive and known nothing") but drivers can not.
+# So it is here. We deliver the sample configs as the ones to use,
+# at worst they have no actual information inside and do nothing.
+file etc/nut/ups.conf.sample path=etc/nut/ups.conf \
+    group=nut owner=root mode=0640 preserve=true
+file path=usr/share/man/man5/ups.conf.5
diff --git a/components/sysutils/nut/nut.p5m b/components/sysutils/nut/nut.p5m
index 3b2b2e6..ed23fb3 100644
--- a/components/sysutils/nut/nut.p5m
+++ b/components/sysutils/nut/nut.p5m
@@ -10,10 +10,11 @@
 #
 
 #
-# Copyright 2016 Jim Klimov
+# Copyright 2016-2023 Jim Klimov
 #
 
 set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+set name=pkg.human-version value=$(HUMAN_VERSION)
 set name=pkg.summary value="$(COMPONENT_SUMMARY) - Groups all of NUT sub-packages"
 set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -24,7 +25,8 @@
 
 # For the core functionality we need libs, bins and drivers
 depend fmri=$(COMPONENT_FMRI)/libs@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
-depend fmri=$(COMPONENT_FMRI)/bins@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/clients@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
+depend fmri=$(COMPONENT_FMRI)/server@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
 depend fmri=$(COMPONENT_FMRI)/drivers@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=require
 
 # The following packages are optional - if installed, bind them to common version numbers
@@ -33,3 +35,9 @@
 
 # If augtools are installed, then NUT packaging also requires its lenses to be installed
 depend fmri=$(COMPONENT_FMRI)/augeas@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=library/augeas-tools
+
+# If python3+QT5 are installed, then NUT packaging also requires
+# its GUI client to be installed; similar for binding libs (used
+# by the GUI app, but standalone generally)
+depend fmri=$(COMPONENT_FMRI)/libs/pynut@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=runtime/python-$(PYV)
+depend fmri=$(COMPONENT_FMRI)/nut-monitor-gui-py3qt5@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION) type=conditional predicate=library/python/pyqt5
diff --git a/components/sysutils/nut/patches/01-nut-configure-withDocsAuto.patch b/components/sysutils/nut/patches/01-nut-configure-withDocsAuto.patch
deleted file mode 100644
index b7df0d2..0000000
--- a/components/sysutils/nut/patches/01-nut-configure-withDocsAuto.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-Fix merged in upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff --git a/configure.ac b/configure.ac
-index e16cf86..3c59b4b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -630,10 +630,13 @@ dnl is set to 'no', we may still want to build some doc targets manually
- NUT_CHECK_ASCIIDOC
- 
- case "${nut_with_doc}" in
--	yes|all|auto)
-+	yes|all)
- 		nut_doc_build_list="html-single html-chunked pdf"
- 		;;
--	no)
-+	auto)
-+		nut_doc_build_list="html-single=auto html-chunked=auto pdf=auto"
-+		;;
-+	no|"")
- 		nut_doc_build_list=""
- 		;;
- 	*)
-@@ -643,36 +646,39 @@ esac
- 
- for nut_doc_build_target in ${nut_doc_build_list}; do
- 	case "${nut_doc_build_target}" in
--	html-single)
-+	html-single*)
- 		AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target} (minimum required 8.6.3)])
- 		AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		], [
-+			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}"
-+			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		])
- 		;;
- 
--	html-chunked)
-+	html-chunked*)
- 		AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target} (minimum required 8.6.3)])
- 		AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		], [
-+			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}"
-+			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		])
- 		;;
- 
--	pdf)
-+	pdf*)
- 		AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target} (minimum required 0.2.5)])
- 		AX_COMPARE_VERSION([${DBLATEX_VERSION}], [ge], [0.2.5], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target}"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		], [
-+			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} ${nut_doc_build_target}"
-+			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
- 		])
- 		;;
- 	esac
diff --git a/components/sysutils/nut/patches/02-nut-configure-netsnmp-arch.patch b/components/sysutils/nut/patches/02-nut-configure-netsnmp-arch.patch
deleted file mode 100644
index e3f2a76..0000000
--- a/components/sysutils/nut/patches/02-nut-configure-netsnmp-arch.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Fix posted upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff --git a/m4/nut_check_libnetsnmp.m4 b/m4/nut_check_libnetsnmp.m4
-index e1c1426..48055f0 100644
---- a/m4/nut_check_libnetsnmp.m4
-+++ b/m4/nut_check_libnetsnmp.m4
-@@ -13,9 +13,26 @@ if test -z "${nut_have_libnetsnmp_seen}"; then
- 	CFLAGS_ORIG="${CFLAGS}"
- 	LIBS_ORIG="${LIBS}"
- 
-+	dnl By default seek in PATH
-+	NET_SNMP_CONFIG=net-snmp-config
-+	AC_ARG_WITH(net-snmp-config,
-+		AS_HELP_STRING([@<:@--with-net-snmp-config=/path/to/net-snmp-config@:>@],
-+			[path to program that reports Net-SNMP configuration]),
-+	[
-+		case "${withval}" in
-+		"") ;;
-+		yes|no)
-+			AC_MSG_ERROR(invalid option --with(out)-net-snmp-config - see docs/configure.txt)
-+			;;
-+		*)
-+			NET_SNMP_CONFIG="${withval}"
-+			;;
-+		esac
-+	])
-+
- 	dnl See which version of the Net-SNMP library (if any) is installed
--	AC_MSG_CHECKING(for Net-SNMP version via net-snmp-config)
--	SNMP_VERSION=`net-snmp-config --version 2>/dev/null`
-+	AC_MSG_CHECKING(for Net-SNMP version via ${NET_SNMP_CONFIG})
-+	SNMP_VERSION=`${NET_SNMP_CONFIG} --version 2>/dev/null`
- 	if test "$?" != "0" -o -z "${SNMP_VERSION}"; then
- 		SNMP_VERSION="none"
- 	fi
-@@ -33,7 +51,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then
- 			CFLAGS="${withval}"
- 			;;
- 		esac
--	], [CFLAGS="`net-snmp-config --base-cflags 2>/dev/null`"])
-+	], [CFLAGS="`${NET_SNMP_CONFIG} --base-cflags 2>/dev/null`"])
- 	AC_MSG_RESULT([${CFLAGS}])
- 
- 	AC_MSG_CHECKING(for Net-SNMP libs)
-@@ -48,7 +66,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then
- 			LIBS="${withval}"
- 			;;
- 		esac
--	], [LIBS="`net-snmp-config --libs 2>/dev/null`"])
-+	], [LIBS="`${NET_SNMP_CONFIG} --libs 2>/dev/null`"])
- 	AC_MSG_RESULT([${LIBS}])
- 
- 	dnl Check if the Net-SNMP library is usable
diff --git a/components/sysutils/nut/patches/03-nut-configure-gdlib-arch.patch b/components/sysutils/nut/patches/03-nut-configure-gdlib-arch.patch
deleted file mode 100644
index e3a64fd..0000000
--- a/components/sysutils/nut/patches/03-nut-configure-gdlib-arch.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Fix posted upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff --git a/m4/nut_check_libgd.m4 b/m4/nut_check_libgd.m4
-index 01cc882..73f4da7 100644
---- a/m4/nut_check_libgd.m4
-+++ b/m4/nut_check_libgd.m4
-@@ -19,8 +19,25 @@ if test -z "${nut_have_libgd_seen}"; then
- 	LDFLAGS="-L/usr/X11R6/lib"
- 	LIBS="-lgd -lpng -lz -ljpeg -lfreetype -lm -lXpm -lX11"
- 
--	AC_MSG_CHECKING(for gd version via gdlib-config)
--	GD_VERSION=`gdlib-config --version 2>/dev/null`
-+	dnl By default seek in PATH
-+	GDLIB_CONFIG=gdlib-config
-+	AC_ARG_WITH(gdlib-config,
-+		AS_HELP_STRING([@<:@--with-gdlib-config=/path/to/gdlib-config@:>@],
-+			[path to program that reports GDLIB configuration]),
-+	[
-+		case "${withval}" in
-+		"") ;;
-+		yes|no)
-+			AC_MSG_ERROR(invalid option --with(out)-gdlib-config - see docs/configure.txt)
-+			;;
-+		*)
-+			GDLIB_CONFIG="${withval}"
-+			;;
-+		esac
-+	])
-+
-+	AC_MSG_CHECKING(for gd version via ${GDLIB_CONFIG})
-+	GD_VERSION=`${GDLIB_CONFIG} --version 2>/dev/null`
- 	if test "$?" != "0" -o -z "${GD_VERSION}"; then
- 		GD_VERSION="none"
- 	fi
-@@ -30,13 +47,13 @@ if test -z "${nut_have_libgd_seen}"; then
- 	none)
- 		;;
- 	2.0.5 | 2.0.6 | 2.0.7)
--		AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use gdlib-config script]])
-+		AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use ${GDLIB_CONFIG} script]])
- 		AC_MSG_WARN([[If gd detection fails, upgrade gd or use --with-gd-includes and --with-gd-libs]])
- 		;;
- 	*)
--		CFLAGS="`gdlib-config --includes 2>/dev/null`"
--		LDFLAGS="`gdlib-config --ldflags 2>/dev/null`"
--		LIBS="`gdlib-config --libs 2>/dev/null`"
-+		CFLAGS="`${GDLIB_CONFIG} --includes 2>/dev/null`"
-+		LDFLAGS="`${GDLIB_CONFIG} --ldflags 2>/dev/null`"
-+		LIBS="`${GDLIB_CONFIG} --libs 2>/dev/null`"
- 		;;
- 	esac
- 
diff --git a/components/sysutils/nut/patches/04-nut-WITH_MANS.patch b/components/sysutils/nut/patches/04-nut-WITH_MANS.patch
deleted file mode 100644
index 84fe3bb..0000000
--- a/components/sysutils/nut/patches/04-nut-WITH_MANS.patch
+++ /dev/null
@@ -1,526 +0,0 @@
-Allow selective not-building of manpages as extension of --with-doc=... syntax.
-Fix posted upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff --git a/configure.ac b/configure.ac
-index e16cf86..2e3c461 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -254,7 +254,7 @@ dnl they are listed near the top by "./configure --help"
- NUT_ARG_WITH([dev], [build and install the development files], [no])
- NUT_ARG_WITH([serial], [build and install serial drivers], [yes])
- NUT_ARG_WITH([usb], [build and install USB drivers], [auto])
--NUT_ARG_WITH([doc], [build and install documentation], [no])
-+NUT_ARG_WITH([doc], [build and install documentation], [man=yes])
- NUT_ARG_WITH([avahi], [build and install Avahi support], [auto])
- 
- dnl ----------------------------------------------------------------------
-@@ -629,4 +629,54 @@ dnl Always check for AsciiDoc prerequisites, since even if --with-doc
- dnl is set to 'no', we may still want to build some doc targets manually
- NUT_CHECK_ASCIIDOC
-+
-+AC_MSG_CHECKING([if asciidoc version can build manpages (minimum required 8.6.3)])
-+AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [
-+	AC_MSG_RESULT(yes)
-+	nut_have_asciidoc="yes"
-+], [
-+	AC_MSG_RESULT(no)
-+	nut_have_asciidoc="no"
-+])
-+
-+AC_MSG_CHECKING([if a2x version can build manpages (minimum required 8.6.3)])
-+AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [
-+	AC_MSG_RESULT(yes)
-+], [
-+	AC_MSG_RESULT(no)
-+	nut_have_asciidoc="no"
-+])
-+
-+dnl TODO: test for docbook-xsl files (maybe build a test man page?)
-+dnl https://github.com/networkupstools/nut/issues/162
-+AC_MSG_CHECKING([if xsltproc is present (mandatory for man page regeneration)])
-+if test -n "${XSLTPROC}"; then
-+  AC_MSG_RESULT(yes)
-+else
-+  AC_MSG_RESULT(no)
-+  nut_have_asciidoc="no"
-+fi
-+
-+AC_MSG_CHECKING([if xmllint is present (mandatory for man page regeneration)])
-+if test -n "${XMLLINT}"; then
-+  AC_MSG_RESULT(yes)
-+else
-+  AC_MSG_RESULT(no)
-+  nut_have_asciidoc="no"
-+fi
-+
-+AC_MSG_CHECKING([if source-highlight is present (preferable for documentation generation)])
-+if test -n "${SOURCE_HIGHLIGHT}"; then
-+  AC_MSG_RESULT(yes)
-+else
-+  AC_MSG_RESULT(no)
-+fi
-+
-+NUT_REPORT_FEATURE([build and install documentation], [${nut_with_doc}], [],
-+					[WITH_ASCIIDOC], [Define to enable Asciidoc support])
-+
-+dnl Notes: we also keep HAVE_ASCIIDOC for implicit targets, such as manpage
-+dnl building
-+AM_CONDITIONAL([HAVE_ASCIIDOC], [test "${nut_have_asciidoc}" = "yes"])
-+
- 
- case "${nut_with_doc}" in
-@@ -632,15 +632,21 @@ dnl Always check for AsciiDoc prerequisites, since even if --with-doc
- case "${nut_with_doc}" in
- 	yes|all)
--		nut_doc_build_list="html-single html-chunked pdf"
-+		nut_doc_build_list="man html-single html-chunked pdf"
- 		;;
- 	auto)
--		nut_doc_build_list="html-single=auto html-chunked=auto pdf=auto"
-+		nut_doc_build_list="man=auto html-single=auto html-chunked=auto pdf=auto"
- 		;;
--	no|"")
-+	no)
- 		nut_doc_build_list=""
- 		;;
-+dnl If user passed --with-doc='' they they want nothing, right?
-+	"")
-+		nut_doc_build_list=""
-+		AC_MSG_NOTICE([Got explicit empty list of document formats to build; nothing will be generated])
-+		;;
- 	*)
- 		nut_doc_build_list="`echo ${nut_with_doc} | sed 's/,/ /g'`"
-+		AC_MSG_NOTICE([Got explicit list of document formats to build or not: ${nut_doc_build_list}; formats not listed will be silently skipped])
- 		;;
- esac
- 
-@@ -644,43 +700,93 @@
- 		;;
- esac
- 
--for nut_doc_build_target in ${nut_doc_build_list}; do
-+dnl Note: Do not cover ${nut_doc_build_list} in braces or quotes here,
-+dnl to ensure that it is processed as several space-separated tokens
-+for nut_doc_build_target in $nut_doc_build_list; do
- 	case "${nut_doc_build_target}" in
-+	*=*=*) AC_MSG_ERROR([Invalid documentation format option: ${nut_doc_build_target}]) ;;
-+	*=*)
-+		nut_doc_build_target_base="`echo "${nut_doc_build_target}" | sed 's,=.*$,,'`"
-+		nut_doc_build_target_flag="`echo "${nut_doc_build_target}" | sed 's,^.*=,,'`"
-+		;;
-+	*)
-+		nut_doc_build_target_base="${nut_doc_build_target}"
-+		nut_doc_build_target_flag="yes"
-+		;;
-+	esac
-+	case "${nut_doc_build_target_flag}" in
-+	yes|no|auto|skip) ;;
-+	"") nut_doc_build_target_flag="yes" ;;
-+	*)  AC_MSG_ERROR([Invalid documentation format option: ${nut_doc_build_target}]) ;;
-+	esac
-+	AC_MSG_CHECKING([desire and ability to build ${nut_doc_build_target_base} documentation])
-+	AC_MSG_RESULT([${nut_doc_build_target_flag}])
-+
-+	case "${nut_doc_build_target}" in
-+	*=no|*=skip)
-+		DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
-+		;;
-+
-+dnl Notes: Document options below assume either no flag value (which
-+dnl by default means "yes"), "yes" which is a requirement, or "auto"
-+dnl to detect if we can build the wanted documentation format and yet
-+dnl not fail if we have no tools to generate it.
- 	html-single*)
--		AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target} (minimum required 8.6.3)])
-+		AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target_base} (minimum required 8.6.3)])
- 		AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
- 		], [
--			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			if test "${nut_doc_build_target}" = "yes" ; then
-+				AC_MSG_ERROR([Unable to build ${nut_doc_build_target_base} documentation which you requested])
-+			fi
-+			DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
- 		])
- 		;;
- 
- 	html-chunked*)
--		AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target} (minimum required 8.6.3)])
-+		AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target_base} (minimum required 8.6.3)])
- 		AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
- 		], [
--			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			if test "${nut_doc_build_target}" = "yes" ; then
-+				AC_MSG_ERROR([Unable to build ${nut_doc_build_target_base} documentation which you requested])
-+			fi
-+			DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
- 		])
- 		;;
- 
- 	pdf*)
--		AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target} (minimum required 0.2.5)])
-+		AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target_base} (minimum required 0.2.5)])
- 		AX_COMPARE_VERSION([${DBLATEX_VERSION}], [ge], [0.2.5], [
- 			AC_MSG_RESULT(yes)
--			DOC_BUILD_LIST="${DOC_BUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
- 		], [
--			case "${nut_doc_build_target}" in *=auto) ;; *) AC_MSG_ERROR([Unable to build ${nut_doc_build_target} documentation which you requested]) ;; esac
- 			AC_MSG_RESULT(no)
--			DOC_NOBUILD_LIST="${DOC_NOBUILD_LIST} `basename ${nut_doc_build_target} =auto`"
-+			if test "${nut_doc_build_target}" = "yes" ; then
-+				AC_MSG_ERROR([Unable to build ${nut_doc_build_target_base} documentation which you requested])
-+			fi
-+			DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
- 		])
- 		;;
-+	man*)
-+		AC_MSG_CHECKING([if we can build ${nut_doc_build_target_base}])
-+		if test "${nut_have_asciidoc}" = yes ; then
-+			AC_MSG_RESULT(yes)
-+			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
-+		else
-+			AC_MSG_RESULT(no)
-+			if test "${nut_doc_build_target}" = "yes" ; then
-+				AC_MSG_ERROR([Unable to build ${nut_doc_build_target_base} documentation which you requested])
-+			fi
-+			DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
-+		fi
-+		;;
-+
-+	*) AC_MSG_ERROR([--with-doc option refers to unknown documentation format: $nut_doc_build_target]) ;;
- 	esac
- done
- 
-@@ -691,70 +806,34 @@ auto)
- 	else
- 		nut_with_doc="no"
- 	fi
--	;;	
-+	;;
- no)
- 	;;
- *)
--	if test -z "${DOC_NOBUILD_LIST}"; then
-+	if test -n "${DOC_CANNOTBUILD_LIST}"; then
-+		AC_MSG_ERROR([Unable to build${DOC_CANNOTBUILD_LIST} documentation (check for 'no' results above)])
-+	fi
-+
-+	if test -n "${DOC_SKIPBUILD_LIST}"; then
-+		AC_MSG_NOTICE([Skipping build of${DOC_SKIPBUILD_LIST} documentation (check for 'skip' results above)])
-+	fi
-+
-+	if test -n "${DOC_BUILD_LIST}"; then
- 		nut_with_doc="yes"
- 	else
--		AC_MSG_ERROR(["Unable to build ${DOC_NOBUILD_LIST} documentation (check for 'no' results above)"])
-+		nut_with_doc="no"
- 	fi
- 	;;
- esac
- 
--AC_MSG_CHECKING([if asciidoc version can build manpages (minimum required 8.6.3)])
--AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [8.6.3], [
--	AC_MSG_RESULT(yes)
--	nut_have_asciidoc="yes"
--], [
--	AC_MSG_RESULT(no)
--	nut_have_asciidoc="no"
--])
--
--AC_MSG_CHECKING([if a2x version can build manpages (minimum required 8.6.3)])
--AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [8.6.3], [
--	AC_MSG_RESULT(yes)
--], [
--	AC_MSG_RESULT(no)
--	nut_have_asciidoc="no"
--])
--
--dnl TODO: test for docbook-xsl files (maybe build a test man page?)
--dnl https://github.com/networkupstools/nut/issues/162
--AC_MSG_CHECKING([if xsltproc is present (mandatory for man page regeneration)])
--if test -n "${XSLTPROC}"; then
--  AC_MSG_RESULT(yes)
--else
--  AC_MSG_RESULT(no)
--  nut_have_asciidoc="no"
--fi
--
--AC_MSG_CHECKING([if xmllint is present (mandatory for man page regeneration)])
--if test -n "${XMLLINT}"; then
--  AC_MSG_RESULT(yes)
--else
--  AC_MSG_RESULT(no)
--  nut_have_asciidoc="no"
--fi
-+NUT_REPORT_FEATURE([build specific documentation format(s)], [${nut_with_doc}], [${DOC_BUILD_LIST}],
-+					[WITH_DOCS], [Define to enable overall documentation generation])
- 
--AC_MSG_CHECKING([if source-highlight is present (preferable for documentation generation)])
--if test -n "${SOURCE_HIGHLIGHT}"; then
--  AC_MSG_RESULT(yes)
--else
--  AC_MSG_RESULT(no)
--fi
--
--NUT_REPORT_FEATURE([build and install documentation], [${nut_with_doc}], [],
--					[WITH_ASCIIDOC], [Define to enable Asciidoc support])
--
--dnl Notes: we also keep HAVE_ASCIIDOC for implicit targets, such as manpage
--dnl building
--AM_CONDITIONAL([HAVE_ASCIIDOC], [test "${nut_have_asciidoc}" = "yes"])
--
--if test "${nut_with_doc}" = "yes"; then
--	NUT_REPORT([only build specific documentation format], [${DOC_BUILD_LIST}])
-+WITH_MANS=no
-+if echo "${DOC_BUILD_LIST}" | grep -w "man" >/dev/null ; then
-+	WITH_MANS=yes
- fi
-+AM_CONDITIONAL(WITH_MANS, test "${WITH_MANS}" = "yes")
- 
- dnl ----------------------------------------------------------------------
- dnl checks related to --with-dev
-@@ -999,17 +1078,22 @@ if test "${DRIVER_BUILD_LIST}" != "all"; then
- fi
- 
- AC_MSG_CHECKING(which driver man pages to install)
--if test "${DRIVER_BUILD_LIST}" = "all"; then
--	DRIVER_MAN_LIST=all
--	AC_MSG_RESULT(all available)
-+if test "${WITH_MANS}" = "yes"; then
-+	if test "${DRIVER_BUILD_LIST}" = "all"; then
-+		DRIVER_MAN_LIST=all
-+		AC_MSG_RESULT(all available)
-+	else
-+		DRIVER_MAN_LIST=""
-+		for i in ${DRIVER_BUILD_LIST}; do
-+			if test -f ${srcdir}/docs/man/$i.8; then
-+				DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8"
-+			fi
-+		done
-+		AC_MSG_RESULT(${DRIVER_MAN_LIST})
-+	fi
- else
- 	DRIVER_MAN_LIST=""
--	for i in ${DRIVER_BUILD_LIST}; do
--		if test -f ${srcdir}/docs/man/$i.8; then
--			DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8"
--		fi
--	done
--	AC_MSG_RESULT(${DRIVER_MAN_LIST})
-+	AC_MSG_RESULT([none (manpages disabled)])
- fi
- 
- AC_MSG_CHECKING(whether to strip debug symbols)
-diff --git a/docs/man/Makefile.am b/docs/man/Makefile.am
-index e793657..c83bd6c 100644
---- a/docs/man/Makefile.am
-+++ b/docs/man/Makefile.am
-@@ -21,6 +21,7 @@ SRC_CONF_PAGES = \
- 	upsmon.conf.txt \
- 	upssched.conf.txt
- 
-+if WITH_MANS
- MAN_CONF_PAGES = \
- 	nut.conf.5 \
- 	ups.conf.5 \
-@@ -28,6 +29,7 @@ MAN_CONF_PAGES = \
- 	upsd.users.5 \
- 	upsmon.conf.5 \
- 	upssched.conf.5
-+endif
- 
- man5_MANS = $(MAN_CONF_PAGES)
- 
-@@ -50,6 +52,7 @@ SRC_CLIENT_PAGES = \
- 	upsrw.txt \
- 	upssched.txt
- 
-+if WITH_MANS
- MAN_CLIENT_PAGES = \
- 	nutupsdrv.8 \
- 	upsc.8 \
-@@ -60,6 +63,7 @@ MAN_CLIENT_PAGES = \
- 	upsmon.8 \
- 	upsrw.8 \
- 	upssched.8
-+endif
- 
- man8_MANS = $(MAN_CLIENT_PAGES)
- 
-@@ -76,7 +80,9 @@ HTML_CLIENT_MANS = \
- 
- SRC_TOOL_PAGES = nut-scanner.txt nut-recorder.txt
- 
-+if WITH_MANS
- MAN_TOOL_PAGES = nut-scanner.8 nut-recorder.8
-+endif
- 
- man8_MANS += $(MAN_TOOL_PAGES)
- 
-@@ -91,6 +97,7 @@ SRC_CGI_PAGES = \
- 	upsstats.cgi.txt \
- 	upsimage.cgi.txt
- 
-+if WITH_MANS
- MAN5_CGI_PAGES = \
- 	hosts.conf.5 \
- 	upsset.conf.5 \
-@@ -100,6 +107,7 @@ MAN8_CGI_PAGES = \
- 	upsset.cgi.8 \
- 	upsstats.cgi.8 \
- 	upsimage.cgi.8
-+endif
- 
- if WITH_CGI
-  man5_MANS += $(MAN5_CGI_PAGES)
-@@ -162,6 +170,7 @@ SRC_DEV_PAGES = \
- 	libupsclient-config.txt \
- 	skel.txt
- 
-+if WITH_MANS
- # NOTE: nutclient_*.3 has no source counterpart (libnutclient_*.txt)
- MAN3_DEV_PAGES = \
- 	upsclient.3 \
-@@ -235,6 +244,7 @@ MAN3_DEV_PAGES = \
- 
- MAN1_DEV_PAGES = \
- 	libupsclient-config.1
-+endif
- 
- if WITH_DEV
-  man3_MANS = $(MAN3_DEV_PAGES)
-@@ -343,6 +353,7 @@ SRC_SERIAL_PAGES = \
- 	victronups.txt	\
- 	apcupsd-ups.txt
- 
-+if WITH_MANS
- MAN_SERIAL_PAGES = \
- 	al175.8	\
- 	apcsmart.8	\
-@@ -384,6 +395,7 @@ MAN_SERIAL_PAGES = \
- 	upscode2.8	\
- 	victronups.8	\
- 	apcupsd-ups.8
-+endif
- 
- if WITH_SERIAL
-   man8_MANS +=  $(MAN_SERIAL_PAGES)
-@@ -433,7 +445,9 @@ HTML_SERIAL_MANS = \
- 
- # (--with-snmp)
- SRC_SNMP_PAGES = snmp-ups.txt
-+if WITH_MANS
- MAN_SNMP_PAGES = snmp-ups.8
-+endif
- 
- if WITH_SNMP
-   man8_MANS += $(MAN_SNMP_PAGES)
-@@ -453,6 +467,7 @@ SRC_USB_LIBUSB_PAGES = \
- 	tripplite_usb.txt \
- 	usbhid-ups.txt
- 
-+if WITH_MANS
- MAN_USB_LIBUSB_PAGES = \
- 	bcmxcp_usb.8 \
- 	blazer_usb.8 \
-@@ -462,6 +477,7 @@ MAN_USB_LIBUSB_PAGES = \
- 	riello_usb.8	\
- 	tripplite_usb.8 \
- 	usbhid-ups.8
-+endif
- 
- if WITH_USB
-  man8_MANS += $(MAN_USB_LIBUSB_PAGES)
-@@ -479,7 +495,9 @@ HTML_USB_LIBUSB_MANS = \
- 
- # (--with-neon)
- SRC_NETXML_PAGES = netxml-ups.txt
-+if WITH_MANS
- MAN_NETXML_PAGES = netxml-ups.8
-+endif
- 
- if WITH_NEON
-    man8_MANS += $(MAN_NETXML_PAGES)
-@@ -489,7 +507,9 @@ HTML_NETXML_MANS = netxml-ups.html
- 
- # (--with-powerman)
- SRC_POWERMAN_PAGES = powerman-pdu.txt
-+if WITH_MANS
- MAN_POWERMAN_PAGES = powerman-pdu.8
-+endif
- 
- if WITH_LIBPOWERMAN
-    man8_MANS += $(MAN_POWERMAN_PAGES)
-@@ -499,7 +519,9 @@ HTML_POWERMAN_MANS = powerman-pdu.html
- 
- # (--with-ipmi)
- SRC_IPMIPSU_PAGES = nut-ipmipsu.txt
-+if WITH_MANS
- MAN_IPMIPSU_PAGES = nut-ipmipsu.8
-+endif
- 
- if WITH_IPMI
-    man8_MANS += $(MAN_IPMIPSU_PAGES)
-@@ -508,7 +530,9 @@ endif
- HTML_IPMIPSU_MANS = nut-ipmipsu.html
- 
- SRC_MACOSX_PAGES = macosx-ups.txt
-+if WITH_MANS
- MAN_MACOSX_PAGES = macosx-ups.8
-+endif
- 
- if WITH_MACOSX
-    man8_MANS += $(MAN_MACOSX_PAGES)
-@@ -517,7 +541,9 @@ endif
- HTML_MACOSX_MANS = macosx-ups.html
- 
- SRC_LINUX_I2C_PAGES = asem.txt
-+if WITH_MANS
- MAN_LINUX_I2C_PAGES = asem.8
-+endif
- 
- if WITH_LINUX_I2C
-    man8_MANS += $(LINUX_I2C_PAGES)
-@@ -528,7 +554,9 @@ HTML_LINUX_I2C_MANS = asem.html
- # SOME_DRIVERS
- endif
- 
--MAN_MANS = \
-+MAN_MANS =
-+if WITH_MANS
-+MAN_MANS += \
- 	$(MAN_CONF_PAGES) \
- 	$(MAN_CLIENT_PAGES) \
- 	$(MAN_TOOL_PAGES) \
-@@ -544,6 +572,7 @@ MAN_MANS = \
- 	$(MAN_IPMIPSU_PAGES) \
- 	$(MAN_MACOSX_PAGES) \
- 	$(MAN_LINUX_I2C_PAGES)
-+endif
- 
- # distribute everything, even those not installed by default
- # Note that 'dist' target requires AsciiDoc!
-@@ -564,6 +593,13 @@ EXTRA_DIST = \
- 	$(MAN_MANS) \
- 	asciidoc.conf
- 
-+if ! WITH_MANS
-+# Cause "make dist" to fail
-+EXTRA_DIST += dist
-+dist:
-+	@echo "ERROR: Manpage building was disabled by configure script, and these pages are required for our proper 'make dist'" >&2 ; false
-+endif
-+
- HTML_MANS = \
- 	$(HTML_CONF_MANS) \
- 	$(HTML_CLIENT_MANS) \
diff --git a/components/sysutils/nut/patches/05-nut-quiesce-systemd.patch b/components/sysutils/nut/patches/05-nut-quiesce-systemd.patch
deleted file mode 100644
index 84133bc..0000000
--- a/components/sysutils/nut/patches/05-nut-quiesce-systemd.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Do not complain about missing systemd stuff if we even do ask to not use it.
-Fix posted upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff --git a/configure.ac b/configure.ac
-index e16cf86..2e3c461 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1127,13 +1130,13 @@ fi
- AM_CONDITIONAL(WITH_PKG_CONFIG, test -n "${pkgconfigdir}")
- 
- PKG_PROG_PKG_CONFIG
--systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
- AC_MSG_CHECKING(whether to install systemd files)
- AC_ARG_WITH([systemdsystemunitdir],
- 	AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto)]),
- [
- 	case "${withval}" in
--	yes|auto)
-+	yes|auto|"")
-+		systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
- 		;;
- 	no)
- 		systemdsystemunitdir=""
diff --git a/components/sysutils/nut/patches/06-nut-augeas-inst-dir.patch b/components/sysutils/nut/patches/06-nut-augeas-inst-dir.patch
deleted file mode 100644
index ad5e4c6..0000000
--- a/components/sysutils/nut/patches/06-nut-augeas-inst-dir.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-Allow "make install" to properly deliver the augeas lenses files, if configured.
-Fix posted upstream so this patch should not be needed after nut-2.7.5 or so.
-
-diff -Naur nut-2.7.4/configure.ac nut-2.7.4-auginst/configure.ac
---- nut-2.7.4/configure.ac	2016-05-02 19:07:03.924039136 +0200
-+++ nut-2.7.4-auginst/configure.ac	2016-05-03 10:14:10.192735403 +0200
-@@ -67,6 +67,10 @@
- driverexecdir='${exec_prefix}/bin'
- htmldir='${prefix}/html'
- pkgconfigdir='${libdir}/pkgconfig'
-+auglensdir='/usr/share/augeas/lenses'
-+if test ! -d "${auglensdir}"; then
-+   auglensdir=''
-+fi
- hotplugdir='/etc/hotplug'
- if test ! -d "${hotplugdir}"; then
-    hotplugdir=''
-@@ -1154,6 +1158,34 @@
- fi
- AM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "")
- 
-+AC_MSG_CHECKING(whether to install Augeas configuration-management lenses)
-+AC_ARG_WITH(augeas-lenses-dir,
-+	AS_HELP_STRING([--with-augeas-lenses-dir=PATH], [where to install Augeas configuration-management lenses (/usr/share/augeas/lenses)]),
-+[
-+	case "${withval}" in
-+	yes)
-+		if test -z "${auglensdir}"; then
-+			AC_MSG_RESULT(no)
-+			AC_MSG_ERROR(["augeas lenses directory requested but not found"])
-+		fi
-+		;;
-+	auto)
-+		;;
-+	no)
-+		auglensdir=""
-+		;;
-+	*)
-+		auglensdir="${withval}"
-+		;;
-+	esac
-+], [])
-+if test -n "${auglensdir}"; then
-+	AC_MSG_RESULT(using ${auglensdir})
-+else
-+	AC_MSG_RESULT(no)
-+fi
-+AM_CONDITIONAL(WITH_AUGLENS, test -n "${auglensdir}")
-+
- AC_MSG_CHECKING(whether to install hotplug rules)
- AC_ARG_WITH(hotplug-dir,
- 	AS_HELP_STRING([--with-hotplug-dir=PATH], [where to install hotplug rules (/etc/hotplug)]),
-@@ -1343,6 +1375,7 @@
- AC_SUBST(pkgconfigdir)
- AC_SUBST(systemdsystemunitdir)
- AC_SUBST(systemdsystemshutdowndir)
-+AC_SUBST(auglensdir)
- AC_SUBST(hotplugdir)
- AC_SUBST(udevdir)
- 
-diff -Naur nut-2.7.4/Makefile.am nut-2.7.4-auginst/Makefile.am
---- nut-2.7.4/Makefile.am	2016-03-09 14:24:11.000000000 +0100
-+++ nut-2.7.4-auginst/Makefile.am	2016-05-03 10:17:53.804392904 +0200
-@@ -14,14 +14,15 @@
- # ----------------------------------------------------------------------
- # flags to pass to ./configure when calling "make distcheck" and "make
- # distcheck-light". Try to check as many features as possible! Also
--# need to give hotplug-dir and udev-dir, so that staged install does
--# not fail.
-+# need to give augeas-lenses-dir, hotplug-dir and udev-dir, so that
-+# staged install does not fail.
- 
- DISTCHECK_FLAGS = --with-all --with-ssl --with-doc=auto
- DISTCHECK_LIGHT_FLAGS = --with-all=auto --with-ssl=auto --with-doc=auto
- 
- DISTCHECK_CONFIGURE_FLAGS = ${DISTCHECK_FLAGS}		\
-  --with-systemdsystemunitdir='$${prefix}/lib/systemd/system' \
-+ --with-augeas-lenses-dir='$${prefix}/usr/share/augeas/lenses'		\
-  --with-hotplug-dir='$${prefix}/etc/hotplug'		\
-  --with-udev-dir='$${prefix}/etc/udev'			\
-  --with-devd-dir='$${prefix}/etc/devd'
-diff -Naur nut-2.7.4/scripts/augeas/Makefile.am nut-2.7.4-auginst/scripts/augeas/Makefile.am
---- nut-2.7.4/scripts/augeas/Makefile.am	2016-05-03 10:22:23.738243382 +0200
-+++ nut-2.7.4-auginst/scripts/augeas/Makefile.am	2016-03-09 14:24:11.000000000 +0100
-@@ -14,3 +14,12 @@
- 		echo "Skipping Augeas ups.conf lens regeneration."; \
- 		echo "----------------------------------------------------------------------"; \
- 	fi
-+
-+if WITH_AUGLENS
-+# Now "make install" should cover delivery of Augeas lenses...
-+# The "auglensdir" value should be set up by configure
-+# The *.aug files are generated by rule above or by autogen.sh and/or configure
-+ auglens_DATA = \
-+    nuthostsconf.aug  nutupsconf.aug   nutupsdusers.aug   nutupsschedconf.aug \
-+    nutnutconf.aug    nutupsdconf.aug  nutupsmonconf.aug  nutupssetconf.aug
-+endif
diff --git a/components/sysutils/nut/patches/07-man.patch b/components/sysutils/nut/patches/07-man.patch
index 7e70a7e..de34ae6 100644
--- a/components/sysutils/nut/patches/07-man.patch
+++ b/components/sysutils/nut/patches/07-man.patch
@@ -1,11 +1,45 @@
 We change (8) to (1m), [8] to [1m] in docs/man/*.txt and
-8 to 1m in docs/man/Makefile.am. 'man1m_MANS' should be changed
-to 'man_MANS' or 'man1_MANS'. In any case I couldn't make automake
-install manpages in man1m direcotry. Manual review is necessary.
+8 to 1m in docs/man/Makefile.am and configure.ac self-test.
+Makefile variable 'man1m_MANS' should be changed to 'man_MANS'
+or 'man1_MANS'. In any case I couldn't make automake install
+manpages in man1m directory - this is addressed by moving
+in the packaging Makefile.
 
-diff -ur nut-2.7.4/docs/man8/al175.txt nut-2.7.4/docs/man/al175.txt
---- nut-2.7.4/docs/man8/al175.txt	2016-12-29 13:17:35.423625828 +0300
-+++ nut-2.7.4/docs/man/al175.txt	2016-12-29 13:29:28.530131396 +0300
+Manual review of this patch for upgrades to new NUT versions
+is necessary.
+
+diff -Naur nut-2.8.1-orig/docs/man/adelsystem_cbi.txt nut-2.8.1/docs/man/adelsystem_cbi.txt
+--- nut-2.8.1-orig/docs/man/adelsystem_cbi.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/adelsystem_cbi.txt	2023-11-01 03:45:39.979590993 +0100
+@@ -1,5 +1,5 @@
+-ADELSYSTEM_CBI(8)
+-=================
++ADELSYSTEM_CBI(1m)
++==================
+ 
+ NAME
+ ----
+@@ -14,7 +14,7 @@
+ *adelsystem_cbi* -a 'DEVICE_NAME' ['OPTIONS']
+ 
+ NOTE: This man page only documents the specific features of the *adelsystem_cbi*
+-driver. For information about the core driver, see linkman:nutupsdrv[8].
++driver. For information about the core driver, see linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -102,7 +102,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8], linkman:ups.conf[5]
++linkman:nutupsdrv[1m], linkman:ups.conf[5]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/al175.txt nut-2.8.1/docs/man/al175.txt
+--- nut-2.8.1-orig/docs/man/al175.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/al175.txt	2023-11-01 03:45:44.506981936 +0100
 @@ -1,5 +1,5 @@
 -AL175(8)
 -========
@@ -14,8 +48,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  *al175* driver. For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -23,34 +57,54 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -31,7 +31,7 @@
- 
+@@ -36,7 +36,7 @@
  INSTANT COMMANDS
  ----------------
+ 
 -This driver supports some extra commands (see linkman:upscmd[8]):
 +This driver supports some extra commands (see linkman:upscmd[1m]):
  
  *test.battery.start*::
  Start a battery test.
-@@ -66,7 +66,7 @@
- 
+@@ -75,7 +75,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/apcsmart-old.txt nut-2.7.4/docs/man/apcsmart-old.txt
---- nut-2.7.4/docs/man8/apcsmart-old.txt	2016-12-29 13:17:35.423719009 +0300
-+++ nut-2.7.4/docs/man/apcsmart-old.txt	2016-12-29 13:29:28.531377702 +0300
+diff -Naur nut-2.8.1-orig/docs/man/apc_modbus.txt nut-2.8.1/docs/man/apc_modbus.txt
+--- nut-2.8.1-orig/docs/man/apc_modbus.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/apc_modbus.txt	2023-11-01 03:45:52.847474988 +0100
+@@ -1,5 +1,5 @@
+-APC_MODBUS(8)
+-=============
++APC_MODBUS(1m)
++==============
+ 
+ NAME
+ ----
+@@ -87,7 +87,7 @@
+ The core driver
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8], linkman:ups.conf[5]
++linkman:nutupsdrv[1m], linkman:ups.conf[5]
+ 
+ Internet resources
+ ~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/apcsmart-old.txt nut-2.8.1/docs/man/apcsmart-old.txt
+--- nut-2.8.1-orig/docs/man/apcsmart-old.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/apcsmart-old.txt	2023-11-01 03:45:57.753094376 +0100
 @@ -1,5 +1,5 @@
 -APCSMART-OLD(8)
 -===============
 +APCSMART-OLD(1m)
 +================
  
- NAME  
+ NAME
  ----
 @@ -15,7 +15,7 @@
  
@@ -61,25 +115,25 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -96,7 +96,7 @@
- 
+@@ -101,7 +101,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/apcsmart.txt nut-2.7.4/docs/man/apcsmart.txt
---- nut-2.7.4/docs/man8/apcsmart.txt	2016-12-29 13:17:35.423829679 +0300
-+++ nut-2.7.4/docs/man/apcsmart.txt	2016-12-29 13:29:28.535649044 +0300
+diff -Naur nut-2.8.1-orig/docs/man/apcsmart.txt nut-2.8.1/docs/man/apcsmart.txt
+--- nut-2.8.1-orig/docs/man/apcsmart.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/apcsmart.txt	2023-11-01 03:46:01.287326276 +0100
 @@ -1,5 +1,5 @@
 -APCSMART(8)
 -===========
 +APCSMART(1m)
 +============
  
- NAME  
+ NAME
  ----
 @@ -15,7 +15,7 @@
  
@@ -90,16 +144,16 @@
  
  
  SUPPORTED HARDWARE
-@@ -64,7 +64,7 @@
-     Several Microsol serial models sold in Brazil have been rebranded as APC
-     Back-UPS, and the model numbers tend to start with "BZ". If you have one
-     of these "Nobreaks", they will not work with the *apcsmart* driver - please
--    see the linkman:solis[8] driver instead.
-+    see the linkman:solis[1m] driver instead.
+@@ -72,7 +72,7 @@
+     Several Microsol serial models sold in Brazil have been rebranded
+ 	as APC Back-UPS, and the model numbers tend to start with "BZ".
+ 	If you have one of these "Nobreaks", they will not work with the
+-	*apcsmart* driver -- please see the linkman:solis[8] driver instead.
++	*apcsmart* driver -- please see the linkman:solis[1m] driver instead.
  +
  --
  .Example models:
-@@ -375,8 +375,8 @@
+@@ -403,8 +403,8 @@
  SEE ALSO
  --------
  
@@ -110,9 +164,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/apcupsd-ups.txt nut-2.7.4/docs/man/apcupsd-ups.txt
---- nut-2.7.4/docs/man8/apcupsd-ups.txt	2016-12-29 13:17:35.423918808 +0300
-+++ nut-2.7.4/docs/man/apcupsd-ups.txt	2016-12-29 13:29:28.536948124 +0300
+diff -Naur nut-2.8.1-orig/docs/man/apcupsd-ups.txt nut-2.8.1/docs/man/apcupsd-ups.txt
+--- nut-2.8.1-orig/docs/man/apcupsd-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/apcupsd-ups.txt	2023-11-01 03:46:04.406055412 +0100
 @@ -1,5 +1,5 @@
 -APCUPSD-UPS(8)
 -==============
@@ -121,8 +175,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the specific features of the
  *apcupsd-ups* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -130,25 +184,7 @@
  
  DESCRIPTION
  -----------
-@@ -46,7 +46,7 @@
- converted to seconds (please file a bug if you notice a mismatch in units).
- 
- [width="50%",cols="m,m",options="header"]
--|===============================
-+|================================
- | apcupsd variable | NUT variable(s)
- | BCHARGE          | battery.charge
- | MBATTCHG         | battery.charge.low
-@@ -81,7 +81,7 @@
- | ITEMP            | ups.temperature
- | STESTI           | ups.test.interval
- | SELFTEST         | ups.test.result
--|===============================
-+|================================
- 
- LIMITATIONS
- -----------
-@@ -98,7 +98,7 @@
+@@ -106,7 +106,7 @@
  --------
  
  linkman:ups.conf[5],
@@ -157,9 +193,9 @@
  
  Internet Resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/asem.txt nut-2.7.4/docs/man/asem.txt
---- nut-2.7.4/docs/man8/asem.txt	2016-12-29 13:17:35.424122119 +0300
-+++ nut-2.7.4/docs/man/asem.txt	2016-12-29 13:29:28.537960521 +0300
+diff -Naur nut-2.8.1-orig/docs/man/asem.txt nut-2.8.1/docs/man/asem.txt
+--- nut-2.8.1-orig/docs/man/asem.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/asem.txt	2023-11-01 03:46:08.774173932 +0100
 @@ -1,5 +1,5 @@
 -ASEM(8)
 -=======
@@ -168,8 +204,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  *asem* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -177,18 +213,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -72,7 +72,7 @@
- 
+@@ -79,7 +79,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bcmxcp_usb.txt nut-2.7.4/docs/man/bcmxcp_usb.txt
---- nut-2.7.4/docs/man8/bcmxcp_usb.txt	2016-12-29 13:17:35.424321542 +0300
-+++ nut-2.7.4/docs/man/bcmxcp_usb.txt	2016-12-29 13:29:28.539204382 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bcmxcp_usb.txt nut-2.8.1/docs/man/bcmxcp_usb.txt
+--- nut-2.8.1-orig/docs/man/bcmxcp_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bcmxcp_usb.txt	2023-11-01 03:46:16.831697323 +0100
 @@ -1,5 +1,5 @@
 -BCMXCP_USB(8)
 -=============
@@ -197,27 +233,27 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -12,7 +12,7 @@
+ 
  This man page only documents the hardware-specific features of the
  bcmxcp_usb driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
- This driver is a variant of the serial driver bcmxcp and uses the same core code.
+ This driver is a variant of the serial driver bcmxcp and uses the same
+ core code.
  
- SUPPORTED HARDWARE
-@@ -100,7 +100,7 @@
- 
+@@ -128,7 +128,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bcmxcp.txt nut-2.7.4/docs/man/bcmxcp.txt
---- nut-2.7.4/docs/man8/bcmxcp.txt	2016-12-29 13:17:35.424212742 +0300
-+++ nut-2.7.4/docs/man/bcmxcp.txt	2016-12-29 13:29:28.540287204 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bcmxcp.txt nut-2.8.1/docs/man/bcmxcp.txt
+--- nut-2.8.1-orig/docs/man/bcmxcp.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bcmxcp.txt	2023-11-01 03:46:13.395432614 +0100
 @@ -1,5 +1,5 @@
 -BCMXCP(8)
 -=========
@@ -226,8 +262,8 @@
  
  NAME
  ----
-@@ -10,13 +10,13 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  bcmxcp driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -235,30 +271,33 @@
  
  SUPPORTED HARDWARE
  ------------------
- This driver should recognize all serial BCM/XCP-compatible UPSes.  It has
- been developed and tested on Powerware PW5115 and PW9120 hardware. If your UPS
--has a USB connection, you may also consult the linkman:bcmxcp_usb[8] driver
-+has a USB connection, you may also consult the linkman:bcmxcp_usb[1m] driver
- documentation.
+@@ -19,7 +19,7 @@
+ This driver should recognize all serial BCM/XCP-compatible UPSes.
+ It has been developed and tested on Powerware PW5115 and PW9120 hardware.
+ If your UPS has a USB connection, you may also consult the
+-linkman:bcmxcp_usb[8] driver documentation.
++linkman:bcmxcp_usb[1m] driver documentation.
  
  EXTRA ARGUMENTS
-@@ -77,11 +77,11 @@
- --------
+ ---------------
+@@ -87,12 +87,12 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  The USB BCM/XCP driver:
  ~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:bcmxcp_usb[8]
 +linkman:bcmxcp_usb[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/belkin.txt nut-2.7.4/docs/man/belkin.txt
---- nut-2.7.4/docs/man8/belkin.txt	2016-12-29 13:17:35.424433790 +0300
-+++ nut-2.7.4/docs/man/belkin.txt	2016-12-29 13:29:28.541109992 +0300
+diff -Naur nut-2.8.1-orig/docs/man/belkin.txt nut-2.8.1/docs/man/belkin.txt
+--- nut-2.8.1-orig/docs/man/belkin.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/belkin.txt	2023-11-01 03:46:20.071770927 +0100
 @@ -1,5 +1,5 @@
 -BELKIN(8)
 -=========
@@ -270,24 +309,36 @@
 @@ -11,7 +11,7 @@
  
  This man page only documents the hardware-specific features of the
- belkin driver.  For information about the core driver, see  
+ belkin driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -42,7 +42,7 @@
- 
+@@ -48,15 +48,15 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
+ Other Belkin drivers:
+ ~~~~~~~~~~~~~~~~~~~~~
+ 
+-linkman:belkinunv[8],
+-linkman:blazer_ser[8],
+-linkman:blazer_usb[8],
+-linkman:usbhid-ups[8]
++linkman:belkinunv[1m],
++linkman:blazer_ser[1m],
++linkman:blazer_usb[1m],
++linkman:usbhid-ups[1m]
+ 
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/belkinunv.txt nut-2.7.4/docs/man/belkinunv.txt
---- nut-2.7.4/docs/man8/belkinunv.txt	2016-12-29 13:17:35.424530826 +0300
-+++ nut-2.7.4/docs/man/belkinunv.txt	2016-12-29 13:29:28.544582177 +0300
+diff -Naur nut-2.8.1-orig/docs/man/belkinunv.txt nut-2.8.1/docs/man/belkinunv.txt
+--- nut-2.8.1-orig/docs/man/belkinunv.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/belkinunv.txt	2023-11-01 03:46:23.098486028 +0100
 @@ -1,5 +1,5 @@
 -BELKINUNV(8)
 -============
@@ -296,16 +347,16 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
- belkin driver.  For information about the core driver, see  
+ belkin driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
- SUPPORTED HARDWARE
- ------------------
-@@ -22,8 +22,8 @@
+ This driver only supports serial connections. If your UPS has a USB port,
+ please consult the Hardware Compatibility List (HCL) to see which of
+@@ -28,8 +28,8 @@
  The Trust UPS and older Belkin units are not supported by this driver,
  and neither are the Belkin Home Office models (F6H500-SER and so
  forth). However, some Belkin models, such as the Regulator Pro, are
@@ -316,7 +367,7 @@
  `upstype=7`.
  
  SOFT SHUTDOWN WORKAROUND
-@@ -44,7 +44,7 @@
+@@ -51,7 +51,7 @@
  This is meant to be used in a shutdown script as follows: during a
  shutdown, after all filesystems have been remounted read-only, and
  just before the system would normally be halted: check /etc/killpower
@@ -325,16 +376,16 @@
  and if yes, call *belkinunv -x wait*. If AC power comes back on,
  *belkinunv* exits, and things should be arranged so that the
  system reboots in this case. If AC power does not come back on, the
-@@ -69,7 +69,7 @@
- 
+@@ -77,7 +77,7 @@
  OPTIONS
  -------
+ 
 -See also linkman:nutupsdrv[8] for generic options. Never use the
 +See also linkman:nutupsdrv[1m] for generic options. Never use the
  *-k* option with this driver; it does not work properly.
  
  *-x wait*[='level']::
-@@ -310,7 +310,7 @@
+@@ -319,7 +319,7 @@
  
  When used normally, *belkinunv* forks into the background and its
  diagnostics are the same as for all NUT drivers, see
@@ -343,18 +394,30 @@
  
  When used with the *-x wait* option, the exit status is normally
  *0*. If the *-x nohang* option has also been specified, an exit
-@@ -328,7 +328,7 @@
- 
+@@ -343,15 +343,15 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
+ Other Belkin drivers:
+ ~~~~~~~~~~~~~~~~~~~~~
+ 
+-linkman:belkinunv[8],
+-linkman:blazer_ser[8],
+-linkman:blazer_usb[8],
+-linkman:usbhid-ups[8]
++linkman:belkinunv[1m],
++linkman:blazer_ser[1m],
++linkman:blazer_usb[1m],
++linkman:usbhid-ups[1m]
+ 
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bestfcom.txt nut-2.7.4/docs/man/bestfcom.txt
---- nut-2.7.4/docs/man8/bestfcom.txt	2016-12-29 13:17:35.424620818 +0300
-+++ nut-2.7.4/docs/man/bestfcom.txt	2016-12-29 13:29:28.545292962 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bestfcom.txt nut-2.8.1/docs/man/bestfcom.txt
+--- nut-2.8.1-orig/docs/man/bestfcom.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bestfcom.txt	2023-11-01 03:46:26.720929901 +0100
 @@ -1,5 +1,5 @@
 -BESTFCOM(8)
 -===========
@@ -363,8 +426,8 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,14 +11,14 @@
+ 
  This man page only documents the hardware-specific features of the
  bestfcom driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -372,18 +435,26 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -38,7 +38,7 @@
  
+ Best Power Fortress/Ferrups implementing the Fortress UPS Protocol
+ (f-command set).  (For older Fortress units, see
+-linkman:bestfortress[8].)
++linkman:bestfortress[1m].)
+ 
+ EXTRA ARGUMENTS
+ ---------------
+@@ -40,7 +40,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bestfortress.txt nut-2.7.4/docs/man/bestfortress.txt
---- nut-2.7.4/docs/man8/bestfortress.txt	2016-12-29 13:17:35.424708084 +0300
-+++ nut-2.7.4/docs/man/bestfortress.txt	2016-12-29 13:29:28.546009692 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bestfortress.txt nut-2.8.1/docs/man/bestfortress.txt
+--- nut-2.8.1-orig/docs/man/bestfortress.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bestfortress.txt	2023-11-01 03:46:30.226678512 +0100
 @@ -1,5 +1,5 @@
 -BESTFORTRESS(8)
 -===============
@@ -401,23 +472,24 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -38,11 +38,11 @@
- 
+@@ -45,12 +45,12 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  The newer Best Power drivers:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:bestups[8], linkman:bestuferrups[8], linkman:bestfcom[8]
 +linkman:bestups[1m], linkman:bestuferrups[1m], linkman:bestfcom[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bestuferrups.txt nut-2.7.4/docs/man/bestuferrups.txt
---- nut-2.7.4/docs/man8/bestuferrups.txt	2016-12-29 13:17:35.424811553 +0300
-+++ nut-2.7.4/docs/man/bestuferrups.txt	2016-12-29 13:29:28.546598499 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bestuferrups.txt nut-2.8.1/docs/man/bestuferrups.txt
+--- nut-2.8.1-orig/docs/man/bestuferrups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bestuferrups.txt	2023-11-01 03:46:35.664091460 +0100
 @@ -1,5 +1,5 @@
 -BESTUFERRUPS(8)
 -===============
@@ -426,8 +498,8 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  bestuferrups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -435,18 +507,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -35,7 +35,7 @@
- 
+@@ -37,7 +37,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/bestups.txt nut-2.7.4/docs/man/bestups.txt
---- nut-2.7.4/docs/man8/bestups.txt	2016-12-29 13:17:35.424919172 +0300
-+++ nut-2.7.4/docs/man/bestups.txt	2016-12-29 13:29:28.548077554 +0300
+diff -Naur nut-2.8.1-orig/docs/man/bestups.txt nut-2.8.1/docs/man/bestups.txt
+--- nut-2.8.1-orig/docs/man/bestups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/bestups.txt	2023-11-01 03:46:38.330653596 +0100
 @@ -1,5 +1,5 @@
 -BESTUPS(8)
 -==========
@@ -458,13 +530,36 @@
 @@ -11,7 +11,7 @@
  
  This man page only documents the hardware-specific features of the
- bestups driver.  For information about the core driver, see  
+ bestups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
+ NOTE
+ ----
+@@ -19,11 +19,11 @@
+ Please note that this driver is deprecated and will not receive
+ new development. If it works for managing your devices -- fine,
+ but if you are running it to try setting up a new device, please
+-consider the newer linkman:nutdrv_qx[8] instead, which should
++consider the newer linkman:nutdrv_qx[1m] instead, which should
+ handle all 'Q*' protocol variants for NUT.
+ 
+ If your device works with this driver, but does not work with
+-linkman:nutdrv_qx[8], please report this via the mailing list or issue
++linkman:nutdrv_qx[1m], please report this via the mailing list or issue
+ tracker.
+ 
  SUPPORTED HARDWARE
- ------------------
-@@ -49,7 +49,7 @@
+@@ -38,7 +38,7 @@
+ they will generate a warning since their battery information is not known.
+ 
+ This driver does not support some older Best/SOLA units.  (For older
+-Fortress units, see linkman:bestfortress[8].)
++Fortress units, see linkman:bestfortress[1m].)
+ 
+ EXTRA ARGUMENTS
+ ---------------
+@@ -64,7 +64,7 @@
  +
  For example, the SOLA 610 700VA UPS (with a 24V battery) reports the
  single cell voltage (about 2.27V when fully charged). In this particular
@@ -473,27 +568,27 @@
  
  *ID=*'string'::
  
-@@ -99,7 +99,7 @@
+@@ -114,7 +114,7 @@
  yet actually have a nominal voltage slightly below that.  This leads to
  things such as the perpetual 98.7% charge on the author's Fortress 750,
- even when it's been charging for weeks.  You can use `nombattvolt=` in 
+ even when it's been charging for weeks.  You can use `nombattvolt=` in
 -linkman:ups.conf[8] to fix this.
 +linkman:ups.conf[1m] to fix this.
  
- AUTHOR
- ------
-@@ -110,7 +110,7 @@
- 
+ AUTHORS
+ -------
+@@ -128,7 +128,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/blazer_ser.txt nut-2.7.4/docs/man/blazer_ser.txt
---- nut-2.7.4/docs/man8/blazer_ser.txt	2016-12-29 13:17:35.425130173 +0300
-+++ nut-2.7.4/docs/man/blazer_ser.txt	2016-12-29 13:29:28.548439823 +0300
+diff -Naur nut-2.8.1-orig/docs/man/blazer_ser.txt nut-2.8.1/docs/man/blazer_ser.txt
+--- nut-2.8.1-orig/docs/man/blazer_ser.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/blazer_ser.txt	2023-11-01 03:46:41.622764336 +0100
 @@ -1,5 +1,5 @@
 -BLAZER_SER(8)
 -=============
@@ -502,9 +597,9 @@
  :blazer_usb!:
  
  NAME
-diff -ur nut-2.7.4/docs/man8/blazer_usb.txt nut-2.7.4/docs/man/blazer_usb.txt
---- nut-2.7.4/docs/man8/blazer_usb.txt	2016-12-29 13:17:35.425225116 +0300
-+++ nut-2.7.4/docs/man/blazer_usb.txt	2016-12-29 13:29:28.548735040 +0300
+diff -Naur nut-2.8.1-orig/docs/man/blazer_usb.txt nut-2.8.1/docs/man/blazer_usb.txt
+--- nut-2.8.1-orig/docs/man/blazer_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/blazer_usb.txt	2023-11-01 03:46:44.638791414 +0100
 @@ -1,5 +1,5 @@
 -BLAZER_USB(8)
 -=============
@@ -513,19 +608,33 @@
  :blazer_usb:
  
  NAME
-diff -ur nut-2.7.4/docs/man8/blazer-common.txt nut-2.7.4/docs/man/blazer-common.txt
---- nut-2.7.4/docs/man8/blazer-common.txt	2016-12-29 13:17:35.425012261 +0300
-+++ nut-2.7.4/docs/man/blazer-common.txt	2016-12-29 13:17:50.885000542 +0300
-@@ -2,7 +2,7 @@
- ----
+diff -Naur nut-2.8.1-orig/docs/man/blazer-common.txt nut-2.8.1/docs/man/blazer-common.txt
+--- nut-2.8.1-orig/docs/man/blazer-common.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/blazer-common.txt	2023-11-01 03:43:21.838975323 +0100
+@@ -3,7 +3,7 @@
+ 
  This man page only documents the hardware-specific features of the
  blazer driver. For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
+ NOTE
+ ----
+@@ -11,11 +11,11 @@
+ Please note that this driver is deprecated and will not receive
+ new development. If it works for managing your devices -- fine,
+ but if you are running it to try setting up a new device, please
+-consider the newer linkman:nutdrv_qx[8] instead, which should
++consider the newer linkman:nutdrv_qx[1m] instead, which should
+ handle all 'Q*' protocol variants for NUT.
+ 
+ Please do also report if your device works with this driver,
+-but linkman:nutdrv_qx[8] would not actually support it with any
++but linkman:nutdrv_qx[1m] would not actually support it with any
+ subdriver!
  
  SUPPORTED HARDWARE
-@@ -166,7 +166,7 @@
+@@ -156,7 +156,7 @@
  UPS COMMANDS
  ------------
  
@@ -534,7 +643,7 @@
  
  *beeper.toggle*::
  
-@@ -304,12 +304,12 @@
+@@ -300,12 +300,12 @@
  --------
  
  ifdef::blazer_usb[]
@@ -550,9 +659,9 @@
  
  
  Internet Resources:
-diff -ur nut-2.7.4/docs/man8/clone.txt nut-2.7.4/docs/man/clone.txt
---- nut-2.7.4/docs/man8/clone.txt	2016-12-29 13:17:35.425311830 +0300
-+++ nut-2.7.4/docs/man/clone.txt	2016-12-29 13:29:28.549970867 +0300
+diff -Naur nut-2.8.1-orig/docs/man/clone.txt nut-2.8.1/docs/man/clone.txt
+--- nut-2.8.1-orig/docs/man/clone.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/clone.txt	2023-11-01 03:46:47.571327276 +0100
 @@ -1,5 +1,5 @@
 -CLONE(8)
 -========
@@ -561,8 +670,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the specific features of the
  clone driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -570,18 +679,27 @@
  
  DESCRIPTION
  -----------
-@@ -108,7 +108,7 @@
+@@ -128,7 +128,7 @@
  linkman:upscmd[1],
  linkman:upsrw[1],
  linkman:ups.conf[5],
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
+ Dummy driver:
+ ~~~~~~~~~~~~~
+@@ -137,7 +137,7 @@
+ 'clone' driver, by relaying information from a locally or remotely running
+ "real" device driver (and NUT data server).
+ 
+-linkman:dummy-ups[8]
++linkman:dummy-ups[1m]
+ 
  Internet Resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/dummy-ups.txt nut-2.7.4/docs/man/dummy-ups.txt
---- nut-2.7.4/docs/man8/dummy-ups.txt	2016-12-29 13:17:35.425402282 +0300
-+++ nut-2.7.4/docs/man/dummy-ups.txt	2016-12-29 13:29:28.551672933 +0300
+diff -Naur nut-2.8.1-orig/docs/man/dummy-ups.txt nut-2.8.1/docs/man/dummy-ups.txt
+--- nut-2.8.1-orig/docs/man/dummy-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/dummy-ups.txt	2023-11-01 03:46:54.338913469 +0100
 @@ -1,5 +1,5 @@
 -DUMMY-UPS(8)
 -============
@@ -590,45 +708,54 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the specific features of the
- dummy-ups driver.  For information about the core driver, see
+ *dummy-ups* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  DESCRIPTION
  -----------
-@@ -19,7 +19,7 @@
- Dummy Mode
+@@ -27,7 +27,7 @@
  ~~~~~~~~~~
  
--*dummy-ups* looks like a standard device driver to linkman:upsd[8] and 
-+*dummy-ups* looks like a standard device driver to linkman:upsd[1m] and 
- allows one to change any value for testing purposes.  It is both interactive,
- controllable through the linkman:upsrw[1] and linkman:upscmd[1] commands (or
- equivalent graphical tool), and batchable through script files. It can be
-@@ -54,7 +54,7 @@
- 		desc = "dummy-ups in dummy mode"
+ In this mode, *dummy-ups* looks like a standard NUT device driver to
+-linkman:upsd[8] and allows one to change any value for testing purposes.
++linkman:upsd[1m] and allows one to change any value for testing purposes.
+ It is both interactive, controllable through the linkman:upsrw[1] and
+ linkman:upscmd[1] commands (or equivalent graphical tool), and batchable
+ through script files. It can be configured, launched and used as any other
+@@ -124,7 +124,7 @@
+ This file is generally named `something.dev` or `something.seq`. It contains
+ a list of all valid variables and associated values (you can later use `upsrw`
+ only to modify values of these variables), and has the same format as an
+-linkman:upsc[8] dump (`<varname>: <value>`). So you can easily create
++linkman:upsc[1m] dump (`<varname>: <value>`). So you can easily create
+ definition files from an existing UPS using `upsc > file.dev`.
  
- This file is generally named "something.dev". It contains a list of all
--valid data and associated values, and has the same format as an linkman:upsc[8]
-+valid data and associated values, and has the same format as an linkman:upsc[1m]
- dump (<varname>: <value>). So you can easily create definition
- files from an existing UPS using "upsc > file.dev".
- It can also be empty, in which case only a basic set of data is available:
-@@ -146,7 +146,7 @@
+ Note that the Network UPS project provides an extensive
+@@ -272,7 +272,7 @@
  linkman:upscmd[1],
  linkman:upsrw[1],
  linkman:ups.conf[5],
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
+ Clone driver:
+ ~~~~~~~~~~~~~
+@@ -282,7 +282,7 @@
+ users to group clients to a particular outlet of a device and deal with
+ this output as if it were a normal UPS.
+ 
+-linkman:clone[8]
++linkman:clone[1m]
+ 
  Internet Resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/etapro.txt nut-2.7.4/docs/man/etapro.txt
---- nut-2.7.4/docs/man8/etapro.txt	2016-12-29 13:17:35.425489237 +0300
-+++ nut-2.7.4/docs/man/etapro.txt	2016-12-29 13:29:28.552222685 +0300
+diff -Naur nut-2.8.1-orig/docs/man/etapro.txt nut-2.8.1/docs/man/etapro.txt
+--- nut-2.8.1-orig/docs/man/etapro.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/etapro.txt	2023-11-01 03:46:57.395906287 +0100
 @@ -1,5 +1,5 @@
 -ETAPRO(8)
 -=========
@@ -637,8 +764,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  etapro driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -646,18 +773,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -28,7 +28,7 @@
- --------
+@@ -35,7 +35,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/everups.txt nut-2.7.4/docs/man/everups.txt
---- nut-2.7.4/docs/man8/everups.txt	2016-12-29 13:17:35.425603341 +0300
-+++ nut-2.7.4/docs/man/everups.txt	2016-12-29 13:29:28.552810296 +0300
+diff -Naur nut-2.8.1-orig/docs/man/everups.txt nut-2.8.1/docs/man/everups.txt
+--- nut-2.8.1-orig/docs/man/everups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/everups.txt	2023-11-01 03:47:00.490682292 +0100
 @@ -1,5 +1,5 @@
 -EVERUPS(8)
 -==========
@@ -666,8 +793,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  everups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -675,18 +802,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -37,7 +37,7 @@
- 
+@@ -42,7 +42,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/gamatronic.txt nut-2.7.4/docs/man/gamatronic.txt
---- nut-2.7.4/docs/man8/gamatronic.txt	2016-12-29 13:17:35.425790328 +0300
-+++ nut-2.7.4/docs/man/gamatronic.txt	2016-12-29 13:29:28.553402785 +0300
+diff -Naur nut-2.8.1-orig/docs/man/gamatronic.txt nut-2.8.1/docs/man/gamatronic.txt
+--- nut-2.8.1-orig/docs/man/gamatronic.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/gamatronic.txt	2023-11-01 03:47:03.012287890 +0100
 @@ -1,5 +1,5 @@
 -GAMATRONIC(8)
 -=============
@@ -695,8 +822,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  gamatronic driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -704,18 +831,76 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -31,7 +31,7 @@
- 
+@@ -36,7 +36,7 @@
  The core driver
  ~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/genericups.txt nut-2.7.4/docs/man/genericups.txt
---- nut-2.7.4/docs/man8/genericups.txt	2016-12-29 13:17:35.426003873 +0300
-+++ nut-2.7.4/docs/man/genericups.txt	2016-12-29 13:29:28.558257388 +0300
+diff -Naur nut-2.8.1-orig/docs/man/generic_gpio.txt nut-2.8.1/docs/man/generic_gpio.txt
+--- nut-2.8.1-orig/docs/man/generic_gpio.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/generic_gpio.txt	2023-11-01 03:47:06.499076902 +0100
+@@ -1,5 +1,5 @@
+-GENERIC GPIO(8)
+-===============
++GENERIC GPIO(1m)
++================
+ 
+ NAME
+ ----
+@@ -14,7 +14,7 @@
+ *generic_gpio* -a 'gpiochip0' ['OPTIONS']
+ 
+ NOTE: This man page only documents the specific features of the *generic_gpio*
+-driver. For information about the core driver, see linkman:nutupsdrv[8].
++driver. For information about the core driver, see linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -118,7 +118,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8], linkman:ups.conf[5]
++linkman:nutupsdrv[1m], linkman:ups.conf[5]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/generic_modbus.txt nut-2.8.1/docs/man/generic_modbus.txt
+--- nut-2.8.1-orig/docs/man/generic_modbus.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/generic_modbus.txt	2023-11-01 03:47:09.335479636 +0100
+@@ -1,5 +1,5 @@
+-GENERIC_MODBUS(8)
+-=================
++GENERIC_MODBUS(1m)
++==================
+ 
+ NAME
+ ----
+@@ -16,7 +16,7 @@
+ 
+ NOTE: This man page only documents the specific features of the
+ *generic_modbus* driver. For information about the core driver,
+-see linkman:nutupsdrv[8].
++see linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -240,7 +240,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8], linkman:ups.conf[5]
++linkman:nutupsdrv[1m], linkman:ups.conf[5]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/genericups.txt nut-2.8.1/docs/man/genericups.txt
+--- nut-2.8.1-orig/docs/man/genericups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/genericups.txt	2023-11-01 03:47:12.052522745 +0100
 @@ -1,5 +1,5 @@
 -GENERICUPS(8)
 -=============
@@ -724,38 +909,38 @@
  
  NAME
  ----
-@@ -8,7 +8,7 @@
- NOTE
+@@ -10,7 +10,7 @@
  ----
- This man page only documents the specific features of the genericups 
+ 
+ This man page only documents the specific features of the genericups
 -driver.  For information about the core driver, see linkman:nutupsdrv[8].
 +driver.  For information about the core driver, see linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -364,8 +364,8 @@
+@@ -387,8 +387,8 @@
  may not be able to sense this in software.
  
- Most contact-closure UPSes will not power down the load if the line power 
--is present.  This can create a race when using slave linkman:upsmon[8] 
+ Most contact-closure UPSes will not power down the load if the line power
+-is present.  This can create a race when using secondary linkman:upsmon[8]
 -systems.  See the linkman:upsmon[8] man page for more information.
-+is present.  This can create a race when using slave linkman:upsmon[1m] 
++is present.  This can create a race when using secondary linkman:upsmon[1m]
 +systems.  See the linkman:upsmon[1m] man page for more information.
  
- The solution to both of these problems is to upgrade to a smart protocol 
+ The solution to both of these problems is to upgrade to a smart protocol
  UPS of some kind that allows detection and proper load cycling on command.
-@@ -375,7 +375,7 @@
- 
+@@ -399,7 +399,7 @@
  The core driver
  ~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
- Internet resources
- ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/hosts.conf.txt nut-2.7.4/docs/man/hosts.conf.txt
---- nut-2.7.4/docs/man8/hosts.conf.txt	2016-12-29 13:17:35.426176100 +0300
-+++ nut-2.7.4/docs/man/hosts.conf.txt	2016-12-29 13:17:50.887929115 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/hosts.conf.txt nut-2.8.1/docs/man/hosts.conf.txt
+--- nut-2.8.1-orig/docs/man/hosts.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/hosts.conf.txt	2023-11-01 03:43:21.860546249 +0100
 @@ -9,8 +9,8 @@
  DESCRIPTION
  -----------
@@ -776,171 +961,54 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/index.txt nut-2.7.4/docs/man/index.txt
---- nut-2.7.4/docs/man8/index.txt	2016-12-29 13:17:35.426344631 +0300
-+++ nut-2.7.4/docs/man/index.txt	2016-12-29 13:17:50.888345484 +0300
-@@ -22,94 +22,94 @@
- Daemons
- ~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/huawei-ups2000.txt nut-2.8.1/docs/man/huawei-ups2000.txt
+--- nut-2.8.1-orig/docs/man/huawei-ups2000.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/huawei-ups2000.txt	2023-11-01 03:47:18.145976119 +0100
+@@ -1,4 +1,4 @@
+-HUAWEI_UPS2000(8)
++HUAWEI_UPS2000(1m)
+ ==================
  
--- linkman:upsd[8]
--- linkman:upsmon[8]
--- linkman:upssched[8]
--- linkman:upslog[8]
-+- linkman:upsd[1m]
-+- linkman:upsmon[1m]
-+- linkman:upssched[1m]
-+- linkman:upslog[1m]
+ NAME
+@@ -16,7 +16,7 @@
  
- Clients commands
+ NOTE: This man page only documents the hardware-specific features of the
+ huawei-ups2000 driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -192,7 +192,7 @@
+ INSTANT COMMANDS
+ ----------------
+ 
+-This driver supports some instant commands (see linkman:upscmd[8]):
++This driver supports some instant commands (see linkman:upscmd[1m]):
+ 
+ *shutdown.stayoff*::
+ After an *offdelay*, turn off the load. When line power is back,
+@@ -272,7 +272,7 @@
+ VARIABLES
+ ---------
+ 
+-This driver supports some writable runtime variables (see linkman:upsrw[8]):
++This driver supports some writable runtime variables (see linkman:upsrw[1m]):
+ 
+ **ups.beeper.status**::
+ Enable or disable the UPS beeper, *disabled* or *enabled*.
+@@ -390,7 +390,7 @@
+ The core driver:
  ~~~~~~~~~~~~~~~~
  
--- linkman:upsc[8]
--- linkman:upscmd[8]
--- linkman:upsrw[8]
-+- linkman:upsc[1m]
-+- linkman:upscmd[1m]
-+- linkman:upsrw[1m]
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
  
- Configuration commands
- ~~~~~~~~~~~~~~~~~~~~~~
- 
--- linkman:nut-scanner[8]
-+- linkman:nut-scanner[1m]
-  
- CGI programs
- ~~~~~~~~~~~~
- 
--- linkman:upsimage.cgi[8]
--- linkman:upsset.cgi[8]
--- linkman:upsstats.cgi[8]
-+- linkman:upsimage.cgi[1m]
-+- linkman:upsset.cgi[1m]
-+- linkman:upsstats.cgi[1m]
- 
- [[Drivers]]
- Drivers
- ~~~~~~~
- 
--- linkman:upsdrvctl[8]
-+- linkman:upsdrvctl[1m]
- 
--- linkman:al175[8]
--- linkman:apcsmart[8]
--- linkman:apcupsd-ups[8]
--- linkman:asem[8]
--- linkman:bcmxcp[8]
--- linkman:bcmxcp_usb[8]
--- linkman:belkin[8]
--- linkman:belkinunv[8]
--- linkman:bestfcom[8]
--- linkman:bestfortress[8]
--- linkman:bestuferrups[8]
--- linkman:bestups[8]
--- linkman:blazer_ser[8]
--- linkman:blazer_usb[8]
--- linkman:clone[8]
--- linkman:dummy-ups[8]
--- linkman:etapro[8]
--- linkman:everups[8]
--- linkman:gamatronic[8]
--- linkman:genericups[8]
--- linkman:isbmex[8]
--- linkman:ivtscd[8]
--- linkman:liebert[8]
--- linkman:liebert-esp2[8]
--- linkman:macosx-ups[8]
--- linkman:masterguard[8]
--- linkman:metasys[8]
--- linkman:mge-shut[8]
--- linkman:mge-utalk[8]
--- linkman:microdowell[8]
--- linkman:netxml-ups[8]
--- linkman:nutdrv_atcl_usb[8]
--- linkman:nutdrv_qx[8]
--- linkman:nutupsdrv[8]
--- linkman:oneac[8]
--- linkman:optiups[8]
--- linkman:powercom[8]
--- linkman:powerman-pdu[8]
--- linkman:powerpanel[8]
--- linkman:rhino[8]
--- linkman:richcomm_usb[8]
--- linkman:safenet[8]
--- linkman:snmp-ups[8]
--- linkman:solis[8]
--- linkman:tripplite[8]
--- linkman:tripplitesu[8]
--- linkman:tripplite_usb[8]
--- linkman:usbhid-ups[8]
--- linkman:upscode2[8]
--- linkman:victronups[8]
-+- linkman:al175[1m]
-+- linkman:apcsmart[1m]
-+- linkman:apcupsd-ups[1m]
-+- linkman:asem[1m]
-+- linkman:bcmxcp[1m]
-+- linkman:bcmxcp_usb[1m]
-+- linkman:belkin[1m]
-+- linkman:belkinunv[1m]
-+- linkman:bestfcom[1m]
-+- linkman:bestfortress[1m]
-+- linkman:bestuferrups[1m]
-+- linkman:bestups[1m]
-+- linkman:blazer_ser[1m]
-+- linkman:blazer_usb[1m]
-+- linkman:clone[1m]
-+- linkman:dummy-ups[1m]
-+- linkman:etapro[1m]
-+- linkman:everups[1m]
-+- linkman:gamatronic[1m]
-+- linkman:genericups[1m]
-+- linkman:isbmex[1m]
-+- linkman:ivtscd[1m]
-+- linkman:liebert[1m]
-+- linkman:liebert-esp2[1m]
-+- linkman:macosx-ups[1m]
-+- linkman:masterguard[1m]
-+- linkman:metasys[1m]
-+- linkman:mge-shut[1m]
-+- linkman:mge-utalk[1m]
-+- linkman:microdowell[1m]
-+- linkman:netxml-ups[1m]
-+- linkman:nutdrv_atcl_usb[1m]
-+- linkman:nutdrv_qx[1m]
-+- linkman:nutupsdrv[1m]
-+- linkman:oneac[1m]
-+- linkman:optiups[1m]
-+- linkman:powercom[1m]
-+- linkman:powerman-pdu[1m]
-+- linkman:powerpanel[1m]
-+- linkman:rhino[1m]
-+- linkman:richcomm_usb[1m]
-+- linkman:safenet[1m]
-+- linkman:snmp-ups[1m]
-+- linkman:solis[1m]
-+- linkman:tripplite[1m]
-+- linkman:tripplitesu[1m]
-+- linkman:tripplite_usb[1m]
-+- linkman:usbhid-ups[1m]
-+- linkman:upscode2[1m]
-+- linkman:victronups[1m]
- 
- [[Developer_man]]
- Developer manual pages
- ----------------------
- 
- - linkman:libupsclient-config[1]
--- linkman:nut-recorder[8]
--- linkman:skel[8]
-+- linkman:nut-recorder[1m]
-+- linkman:skel[1m]
- 
- [[devclient]]
- Client library
-diff -ur nut-2.7.4/docs/man8/isbmex.txt nut-2.7.4/docs/man/isbmex.txt
---- nut-2.7.4/docs/man8/isbmex.txt	2016-12-29 13:17:35.426514850 +0300
-+++ nut-2.7.4/docs/man/isbmex.txt	2016-12-29 13:29:28.559374554 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/isbmex.txt nut-2.8.1/docs/man/isbmex.txt
+--- nut-2.8.1-orig/docs/man/isbmex.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/isbmex.txt	2023-11-01 03:47:21.181739051 +0100
 @@ -1,5 +1,5 @@
 -ISBMEX(8)
 -=========
@@ -958,18 +1026,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -32,7 +32,7 @@
- 
+@@ -35,7 +35,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/ivtscd.txt nut-2.7.4/docs/man/ivtscd.txt
---- nut-2.7.4/docs/man8/ivtscd.txt	2016-12-29 13:17:35.426688508 +0300
-+++ nut-2.7.4/docs/man/ivtscd.txt	2016-12-29 13:29:28.560414783 +0300
+diff -Naur nut-2.8.1-orig/docs/man/ivtscd.txt nut-2.8.1/docs/man/ivtscd.txt
+--- nut-2.8.1-orig/docs/man/ivtscd.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/ivtscd.txt	2023-11-01 03:47:27.379219695 +0100
 @@ -1,5 +1,5 @@
 -IVTSCD(8)
 -=========
@@ -978,8 +1046,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  *ivtscd* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -987,30 +1055,30 @@
  
  DESCRIPTION
  -----------
-@@ -27,7 +27,7 @@
- --------
+@@ -34,7 +34,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/libnutclient_tcp.txt nut-2.7.4/docs/man/libnutclient_tcp.txt
---- nut-2.7.4/docs/man8/libnutclient_tcp.txt	2016-12-29 13:17:35.427711837 +0300
-+++ nut-2.7.4/docs/man/libnutclient_tcp.txt	2016-12-29 13:17:50.889427775 +0300
-@@ -26,7 +26,7 @@
+diff -Naur nut-2.8.1-orig/docs/man/libnutclient_tcp.txt nut-2.8.1/docs/man/libnutclient_tcp.txt
+--- nut-2.8.1-orig/docs/man/libnutclient_tcp.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/libnutclient_tcp.txt	2023-11-01 03:43:21.875500562 +0100
+@@ -35,7 +35,7 @@
  DESCRIPTION
  -----------
  
--These functions allow to manage connections to linkman:upsd[8] using NUT TCP protocol.
-+These functions allow to manage connections to linkman:upsd[1m] using NUT TCP protocol.
+-These functions allow to manage connections to linkman:upsd[8]
++These functions allow to manage connections to linkman:upsd[1m]
+ using NUT TCP protocol.
  
- The *nutclient_tcp_create_client()* function create the 'NUTCLIENT_TCP_t' context and
- intend to connect to upsd at 'host' and 'port'. The context must be freed by 'nutclient_destroy()'
-diff -ur nut-2.7.4/docs/man8/libnutclient.txt nut-2.7.4/docs/man/libnutclient.txt
---- nut-2.7.4/docs/man8/libnutclient.txt	2016-12-29 13:17:35.426864954 +0300
-+++ nut-2.7.4/docs/man/libnutclient.txt	2016-12-29 13:17:50.889750804 +0300
+ The *nutclient_tcp_create_client()* function create the 'NUTCLIENT_TCP_t'
+diff -Naur nut-2.8.1-orig/docs/man/libnutclient.txt nut-2.8.1/docs/man/libnutclient.txt
+--- nut-2.8.1-orig/docs/man/libnutclient.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/libnutclient.txt	2023-11-01 03:43:21.879645245 +0100
 @@ -19,7 +19,7 @@
  
  The Network UPS Tools (NUT) *nutclient* library provides a number of
@@ -1020,38 +1088,38 @@
  through client connection, devices, variables and commands.
  Unlike linkman:upsclient[3], all low-level protocol details are
  hidden.
-diff -ur nut-2.7.4/docs/man8/liebert-esp2.txt nut-2.7.4/docs/man/liebert-esp2.txt
---- nut-2.7.4/docs/man8/liebert-esp2.txt	2016-12-29 13:17:35.428250751 +0300
-+++ nut-2.7.4/docs/man/liebert-esp2.txt	2016-12-29 13:29:28.561390835 +0300
+diff -Naur nut-2.8.1-orig/docs/man/liebert-esp2.txt nut-2.8.1/docs/man/liebert-esp2.txt
+--- nut-2.8.1-orig/docs/man/liebert-esp2.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/liebert-esp2.txt	2023-11-01 03:47:33.920694165 +0100
 @@ -1,5 +1,5 @@
 -LIEBERT-ESP2(8)
 -==============
 +LIEBERT-ESP2(1m)
-+===============
++================
  
- NAME  
+ NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
- liebert-esp2 driver.  For information about the core driver, see  
+ liebert-esp2 driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
- SUPPORTED HARDWARE
- ------------------
-@@ -33,7 +33,7 @@
- 
+ SPECIAL CABLING NOTE
+ --------------------
+@@ -61,7 +61,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/liebert.txt nut-2.7.4/docs/man/liebert.txt
---- nut-2.7.4/docs/man8/liebert.txt	2016-12-29 13:17:35.428399389 +0300
-+++ nut-2.7.4/docs/man/liebert.txt	2016-12-29 13:29:28.562443820 +0300
+diff -Naur nut-2.8.1-orig/docs/man/liebert.txt nut-2.8.1/docs/man/liebert.txt
+--- nut-2.8.1-orig/docs/man/liebert.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/liebert.txt	2023-11-01 03:48:12.243023618 +0100
 @@ -1,5 +1,5 @@
 -LIEBERT(8)
 -==========
@@ -1060,8 +1128,8 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  liebert driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -1069,18 +1137,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -42,7 +42,7 @@
- 
+@@ -45,7 +45,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/macosx-ups.txt nut-2.7.4/docs/man/macosx-ups.txt
---- nut-2.7.4/docs/man8/macosx-ups.txt	2016-12-29 13:17:35.428589036 +0300
-+++ nut-2.7.4/docs/man/macosx-ups.txt	2016-12-29 13:29:28.564170848 +0300
+diff -Naur nut-2.8.1-orig/docs/man/macosx-ups.txt nut-2.8.1/docs/man/macosx-ups.txt
+--- nut-2.8.1-orig/docs/man/macosx-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/macosx-ups.txt	2023-11-01 03:48:15.912801461 +0100
 @@ -1,5 +1,5 @@
 -MACOSX-UPS(8)
 -=============
@@ -1089,8 +1157,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  *macosx-ups* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -1098,7 +1166,7 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -46,7 +46,7 @@
+@@ -50,7 +50,7 @@
  This driver is a monitoring-only driver, and cannot shut down an UPS on its
  own. However, this should not be a problem in practice: it is monitoring the
  built-in Mac OS X UPS driver, which has configuration options for several
@@ -1107,16 +1175,16 @@
  more information.
  
  The default distribution of *apcupsd* installs a kernel extension which
-@@ -58,7 +58,7 @@
+@@ -62,7 +62,7 @@
  provided by the built-in Mac OS X driver. In particular, voltages other than
  the battery voltage, as well as current and frequency, are typically not
  shown. It may be possible to monitor these values with *apcupsd* (for APC
 -hardware only) or linkman:usbhid-ups[8].
 +hardware only) or linkman:usbhid-ups[1m].
  
- AUTHORS
- -------
-@@ -67,11 +67,11 @@
+ AUTHOR
+ ------
+@@ -72,12 +72,12 @@
  SEE ALSO
  --------
  
@@ -1125,14 +1193,434 @@
  
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/masterguard.txt nut-2.7.4/docs/man/masterguard.txt
---- nut-2.7.4/docs/man8/masterguard.txt	2016-12-29 13:17:35.428750993 +0300
-+++ nut-2.7.4/docs/man/masterguard.txt	2016-12-29 13:29:28.565131251 +0300
+diff -Naur nut-2.8.1-orig/docs/man/Makefile.am nut-2.8.1/docs/man/Makefile.am
+--- nut-2.8.1-orig/docs/man/Makefile.am	2023-10-24 10:45:21.000000000 +0200
++++ nut-2.8.1/docs/man/Makefile.am	2023-11-01 03:45:05.723861115 +0100
+@@ -70,20 +70,20 @@
+ 
+ if WITH_MANS
+ MAN_CLIENT_PAGES = \
+-	nutupsdrv.8 \
+-	nut-driver-enumerator.8 \
+-	upsc.8 \
+-	upscmd.8 \
+-	upsd.8 \
+-	upsdrvctl.8 \
+-	upsdrvsvcctl.8 \
+-	upslog.8 \
+-	upsmon.8 \
+-	upsrw.8 \
+-	upssched.8
++	nutupsdrv.1m \
++	nut-driver-enumerator.1m \
++	upsc.1m \
++	upscmd.1m \
++	upsd.1m \
++	upsdrvctl.1m \
++	upsdrvsvcctl.1m \
++	upslog.1m \
++	upsmon.1m \
++	upsrw.1m \
++	upssched.1m
+ endif WITH_MANS
+ 
+-man8_MANS = $(MAN_CLIENT_PAGES)
++man1m_MANS = $(MAN_CLIENT_PAGES)
+ 
+ HTML_CLIENT_MANS = \
+ 	nutupsdrv.html \
+@@ -101,10 +101,10 @@
+ SRC_TOOL_PAGES = nut-scanner.txt nut-recorder.txt
+ 
+ if WITH_MANS
+-MAN_TOOL_PAGES = nut-scanner.8 nut-recorder.8
++MAN_TOOL_PAGES = nut-scanner.1m nut-recorder.1m
+ endif WITH_MANS
+ 
+-man8_MANS += $(MAN_TOOL_PAGES)
++man1m_MANS += $(MAN_TOOL_PAGES)
+ 
+ HTML_TOOL_MANS = nut-scanner.html nut-recorder.html
+ 
+@@ -123,15 +123,15 @@
+ 	upsset.conf.5 \
+ 	upsstats.html.5
+ 
+-MAN8_CGI_PAGES = \
+-	upsset.cgi.8 \
+-	upsstats.cgi.8 \
+-	upsimage.cgi.8
++MAN1M_CGI_PAGES = \
++	upsset.cgi.1m \
++	upsstats.cgi.1m \
++	upsimage.cgi.1m
+ endif WITH_MANS
+ 
+ if WITH_CGI
+ man5_MANS += $(MAN5_CGI_PAGES)
+-man8_MANS += $(MAN8_CGI_PAGES)
++man1m_MANS += $(MAN1M_CGI_PAGES)
+ endif WITH_CGI
+ 
+ HTML_CGI_MANS = \
+@@ -316,13 +316,13 @@
+ MAN1_DEV_PAGES = \
+ 	libupsclient-config.1
+ 
+-MAN8_DEV_PAGES = \
+-	sockdebug.8
++MAN1M_DEV_PAGES = \
++	sockdebug.1m
+ endif WITH_MANS
+ 
+ if WITH_DEV
+ man3_MANS = $(MAN3_DEV_PAGES)
+-man8_MANS += $(MAN8_DEV_PAGES)
++man1m_MANS += $(MAN1M_DEV_PAGES)
+ 
+ if !WITH_PKG_CONFIG
+ man1_MANS = $(MAN1_DEV_PAGES)
+@@ -385,7 +385,7 @@
+ # If (--with-drivers=...) then we only build specific documents, however
+ # still do track (and EXTRA_DIST, and spellcheck) all available sources.
+ if SOME_DRIVERS
+-man8_MANS += $(DRIVER_MAN_LIST)
++man1m_MANS += $(DRIVER_MAN_LIST)
+ endif
+ 
+ # (--with-serial)
+@@ -437,52 +437,52 @@
+ if ! SOME_DRIVERS
+ if WITH_MANS
+ MAN_SERIAL_PAGES = \
+-	al175.8	\
+-	apcsmart.8	\
+-	apcsmart-old.8	\
+-	bcmxcp.8 	\
+-	belkin.8 	\
+-	belkinunv.8	\
+-	bestfortress.8	\
+-	bestuferrups.8	\
+-	bestups.8 	\
+-	bestfcom.8	\
+-	blazer_ser.8	\
+-	clone.8 \
+-	dummy-ups.8	\
+-	etapro.8	\
+-	everups.8	\
+-	gamatronic.8	\
+-	genericups.8	\
+-	isbmex.8	\
+-	ivtscd.8	\
+-	liebert.8	\
+-	liebert-esp2.8	\
+-	masterguard.8	\
+-	metasys.8	\
+-	mge-shut.8	\
+-	mge-utalk.8	\
+-	oneac.8		\
+-	microdowell.8	\
+-	microsol-apc.8	\
+-	nutdrv_siemens_sitop.8	\
+-	optiups.8	\
+-	powercom.8 	\
+-	powerpanel.8	\
+-	rhino.8		\
+-	riello_ser.8	\
+-	sms_ser.8 \
+-	safenet.8	\
+-	solis.8		\
+-	tripplite.8	\
+-	tripplitesu.8	\
+-	upscode2.8	\
+-	victronups.8	\
+-	apcupsd-ups.8
++	al175.1m	\
++	apcsmart.1m	\
++	apcsmart-old.1m	\
++	bcmxcp.1m 	\
++	belkin.1m 	\
++	belkinunv.1m	\
++	bestfortress.1m	\
++	bestuferrups.1m	\
++	bestups.1m 	\
++	bestfcom.1m	\
++	blazer_ser.1m	\
++	clone.1m \
++	dummy-ups.1m	\
++	etapro.1m	\
++	everups.1m	\
++	gamatronic.1m	\
++	genericups.1m	\
++	isbmex.1m	\
++	ivtscd.1m	\
++	liebert.1m	\
++	liebert-esp2.1m	\
++	masterguard.1m	\
++	metasys.1m	\
++	mge-shut.1m	\
++	mge-utalk.1m	\
++	oneac.1m		\
++	microdowell.1m	\
++	microsol-apc.1m	\
++	nutdrv_siemens_sitop.1m	\
++	optiups.1m	\
++	powercom.1m 	\
++	powerpanel.1m	\
++	rhino.1m		\
++	riello_ser.1m	\
++	sms_ser.1m \
++	safenet.1m	\
++	solis.1m		\
++	tripplite.1m	\
++	tripplitesu.1m	\
++	upscode2.1m	\
++	victronups.1m	\
++	apcupsd-ups.1m
+ endif WITH_MANS
+ 
+ if WITH_SERIAL
+-man8_MANS +=  $(MAN_SERIAL_PAGES)
++man1m_MANS +=  $(MAN_SERIAL_PAGES)
+ endif WITH_SERIAL
+ 
+ HTML_SERIAL_MANS = \
+@@ -534,11 +534,11 @@
+ SRC_SNMP_PAGES = snmp-ups.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_SNMP_PAGES = snmp-ups.8
++MAN_SNMP_PAGES = snmp-ups.1m
+ endif WITH_MANS
+ 
+ if WITH_SNMP
+-man8_MANS += $(MAN_SNMP_PAGES)
++man1m_MANS += $(MAN_SNMP_PAGES)
+ endif WITH_SNMP
+ 
+ HTML_SNMP_MANS = snmp-ups.html
+@@ -560,17 +560,17 @@
+ # NOTE: nut_usb_addvars and blazer-common are not standalone man pages
+ if WITH_MANS
+ MAN_USB_LIBUSB_PAGES = \
+-	bcmxcp_usb.8 \
+-	blazer_usb.8 \
+-	nutdrv_atcl_usb.8 \
+-	richcomm_usb.8 \
+-	riello_usb.8	\
+-	tripplite_usb.8 \
+-	usbhid-ups.8
++	bcmxcp_usb.1m \
++	blazer_usb.1m \
++	nutdrv_atcl_usb.1m \
++	richcomm_usb.1m \
++	riello_usb.1m	\
++	tripplite_usb.1m \
++	usbhid-ups.1m
+ endif WITH_MANS
+ 
+ if WITH_USB
+-man8_MANS += $(MAN_USB_LIBUSB_PAGES)
++man1m_MANS += $(MAN_USB_LIBUSB_PAGES)
+ endif WITH_USB
+ 
+ HTML_USB_LIBUSB_MANS = \
+@@ -590,14 +590,14 @@
+ if ! SOME_DRIVERS
+ if WITH_MANS
+ MAN_SERIAL_USB_PAGES = \
+-	nutdrv_qx.8
++	nutdrv_qx.1m
+ endif WITH_MANS
+ 
+ if WITH_SERIAL
+-man8_MANS += $(MAN_SERIAL_USB_PAGES)
++man1m_MANS += $(MAN_SERIAL_USB_PAGES)
+ else !WITH_SERIAL
+ if WITH_USB
+-man8_MANS += $(MAN_SERIAL_USB_PAGES)
++man1m_MANS += $(MAN_SERIAL_USB_PAGES)
+ endif WITH_USB
+ endif !WITH_SERIAL
+ 
+@@ -609,11 +609,11 @@
+ SRC_NETXML_PAGES = netxml-ups.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_NETXML_PAGES = netxml-ups.8
++MAN_NETXML_PAGES = netxml-ups.1m
+ endif WITH_MANS
+ 
+ if WITH_NEON
+-man8_MANS += $(MAN_NETXML_PAGES)
++man1m_MANS += $(MAN_NETXML_PAGES)
+ endif WITH_NEON
+ 
+ HTML_NETXML_MANS = netxml-ups.html
+@@ -623,11 +623,11 @@
+ SRC_POWERMAN_PAGES = powerman-pdu.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_POWERMAN_PAGES = powerman-pdu.8
++MAN_POWERMAN_PAGES = powerman-pdu.1m
+ endif WITH_MANS
+ 
+ if WITH_LIBPOWERMAN
+-man8_MANS += $(MAN_POWERMAN_PAGES)
++man1m_MANS += $(MAN_POWERMAN_PAGES)
+ endif WITH_LIBPOWERMAN
+ 
+ HTML_POWERMAN_MANS = powerman-pdu.html
+@@ -637,11 +637,11 @@
+ SRC_IPMIPSU_PAGES = nut-ipmipsu.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_IPMIPSU_PAGES = nut-ipmipsu.8
++MAN_IPMIPSU_PAGES = nut-ipmipsu.1m
+ endif WITH_MANS
+ 
+ if WITH_IPMI
+-man8_MANS += $(MAN_IPMIPSU_PAGES)
++man1m_MANS += $(MAN_IPMIPSU_PAGES)
+ endif WITH_IPMI
+ 
+ HTML_IPMIPSU_MANS = nut-ipmipsu.html
+@@ -651,11 +651,11 @@
+ SRC_MACOSX_PAGES = macosx-ups.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_MACOSX_PAGES = macosx-ups.8
++MAN_MACOSX_PAGES = macosx-ups.1m
+ endif WITH_MANS
+ 
+ if WITH_MACOSX
+-man8_MANS += $(MAN_MACOSX_PAGES)
++man1m_MANS += $(MAN_MACOSX_PAGES)
+ endif WITH_MACOSX
+ 
+ HTML_MACOSX_MANS = macosx-ups.html
+@@ -671,16 +671,16 @@
+ 
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_MODBUS_PAGES = phoenixcontact_modbus.8 \
+-	generic_modbus.8 \
+-	huawei-ups2000.8 \
+-	socomec_jbus.8   \
+-	adelsystem_cbi.8 \
+-	apc_modbus.8
++MAN_MODBUS_PAGES = phoenixcontact_modbus.1m \
++	generic_modbus.1m \
++	huawei-ups2000.1m \
++	socomec_jbus.1m   \
++	adelsystem_cbi.1m \
++	apc_modbus.1m
+ endif WITH_MANS
+ 
+ if WITH_MODBUS
+-man8_MANS += $(MAN_MODBUS_PAGES)
++man1m_MANS += $(MAN_MODBUS_PAGES)
+ endif WITH_MODBUS
+ 
+ HTML_MODBUS_MANS = phoenixcontact_modbus.html \
+@@ -695,11 +695,11 @@
+ SRC_LINUX_I2C_PAGES = asem.txt pijuice.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_LINUX_I2C_PAGES = asem.8 pijuice.8
++MAN_LINUX_I2C_PAGES = asem.1m pijuice.1m
+ endif WITH_MANS
+ 
+ if WITH_LINUX_I2C
+-man8_MANS += $(MAN_LINUX_I2C_PAGES)
++man1m_MANS += $(MAN_LINUX_I2C_PAGES)
+ endif WITH_LINUX_I2C
+ 
+ HTML_LINUX_I2C_MANS = asem.html pijuice.html
+@@ -709,11 +709,11 @@
+ SRC_GPIO_PAGES = generic_gpio.txt
+ if ! SOME_DRIVERS
+ if WITH_MANS
+-MAN_GPIO_PAGES = generic_gpio.8
++MAN_GPIO_PAGES = generic_gpio.1m
+ endif WITH_MANS
+ 
+ if WITH_GPIO
+-man8_MANS += $(MAN_GPIO_PAGES)
++man1m_MANS += $(MAN_GPIO_PAGES)
+ endif WITH_GPIO
+ 
+ HTML_GPIO_MANS = generic_gpio.html
+@@ -726,10 +726,10 @@
+ 	$(MAN_CLIENT_PAGES) \
+ 	$(MAN_TOOL_PAGES) \
+ 	$(MAN5_CGI_PAGES) \
+-	$(MAN8_CGI_PAGES) \
++	$(MAN1M_CGI_PAGES) \
+ 	$(MAN1_DEV_PAGES) \
+ 	$(MAN3_DEV_PAGES) \
+-	$(MAN8_DEV_PAGES) \
++	$(MAN1M_DEV_PAGES) \
+ 	$(MAN_SERIAL_PAGES) \
+ 	$(MAN_SNMP_PAGES) \
+ 	$(MAN_USB_LIBUSB_PAGES) \
+@@ -930,7 +930,8 @@
+ 
+ CLEANFILES = *-spellchecked
+ 
+-SUFFIXES = .txt .html .1 .3 .5 .8
++SUFFIXES = .txt .html .1 .3 .5 .1m
++man_MANS = $(man1m_MANS)
+ 
+ # For builds with allowed installation of prebuild man pages, check that
+ # they exist in sources (make would pull them automatically as a fallback
+@@ -944,7 +944,7 @@
+ 
+ if HAVE_ASCIIDOC
+ 
+-CLEANFILES += *.1 *.3 *.5 *.8 *.xml *.html *.pdf
++CLEANFILES += *.1 *.3 *.5 *.1m *.xml *.html *.pdf
+ 
+ # Working around a2x not friendly to parallelized runs.
+ # See more details in the main NUT docs/Makefile.am
+@@ -1009,7 +1009,7 @@
+ 		-o "$${A2X_OUTDIR}/$(@F)" $< || RES=$$? ; \
+ 	 $(DOCBUILD_END) ; exit $$RES
+ 
+-### Prior to Asciidoc ~8.6.8, the --destination-dir flag didn't seem to affect the location of the intermediate .xml file.
++### Prior to Asciidoc ~8.6.1m, the --destination-dir flag didn't seem to affect the location of the intermediate .xml file.
+ ### This parameter is currently required; see docs/Makefile.am for more detail.
+ A2X_MANPAGE_OPTS = --doctype manpage --format manpage $${A2X_VERBOSE} \
+ 	--xsltproc-opts="--nonet" \
+@@ -1043,8 +1043,8 @@
+ 	 $(A2X) $(A2X_MANPAGE_OPTS) $< || RES=$$? ; \
+ 	 $(DOCBUILD_END) ; exit $$RES
+ 
+-.txt.8:
+-	@A2X_OUTDIR="tmp/man8.$(@F).$$$$" ; \
++.txt.1m:
++	@A2X_OUTDIR="tmp/man1m.$(@F).$$$$" ; \
+ 	 echo "  DOC-MAN  Generating $@"; \
+ 	 $(DOCBUILD_BEGIN) ; RES=0; \
+ 	 $(A2X) $(A2X_MANPAGE_OPTS) $< || RES=$$? ; \
+@@ -1088,7 +1088,7 @@
+ 		exit 1; \
+ 	fi
+ 
+-.txt.8:
++.txt.1m:
+ 	@if [ -r "$@" ] $(SRC_PREBUILT_CLAUSE); then \
+ 		echo "Not (re)building $@ manual page, since 'asciidoc', 'xmllint' or 'xsltproc' were not found." ; \
+ 	else \
+diff -Naur nut-2.8.1-orig/docs/man/masterguard.txt nut-2.8.1/docs/man/masterguard.txt
+--- nut-2.8.1-orig/docs/man/masterguard.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/masterguard.txt	2023-11-01 03:48:18.462239059 +0100
 @@ -1,5 +1,5 @@
 -MASTERGUARD(8)
 -==============
@@ -1141,60 +1629,80 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  masterguard driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
+ NOTE
+ ----
+@@ -19,11 +19,11 @@
+ Please note that this driver is deprecated and will not receive
+ new development. If it works for managing your devices -- fine,
+ but if you are running it to try setting up a new device, please
+-consider the newer linkman:nutdrv_qx[8] instead, which should
++consider the newer linkman:nutdrv_qx[1m] instead, which should
+ handle all 'Q*' protocol variants for NUT.
+ 
+ Please do also report if your device works with this driver,
+-but linkman:nutdrv_qx[8] would not actually support it with any
++but linkman:nutdrv_qx[1m] would not actually support it with any
+ subdriver!
+ 
  SUPPORTED HARDWARE
- ------------------
-@@ -30,7 +30,7 @@
+@@ -48,12 +48,12 @@
+ Newer driver:
+ ~~~~~~~~~~~~~
+ 
+-linkman:nutdrv_qx[8]
++linkman:nutdrv_qx[1m]
  
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/metasys.txt nut-2.7.4/docs/man/metasys.txt
---- nut-2.7.4/docs/man8/metasys.txt	2016-12-29 13:17:35.428904835 +0300
-+++ nut-2.7.4/docs/man/metasys.txt	2016-12-29 13:29:28.565902281 +0300
+diff -Naur nut-2.8.1-orig/docs/man/metasys.txt nut-2.8.1/docs/man/metasys.txt
+--- nut-2.8.1-orig/docs/man/metasys.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/metasys.txt	2023-11-01 03:48:21.127765732 +0100
 @@ -1,5 +1,5 @@
 -METASYS(8)
 -==========
 +METASYS(1m)
 +===========
  
- NAME  
+ NAME
  ----
 @@ -11,7 +11,7 @@
  
  This man page only documents the hardware-specific features of the
- metasys driver.  For information about the core driver, see  
+ metasys driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -56,7 +56,7 @@
- 
+@@ -61,7 +61,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/mge-shut.txt nut-2.7.4/docs/man/mge-shut.txt
---- nut-2.7.4/docs/man8/mge-shut.txt	2016-12-29 13:17:35.429071940 +0300
-+++ nut-2.7.4/docs/man/mge-shut.txt	2016-12-29 13:29:28.567011432 +0300
+diff -Naur nut-2.8.1-orig/docs/man/mge-shut.txt nut-2.8.1/docs/man/mge-shut.txt
+--- nut-2.8.1-orig/docs/man/mge-shut.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/mge-shut.txt	2023-11-01 03:48:28.468512641 +0100
 @@ -1,5 +1,5 @@
--MGE-SHUT(8) 
+-MGE-SHUT(8)
 -===========
-+MGE-SHUT(1m) 
++MGE-SHUT(1m)
 +============
  
  NAME
@@ -1217,22 +1725,22 @@
  +
  The factory default value is 30 (in percent), and can be settable depending on
  the exact model.
-@@ -90,7 +90,7 @@
- 
+@@ -91,7 +91,7 @@
  The core driver
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/mge-utalk.txt nut-2.7.4/docs/man/mge-utalk.txt
---- nut-2.7.4/docs/man8/mge-utalk.txt	2016-12-29 13:17:35.429230328 +0300
-+++ nut-2.7.4/docs/man/mge-utalk.txt	2016-12-29 13:29:28.568107216 +0300
+diff -Naur nut-2.8.1-orig/docs/man/mge-utalk.txt nut-2.8.1/docs/man/mge-utalk.txt
+--- nut-2.8.1-orig/docs/man/mge-utalk.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/mge-utalk.txt	2023-11-01 03:48:35.948902673 +0100
 @@ -1,5 +1,5 @@
--MGE-UTALK(8) 
+-MGE-UTALK(8)
 -============
-+MGE-UTALK(1m) 
++MGE-UTALK(1m)
 +=============
  
  NAME
@@ -1240,7 +1748,7 @@
 @@ -15,7 +15,7 @@
  
  NOTE: This man page only documents the hardware-specific features of the
- mge-utalk driver.  For information about the core driver, see  
+ mge-utalk driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
@@ -1255,18 +1763,18 @@
  +
  The factory default value is 30 (in percent), and can be settable depending on
  the exact model.
-@@ -91,7 +91,7 @@
- 
+@@ -92,7 +92,7 @@
  The core driver
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/microdowell.txt nut-2.7.4/docs/man/microdowell.txt
---- nut-2.7.4/docs/man8/microdowell.txt	2016-12-29 13:17:35.429389824 +0300
-+++ nut-2.7.4/docs/man/microdowell.txt	2016-12-29 13:29:28.568738780 +0300
+diff -Naur nut-2.8.1-orig/docs/man/microdowell.txt nut-2.8.1/docs/man/microdowell.txt
+--- nut-2.8.1-orig/docs/man/microdowell.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/microdowell.txt	2023-11-01 03:48:40.079228728 +0100
 @@ -1,5 +1,5 @@
 -MICRODOWELL(8)
 -==============
@@ -1284,37 +1792,75 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -33,7 +33,7 @@
- 
+@@ -36,7 +36,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/netxml-ups.txt nut-2.7.4/docs/man/netxml-ups.txt
---- nut-2.7.4/docs/man8/netxml-ups.txt	2016-12-29 13:17:35.429541470 +0300
-+++ nut-2.7.4/docs/man/netxml-ups.txt	2016-12-29 13:29:28.569940433 +0300
+diff -Naur nut-2.8.1-orig/docs/man/microsol-apc.txt nut-2.8.1/docs/man/microsol-apc.txt
+--- nut-2.8.1-orig/docs/man/microsol-apc.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/microsol-apc.txt	2023-11-01 03:48:45.002986044 +0100
+@@ -1,5 +1,5 @@
+-MICROSOL-APC(8)
+-===============
++MICROSOL-APC(1m)
++================
+ 
+ NAME
+ ----
+@@ -11,7 +11,7 @@
+ 
+ This man page only documents the hardware-specific features of the
+ microsol-apc driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -24,7 +24,7 @@
+ 
+ In 2009, Schneider Electric acquired Microsol Technologies, and by 2012, the
+ entire Microsol line was being sold under the APC brand. This driver supports
+-these newer, APC-branded models. Older equipment should use linkman:solis[8].
++these newer, APC-branded models. Older equipment should use linkman:solis[1m].
+ 
+ EXTRA ARGUMENTS
+ ---------------
+@@ -65,7 +65,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/netxml-ups.txt nut-2.8.1/docs/man/netxml-ups.txt
+--- nut-2.8.1-orig/docs/man/netxml-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/netxml-ups.txt	2023-11-01 03:48:48.630031568 +0100
 @@ -1,5 +1,5 @@
 -netxml-ups(8)
 -=============
 +netxml-ups(1m)
 +==============
  
- NAME  
+ NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -12,7 +12,7 @@
+ 
  This man page only documents the hardware-specific features of the
- netxml-ups driver.  For information about the core driver, see  
+ netxml-ups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -27,7 +27,7 @@
-  * ePDU Monitored (newer version). 
+@@ -30,7 +30,7 @@
+  * ePDU Monitored (newer version).
  
  Older models, such as SNMP card (Ref 66062 and Ref 66045), use the SNMP
 -protocol and should use the linkman:snmp-ups[8] driver with the "mibs=mge"
@@ -1322,7 +1868,7 @@
  parameter.
  
  EXTRA ARGUMENTS
-@@ -40,7 +40,7 @@
+@@ -44,7 +44,7 @@
  Don't change this value unless you know exactly what you're doing.
  
  This value *must never* be higher than half the MAXAGE value specified in
@@ -1331,7 +1877,7 @@
  the driver stale while it is waiting for a connection to timeout.
  
  *subscribe*::
-@@ -80,7 +80,7 @@
+@@ -94,7 +94,7 @@
  443 for https) it may be omitted.
  
  In order not to overload older NMCs by polling them too frequently, it is
@@ -1340,22 +1886,80 @@
  linkman:ups.conf[5]) to at least 5 seconds.
  
  KNOWN ISSUES
-@@ -100,7 +100,7 @@
- 
+@@ -117,7 +117,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/nut-ipmipsu.txt nut-2.7.4/docs/man/nut-ipmipsu.txt
---- nut-2.7.4/docs/man8/nut-ipmipsu.txt	2016-12-29 13:17:35.429717330 +0300
-+++ nut-2.7.4/docs/man/nut-ipmipsu.txt	2016-12-29 13:29:28.571414641 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nut_usb_addvars.txt nut-2.8.1/docs/man/nut_usb_addvars.txt
+--- nut-2.8.1-orig/docs/man/nut_usb_addvars.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut_usb_addvars.txt	2023-11-01 03:43:21.901818089 +0100
+@@ -43,7 +43,7 @@
+ (minus any surrounding whitespace), or the whole 4-digit
+ hexadecimal code for `vendorid` and `productid`.
+ +
+-Try *lsusb(8)* or running this NUT driver with *-DD* command-line
++Try *lsusb(1m)* or running this NUT driver with *-DD* command-line
+ argument for finding out the strings to match.
+ +
+ Examples:
+@@ -57,14 +57,14 @@
+ Select a UPS on a specific USB bus or group of buses. The argument is
+ a regular expression that must match the bus name where the UPS is
+ connected (e.g. `bus="002"` or `bus="00[2-3]"`) as seen on Linux in
+-`/sys/bus/usb/devices` or *lsusb(8)*; including leading zeroes.
++`/sys/bus/usb/devices` or *lsusb(1m)*; including leading zeroes.
+ 
+ *device =* 'regex'::
+ 
+ Select a UPS on a specific USB device or group of devices. The argument is
+ a regular expression that must match the device name where the UPS is
+ connected (e.g. `device="001"` or `device="00[1-2]"`) as seen on Linux
+-in `/sys/bus/usb/devices` or *lsusb(8)*; including leading zeroes.
++in `/sys/bus/usb/devices` or *lsusb(1m)*; including leading zeroes.
+ +
+ NOTE: device numbers are not guaranteed by the OS to be stable across
+ re-boots or device re-plugging.
+diff -Naur nut-2.8.1-orig/docs/man/nut-driver-enumerator.txt nut-2.8.1/docs/man/nut-driver-enumerator.txt
+--- nut-2.8.1-orig/docs/man/nut-driver-enumerator.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut-driver-enumerator.txt	2023-11-01 03:48:52.193447599 +0100
 @@ -1,5 +1,5 @@
--NUT-IPMIPSU(8) 
+-NUT-DRIVER-ENUMERATOR(8)
+-========================
++NUT-DRIVER-ENUMERATOR(1m)
++=========================
+ 
+ NAME
+ ----
+@@ -31,7 +31,7 @@
+ other operating systems.
+ 
+ This script provides a uniform interface for further NUT tools
+-such as linkman:upsdrvsvcctl[8] to implement their logic as
++such as linkman:upsdrvsvcctl[1m] to implement their logic as
+ platform-independently as was possible and practical. It is not
+ currently intended for end-user consumption (and so is located in
+ the 'libexec' directory), with *upsdrvsvcctl* exposing the most
+@@ -142,7 +142,7 @@
+ SEE ALSO
+ --------
+ 
+-linkman:upsdrvsvcctl[8], linkman:ups.conf[5]
++linkman:upsdrvsvcctl[1m], linkman:ups.conf[5]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/nut-ipmipsu.txt nut-2.8.1/docs/man/nut-ipmipsu.txt
+--- nut-2.8.1-orig/docs/man/nut-ipmipsu.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut-ipmipsu.txt	2023-11-01 03:48:55.313152656 +0100
+@@ -1,5 +1,5 @@
+-NUT-IPMIPSU(8)
 -==============
-+NUT-IPMIPSU(1m) 
++NUT-IPMIPSU(1m)
 +===============
  
  NAME
@@ -1369,27 +1973,27 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -106,7 +106,7 @@
- --------
+@@ -111,7 +111,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/nut-recorder.txt nut-2.7.4/docs/man/nut-recorder.txt
---- nut-2.7.4/docs/man8/nut-recorder.txt	2016-12-29 13:17:35.429887448 +0300
-+++ nut-2.7.4/docs/man/nut-recorder.txt	2016-12-29 13:29:28.572266022 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nut-recorder.txt nut-2.8.1/docs/man/nut-recorder.txt
+--- nut-2.8.1-orig/docs/man/nut-recorder.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut-recorder.txt	2023-11-01 03:48:59.309048286 +0100
 @@ -1,5 +1,5 @@
 -NUT-RECORDER(8)
 -===============
 +NUT-RECORDER(1m)
 +================
  
- 
  NAME
-@@ -16,7 +16,7 @@
+ ----
+@@ -18,7 +18,7 @@
  power failures, or any other value changes) from upsd, and dump it in a .seq
  format.
  
@@ -1398,31 +2002,31 @@
  to replay the sequence.
  
  OPTIONS
-@@ -65,7 +65,7 @@
- SEE ALSO
- --------
+@@ -72,7 +72,7 @@
+ The dummy-ups driver:
+ ~~~~~~~~~~~~~~~~~~~~~
  
 -linkman:dummy-ups[8]
 +linkman:dummy-ups[1m]
  
- INTERNET RESOURCES
- ------------------
-diff -ur nut-2.7.4/docs/man8/nut-scanner.txt nut-2.7.4/docs/man/nut-scanner.txt
---- nut-2.7.4/docs/man8/nut-scanner.txt	2016-12-29 13:17:35.430034123 +0300
-+++ nut-2.7.4/docs/man/nut-scanner.txt	2016-12-29 13:29:28.574514802 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/nut-scanner.txt nut-2.8.1/docs/man/nut-scanner.txt
+--- nut-2.8.1-orig/docs/man/nut-scanner.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut-scanner.txt	2023-11-01 03:49:02.340774673 +0100
 @@ -1,5 +1,5 @@
 -NUT-SCANNER(8)
 -==============
 +NUT-SCANNER(1m)
 +===============
  
- 
  NAME
-diff -ur nut-2.7.4/docs/man8/nut.conf.txt nut-2.7.4/docs/man/nut.conf.txt
---- nut-2.7.4/docs/man8/nut.conf.txt	2016-12-29 13:17:35.430161610 +0300
-+++ nut-2.7.4/docs/man/nut.conf.txt	2016-12-29 13:17:50.894780083 +0300
-@@ -54,12 +54,12 @@
- the MODE should be set to netclient.
+ ----
+diff -Naur nut-2.8.1-orig/docs/man/nut.conf.txt nut-2.8.1/docs/man/nut.conf.txt
+--- nut-2.8.1-orig/docs/man/nut.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nut.conf.txt	2023-11-01 03:43:21.911278856 +0100
+@@ -66,12 +66,12 @@
+ become configured), this option is for you.
  
  *UPSD_OPTIONS*::
 -Optional.  Set upsd specific options. See linkman:upsd[8] for more
@@ -1436,9 +2040,9 @@
  more details.  It is ignored when 'MODE' above indicates that no
  upsmon should be running.
  
-diff -ur nut-2.7.4/docs/man8/nutdrv_atcl_usb.txt nut-2.7.4/docs/man/nutdrv_atcl_usb.txt
---- nut-2.7.4/docs/man8/nutdrv_atcl_usb.txt	2016-12-29 13:17:35.430299950 +0300
-+++ nut-2.7.4/docs/man/nutdrv_atcl_usb.txt	2016-12-29 13:29:28.575387223 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nutdrv_atcl_usb.txt nut-2.8.1/docs/man/nutdrv_atcl_usb.txt
+--- nut-2.8.1-orig/docs/man/nutdrv_atcl_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nutdrv_atcl_usb.txt	2023-11-01 03:49:21.004971513 +0100
 @@ -1,5 +1,5 @@
 -NUTDRV_ATCL_USB(8)
 -==================
@@ -1447,69 +2051,73 @@
  
  NAME
  ----
-@@ -8,7 +8,7 @@
- NOTE
+@@ -10,7 +10,7 @@
  ----
- This man page only documents the specific features of the nutdrv_atcl_usb 
+ 
+ This man page only documents the specific features of the nutdrv_atcl_usb
 -driver.  For information about the core driver, see linkman:nutupsdrv[8].
 +driver.  For information about the core driver, see linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -18,9 +18,9 @@
- chip, and for hardware manufactured by Kanji and Plexus, the microcontroller
+@@ -23,11 +23,11 @@
+ hardware manufactured by Kanji and Plexus, the microcontroller
  appears to emulate a traditional contact-closure interface. This translates
  into only three states in ups.status: *OL*, *OB* and *OB LB* (similar to
--linkman:genericups[8]), with no other dynamic status values reported. Note that
-+linkman:genericups[1m]), with no other dynamic status values reported. Note that
- these USB identifiers (including the iManufacturer string) have also been seen
--on devices that are supported by the `fuji` subdriver of linkman:nutdrv_qx[8].
-+on devices that are supported by the `fuji` subdriver of linkman:nutdrv_qx[1m].
+-linkman:genericups[8]), with no other dynamic status values reported.
++linkman:genericups[1m]), with no other dynamic status values reported.
+ 
+ Note that these USB identifiers (including the iManufacturer string)
+ have also been seen on devices that are supported by the `fuji`
+-subdriver of linkman:nutdrv_qx[8].
++subdriver of linkman:nutdrv_qx[1m].
  
  EXTRA ARGUMENTS
  ---------------
-@@ -31,7 +31,7 @@
- In case your iManufacturer (Vendor) string does not exactly match
- +ATCL FOR UPS+, you may provide an alternate string here. Note that a more
- likely case is that your device is handled by another driver for +0001:0000+
--devices, such as linkman:nutdrv_qx[8].
-+devices, such as linkman:nutdrv_qx[1m].
- 
- BUGS
- ----
-@@ -45,8 +45,8 @@
+@@ -41,7 +41,7 @@
+ the device does not provide a vendor string but you want this driver to match).
+ +
+ Note that a more likely case for mismatch is that your device is handled by
+-another driver for +0001:0000+ devices, such as linkman:nutdrv_qx[8].
++another driver for +0001:0000+ devices, such as linkman:nutdrv_qx[1m].
+ +
+ NOTE: This driver does not intend to support USB-matching settings common to
+ other drivers, such as *vendorid*, *product*, *productid*, *serial*, *device*
+@@ -61,8 +61,8 @@
  clean up).
  
- Most contact-closure UPSes will not power down the load if the line power 
--is present. This can create a race when using slave linkman:upsmon[8] systems.
--See the linkman:upsmon[8] man page for more information. The solution to this
-+is present. This can create a race when using slave linkman:upsmon[1m] systems.
-+See the linkman:upsmon[1m] man page for more information. The solution to this
- problem is to upgrade to a smart protocol UPS of some kind that allows
- detection and proper load cycling on command.
+ Most contact-closure UPSes will not power down the load if the line power is
+-present. This can create a race when using secondary linkman:upsmon[8]
+-systems. See the linkman:upsmon[8] man page for more information.
++present. This can create a race when using secondary linkman:upsmon[1m]
++systems. See the linkman:upsmon[1m] man page for more information.
+ The solution to this problem is to upgrade to a smart protocol UPS of some
+ kind that allows detection and proper load cycling on command.
  
-@@ -59,15 +59,15 @@
- 
+@@ -77,17 +77,17 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  The generic serial driver:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:genericups[8]
 +linkman:genericups[1m]
  
  The Qx driver:
  ~~~~~~~~~~~~~~
+ 
 -linkman:nutdrv_qx[8] (`fuji` subdriver)
 +linkman:nutdrv_qx[1m] (`fuji` subdriver)
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/nutdrv_qx.txt nut-2.7.4/docs/man/nutdrv_qx.txt
---- nut-2.7.4/docs/man8/nutdrv_qx.txt	2016-12-29 13:17:35.430482574 +0300
-+++ nut-2.7.4/docs/man/nutdrv_qx.txt	2016-12-29 13:29:28.582919216 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nutdrv_qx.txt nut-2.8.1/docs/man/nutdrv_qx.txt
+--- nut-2.8.1-orig/docs/man/nutdrv_qx.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nutdrv_qx.txt	2023-11-01 03:49:24.799065874 +0100
 @@ -1,5 +1,5 @@
 -NUTDRV_QX(8)
 -============
@@ -1527,7 +2135,7 @@
  
  
  SUPPORTED HARDWARE
-@@ -38,14 +38,14 @@
+@@ -48,14 +48,14 @@
  +
  Note that a value below 3 minutes, may cause earlier firmware versions to not switch on automatically, so it defaults to 3 minutes (i.e. 180 seconds).
  +
@@ -1544,7 +2152,16 @@
  
  *stayoff*::
  If you set stayoff in linkman:ups.conf[5] when FSD arises the UPS will call a *shutdown.stayoff* shutting down after *ups.delay.shutdown* seconds and won't return (see <<_known_problems,KNOWN PROBLEMS>>), otherwise (standard behaviour) the UPS will call *shutdown.return* shutting down after *ups.delay.shutdown* seconds and then turn on after *ups.delay.start* seconds (if mains meanwhile returned).
-@@ -349,7 +349,7 @@
+@@ -188,7 +188,7 @@
+ *slave_addr =* 'value'::
+ Make the claim function verify it's talking to the specified 'slave address' (*ups.id*).
+ Safeguard against talking to the wrong one of several identical UPSes on the same USB bus.
+-Note that when changing *ups.id* (through linkman:upsrw[8]) the driver will continue to talk to the UPS with the new 'slave address', but won't claim it again on restart until the *slave_addr* parameter is adjusted.
++Note that when changing *ups.id* (through linkman:upsrw[1m]) the driver will continue to talk to the UPS with the new 'slave address', but won't claim it again on restart until the *slave_addr* parameter is adjusted.
+ 
+ 
+ Q1 PROTOCOL
+@@ -398,7 +398,7 @@
  UPS COMMANDS
  ------------
  
@@ -1553,7 +2170,7 @@
  
  *beeper.toggle*::
  Toggle the UPS beeper.
-@@ -536,7 +536,7 @@
+@@ -605,7 +605,7 @@
  *battnumb*::
  This option has been renamed to *battery_number*.
  
@@ -1562,25 +2179,7 @@
  
  [horizontal]
  *battpacks*:: -> *battery.packs*
-@@ -660,7 +660,7 @@
- 
- .UPS Warnings for 'voltronic' UPSes
- [cols="5>,95",options="autowidth,header",frame="topbot",grid="rows",align="center",caption=""]
--|====
-+|=====
- |#	|Corresponding Warning
- |1	|Battery disconnected
- |2	|Neutral not connected
-@@ -721,7 +721,7 @@
- |57	|Abnormal warning on input phase angle
- |58	|Warning!! Cover of maintain switch is open
- |62	|EEPROM operation error
--|====
-+|=====
- 
- 
- AUTHORS
-@@ -738,15 +738,15 @@
+@@ -814,15 +814,15 @@
  SEE ALSO
  --------
  
@@ -1604,9 +2203,38 @@
  
  
  Internet Resources:
-diff -ur nut-2.7.4/docs/man8/nutscan.txt nut-2.7.4/docs/man/nutscan.txt
---- nut-2.7.4/docs/man8/nutscan.txt	2016-12-29 13:17:35.430612497 +0300
-+++ nut-2.7.4/docs/man/nutscan.txt	2016-12-29 13:17:50.896326263 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nutdrv_siemens_sitop.txt nut-2.8.1/docs/man/nutdrv_siemens_sitop.txt
+--- nut-2.8.1-orig/docs/man/nutdrv_siemens_sitop.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nutdrv_siemens_sitop.txt	2023-11-01 03:49:28.071723478 +0100
+@@ -1,5 +1,5 @@
+-NUTDRV_SIEMENS_SITOP(8)
+-=======================
++NUTDRV_SIEMENS_SITOP(1m)
++========================
+ 
+ NAME
+ ----
+@@ -11,7 +11,7 @@
+ 
+ This man page only documents the hardware-specific features of the
+ *nutdrv_siemens_sitop* driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -195,7 +195,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/nutscan.txt nut-2.8.1/docs/man/nutscan.txt
+--- nut-2.8.1-orig/docs/man/nutscan.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nutscan.txt	2023-11-01 03:43:21.954049017 +0100
 @@ -10,7 +10,7 @@
  -----------
  
@@ -1615,26 +2243,26 @@
 +related features that are also offered by linkman:nut-scanner[1m].
  
  It enables the discovery of supported NUT devices (USB, SNMP, Eaton XML/HTTP
- and IPMI) and NUT servers (using Avahi, or the classic connection method).
-@@ -49,7 +49,7 @@
- 
+ and IPMI) and NUT servers (either using Avahi, or the classic connection
+@@ -57,7 +57,7 @@
  SEE ALSO
  --------
+ 
 -linkman:nut-scanner[8],
 +linkman:nut-scanner[1m],
  linkman:nutscan_scan_usb[3], linkman:nutscan_scan_snmp[3],
- linkman:nutscan_scan_xml_http[3], linkman:nutscan_scan_nut[3],
+ linkman:nutscan_scan_xml_http_range[3], linkman:nutscan_scan_nut[3],
  linkman:nutscan_scan_avahi[3], linkman:nutscan_scan_ipmi[3],
-diff -ur nut-2.7.4/docs/man8/nutupsdrv.txt nut-2.7.4/docs/man/nutupsdrv.txt
---- nut-2.7.4/docs/man8/nutupsdrv.txt	2016-12-29 13:17:35.432911930 +0300
-+++ nut-2.7.4/docs/man/nutupsdrv.txt	2016-12-29 13:29:28.584991108 +0300
+diff -Naur nut-2.8.1-orig/docs/man/nutupsdrv.txt nut-2.8.1/docs/man/nutupsdrv.txt
+--- nut-2.8.1-orig/docs/man/nutupsdrv.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/nutupsdrv.txt	2023-11-01 03:49:31.742515522 +0100
 @@ -1,5 +1,5 @@
 -NUTUPSDRV(8)
 -============
 +NUTUPSDRV(1m)
 +=============
  
- NAME  
+ NAME
  ----
 @@ -23,7 +23,7 @@
  For information on the specific drivers, see their individual man pages.
@@ -1645,8 +2273,8 @@
  translating the native protocol of the UPS to the common format used by
  the rest of this package.
  
-@@ -39,7 +39,7 @@
- attached must be turned off to ensure a proper reboot when power returns.
+@@ -44,7 +44,7 @@
+ complement the nut-scanner to discover devices, along with in-depth data.
  
  NOTE: You probably don't want to use any of these options directly.  You
 -should use linkman:upsdrvctl[8] to control your drivers, and
@@ -1654,7 +2282,25 @@
  linkman:ups.conf[5] to configure them.  The rest of this manual describes
  options and parameters that generally are not needed by normal users.
  
-@@ -117,14 +117,14 @@
+@@ -65,7 +65,7 @@
+ linkman:ups.conf[5]. To be used instead of *-a* option when need to run
+ a driver not present in driver configuration file. Instead, driver
+ configuration have to be set with *-x* options directly in the command line.
+-As the driver instance cannot be controlled by linkman:upsdrvctl[8],
++As the driver instance cannot be controlled by linkman:upsdrvctl[1m],
+ this option should be used for specific needs only.
+ 
+ *-D*::
+@@ -170,7 +170,7 @@
+ you can set this option to `root` to bypass permission errors, especially with
+ USB-based drivers. However, you will want to remove this option later in order
+ to avoid permission conflicts between the driver and the unprivileged copy of
+-linkman:upsd[8].
++linkman:upsd[1m].
+ 
+ *-g* 'groupname'::
+ Override the unprivileged group name that the driver may use after startup
+@@ -189,14 +189,14 @@
  -----------
  
  Information about the startup process is printed to stdout.  Additional
@@ -1672,120 +2318,42 @@
  drivers can be started by hand for testing purposes, it is not recommended for
  production use.
  
-@@ -144,62 +144,62 @@
- --------
- 
+@@ -241,23 +241,23 @@
  Server:
--linkman:upsd[8]
-+linkman:upsd[1m]
+ ~~~~~~~
+ 
+-- linkman:upsd[8]
++- linkman:upsd[1m]
  
  Clients:
--linkman:upsc[8], linkman:upscmd[8],
--linkman:upsrw[8], linkman:upslog[8], linkman:upsmon[8]
-+linkman:upsc[1m], linkman:upscmd[1m],
-+linkman:upsrw[1m], linkman:upslog[1m], linkman:upsmon[1m]
+ ~~~~~~~~
+ 
+-- linkman:upsc[8]
+-- linkman:upscmd[8]
+-- linkman:upsrw[8]
+-- linkman:upslog[8]
+-- linkman:upsmon[8]
++- linkman:upsc[1m]
++- linkman:upscmd[1m]
++- linkman:upsrw[1m]
++- linkman:upslog[1m]
++- linkman:upsmon[1m]
  
  CGI programs:
--linkman:upsset.cgi[8], linkman:upsstats.cgi[8], linkman:upsimage.cgi[8]
-+linkman:upsset.cgi[1m], linkman:upsstats.cgi[1m], linkman:upsimage.cgi[1m]
+ ~~~~~~~~~~~~~
+ 
+-- linkman:upsset.cgi[8]
+-- linkman:upsstats.cgi[8]
+-- linkman:upsimage.cgi[8]
++- linkman:upsset.cgi[1m]
++- linkman:upsstats.cgi[1m]
++- linkman:upsimage.cgi[1m]
  
  Driver control:
--linkman:upsdrvctl[8]
-+linkman:upsdrvctl[1m]
- 
- Drivers:
--linkman:al175[8]
--linkman:apcsmart[8],
--linkman:bcmxcp[8],
--linkman:bcmxcp_usb[8],
--linkman:belkin[8],
--linkman:belkinunv[8],
--linkman:bestfcom[8],
--linkman:bestuferrups[8],
--linkman:bestups[8],
--linkman:blazer_ser[8],
--linkman:blazer_usb[8],
--linkman:cyberpower[8],
--linkman:dummy-ups[8],
--linkman:etapro[8],
--linkman:everups[8],
--linkman:gamatronic[8],
--linkman:genericups[8],
--linkman:isbmex[8],
--linkman:liebert[8],
--linkman:masterguard[8],
--linkman:metasys[8],
--linkman:mge-shut[8],
--linkman:mge-utalk[8],
--linkman:mge-xml[8],
--linkman:newmge-shut[8],
--linkman:nitram[8],
--linkman:nutdrv_qx[8],
--linkman:oneac[8],
--linkman:optiups[8],
--linkman:powercom[8],
--linkman:powerman-pdu[8],
--linkman:powerpanel[8],
--linkman:rhino[8],
--linkman:richcomm_usb[8],
--linkman:safenet[8],
--linkman:snmp-ups[8],
--linkman:solis[8],
--linkman:tripplite[8],
--linkman:tripplitesu[8],
--linkman:tripplite_usb[8],
--linkman:usbhid-ups[8],
--linkman:upscode2[8],
--linkman:victronups[8]
-+linkman:al175[1m]
-+linkman:apcsmart[1m],
-+linkman:bcmxcp[1m],
-+linkman:bcmxcp_usb[1m],
-+linkman:belkin[1m],
-+linkman:belkinunv[1m],
-+linkman:bestfcom[1m],
-+linkman:bestuferrups[1m],
-+linkman:bestups[1m],
-+linkman:blazer_ser[1m],
-+linkman:blazer_usb[1m],
-+linkman:cyberpower[1m],
-+linkman:dummy-ups[1m],
-+linkman:etapro[1m],
-+linkman:everups[1m],
-+linkman:gamatronic[1m],
-+linkman:genericups[1m],
-+linkman:isbmex[1m],
-+linkman:liebert[1m],
-+linkman:masterguard[1m],
-+linkman:metasys[1m],
-+linkman:mge-shut[1m],
-+linkman:mge-utalk[1m],
-+linkman:mge-xml[1m],
-+linkman:newmge-shut[1m],
-+linkman:nitram[1m],
-+linkman:nutdrv_qx[1m],
-+linkman:oneac[1m],
-+linkman:optiups[1m],
-+linkman:powercom[1m],
-+linkman:powerman-pdu[1m],
-+linkman:powerpanel[1m],
-+linkman:rhino[1m],
-+linkman:richcomm_usb[1m],
-+linkman:safenet[1m],
-+linkman:snmp-ups[1m],
-+linkman:solis[1m],
-+linkman:tripplite[1m],
-+linkman:tripplitesu[1m],
-+linkman:tripplite_usb[1m],
-+linkman:usbhid-ups[1m],
-+linkman:upscode2[1m],
-+linkman:victronups[1m]
- 
- Internet resources:
- The NUT (Network UPS Tools) home page: http://www.networkupstools.org/
-diff -ur nut-2.7.4/docs/man8/oneac.txt nut-2.7.4/docs/man/oneac.txt
---- nut-2.7.4/docs/man8/oneac.txt	2016-12-29 13:17:35.433058857 +0300
-+++ nut-2.7.4/docs/man/oneac.txt	2016-12-29 13:29:28.586387019 +0300
+ ~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/oneac.txt nut-2.8.1/docs/man/oneac.txt
+--- nut-2.8.1-orig/docs/man/oneac.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/oneac.txt	2023-11-01 03:49:34.513371405 +0100
 @@ -1,5 +1,5 @@
 -ONEAC(8)
 -========
@@ -1812,75 +2380,133 @@
  
  EXTRA ARGUMENTS
  ---------------
-@@ -40,7 +40,7 @@
- INSTANT COMMANDS
+@@ -42,7 +42,7 @@
  ----------------
+ 
  This driver supports the following Instant Commands.
 -(See linkman:upscmd[8])
 +(See linkman:upscmd[1m])
  
  All UPS units
  ~~~~~~~~~~~~~
-@@ -97,7 +97,7 @@
- 
+@@ -100,7 +100,7 @@
  Writable Variables
  ------------------
+ 
 -See linkman:upsrw[8] to see what variables are writable for the UPS.
 +See linkman:upsrw[1m] to see what variables are writable for the UPS.
  
  NOTE: If your UPS supports writing battery.runtime.low, the new set value
  is to be entered in minutes (up to 99) but the reported value is reported
-@@ -118,7 +118,7 @@
- 
+@@ -123,7 +123,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/optiups.txt nut-2.7.4/docs/man/optiups.txt
---- nut-2.7.4/docs/man8/optiups.txt	2016-12-29 13:17:35.433215048 +0300
-+++ nut-2.7.4/docs/man/optiups.txt	2016-12-29 13:29:28.587425446 +0300
+diff -Naur nut-2.8.1-orig/docs/man/optiups.txt nut-2.8.1/docs/man/optiups.txt
+--- nut-2.8.1-orig/docs/man/optiups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/optiups.txt	2023-11-01 03:49:38.882285563 +0100
 @@ -1,5 +1,5 @@
 -OPTIUPS(8)
 -==========
 +OPTIUPS(1m)
 +===========
  
- NAME  
+ NAME
  ----
 @@ -11,7 +11,7 @@
  
  This man page only documents the hardware-specific features of the
- optiups driver.  For information about the core driver, see  
+ optiups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -85,7 +85,7 @@
- 
+@@ -91,7 +91,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/powercom.txt nut-2.7.4/docs/man/powercom.txt
---- nut-2.7.4/docs/man8/powercom.txt	2016-12-29 13:17:35.433381858 +0300
-+++ nut-2.7.4/docs/man/powercom.txt	2016-12-29 13:29:28.589529951 +0300
+diff -Naur nut-2.8.1-orig/docs/man/phoenixcontact_modbus.txt nut-2.8.1/docs/man/phoenixcontact_modbus.txt
+--- nut-2.8.1-orig/docs/man/phoenixcontact_modbus.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/phoenixcontact_modbus.txt	2023-11-01 03:49:43.273187364 +0100
+@@ -1,5 +1,5 @@
+-PHOENIXCONTACT_MODBUS(8)
+-========================
++PHOENIXCONTACT_MODBUS(1m)
++=========================
+ 
+ NAME
+ ----
+@@ -15,7 +15,7 @@
+ 
+ NOTE: This man page only documents the hardware-specific features of the
+ phoenixcontact_modbus driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -98,7 +98,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/pijuice.txt nut-2.8.1/docs/man/pijuice.txt
+--- nut-2.8.1-orig/docs/man/pijuice.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/pijuice.txt	2023-11-01 03:49:46.702036819 +0100
+@@ -1,5 +1,5 @@
+-PIJUICE(8)
+-==========
++PIJUICE(1m)
++===========
+ 
+ NAME
+ ----
+@@ -11,7 +11,7 @@
+ 
+ This man page only documents the hardware-specific features of the
+ *pijuice* driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ NOTE: This manual page was hastily adapted from related `asem` driver
+ manpage based on information from the original pull request, and so
+@@ -74,7 +74,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/powercom.txt nut-2.8.1/docs/man/powercom.txt
+--- nut-2.8.1-orig/docs/man/powercom.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/powercom.txt	2023-11-01 03:49:50.781721492 +0100
 @@ -1,5 +1,5 @@
 -POWERCOM(8)
 -===========
 +POWERCOM(1m)
 +============
  
- NAME  
+ NAME
  ----
-@@ -10,14 +10,14 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  powercom driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -1888,6 +2514,7 @@
  
  SUPPORTED HARDWARE
  ------------------
+@@ -19,7 +19,7 @@
  This driver supports many similar kinds of serial UPS hardware (as well as a
  few USB UPS models with USB-to-serial adapters).  The most common ones are the
  Trust 425/625, Powercom, and Advice Partner/King PR750.  Others using the same
@@ -1896,22 +2523,22 @@
  
  For more specific guidance on which driver is applicable for a USB connection,
  see the NUT Hardware Compatibility List (HCL).
-@@ -204,7 +204,7 @@
- 
+@@ -224,7 +224,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/powerman-pdu.txt nut-2.7.4/docs/man/powerman-pdu.txt
---- nut-2.7.4/docs/man8/powerman-pdu.txt	2016-12-29 13:17:35.433512301 +0300
-+++ nut-2.7.4/docs/man/powerman-pdu.txt	2016-12-29 13:29:28.590517030 +0300
+diff -Naur nut-2.8.1-orig/docs/man/powerman-pdu.txt nut-2.8.1/docs/man/powerman-pdu.txt
+--- nut-2.8.1-orig/docs/man/powerman-pdu.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/powerman-pdu.txt	2023-11-01 03:49:53.615315754 +0100
 @@ -1,5 +1,5 @@
--POWERMAN-PDU(8) 
+-POWERMAN-PDU(8)
 -===============
-+POWERMAN-PDU(1m) 
++POWERMAN-PDU(1m)
 +================
  
  NAME
@@ -1925,27 +2552,27 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -38,7 +38,7 @@
- 
+@@ -39,7 +39,7 @@
  UPS COMMANDS
  ------------
+ 
 -The following instant commands (see linkman:upscmd[8]) are available for each
 +The following instant commands (see linkman:upscmd[1m]) are available for each
  outlet of the PDU, with *X* standing for the outlet number:
  
  *outlet.X.load.on*::
-@@ -78,7 +78,7 @@
- --------
+@@ -84,7 +84,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/powerpanel.txt nut-2.7.4/docs/man/powerpanel.txt
---- nut-2.7.4/docs/man8/powerpanel.txt	2016-12-29 13:17:35.433655044 +0300
-+++ nut-2.7.4/docs/man/powerpanel.txt	2016-12-29 13:29:28.592172468 +0300
+diff -Naur nut-2.8.1-orig/docs/man/powerpanel.txt nut-2.8.1/docs/man/powerpanel.txt
+--- nut-2.8.1-orig/docs/man/powerpanel.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/powerpanel.txt	2023-11-01 03:49:57.520811376 +0100
 @@ -1,5 +1,5 @@
 -POWERPANEL(8)
 -=============
@@ -1954,8 +2581,8 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  powerpanel driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -1963,27 +2590,44 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -48,7 +48,7 @@
- VARIABLES
+@@ -21,7 +21,7 @@
+ autodetect which protocol is used.
+ 
+ If your Cyber Power Systems UPS has a USB port, you may wish to use the
+-linkman:usbhid-ups[8] driver. The linkman:snmp-ups[8] driver supports several
++linkman:usbhid-ups[1m] driver. The linkman:snmp-ups[1m] driver supports several
+ network cards via SNMP.
+ 
+ EXTRA ARGUMENTS
+@@ -56,7 +56,7 @@
  ---------
+ 
  Depending on the type of your UPS unit, some of the following variables may
 -be changed with linkman:upsrw[8]. If the driver can't read a variable from the
 +be changed with linkman:upsrw[1m]. If the driver can't read a variable from the
  UPS, it will not be made available.
  
  *input.transfer.high*::
-@@ -131,7 +131,7 @@
- 
+@@ -145,13 +145,13 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
+ Other drivers:
+ ~~~~~~~~~~~~~~
+ 
+-linkman:usbhid-ups[8],
+-linkman:snmp-ups[8]
++linkman:usbhid-ups[1m],
++linkman:snmp-ups[1m]
+ 
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/rhino.txt nut-2.7.4/docs/man/rhino.txt
---- nut-2.7.4/docs/man8/rhino.txt	2016-12-29 13:17:35.433816915 +0300
-+++ nut-2.7.4/docs/man/rhino.txt	2016-12-29 13:29:28.592908890 +0300
+diff -Naur nut-2.8.1-orig/docs/man/rhino.txt nut-2.8.1/docs/man/rhino.txt
+--- nut-2.8.1-orig/docs/man/rhino.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/rhino.txt	2023-11-01 03:50:00.426539341 +0100
 @@ -1,5 +1,5 @@
 -RHINO(8)
 -========
@@ -1992,8 +2636,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  rhino driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2001,18 +2645,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -52,7 +52,7 @@
- 
+@@ -57,7 +57,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/richcomm_usb.txt nut-2.7.4/docs/man/richcomm_usb.txt
---- nut-2.7.4/docs/man8/richcomm_usb.txt	2016-12-29 13:17:35.433965994 +0300
-+++ nut-2.7.4/docs/man/richcomm_usb.txt	2016-12-29 13:29:28.593569123 +0300
+diff -Naur nut-2.8.1-orig/docs/man/richcomm_usb.txt nut-2.8.1/docs/man/richcomm_usb.txt
+--- nut-2.8.1-orig/docs/man/richcomm_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/richcomm_usb.txt	2023-11-01 03:50:03.275738696 +0100
 @@ -1,5 +1,5 @@
 -RICHCOMM_USB(8)
 -===============
@@ -2021,54 +2665,58 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- NOTE
+@@ -11,7 +11,7 @@
  ----
- This man page only documents the specific features of the richcomm_usb 
+ 
+ This man page only documents the specific features of the richcomm_usb
 -driver.  For information about the core driver, see linkman:nutupsdrv[8].
 +driver.  For information about the core driver, see linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -17,13 +17,13 @@
+@@ -20,7 +20,7 @@
  used to upgrade an existing (RS-232) contact closure UPS interface to USB.
  As such, all the limitations of the underlying contact closure interface
  apply.  This means that you will only get the essentials in ups.status: OL,
 -OB, and LB.  See also linkman:genericups[8].
 +OB, and LB.  See also linkman:genericups[1m].
  
- BUGS
+ ////////
+ TODO: Uncomment after solving https://github.com/networkupstools/nut/issues/1768
+@@ -35,8 +35,8 @@
  ----
- Most contact-closure UPSes will not power down the load if the line power 
--is present.  This can create a race when using slave linkman:upsmon[8] 
+ 
+ Most contact-closure UPSes will not power down the load if the line power
+-is present.  This can create a race when using secondary linkman:upsmon[8]
 -systems.  See the linkman:upsmon[8] man page for more information.
-+is present.  This can create a race when using slave linkman:upsmon[1m] 
++is present.  This can create a race when using secondary linkman:upsmon[1m]
 +systems.  See the linkman:upsmon[1m] man page for more information.
  
- The solution to both of these problems is to upgrade to a smart protocol 
+ The solution to both of these problems is to upgrade to a smart protocol
  UPS of some kind that allows detection and proper load cycling on command.
-@@ -39,11 +39,11 @@
- 
+@@ -53,12 +53,12 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  The generic serial driver:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:genericups[8]
 +linkman:genericups[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/riello_ser.txt nut-2.7.4/docs/man/riello_ser.txt
---- nut-2.7.4/docs/man8/riello_ser.txt	2016-12-29 13:17:35.434121970 +0300
-+++ nut-2.7.4/docs/man/riello_ser.txt	2016-12-29 13:29:28.594173338 +0300
+diff -Naur nut-2.8.1-orig/docs/man/riello_ser.txt nut-2.8.1/docs/man/riello_ser.txt
+--- nut-2.8.1-orig/docs/man/riello_ser.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/riello_ser.txt	2023-11-01 03:50:07.024323869 +0100
 @@ -1,5 +1,5 @@
--RIELLO_SER(8) 
--===========
-+RIELLO_SER(1m) 
-+============
+-RIELLO_SER(8)
+-=============
++RIELLO_SER(1m)
++==============
  
  NAME
  ----
@@ -2081,23 +2729,23 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -36,7 +36,7 @@
- 
+@@ -37,7 +37,7 @@
  The core driver
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/riello_usb.txt nut-2.7.4/docs/man/riello_usb.txt
---- nut-2.7.4/docs/man8/riello_usb.txt	2016-12-29 13:17:35.434292534 +0300
-+++ nut-2.7.4/docs/man/riello_usb.txt	2016-12-29 13:29:28.594748421 +0300
+diff -Naur nut-2.8.1-orig/docs/man/riello_usb.txt nut-2.8.1/docs/man/riello_usb.txt
+--- nut-2.8.1-orig/docs/man/riello_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/riello_usb.txt	2023-11-01 03:50:09.984000498 +0100
 @@ -1,5 +1,5 @@
--RIELLO_USB(8) 
--===========
-+RIELLO_USB(1m) 
-+============
+-RIELLO_USB(8)
+-=============
++RIELLO_USB(1m)
++==============
  
  NAME
  ----
@@ -2110,18 +2758,18 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -35,7 +35,7 @@
- 
+@@ -40,7 +40,7 @@
  The core driver
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/safenet.txt nut-2.7.4/docs/man/safenet.txt
---- nut-2.7.4/docs/man8/safenet.txt	2016-12-29 13:17:35.434462089 +0300
-+++ nut-2.7.4/docs/man/safenet.txt	2016-12-29 13:29:28.595896460 +0300
+diff -Naur nut-2.8.1-orig/docs/man/safenet.txt nut-2.8.1/docs/man/safenet.txt
+--- nut-2.8.1-orig/docs/man/safenet.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/safenet.txt	2023-11-01 03:50:13.634280881 +0100
 @@ -1,5 +1,5 @@
 -SAFENET(8)
 -==========
@@ -2130,8 +2778,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  safenet driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2139,27 +2787,27 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -40,7 +40,7 @@
+@@ -45,7 +45,7 @@
+ INSTANT COMMANDS
+ ----------------
  
- UPSCMD
- ------
 -This driver supports some instant commands (see linkman:upscmd[8]):
 +This driver supports some instant commands (see linkman:upscmd[1m]):
  
  *test.battery.start*::
  Start UPS self test
-@@ -94,7 +94,7 @@
- 
+@@ -102,7 +102,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/skel.txt nut-2.7.4/docs/man/skel.txt
---- nut-2.7.4/docs/man8/skel.txt	2016-12-29 13:17:35.434611918 +0300
-+++ nut-2.7.4/docs/man/skel.txt	2016-12-29 13:29:28.597210692 +0300
+diff -Naur nut-2.8.1-orig/docs/man/skel.txt nut-2.8.1/docs/man/skel.txt
+--- nut-2.8.1-orig/docs/man/skel.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/skel.txt	2023-11-01 03:50:18.208875773 +0100
 @@ -1,5 +1,5 @@
 -SKEL(8)
 -=======
@@ -2168,8 +2816,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  *skel* driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2177,7 +2825,7 @@
  
  //////////////////////////////////////////
  The following lines are comments.
-@@ -26,7 +26,7 @@
+@@ -28,7 +28,7 @@
  
  In the "NAME" section, you must follow the format above, including separating
  the driver name from its description by "-". This is to ensure that the
@@ -2186,18 +2834,47 @@
  //////////////////////////////////////////
  
  SUPPORTED HARDWARE
-@@ -114,7 +114,7 @@
- 
+@@ -121,7 +121,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/snmp-ups.txt nut-2.7.4/docs/man/snmp-ups.txt
---- nut-2.7.4/docs/man8/snmp-ups.txt	2016-12-29 13:17:35.434771758 +0300
-+++ nut-2.7.4/docs/man/snmp-ups.txt	2016-12-29 13:29:28.599039082 +0300
+diff -Naur nut-2.8.1-orig/docs/man/sms_ser.txt nut-2.8.1/docs/man/sms_ser.txt
+--- nut-2.8.1-orig/docs/man/sms_ser.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/sms_ser.txt	2023-11-01 03:50:20.916528088 +0100
+@@ -1,5 +1,5 @@
+-SMS_SER(8)
+-==========
++SMS_SER(1m)
++===========
+ 
+ NAME
+ ----
+@@ -15,7 +15,7 @@
+ 
+ NOTE: This man page only documents the hardware-specific features
+ of the sms_ser driver.  For information about the core driver, see
+-linkman:nutupsdrv[8], and for the technical background check in
++linkman:nutupsdrv[1m], and for the technical background check in
+ doc/sms-brazil-protocol.txt.
+ 
+ NOTE: Given the proximity of this protocol to Megatec Qx family,
+@@ -42,7 +42,7 @@
+ The core driver
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources
+ ~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/snmp-ups.txt nut-2.8.1/docs/man/snmp-ups.txt
+--- nut-2.8.1-orig/docs/man/snmp-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/snmp-ups.txt	2023-11-01 03:50:23.464541489 +0100
 @@ -1,5 +1,5 @@
 -snmp-ups(8)
 -===========
@@ -2206,8 +2883,8 @@
  
  NAME
  ----
-@@ -10,7 +10,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  snmp-ups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2215,18 +2892,94 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -172,7 +172,7 @@
- 
+@@ -227,7 +227,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  NUT SNMP Protocols Library
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/solis.txt nut-2.7.4/docs/man/solis.txt
---- nut-2.7.4/docs/man8/solis.txt	2016-12-29 13:17:35.434945489 +0300
-+++ nut-2.7.4/docs/man/solis.txt	2016-12-29 13:29:28.599863473 +0300
+diff -Naur nut-2.8.1-orig/docs/man/sockdebug.txt nut-2.8.1/docs/man/sockdebug.txt
+--- nut-2.8.1-orig/docs/man/sockdebug.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/sockdebug.txt	2023-11-01 03:50:26.077936470 +0100
+@@ -1,5 +1,5 @@
+-SOCKDEBUG(8)
+-============
++SOCKDEBUG(1m)
++=============
+ 
+ NAME
+ ----
+@@ -28,7 +28,7 @@
+ of the build workspace. Actual source files used depend on the platform.
+ 
+ It is used to connect to a NUT driver using the socket protocol on an
+-Unix socket or Windows pipe, similarly to how the linkman:upsd[8] data
++Unix socket or Windows pipe, similarly to how the linkman:upsd[1m] data
+ server talks to the locally running drivers in order to represent them
+ on the network further using the common NUT protocol of the Network UPS
+ Tools project, or how driver programs can communicate to their already
+@@ -75,7 +75,7 @@
+ SEE ALSO
+ --------
+ 
+-linkman:upsd[8]
++linkman:upsd[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/socomec_jbus.txt nut-2.8.1/docs/man/socomec_jbus.txt
+--- nut-2.8.1-orig/docs/man/socomec_jbus.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/socomec_jbus.txt	2023-11-01 03:50:28.844316679 +0100
+@@ -1,5 +1,5 @@
+-SOCOMEC_JBUS(8)
+-===============
++SOCOMEC_JBUS(1m)
++================
+ 
+ NAME
+ ----
+@@ -16,7 +16,7 @@
+ 
+ NOTE: This man page only documents the hardware-specific features of the
+ socomec_jbus driver.  For information about the core driver, see
+-linkman:nutupsdrv[8].
++linkman:nutupsdrv[1m].
+ 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -29,7 +29,7 @@
+ 2. Connection: RS-232
+ 
+ These are typically provided with a Netvision WEB/SNMP management
+-card / external box that would be better served by the linkman:snmp-ups[8]
++card / external box that would be better served by the linkman:snmp-ups[1m]
+ driver. In case netvision isn't available, you can hook up the UPS directly
+ via the serial port and use this driver.
+ 
+@@ -92,7 +92,7 @@
+ VARIABLES
+ ---------
+ 
+-This driver does not support writable runtime variables (see linkman:upsrw[8]):
++This driver does not support writable runtime variables (see linkman:upsrw[1m]):
+ for the same reasons.
+ Both should be trivial to implement, but since I've already found one or two
+ inconsistencies in the documentation, I'm withholding from trying them.
+@@ -155,7 +155,7 @@
+ The core driver:
+ ~~~~~~~~~~~~~~~~
+ 
+-linkman:nutupsdrv[8]
++linkman:nutupsdrv[1m]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/solis.txt nut-2.8.1/docs/man/solis.txt
+--- nut-2.8.1-orig/docs/man/solis.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/solis.txt	2023-11-01 03:50:31.954172885 +0100
 @@ -1,5 +1,5 @@
 -SOLIS(8)
 -========
@@ -2244,129 +2997,139 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -62,7 +62,7 @@
- 
+@@ -65,7 +65,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/tripplite_usb.txt nut-2.7.4/docs/man/tripplite_usb.txt
---- nut-2.7.4/docs/man8/tripplite_usb.txt	2016-12-29 13:17:35.435236763 +0300
-+++ nut-2.7.4/docs/man/tripplite_usb.txt	2016-12-29 13:29:28.601747700 +0300
+diff -Naur nut-2.8.1-orig/docs/man/tripplite_usb.txt nut-2.8.1/docs/man/tripplite_usb.txt
+--- nut-2.8.1-orig/docs/man/tripplite_usb.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/tripplite_usb.txt	2023-11-01 03:50:37.588001503 +0100
 @@ -1,5 +1,5 @@
 -TRIPPLITE_USB(8)
 -================
 +TRIPPLITE_USB(1m)
 +=================
  
- 
  NAME
-@@ -18,11 +18,11 @@
- HID-class devices, but are not true HID Power-Device Class devices.  So far,
- the devices supported by tripplite_usb have product ID 0001, and the newer
- units (such as those with "LCD" in the model name) with product ID 2001 require
--the linkman:usbhid-ups[8] driver instead.  Please report success or failure to
-+the linkman:usbhid-ups[1m] driver instead.  Please report success or failure to
- the nut-upsuser mailing list.  A key piece of information is the protocol
- number, returned in `ups.debug.0`.  Also, be sure to turn on debugging ('-DDD')
- for more informative log messages.  If your Tripp Lite UPS uses a serial port,
--you may wish to investigate the linkman:tripplite[8] or linkman:tripplite_su[8]
-+you may wish to investigate the linkman:tripplite[1m] or linkman:tripplite_su[1m]
- driver.
+ ----
+@@ -20,7 +20,7 @@
+ as USB HID-class devices, but are not true HID Power-Device Class devices.
+ So far, the devices supported by `tripplite_usb` have product ID 0001,
+ and the newer units (such as those with "LCD" in the model name) with
+-product ID 2001 require the linkman:usbhid-ups[8] driver instead.
++product ID 2001 require the linkman:usbhid-ups[1m] driver instead.
+ 
+ Please report success or failure to the nut-upsuser mailing list.
+ A key piece of information is the protocol number, returned in
+@@ -28,7 +28,7 @@
+ for more informative log messages.
+ 
+ If your Tripp Lite UPS uses a serial port, you may wish to investigate
+-the linkman:tripplite[8] or linkman:tripplitesu[8] drivers.
++the linkman:tripplite[1m] or linkman:tripplitesu[1m] drivers.
  
  This driver has been tested with the following models:
-@@ -47,7 +47,7 @@
- On the other hand, if the web page for your UPS on the Tripp-Lite website says
- "HID-compliant USB port also enables direct integration with built-in power
- management and auto-shutdown features of Windows and MAC OS X", then you should
--use the linkman:usbhid-ups[8] driver instead.
-+use the linkman:usbhid-ups[1m] driver instead.
+ 
+@@ -53,7 +53,7 @@
+ On the other hand, if the web page for your UPS on the Tripp-Lite website
+ says "HID-compliant USB port also enables direct integration with built-in
+ power management and auto-shutdown features of Windows and MAC OS X", then
+-you should use the linkman:usbhid-ups[8] driver instead.
++you should use the linkman:usbhid-ups[1m] driver instead.
  
  EXTRA ARGUMENTS
  ---------------
-@@ -72,7 +72,7 @@
- *bus*::
+@@ -68,7 +68,7 @@
+ Select a specific UPS by its unique UPS ID. The argument is a regular expression 
+ that must match the UPS ID string. This allows for precise identification of UPS 
+ devices when multiple devices of the same make and model are connected.
+-See below regarding how to read and write the ups id (unit id) using linkman:upsrw[8].
++See below regarding how to read and write the ups id (unit id) using linkman:upsrw[1m].
  
- This regular expression is used to match the USB bus (as seen in
--`/proc/bus/usb/devices` or lsusb(8); including leading zeroes).
-+`/proc/bus/usb/devices` or lsusb(1m); including leading zeroes).
  
- *product*::
- 
-@@ -81,7 +81,7 @@
- system, and you want to be sure that you shut them down in the correct order.
- 
- NOTE: This regex is matched against the full USB product string as seen in
--lsusb(8). The `ups.model` in the linkman:upsc[1] output only lists the name after
-+lsusb(1m). The `ups.model` in the linkman:upsc[1] output only lists the name after
- `TRIPP LITE`, so to match a SMART2200RMXL2U, you could use the regex
+ [NOTE]
+@@ -80,7 +80,7 @@
+ in the correct order.
+ +
+ This regex is matched against the full USB product string as seen in
+-lsusb(8). The `ups.model` in the linkman:upsc[1] output only lists the name
++lsusb(1m). The `ups.model` in the linkman:upsc[1] output only lists the name
+ after `TRIPP LITE`, so to match a SMART2200RMXL2U, you could use the regex
  `.*SMART2200.*`.
  
-@@ -105,18 +105,18 @@
+@@ -114,19 +114,19 @@
  *ups.delay.shutdown*::
  
- This variable is the same as the 'offdelay' setting, but it can be changed at
--runtime by linkman:upsrw[8].
-+runtime by linkman:upsrw[1m].
+ This variable is the same as the 'offdelay' setting, but it can be
+-changed at runtime by linkman:upsrw[8].
++changed at runtime by linkman:upsrw[1m].
  
  *ups.id*::
  
- Some SMARTPRO models feature an ID that can be set and retrieved. If your UPS
--supports this feature, this variable will be listed in the output of linkman:upsrw[8].
-+supports this feature, this variable will be listed in the output of linkman:upsrw[1m].
+ Some SMARTPRO models feature an Unit ID (ups.id) that can be set and retrieved.
+ If your UPS supports this feature, this variable will be listed in
+-the output of linkman:upsrw[8].
++the output of linkman:upsrw[1m].
  
  *outlet.1.switch*::
  
- Some Tripp Lite units have a switchable outlet (usually outlet #1) which can be
- turned on and off by writing '1' or '0', respectively, to `outlet.1.switch`
--with linkman:upsrw[8].
-+with linkman:upsrw[1m].
- If your unit has multiple switchable outlets, substitute the outlet number for
- '1' in the variable name. Be sure to test this first - there is no other way to
- be certain that the number used by the driver matches the label on the unit.
-@@ -137,7 +137,7 @@
+ Some Tripp Lite units have a switchable outlet (usually outlet #1)
+ which can be turned on and off by writing '1' or '0', respectively,
+-to `outlet.1.switch` with linkman:upsrw[8].
++to `outlet.1.switch` with linkman:upsrw[1m].
+ +
+ If your unit has multiple switchable outlets, substitute the outlet
+ number for '1' in the variable name. Be sure to test this first --
+@@ -149,17 +149,17 @@
  For instance, you can easily monitor an OMNIVS1000 and a SMART1500RM2U at the
  same time, since they have different USB Product ID strings. If you have two
- SMART1500RM2U units, you would have to find which USB bus number each unit is
--on (via lsusb(8)), which may result in ambiguities if the available USB ports
-+on (via lsusb(1m)), which may result in ambiguities if the available USB ports
- are on the same bus.
+ SMART1500RM2U units, you would have to find which USB bus and device number
+-each unit is on (via lsusb(8)).
++each unit is on (via lsusb(1m)).
  
- Some of the SMART*2U models have an ID number, but because this ID is not
-@@ -147,7 +147,7 @@
+ Some of the SMART*2U models have a configurable Unit ID number, and you can now use the `upsid` 
+ config argument to uniquely specify which UPS a given driver instance should control. 
+ This allows for precise identification of UPS devices when multiple devices are connected.
+-To retrieve or set the upsid use the linkman:upsrw[8] utility.
++To retrieve or set the upsid use the linkman:upsrw[1m] utility.
  
- AUTHOR
- ------
--Written by Charles Lepple, based on the linkman:tripplite[8] driver by Rickard E. (Rik)
-+Written by Charles Lepple, based on the linkman:tripplite[1m] driver by Rickard E. (Rik)
- Faith and Nicholas Kain. Please do not email the authors directly - use the
- nut-upsdev mailing list.
+ AUTHORS
+ -------
  
-@@ -159,15 +159,15 @@
+-Written by Charles Lepple, based on the linkman:tripplite[8] driver
++Written by Charles Lepple, based on the linkman:tripplite[1m] driver
+ by Rickard E. (Rik) Faith and Nicholas Kain.
  
+ Please do not email the authors directly - use the nut-upsdev mailing list.
+@@ -173,17 +173,17 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Other drivers for Tripp-Lite hardware:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:tripplite[8], linkman:tripplitesu[8], linkman:usbhid-ups[8]
 +linkman:tripplite[1m], linkman:tripplitesu[1m], linkman:usbhid-ups[1m]
  
  Other tools:
  ~~~~~~~~~~~~
+ 
 -regex(7), lsusb(8)
 +regex(7), lsusb(1m)
  
- 
- INTERNET RESOURCES
-diff -ur nut-2.7.4/docs/man8/tripplite.txt nut-2.7.4/docs/man/tripplite.txt
---- nut-2.7.4/docs/man8/tripplite.txt	2016-12-29 13:17:35.435088013 +0300
-+++ nut-2.7.4/docs/man/tripplite.txt	2016-12-29 13:29:28.602507536 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/tripplite.txt nut-2.8.1/docs/man/tripplite.txt
+--- nut-2.8.1-orig/docs/man/tripplite.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/tripplite.txt	2023-11-01 03:50:34.780254019 +0100
 @@ -1,5 +1,5 @@
 -TRIPPLITE(8)
 -============
@@ -2375,8 +3138,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  tripplite driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2384,23 +3147,24 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -49,11 +49,11 @@
- 
+@@ -57,12 +57,12 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Other drivers for Tripp-Lite hardware:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:tripplitesu[8], linkman:tripplite_usb[8], linkman:usbhid-ups[8]
 +linkman:tripplitesu[1m], linkman:tripplite_usb[1m], linkman:usbhid-ups[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/tripplitesu.txt nut-2.7.4/docs/man/tripplitesu.txt
---- nut-2.7.4/docs/man8/tripplitesu.txt	2016-12-29 13:17:35.435363921 +0300
-+++ nut-2.7.4/docs/man/tripplitesu.txt	2016-12-29 13:29:28.603177000 +0300
+diff -Naur nut-2.8.1-orig/docs/man/tripplitesu.txt nut-2.8.1/docs/man/tripplitesu.txt
+--- nut-2.8.1-orig/docs/man/tripplitesu.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/tripplitesu.txt	2023-11-01 03:50:40.819397787 +0100
 @@ -1,5 +1,5 @@
 -TRIPPLITESU(8)
 -==============
@@ -2409,8 +3173,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  tripplitesu driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2418,7 +3182,7 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -22,7 +22,7 @@
+@@ -26,7 +26,7 @@
  
  *lowbatt*='num'::
  Set the low battery warning threshold in percent at which shutdown is
@@ -2427,35 +3191,38 @@
  until there are only a few seconds left.  Common values are around 25--30.
  
  AUTHOR
-@@ -34,11 +34,11 @@
- 
+@@ -40,12 +40,12 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Other drivers for Tripp-Lite hardware:
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
 -linkman:tripplite[8], linkman:tripplite_usb[8], linkman:usbhid-ups[8]
 +linkman:tripplite[1m], linkman:tripplite_usb[1m], linkman:usbhid-ups[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/ups.conf.txt nut-2.7.4/docs/man/ups.conf.txt
---- nut-2.7.4/docs/man8/ups.conf.txt	2016-12-29 13:17:35.435510730 +0300
-+++ nut-2.7.4/docs/man/ups.conf.txt	2016-12-29 13:17:50.904944003 +0300
-@@ -8,8 +8,8 @@
+diff -Naur nut-2.8.1-orig/docs/man/ups.conf.txt nut-2.8.1/docs/man/ups.conf.txt
+--- nut-2.8.1-orig/docs/man/ups.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/ups.conf.txt	2023-11-01 03:43:22.004366308 +0100
+@@ -9,9 +9,9 @@
  DESCRIPTION
  -----------
  
--This file is read by the driver controller linkman:upsdrvctl[8], the UPS drivers
--that use the common core (see linkman:nutupsdrv[8], and linkman:upsd[8]).  The
-+This file is read by the driver controller linkman:upsdrvctl[1m], the UPS drivers
-+that use the common core (see linkman:nutupsdrv[1m], and linkman:upsd[1m]).  The
- file begins with global directives, and then each UPS has a section which
- contains a number of directives that set parameters for that UPS.
+-This file is read by the driver controller linkman:upsdrvctl[8],
+-the UPS drivers which use the common core (see linkman:nutupsdrv[8]),
+-linkman:nut-driver-enumerator[8], and the NUT data server linkman:upsd[8].
++This file is read by the driver controller linkman:upsdrvctl[1m],
++the UPS drivers which use the common core (see linkman:nutupsdrv[1m]),
++linkman:nut-driver-enumerator[1m], and the NUT data server linkman:upsd[1m].
+ The file begins with global directives, and then each UPS has a section
+ which contains a number of directives that set parameters for that UPS.
  
-@@ -35,7 +35,7 @@
+@@ -37,7 +37,7 @@
  		sdtype = 2
  		desc = "Database server UPS"
  
@@ -2464,16 +3231,71 @@
  "cable" and "sdtype" which have special meanings.  See the man pages of
  your driver(s) to learn which variables are supported and what they do.
  
-@@ -111,7 +111,7 @@
+@@ -99,8 +99,8 @@
+ This setting may be useful if the driver is creating too much of a load
+ on your monitoring system or network.
+ +
+-Note that some drivers (such as linkman:usbhid-ups[8], linkman:snmp-ups[8]
+-and linkman:nutdrv_qx[8]) also have an option called *pollfreq* which
++Note that some drivers (such as linkman:usbhid-ups[1m], linkman:snmp-ups[1m]
++and linkman:nutdrv_qx[1m]) also have an option called *pollfreq* which
+ controls how frequently some of the less critical parameters are polled.
+ Details are provided in the respective driver man pages.
  
- Required.  This specifies which program will be monitoring this UPS.  You
- need to specify the one that is compatible with your hardware.  See
--linkman:nutupsdrv[8] for more information on drivers in general and pointers to the
-+linkman:nutupsdrv[1m] for more information on drivers in general and pointers to the
- man pages of specific drivers.
+@@ -132,14 +132,14 @@
+ 
+ Optional.  Overrides the compiled-in default unprivileged username for
+ all NUT device drivers. See the discussion of the `-u` option in
+-linkman:nutupsdrv[8] for details.
++linkman:nutupsdrv[1m] for details.
+ 
+ *group*::
+ 
+ Optional.  Overrides the compiled-in (and/or global-section) default
+ unprivileged group name for all NUT device drivers, used for the
+ socket file access. See the discussion of the `-g` option in
+-linkman:nutupsdrv[8] for details.
++linkman:nutupsdrv[1m] for details.
+ This may be specifically useful for ensuring access to dynamic device
+ filesystem nodes, such as USB (or serial-over-USB) hot-plug support,
+ or with device filesystems re-generated by an OS for every reboot.
+@@ -158,7 +158,7 @@
+ 
+ Required.  This specifies which program will be monitoring this UPS.
+ You need to specify the one that is compatible with your hardware.
+-See linkman:nutupsdrv[8] for more information on drivers in general
++See linkman:nutupsdrv[1m] for more information on drivers in general
+ and pointers to the man pages of specific drivers.
  
  *port*::
-@@ -217,19 +217,19 @@
+@@ -173,7 +173,7 @@
+ 
+ Optional.  Overrides the compiled-in (and/or global-section) default
+ unprivileged username for a particular NUT device driver. See the
+-discussion of the `-u` option in linkman:nutupsdrv[8] for details.
++discussion of the `-u` option in linkman:nutupsdrv[1m] for details.
+ This may be specifically useful for ensuring access to dynamic device
+ filesystem nodes, such as USB (or serial-over-USB) hot-plug support,
+ or with device filesystems re-generated by an OS for every reboot.
+@@ -183,7 +183,7 @@
+ Optional.  Overrides the compiled-in (and/or global-section) default
+ unprivileged group name for a particular NUT device driver, used for
+ the socket file access. See the discussion of the `-g` option in
+-linkman:nutupsdrv[8] for details.
++linkman:nutupsdrv[1m] for details.
+ This may be specifically useful for ensuring access to dynamic device
+ filesystem nodes, such as USB (or serial-over-USB) hot-plug support,
+ or with device filesystems re-generated by an OS for every reboot.
+@@ -202,7 +202,7 @@
+ to immediately call the driver-specific default implementation of
+ `upsdrv_shutdown()` method, for same effect as when a NUT driver is
+ started with `-k` command-line flag.  This option can be toggled with
+-linkman:upsrw[8] as `driver.flag.allow_killpower` during run-time.
++linkman:upsrw[1m] as `driver.flag.allow_killpower` during run-time.
+ 
+ *desc*::
+ 
+@@ -308,21 +308,21 @@
  INTEGRATION
  -----------
  
@@ -2492,23 +3314,26 @@
  
  SEE ALSO
  --------
--linkman:upsd[8], linkman:nutupsdrv[8], linkman:upsdrvctl[8]
-+linkman:upsd[1m], linkman:nutupsdrv[1m], linkman:upsdrvctl[1m]
+ 
+-linkman:upsd[8], linkman:nutupsdrv[8], linkman:upsdrvctl[8],
+-linkman:upsdrvsvcctl[8]
++linkman:upsd[1m], linkman:nutupsdrv[1m], linkman:upsdrvctl[1m],
++linkman:upsdrvsvcctl[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsc.txt nut-2.7.4/docs/man/upsc.txt
---- nut-2.7.4/docs/man8/upsc.txt	2016-12-29 13:17:35.435649917 +0300
-+++ nut-2.7.4/docs/man/upsc.txt	2016-12-29 13:29:28.604463781 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsc.txt nut-2.8.1/docs/man/upsc.txt
+--- nut-2.8.1-orig/docs/man/upsc.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsc.txt	2023-11-01 03:50:43.272732969 +0100
 @@ -1,5 +1,5 @@
 -UPSC(8)
 -=======
 +UPSC(1m)
 +========
  
- 
  NAME
-@@ -31,7 +31,7 @@
+ ----
+@@ -33,7 +33,7 @@
  *-L* 'host'::
  
    As above, list all UPS names configured at 'host', including their description
@@ -2517,7 +3342,7 @@
    "localhost".  You may optionally add a colon and a port number to override the
    default port.
  
-@@ -54,7 +54,7 @@
+@@ -56,7 +56,7 @@
  --------
  
  To list all variables on an UPS named "myups" on a host
@@ -2526,7 +3351,7 @@
  
      $ upsc myups@mybox:1234
      battery.charge: 100.0
-@@ -98,7 +98,7 @@
+@@ -100,7 +100,7 @@
  upsc will either print a list of UPS names, a list of all supported variables
  and their values on the UPS, or an error message.  If you receive an error,
  make sure you have specified a valid UPS on the command line, that
@@ -2535,58 +3360,58 @@
  blocking you.
  
  HISTORY
-@@ -111,7 +111,7 @@
+@@ -113,7 +113,7 @@
  SEE ALSO
  --------
  
 -linkman:upsd[8]
 +linkman:upsd[1m]
  
- INTERNET RESOURCES
- ------------------
-diff -ur nut-2.7.4/docs/man8/upscli_fd.txt nut-2.7.4/docs/man/upscli_fd.txt
---- nut-2.7.4/docs/man8/upscli_fd.txt	2016-12-29 13:17:35.436332329 +0300
-+++ nut-2.7.4/docs/man/upscli_fd.txt	2016-12-29 13:17:50.905628962 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/upscli_fd.txt nut-2.8.1/docs/man/upscli_fd.txt
+--- nut-2.8.1-orig/docs/man/upscli_fd.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_fd.txt	2023-11-01 03:43:22.015389181 +0100
 @@ -20,7 +20,7 @@
- `UPSCONN_t` state structure and returns the value of the file descriptor
- for that connection, if any.
+ state structure and returns the value of the file descriptor for
+ that connection, if any.
  
 -This may be useful for determining if the connection to linkman:upsd[8]
 +This may be useful for determining if the connection to linkman:upsd[1m]
  has been lost.
  
  RETURN VALUE
-diff -ur nut-2.7.4/docs/man8/upscli_get.txt nut-2.7.4/docs/man/upscli_get.txt
---- nut-2.7.4/docs/man8/upscli_get.txt	2016-12-29 13:17:35.436495522 +0300
-+++ nut-2.7.4/docs/man/upscli_get.txt	2016-12-29 13:17:50.905954859 +0300
-@@ -18,7 +18,7 @@
+diff -Naur nut-2.8.1-orig/docs/man/upscli_get.txt nut-2.8.1/docs/man/upscli_get.txt
+--- nut-2.8.1-orig/docs/man/upscli_get.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_get.txt	2023-11-01 03:43:22.017135188 +0100
+@@ -20,7 +20,7 @@
  The *upscli_get()* function takes the pointer 'ups' to a
  `UPSCONN_t` state structure, and the pointer 'query' to an array of
  'numq' query elements.  It builds a properly-formatted request from
 -those elements and transmits it to linkman:upsd[8].
 +those elements and transmits it to linkman:upsd[1m].
  
- Upon success, the response will be split into separate components.  A
- pointer to those components will be returned in 'answer'.  The
-@@ -70,7 +70,7 @@
- ERROR CHECKING
+ Upon success, the response will be split into separate components.
+ A pointer to those components will be returned in 'answer'.
+@@ -82,7 +82,7 @@
  --------------
+ 
  This function will check your query against the response from
--linkman:upsd[8].  For example, if you send "VAR" "su700" "ups.status", it
-+linkman:upsd[1m].  For example, if you send "VAR" "su700" "ups.status", it
- will expect to see those at the beginning of the response. 
+-linkman:upsd[8].  For example, if you send "VAR" "su700" "ups.status",
++linkman:upsd[1m].  For example, if you send "VAR" "su700" "ups.status",
+ it will expect to see those at the beginning of the response.
  
  If the results from *upsd* do not pass this case-insensitive test
-diff -ur nut-2.7.4/docs/man8/upscli_list_next.txt nut-2.7.4/docs/man/upscli_list_next.txt
---- nut-2.7.4/docs/man8/upscli_list_next.txt	2016-12-29 13:17:35.436869447 +0300
-+++ nut-2.7.4/docs/man/upscli_list_next.txt	2016-12-29 13:17:50.906269877 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upscli_list_next.txt nut-2.8.1/docs/man/upscli_list_next.txt
+--- nut-2.8.1-orig/docs/man/upscli_list_next.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_list_next.txt	2023-11-01 03:43:22.020380436 +0100
 @@ -42,13 +42,13 @@
  -----------------
  
  The contents of 'numa' and 'answer' work just like a call to
--linkman:upscli_get[3].  The values returned by linkman:upsd[8] are identical to
-+linkman:upscli_get[3].  The values returned by linkman:upsd[1m] are identical to
- a single item request, so this is not surprising.
+-linkman:upscli_get[3].  The values returned by linkman:upsd[8] are
++linkman:upscli_get[3].  The values returned by linkman:upsd[1m] are
+ identical to a single item request, so this is not surprising.
  
  ERROR CHECKING
  --------------
@@ -2596,9 +3421,9 @@
  If the response is not part of the list you have requested, it will
  return an error code.
  
-diff -ur nut-2.7.4/docs/man8/upscli_list_start.txt nut-2.7.4/docs/man/upscli_list_start.txt
---- nut-2.7.4/docs/man8/upscli_list_start.txt	2016-12-29 13:17:35.437047992 +0300
-+++ nut-2.7.4/docs/man/upscli_list_start.txt	2016-12-29 13:17:50.906621559 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upscli_list_start.txt nut-2.8.1/docs/man/upscli_list_start.txt
+--- nut-2.8.1-orig/docs/man/upscli_list_start.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_list_start.txt	2023-11-01 03:43:22.022615912 +0100
 @@ -19,7 +19,7 @@
  The *upscli_list_start()* function takes the pointer 'ups' to a
  `UPSCONN_t` state structure, and the pointer 'query' to an array of
@@ -2608,7 +3433,7 @@
  
  Upon success, the caller must call linkman:upscli_list_next[3] to retrieve
  the elements of the list.  Failure to retrieve the list will most likely
-@@ -60,7 +60,7 @@
+@@ -62,7 +62,7 @@
  ERROR CHECKING
  --------------
  
@@ -2617,21 +3442,21 @@
  If it is not starting a list, or is starting the wrong type of list, it
  will return an error code.
  
-diff -ur nut-2.7.4/docs/man8/upscli_readline.txt nut-2.7.4/docs/man/upscli_readline.txt
---- nut-2.7.4/docs/man8/upscli_readline.txt	2016-12-29 13:17:35.437222291 +0300
-+++ nut-2.7.4/docs/man/upscli_readline.txt	2016-12-29 13:17:50.906928732 +0300
-@@ -21,7 +21,7 @@
- 'buf'.
+diff -Naur nut-2.8.1-orig/docs/man/upscli_readline.txt nut-2.8.1/docs/man/upscli_readline.txt
+--- nut-2.8.1-orig/docs/man/upscli_readline.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_readline.txt	2023-11-01 03:43:22.024473885 +0100
+@@ -26,7 +26,7 @@
+ into the buffer 'buf'.
  
  Some parsing of the string occurs during reception.  In particular,
 -ERR messages from linkman:upsd[8] are detected and will cause this
 +ERR messages from linkman:upsd[1m] are detected and will cause this
  function to return -1.
  
- RETURN VALUE
-diff -ur nut-2.7.4/docs/man8/upscli_upserror.txt nut-2.7.4/docs/man/upscli_upserror.txt
---- nut-2.7.4/docs/man8/upscli_upserror.txt	2016-12-29 13:17:35.438262172 +0300
-+++ nut-2.7.4/docs/man/upscli_upserror.txt	2016-12-29 13:17:50.907230619 +0300
+ The difference between the two functions is that *upscli_readline_timeout()*
+diff -Naur nut-2.8.1-orig/docs/man/upscli_upserror.txt nut-2.8.1/docs/man/upscli_upserror.txt
+--- nut-2.8.1-orig/docs/man/upscli_upserror.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscli_upserror.txt	2023-11-01 03:43:22.033974265 +0100
 @@ -22,7 +22,7 @@
  
  This is typically used to check for certain error values like
@@ -2641,9 +3466,9 @@
  
  Some error messages have additional meanings, so you should use
  linkman:upscli_strerror[3] to obtain readable error messages.
-diff -ur nut-2.7.4/docs/man8/upsclient.txt nut-2.7.4/docs/man/upsclient.txt
---- nut-2.7.4/docs/man8/upsclient.txt	2016-12-29 13:17:35.438529740 +0300
-+++ nut-2.7.4/docs/man/upsclient.txt	2016-12-29 13:17:50.907552070 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsclient.txt nut-2.8.1/docs/man/upsclient.txt
+--- nut-2.8.1-orig/docs/man/upsclient.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsclient.txt	2023-11-01 03:43:22.035840329 +0100
 @@ -11,7 +11,7 @@
  
  The Network UPS Tools (NUT) *upsclient* library provides a number of
@@ -2662,9 +3487,9 @@
  linkman:upscli_sendline[3].  Reading raw lines is possible with
  linkman:upscli_readline[3].  Client programs are expected to format these
  lines according to the protocol, as no checking will be performed before
-diff -ur nut-2.7.4/docs/man8/upscmd.txt nut-2.7.4/docs/man/upscmd.txt
---- nut-2.7.4/docs/man8/upscmd.txt	2016-12-29 13:17:35.438667485 +0300
-+++ nut-2.7.4/docs/man/upscmd.txt	2016-12-29 13:29:28.605636903 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upscmd.txt nut-2.8.1/docs/man/upscmd.txt
+--- nut-2.8.1-orig/docs/man/upscmd.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscmd.txt	2023-11-01 03:50:49.168354756 +0100
 @@ -1,5 +1,5 @@
 -UPSCMD(8)
 -=========
@@ -2673,7 +3498,7 @@
  
  NAME
  ----
-@@ -63,7 +63,7 @@
+@@ -76,7 +76,7 @@
  DANGEROUS COMMANDS
  ------------------
  
@@ -2682,18 +3507,18 @@
  dangerous commands like `load.off`.  To make them actually turn off the
  load, you will have to send the command twice within a short window.
  That is, you will have to send it once, then send it again after 3
-@@ -92,7 +92,7 @@
- 
+@@ -105,7 +105,7 @@
  SEE ALSO
  --------
+ 
 -linkman:upsd[8], linkman:upsrw[8]
 +linkman:upsd[1m], linkman:upsrw[1m]
  
- INTERNET RESOURCES
- ------------------
-diff -ur nut-2.7.4/docs/man8/upscode2.txt nut-2.7.4/docs/man/upscode2.txt
---- nut-2.7.4/docs/man8/upscode2.txt	2016-12-29 13:17:35.438763790 +0300
-+++ nut-2.7.4/docs/man/upscode2.txt	2016-12-29 13:29:28.606755092 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/upscode2.txt nut-2.8.1/docs/man/upscode2.txt
+--- nut-2.8.1-orig/docs/man/upscode2.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upscode2.txt	2023-11-01 03:50:54.290537154 +0100
 @@ -1,5 +1,5 @@
 -UPSCODE2(8)
 -===========
@@ -2702,8 +3527,8 @@
  
  NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the
  upscode2 driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
@@ -2711,30 +3536,30 @@
  
  SUPPORTED HARDWARE
  ------------------
-@@ -92,7 +92,7 @@
- 
+@@ -98,7 +98,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsd.conf.txt nut-2.7.4/docs/man/upsd.conf.txt
---- nut-2.7.4/docs/man8/upsd.conf.txt	2016-12-29 13:17:35.438870101 +0300
-+++ nut-2.7.4/docs/man/upsd.conf.txt	2016-12-29 13:17:50.908643827 +0300
-@@ -98,7 +98,7 @@
+diff -Naur nut-2.8.1-orig/docs/man/upsd.conf.txt nut-2.8.1/docs/man/upsd.conf.txt
+--- nut-2.8.1-orig/docs/man/upsd.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsd.conf.txt	2023-11-01 03:43:22.041506995 +0100
+@@ -162,7 +162,7 @@
  SEE ALSO
  --------
  
 -linkman:upsd[8], linkman:nutupsdrv[8], linkman:upsd.users[5]
 +linkman:upsd[1m], linkman:nutupsdrv[1m], linkman:upsd.users[5]
  
- INTERNET RESOURCES
- ------------------
-diff -ur nut-2.7.4/docs/man8/upsd.txt nut-2.7.4/docs/man/upsd.txt
---- nut-2.7.4/docs/man8/upsd.txt	2016-12-29 13:17:35.438999969 +0300
-+++ nut-2.7.4/docs/man/upsd.txt	2016-12-29 13:29:28.608418958 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/upsd.txt nut-2.8.1/docs/man/upsd.txt
+--- nut-2.8.1-orig/docs/man/upsd.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsd.txt	2023-11-01 03:50:56.827111007 +0100
 @@ -1,5 +1,5 @@
 -UPSD(8)
 -=======
@@ -2743,7 +3568,7 @@
  
  NAME
  ----
-@@ -23,14 +23,14 @@
+@@ -24,14 +24,14 @@
  such as starting tests, or setting values.
  
  Communication between *upsd* and clients is handled on a TCP port.
@@ -2760,7 +3585,7 @@
  the UPS hardware, so keep it secure.
  
  OPTIONS
-@@ -55,8 +55,8 @@
+@@ -71,8 +71,8 @@
  can use this to create a "jail" for greater security.
  +
  You must coordinate this with your drivers, as upsd must be able to find
@@ -2771,78 +3596,99 @@
  
  *-u* 'user'::
  Switch to user 'user' after startup if started as root.  This
-@@ -136,24 +136,24 @@
- 
+@@ -174,18 +174,18 @@
  Clients:
  ~~~~~~~~
--linkman:upsc[8], linkman:upscmd[8],
--linkman:upsrw[8], linkman:upslog[8], linkman:upsmon[8]
-+linkman:upsc[1m], linkman:upscmd[1m],
-+linkman:upsrw[1m], linkman:upslog[1m], linkman:upsmon[1m]
+ 
+-- linkman:upsc[8]
+-- linkman:upscmd[8]
+-- linkman:upsrw[8]
+-- linkman:upslog[8]
+-- linkman:upsmon[8]
++- linkman:upsc[1m]
++- linkman:upscmd[1m]
++- linkman:upsrw[1m]
++- linkman:upslog[1m]
++- linkman:upsmon[1m]
  
  CGI programs:
  ~~~~~~~~~~~~~
--linkman:upsset.cgi[8], linkman:upsstats.cgi[8], linkman:upsimage.cgi[8]
-+linkman:upsset.cgi[1m], linkman:upsstats.cgi[1m], linkman:upsimage.cgi[1m]
  
+-- linkman:upsset.cgi[8]
+-- linkman:upsstats.cgi[8]
+-- linkman:upsimage.cgi[8]
++- linkman:upsset.cgi[1m]
++- linkman:upsstats.cgi[1m]
++- linkman:upsimage.cgi[1m]
+ 
+ Driver control:
+ ~~~~~~~~~~~~~~~
+@@ -195,7 +195,7 @@
  Drivers:
  ~~~~~~~~
--linkman:nutupsdrv[8],
--linkman:apcsmart[8], linkman:belkin[8], linkman:belkinunv[8],
--linkman:bestuferrups[8], linkman:bestups[8],
--linkman:cyberpower[8], linkman:energizerups[8], linkman:etapro[8],
--linkman:everups[8], linkman:genericups[8],
--linkman:isbmex[8], linkman:liebert[8], linkman:masterguard[8],
--linkman:mge-shut[8], linkman:mge-utalk[8], linkman:oneac[8],
--linkman:powercom[8], linkman:safenet[8], linkman:snmp-ups[8],
--linkman:tripplite[8], linkman:tripplitesu[8], linkman:victronups[8], 
-+linkman:nutupsdrv[1m],
-+linkman:apcsmart[1m], linkman:belkin[1m], linkman:belkinunv[1m],
-+linkman:bestuferrups[1m], linkman:bestups[1m],
-+linkman:cyberpower[1m], linkman:energizerups[1m], linkman:etapro[1m],
-+linkman:everups[1m], linkman:genericups[1m],
-+linkman:isbmex[1m], linkman:liebert[1m], linkman:masterguard[1m],
-+linkman:mge-shut[1m], linkman:mge-utalk[1m], linkman:oneac[1m],
-+linkman:powercom[1m], linkman:safenet[1m], linkman:snmp-ups[1m],
-+linkman:tripplite[1m], linkman:tripplitesu[1m], linkman:victronups[1m], 
+ 
+-- linkman:nutupsdrv[8]
++- linkman:nutupsdrv[1m]
+ include::{builddir}linkman-driver-names.txt[]
  
  Internet resources:
- ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsd.users.txt nut-2.7.4/docs/man/upsd.users.txt
---- nut-2.7.4/docs/man8/upsd.users.txt	2016-12-29 13:17:35.439092409 +0300
-+++ nut-2.7.4/docs/man/upsd.users.txt	2016-12-29 13:17:50.909367949 +0300
-@@ -82,7 +82,7 @@
+diff -Naur nut-2.8.1-orig/docs/man/upsd.users.txt nut-2.8.1/docs/man/upsd.users.txt
+--- nut-2.8.1-orig/docs/man/upsd.users.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsd.users.txt	2023-11-01 03:43:22.045373551 +0100
+@@ -83,7 +83,7 @@
  SEE ALSO
  --------
  
 -linkman:upsd[8], linkman:upsd.conf[5]
 +linkman:upsd[1m], linkman:upsd.conf[5]
  
- INTERNET RESOURCES
- ------------------
-diff -ur nut-2.7.4/docs/man8/upsdrvctl.txt nut-2.7.4/docs/man/upsdrvctl.txt
---- nut-2.7.4/docs/man8/upsdrvctl.txt	2016-12-29 13:17:35.439199999 +0300
-+++ nut-2.7.4/docs/man/upsdrvctl.txt	2016-12-29 13:29:28.609530460 +0300
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/upsdrvctl.txt nut-2.8.1/docs/man/upsdrvctl.txt
+--- nut-2.8.1-orig/docs/man/upsdrvctl.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsdrvctl.txt	2023-11-01 03:50:59.518679271 +0100
 @@ -1,5 +1,5 @@
--UPSDRVCTL(8) 
+-UPSDRVCTL(8)
 -============
-+UPSDRVCTL(1m) 
++UPSDRVCTL(1m)
 +=============
  
  NAME
  ----
-@@ -95,7 +95,7 @@
- 
+@@ -174,7 +174,7 @@
  SEE ALSO
  --------
--linkman:nutupsdrv[8], linkman:upsd[8], linkman:ups.conf[5]
-+linkman:nutupsdrv[1m], linkman:upsd[1m], linkman:ups.conf[5]
+ 
+-linkman:upsdrvsvcctl[8], linkman:nutupsdrv[8], linkman:upsd[8], linkman:ups.conf[5]
++linkman:upsdrvsvcctl[1m], linkman:nutupsdrv[1m], linkman:upsd[1m], linkman:ups.conf[5]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsimage.cgi.txt nut-2.7.4/docs/man/upsimage.cgi.txt
---- nut-2.7.4/docs/man8/upsimage.cgi.txt	2016-12-29 13:17:35.439298713 +0300
-+++ nut-2.7.4/docs/man/upsimage.cgi.txt	2016-12-29 13:29:28.610175806 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsdrvsvcctl.txt nut-2.8.1/docs/man/upsdrvsvcctl.txt
+--- nut-2.8.1-orig/docs/man/upsdrvsvcctl.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsdrvsvcctl.txt	2023-11-01 03:51:02.072312734 +0100
+@@ -1,5 +1,5 @@
+-UPSDRVSVCCTL(8)
+-===============
++UPSDRVSVCCTL(1m)
++================
+ 
+ NAME
+ ----
+@@ -198,8 +198,8 @@
+ SEE ALSO
+ --------
+ 
+-linkman:upsdrvctl[8], linkman:nutupsdrv[8], linkman:upsd[8],
+-linkman:nut-driver-enumerator[8], linkman:ups.conf[5]
++linkman:upsdrvctl[1m], linkman:nutupsdrv[1m], linkman:upsd[1m],
++linkman:nut-driver-enumerator[1m], linkman:ups.conf[5]
+ 
+ Internet resources:
+ ~~~~~~~~~~~~~~~~~~~
+diff -Naur nut-2.8.1-orig/docs/man/upsimage.cgi.txt nut-2.8.1/docs/man/upsimage.cgi.txt
+--- nut-2.8.1-orig/docs/man/upsimage.cgi.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsimage.cgi.txt	2023-11-01 03:51:05.715777100 +0100
 @@ -1,5 +1,5 @@
 -UPSIMAGE.CGI(8)
 -===============
@@ -2878,9 +3724,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upslog.txt nut-2.7.4/docs/man/upslog.txt
---- nut-2.7.4/docs/man8/upslog.txt	2016-12-29 13:17:35.439406509 +0300
-+++ nut-2.7.4/docs/man/upslog.txt	2016-12-29 13:29:28.611664773 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upslog.txt nut-2.8.1/docs/man/upslog.txt
+--- nut-2.8.1-orig/docs/man/upslog.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upslog.txt	2023-11-01 03:51:08.956602830 +0100
 @@ -1,5 +1,5 @@
 -UPSLOG(8)
 -=========
@@ -2889,15 +3735,16 @@
  
  NAME
  ----
-@@ -108,12 +108,12 @@
- 
+@@ -124,13 +124,13 @@
  Server:
  ~~~~~~~
+ 
 -linkman:upsd[8]
 +linkman:upsd[1m]
  
  Clients:
  ~~~~~~~~
+ 
 -linkman:upsc[8], linkman:upscmd[8],
 -linkman:upsrw[8], linkman:upsmon[8], linkman:upssched[8]
 +linkman:upsc[1m], linkman:upscmd[1m],
@@ -2905,9 +3752,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsmon.conf.txt nut-2.7.4/docs/man/upsmon.conf.txt
---- nut-2.7.4/docs/man8/upsmon.conf.txt	2016-12-29 13:17:35.439525236 +0300
-+++ nut-2.7.4/docs/man/upsmon.conf.txt	2016-12-29 13:17:50.910857674 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsmon.conf.txt nut-2.8.1/docs/man/upsmon.conf.txt
+--- nut-2.8.1-orig/docs/man/upsmon.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsmon.conf.txt	2023-11-01 03:43:22.054264364 +0100
 @@ -9,7 +9,7 @@
  DESCRIPTION
  -----------
@@ -2917,7 +3764,7 @@
  will monitor and to tell it how to shut down the system when necessary.
  It will contain passwords, so keep it secure.  Ideally, only the upsmon
  process should be able to read it.
-@@ -94,7 +94,7 @@
+@@ -95,7 +95,7 @@
  subdirectory for more information and ideas on how to use this
  feature.
  +
@@ -2926,7 +3773,7 @@
  
  *MONITOR* 'system' 'powervalue' 'username' 'password' 'type'::
  
-@@ -114,7 +114,7 @@
+@@ -115,7 +115,7 @@
   - "su700@mybox" means a UPS called "su700" on a system called "mybox".
  This is the normal form.
   - "fenton@bigbox:5678" is a UPS called "fenton" on a system called
@@ -2935,18 +3782,18 @@
  
  'powervalue' is an integer representing the number of power supplies
  that the UPS feeds on this system.  Most normal computers have one power
-@@ -138,8 +138,8 @@
- 		password  = blah
- 		upsmon master #  (or slave)
+@@ -151,8 +151,8 @@
+ +MONITOR myups@bigserver 1 upswired blah primary+
+ 
  
 -The 'type' refers to the relationship with linkman:upsd[8].  It can
--be either "master" or "slave".  See linkman:upsmon[8] for more information
+-be either "primary" or "secondary".  See linkman:upsmon[8] for more
 +The 'type' refers to the relationship with linkman:upsd[1m].  It can
-+be either "master" or "slave".  See linkman:upsmon[1m] for more information
- on the meaning of these modes.  The mode you pick here also goes in
- the `upsd.users` file, as seen in the example above.
++be either "primary" or "secondary".  See linkman:upsmon[1m] for more
+ information on the meaning of these modes.  The mode you pick here
+ also goes in the `upsd.users` file, as seen in the example above.
  
-@@ -158,7 +158,7 @@
+@@ -183,7 +183,7 @@
  argument.  The environment string NOTIFYTYPE will contain the type
  string of whatever caused this event to happen.
  +
@@ -2955,7 +3802,7 @@
  NOTIFYCMD by listing it here.
  +
  Note that this is only called for NOTIFY events that have EXEC set with
-@@ -238,7 +238,7 @@
+@@ -276,7 +276,7 @@
  
  *POLLFREQ* 'seconds'::
  
@@ -2964,143 +3811,1104 @@
  is flooding your network with activity, you can make it higher.  You can
  also make it lower to get faster updates in some cases.
  +
-@@ -382,7 +382,7 @@
- 
+@@ -490,7 +490,7 @@
  SEE ALSO
  --------
+ 
 -linkman:upsmon[8], linkman:upsd[8], linkman:nutupsdrv[8].
 +linkman:upsmon[1m], linkman:upsd[1m], linkman:nutupsdrv[1m].
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsmon.txt nut-2.7.4/docs/man/upsmon.txt
---- nut-2.7.4/docs/man8/upsmon.txt	2016-12-29 13:17:35.439639304 +0300
-+++ nut-2.7.4/docs/man/upsmon.txt	2016-12-29 13:29:28.616014894 +0300
-@@ -1,5 +1,5 @@
--UPSMON(8)
--=========
+diff -Naur nut-2.8.1-orig/docs/man/upsmon.txt nut-2.8.1/docs/man/upsmon.txt
+--- nut-2.8.1-orig/docs/man/upsmon.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsmon.txt	2023-11-01 03:51:38.407636678 +0100
+@@ -1,541 +1,541 @@
+-UPSMON(8)
+-=========
+-
+-NAME
+-----
+-
+-upsmon - UPS monitor and shutdown controller
+-
+-SYNOPSIS
+---------
+-
+-*upsmon* -h
+-
+-*upsmon* -c 'command' [-P 'pid']
+-
+-*upsmon* [-D] [-F | -B] [-K] [-p] [-u 'user']
+-
+-DESCRIPTION
+------------
+-
+-*upsmon* is the client process that is responsible for the most important part
+-of UPS monitoring--shutting down the system when the power goes out.  It
+-can call out to other helper programs for notification purposes during
+-power events.
+-
+-upsmon can monitor multiple systems using a single process.  Every UPS
+-that is defined in the linkman:upsmon.conf[5] configuration file is assigned
+-a power value and a type (*primary* or *secondary*).
+-
+-OPTIONS
+--------
+-
+-*-h*::
+-Display the help message.
+-
+-*-c* 'command'::
+-Send the command 'command' to the existing upsmon process.  Valid
+-commands are:
+-
+-*fsd*;; shutdown all primary-mode UPSes (use with caution)
+-
+-*stop*;; stop monitoring and exit
+-
+-*reload*;; reread linkman:upsmon.conf[5] configuration file.  See
+-"reloading nuances" below if this doesn't work.
+-
+-*-P* 'pid'::
+-Send the command signal above using specified PID number, rather than
+-consulting the PID file.  This can help define service units which
+-start main `upsmon` as a foreground process so it does not have to
+-rely on a PID file.
+-
+-*-D*::
+-Raise the debugging level.  upsmon will run in the foreground by default,
+-and will print information on stdout about the monitoring process.
+-Use this option multiple times for more details.
+-
+-*-F*::
+-upsmon will run in the foreground, regardless of debugging settings.
+-
+-*-B*::
+-upsmon will run in the background, regardless of debugging settings.
+-
+-*-K*::
+-Test for the shutdown flag.  If it exists and contains the magic string
+-from upsmon, then upsmon will exit with `EXIT_SUCCESS`.  Any other condition
+-will make upsmon exit with `EXIT_FAILURE`.
+-+
+-You can test for a successful exit from `upsmon -K` in your shutdown
+-scripts to know when to call linkman:upsdrvctl[8] to shut down the UPS.
+-
+-*-p*::
+-Run privileged all the time.  Normally upsmon will split into two
+-processes.  The majority of the code runs as an unprivileged user, and
+-only a tiny stub runs as root.  This switch will disable that mode, and
+-run the old "all root all the time" system.
+-+
+-This is not the recommended mode, and you should not use this unless you
+-have a very good reason.
+-
+-*-u* 'user'::
+-Set the user for the unprivileged monitoring process.  This has no effect
+-when using -p.
+-+
+-The default user is set at configure time with 'configure
+---with-user=...'.  Typically this is 'nobody', but other distributions
+-will probably have a specific 'nut' user for this task.  If your
+-notification scripts need to run as a specific user, set it here.
+-+
+-You can also set this in the linkman:upsmon.conf[5] file with the
+-RUN_AS_USER directive.
+-
+-UPS DEFINITIONS
+----------------
+-
+-In the linkman:upsmon.conf[5], you must specify at least one UPS that will
+-be monitored.  Use the MONITOR directive.
+-
+-	MONITOR 'system' 'powervalue' 'username' 'password' 'type'
+-
+-The 'system' refers to a linkman:upsd[8] server, in the form
+-+upsname[@hostname[:port]]+.  The default hostname is "localhost".  Some
+-examples follow:
+-
+- - "su700@mybox" means a UPS called "su700" on a system called "mybox".
+-This is the normal form.
+-
+- - "fenton@bigbox:5678" is a UPS called "fenton" on a system called
+-"bigbox" which runs linkman:upsd[8] on port "5678".
+-
+-The 'powervalue' refers to how many power supplies on this system are
+-being driven this UPS.  This is typically set to 1, but see the section
+-on power values below.
+-
+-The 'username' is a section in your linkman:upsd.users[5] file.
+-Whatever password you set in that section must match the 'password'
+-set in this file.
+-
+-The type set in that section must also match the 'type' here --
+-*primary* or *secondary*.  In general, a primary process is one
+-running on the system with the UPS actually plugged into a serial
+-port, and a secondary is drawing power from the UPS but can't
+-talk to it directly.  See the section on UPS types for more.
+-
+-NOTIFY EVENTS
+--------------
+-
+-*upsmon* senses several events as it monitors each UPS.  They are called
+-notify events as they can be used to tell the users and admins about the
+-change in status.  See the additional NOTIFY-related sections below for
+-information on customizing the delivery of these messages.
+-
+-*ONLINE*::
+-The UPS is back on line.
+-
+-*ONBATT*::
+-The UPS is on battery.
+-
+-*LOWBATT*::
+-The UPS battery is low (as determined by the driver).
+-
+-*FSD*::
+-The UPS has been commanded into the "forced shutdown" mode.
+-
+-*COMMOK*::
+-Communication with the UPS has been established.
+-
+-*COMMBAD*::
+-Communication with the UPS was just lost.
+-
+-*SHUTDOWN*::
+-The local system is being shut down.
+-
+-*REPLBATT*::
+-The UPS needs to have its battery replaced.
+-
+-*NOCOMM*::
+-The UPS can't be contacted for monitoring.
+-
+-*NOPARENT*::
+-`upsmon` parent process died - shutdown impossible.
+-
+-*CAL*::
+-UPS calibration in progress.
+-
+-*OFF*::
+-UPS administratively OFF or asleep.
+-
+-*NOTOFF*::
+-UPS no longer administratively OFF or asleep.
+-
+-*BYPASS*::
+-UPS on bypass (powered, not protecting).
+-
+-*NOTBYPASS*::
+-UPS no longer on bypass.
+-
+-
+-NOTIFY COMMAND
+---------------
+-
+-In linkman:upsmon.conf[5], you can configure a program called the NOTIFYCMD
+-that will handle events that occur.
+-
+-+NOTIFYCMD+ "'path to program'"
+-
+-+NOTIFYCMD "/usr/local/bin/notifyme"+
+-
+-Remember to wrap the path in "quotes" if it contains any spaces.
+-
+-The program you run as your NOTIFYCMD can use the environment variables
+-NOTIFYTYPE and UPSNAME to know what has happened and on which UPS.  It
+-also receives the notification message (see below) as the first (and
+-only) argument, so you can deliver a pre-formatted message too.
+-
+-Note that the NOTIFYCMD will only be called for a given event when you set
+-the EXEC flag by using the notify flags, as detailed below.
+-
+-NOTIFY FLAGS
+-------------
+-
+-By default, all notify events (see above) generate a global message
+-(wall) to all users, plus they are logged via the syslog.
+-Except for Windows where upsmon only writes to the syslog by default.
+-You can change this with the NOTIFYFLAG directive in the configuration file:
+-
+-+NOTIFYFLAG+ 'notifytype' 'flags'
+-
+-Examples:
+-
+- - `NOTIFYFLAG ONLINE SYSLOG`
+-
+- - `NOTIFYFLAG ONBATT SYSLOG+WALL`
+-
+- - `NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC`
+-
+-The flags that can be set on a given notify event are:
+-
+-*SYSLOG*::
+-Write this message to the syslog.
+-
+-*WALL*::
+-Send this message to all users on the system via *wall*(1).
+-
+-*EXEC*::
+-Execute the NOTIFYCMD.
+-
+-*IGNORE*::
+-Don't do anything.  If you use this, don't use any of the other flags.
+-
+-You can mix these flags.  "SYSLOG+WALL+EXEC" does all three for a given
+-event.
+-
+-NOTIFY MESSAGES
+----------------
+-
+-upsmon comes with default messages for each of the NOTIFY events.  These
+-can be changed with the NOTIFYMSG directive.
+-
+-+NOTIFYMSG+ 'type' "'message'"
+-
+-Examples:
+-
+- - `NOTIFYMSG ONLINE "UPS %s is getting line power"`
+-
+- - ` NOTIFYMSG ONBATT "Someone pulled the plug on %s"`
+-
+-The first instance of %s is replaced with the identifier of the UPS that
+-generated the event.  These messages are used when sending walls to the
+-users directly from upsmon, and are also passed to the NOTIFYCMD.
+-
+-POWER VALUES
+-------------
+-
+-The "current overall power value" is the sum of all UPSes that are
+-currently able to supply power to the system hosting upsmon.  Any
+-UPS that is either on line or just on battery contributes to this
+-number.  If a UPS is critical (on battery and low battery) or has been
+-put into "forced shutdown" mode, it no longer contributes.
+-
+-A "power value" on a MONITOR line in the config file is the number of
+-power supplies that the UPS runs on the current system.
+-
+-+MONITOR+ 'upsname' 'powervalue' 'username' 'password' 'type'
+-
+-Normally, you only have one power supply, so it will be set to 1.
+-
+-+MONITOR myups@myhost 1 username mypassword primary+
+-
+-On a large server with redundant power supplies, the power value for a UPS
+-may be greater than 1.  You may also have more than one of them defined.
+-
+-+MONITOR ups-alpha@myhost 2 username mypassword primary+
+-
+-+MONITOR ups-beta@myhost 2 username mypassword primary+
+-
+-You can also set the power value for a UPS to 0 if it does not supply any
+-power to that system.  This is generally used when you want to use the
+-upsmon notification features for a UPS even though it's not actually
+-running the system that hosts upsmon.  Don't set this to "primary" unless
+-you really want to power this UPS off when this instance of upsmon needs
+-to shut down for its own reasons.
+-
+-+MONITOR faraway@anotherbox 0 username mypassword secondary+
+-
+-The "minimum power value" is the number of power supplies that must be
+-receiving power in order to keep the computer running.
+-
+-+MINSUPPLIES+ 'value'
+-
+-Typical PCs only have 1, so most users will leave this at the default.
+-
+-+MINSUPPLIES 1+
+-
+-If you have a server or similar system with redundant power, then this
+-value will usually be set higher.  One that requires three power supplies
+-to be running at all times would simply set it to 3.
+-
+-+MINSUPPLIES 3+
+-
+-When the current overall power value drops below the minimum power value,
+-upsmon starts the shutdown sequence.  This design allows you to lose some
+-of your power supplies in a redundant power environment without bringing
+-down the entire system while still working properly for smaller systems.
+-
+-UPS TYPES
+----------
+-
+-*upsmon* and linkman:upsd[8] don't always run on the same system.  When they
+-do, any UPSes that are directly attached to the upsmon host should be
+-monitored in "primary" mode.  This makes upsmon take charge of that equipment,
+-and it will wait for the "secondary" systems to disconnect before shutting
+-down the local system.  This allows the distant systems (monitoring over
+-the network) to shut down cleanly before `upsdrvctl shutdown` runs
+-and turns them all off.
+-
+-When upsmon runs as a secondary, it is relying on the distant system to tell
+-it about the state of the UPS.  When that UPS goes critical (on battery
+-and low battery), it immediately invokes the local shutdown command.  This
+-needs to happen quickly.  Once all secondaries disconnect from the distant
+-linkman:upsd[8] server, its primary-mode upsmon will start its own shutdown
+-process.  Your secondary systems must all quiesce and shut down before the
+-primary turns off the shared power source, or filesystem damage may result.
+-
+-upsmon deals with secondaries that get wedged, hang, or otherwise fail to
+-disconnect from linkman:upsd[8] in a timely manner with the HOSTSYNC
+-timer.  During a shutdown situation, the primary upsmon will give up after
+-this interval and it will shut down anyway.  This keeps the primary from
+-sitting there forever (which would endanger that host) if a secondary
+-should break somehow.  This defaults to 15 seconds.
+-
+-If your primary system is shutting down too quickly, set the FINALDELAY
+-interval to something greater than the default 15 seconds.  Don't set
+-this too high, or your UPS battery may run out of power before the
+-primary upsmon process shuts down that system.
+-
+-TIMED SHUTDOWNS
+----------------
+-
+-For those rare situations where the shutdown process can't be completed
+-between the time that low battery is signalled and the UPS actually powers
+-off the load, use the linkman:upssched[8] helper program.  You can use it
+-along with upsmon to schedule a shutdown based on the "on battery" event.
+-upssched can then come back to upsmon to initiate the shutdown once it has
+-run on battery too long.
+-
+-This can be complicated and messy, so stick to the default critical UPS
+-handling if you can.
+-
+-REDUNDANT POWER SUPPLIES
+-------------------------
+-
+-If you have more than one power supply for redundant power, you may also
+-have more than one UPS feeding your computer.  upsmon can handle this.  Be
+-sure to set the UPS power values appropriately and the MINSUPPLIES value
+-high enough so that it keeps running until it really does need to shut
+-down.
+-
+-For example, the HP NetServer LH4 by default has 3 power supplies
+-installed, with one bay empty.  It has two power cords, one per side of
+-the box.  This means that one power cord powers two power supply bays,
+-and that you can only have two UPSes supplying power.
+-
+-Connect UPS "alpha" to the cord feeding two power supplies, and UPS
+-"beta" to the cord that feeds the third and the empty slot.  Define alpha
+-as a powervalue of 2, and beta as a powervalue of 1.  Set the MINSUPPLIES
+-to 2.
+-
+-When alpha goes on battery, your current overall power value will stay
+-at 3, as it's still supplying power.  However, once it goes critical (on
+-battery and low battery), it will stop contributing to the current overall
+-power value.  That means the value will be 1 (beta alone), which is less
+-than 2.  That is insufficient to run the system, and upsmon will invoke
+-the shutdown sequence.
+-
+-However, if beta goes critical, subtracting its contribution will take the
+-current overall value from 3 to 2.  This is just high enough to satisfy
+-the minimum, so the system will continue running as before.  If beta
+-returns later, it will be re-added and the current value will go back to
+-3.  This allows you to swap out UPSes, change a power configuration, or
+-whatever, as long as you maintain the minimum power value at all times.
+-
+-MIXED OPERATIONS
+-----------------
+-
+-Besides being able to monitor multiple UPSes, upsmon can also monitor them
+-as different roles.  If you have a system with multiple power supplies
+-serviced by separate UPS batteries, it's possible to be a primary on one
+-UPS and a secondary on the other.  This usually happens when you run
+-out of serial or USB ports and need to do the monitoring through another
+-system nearby.
+-
+-This is also complicated, especially when it comes time to power down a
+-UPS that has gone critical but doesn't supply the local system.  You can
+-do this with some scripting magic in your notify command script, but it's
+-beyond the scope of this manual.
+-
+-FORCED SHUTDOWNS
+-----------------
+-
+-When upsmon is forced to bring down the local system, it sets the
+-"FSD" (forced shutdown) flag on any UPSes that it is running in primary
+-mode.  This is used to synchronize secondary systems in the event that
+-a primary which is otherwise OK needs to be brought down due to some
+-pressing event on the UPS manager system.
+-
+-You can manually invoke this mode on the system with primary-mode upsmon
+-by starting another copy of the program with `-c fsd` command line argument.
+-This is useful when you want to initiate a shutdown before the critical
+-stage through some external means, such as linkman:upssched[8].
+-
+-WARNING: Please note that by design, since we require power-cycling the
+-load and don't want some systems to be powered off while others remain
+-running if the "wall power" returns at the wrong moment as usual, the "FSD"
+-flag can not be removed from the data server unless its daemon is restarted.
+-If we do take the first step in critical mode, then we normally intend to go
+-all the way���--���shut down all the servers gracefully, and power down the UPS.
+-
+-Keep in mind that some UPS devices and corresponding drivers would also latch
+-or otherwise resurface the "FSD" state again even if "wall power" is available,
+-but the remaining battery charge is below a threshold configured as "safe" in
+-the device (usually if you manually power on the UPS after a long power outage).
+-This is by design of respective UPS vendors, since in such situation they
+-can not guarantee that if a new power outage happens, their UPS would safely
+-shut down your systems again. So it is deemed better and safer to stay dark
+-until batteries become sufficiently charged.
+-
+-When it is time to shut down, upsmon creates POWERDOWNFLAG to
+-communicate to the operating system that the UPS should be commanded
+-off late in the shutdown sequence.  This file is removed if present
+-when upsmon starts, so that the next normal shutdown does not cause
+-the UPS to be turned off.  (The file can't in general be removed
+-during shutdown because the filesystem might be read only.  If the
+-file is in a RAM-backed filesystem, the it won't be present and the
+-check to remove it won't fire.)
+-
+-SIMULATING POWER FAILURES
+--------------------------
+-
+-To test a synchronized shutdown without pulling the plug on your UPS(es),
+-you need only set the forced shutdown (FSD) flag on them.  You can do this
+-by calling upsmon again to set the flag, i.e.:
+-
+-+upsmon -c fsd+
+-
+-After that, the primary and the secondary will do their usual shutdown
+-sequence as if the battery had gone critical, while you can time how long
+-it takes for them.  This is much easier on your UPS equipment, and it beats
+-crawling under a desk to find the plug.
+-
+-Note you can also use a dummy SHUTDOWNCMD setting to just report that the
+-systems would shut down at this point, without actually disrupting their work.
+-
+-WARNING: after such "dummy" experiments you may have to restart the NUT data
+-server `upsd` to clear its "FSD" flag for the devices and clients involved,
+-and make sure no files named by `POWERDOWNFLAG` option (e.g. `/etc/killpower`)
+-remain on the `upsmon primary` systems under test.
+-
+-DEAD UPSES
+-----------
+-
+-In the event that upsmon can't reach linkman:upsd[8], it declares that UPS
+-"dead" after some interval controlled by DEADTIME in the
+-linkman:upsmon.conf[5].  If this happens while that UPS was last known to be
+-on battery, it is assumed to have gone critical and no longer contributes
+-to the overall power value.
+-
+-upsmon will alert you to a UPS that can't be contacted for monitoring
+-with a "NOCOMM" notifier by default every 300 seconds.  This can be
+-changed with the NOCOMMWARNTIME setting.
+-
+-Also upsmon normally reports polling failures for each device that are in place
+-for each POLLFREQ loop (e.g. "Data stale" or "Driver not connected") to
+-system log as configured.  If your devices are expected to be AWOL for an
+-extended timeframe, you can use POLLFAIL_LOG_THROTTLE_MAX to reduce the
+-stress on syslog traffic and storage, by posting these messages only once
+-in every several loop cycles, and when the error condition has changed or
+-cleared. A negative value means standard behavior, and a zero value means
+-to never repeat the message (log only on start and end/change of the failure
+-state).
+-
+-RELOADING NUANCES
+------------------
+-
+-upsmon usually gives up root powers for the process that does most of
+-the work, including handling signals like SIGHUP to reload the configuration
+-file.  This means your linkman:upsmon.conf[8] file must be readable by
+-the non-root account that upsmon switches to.
+-
+-If you want reloads to work, upsmon must run as some user that has
+-permissions to read the configuration file.  I recommend making a new
+-user just for this purpose, as making the file readable by "nobody"
+-(the default user) would be a bad idea.
+-
+-See the RUN_AS_USER section in linkman:upsmon.conf[8] for more on this topic.
+-
+-Additionally, you can't change the SHUTDOWNCMD or POWERDOWNFLAG
+-definitions with a reload due to the split-process model.  If you change
+-those values, you *must* stop upsmon and start it back up.  upsmon
+-will warn you in the syslog if you make changes to either of those
+-values during a reload.
+-
+-ENVIRONMENT VARIABLES
+----------------------
+-
+-*NUT_DEBUG_LEVEL* sets default debug verbosity if no *-D* arguments
+-were provided on command line, but does not request that the daemon
+-runs in foreground mode.
+-
+-*NUT_CONFPATH* is the path name of the directory that contains
+-`upsmon.conf` and other configuration files.  If this variable is not set,
+-*upsmon* uses a built-in default, which is often `/usr/local/ups/etc`.
+-
+-FILES
+------
+-
+-linkman:upsmon.conf[5]
+-
+-SEE ALSO
+---------
+-
+-Server:
+-~~~~~~~
+-
+-linkman:upsd[8]
+-
+-Clients:
+-~~~~~~~~
+-
+-linkman:upsc[8], linkman:upscmd[8],
+-linkman:upsrw[8], linkman:upsmon[8]
+-
+-CGI programs:
+-~~~~~~~~~~~~~
+-
+-linkman:upsset.cgi[8], linkman:upsstats.cgi[8], linkman:upsimage.cgi[8]
+-
+-Internet resources:
+-~~~~~~~~~~~~~~~~~~~
+-
+-The NUT (Network UPS Tools) home page: https://www.networkupstools.org/
 +UPSMON(1m)
 +==========
- 
- NAME
- ----
-@@ -55,7 +55,7 @@
- will make upsmon exit with `EXIT_FAILURE`.  
- +
- You can test for a successful exit from `upsmon -K` in your shutdown
--scripts to know when to call linkman:upsdrvctl[8] to shut down the UPS.
++
++NAME
++----
++
++upsmon - UPS monitor and shutdown controller
++
++SYNOPSIS
++--------
++
++*upsmon* -h
++
++*upsmon* -c 'command' [-P 'pid']
++
++*upsmon* [-D] [-F | -B] [-K] [-p] [-u 'user']
++
++DESCRIPTION
++-----------
++
++*upsmon* is the client process that is responsible for the most important part
++of UPS monitoring--shutting down the system when the power goes out.  It
++can call out to other helper programs for notification purposes during
++power events.
++
++upsmon can monitor multiple systems using a single process.  Every UPS
++that is defined in the linkman:upsmon.conf[5] configuration file is assigned
++a power value and a type (*primary* or *secondary*).
++
++OPTIONS
++-------
++
++*-h*::
++Display the help message.
++
++*-c* 'command'::
++Send the command 'command' to the existing upsmon process.  Valid
++commands are:
++
++*fsd*;; shutdown all primary-mode UPSes (use with caution)
++
++*stop*;; stop monitoring and exit
++
++*reload*;; reread linkman:upsmon.conf[5] configuration file.  See
++"reloading nuances" below if this doesn't work.
++
++*-P* 'pid'::
++Send the command signal above using specified PID number, rather than
++consulting the PID file.  This can help define service units which
++start main `upsmon` as a foreground process so it does not have to
++rely on a PID file.
++
++*-D*::
++Raise the debugging level.  upsmon will run in the foreground by default,
++and will print information on stdout about the monitoring process.
++Use this option multiple times for more details.
++
++*-F*::
++upsmon will run in the foreground, regardless of debugging settings.
++
++*-B*::
++upsmon will run in the background, regardless of debugging settings.
++
++*-K*::
++Test for the shutdown flag.  If it exists and contains the magic string
++from upsmon, then upsmon will exit with `EXIT_SUCCESS`.  Any other condition
++will make upsmon exit with `EXIT_FAILURE`.
+++
++You can test for a successful exit from `upsmon -K` in your shutdown
 +scripts to know when to call linkman:upsdrvctl[1m] to shut down the UPS.
- 
- *-p*::
- Run privileged all the time.  Normally upsmon will split into two
-@@ -86,7 +86,7 @@
- 
- 	MONITOR 'system' 'powervalue' 'username' 'password' 'type'
- 
--The 'system' refers to a linkman:upsd[8] server, in the form
++
++*-p*::
++Run privileged all the time.  Normally upsmon will split into two
++processes.  The majority of the code runs as an unprivileged user, and
++only a tiny stub runs as root.  This switch will disable that mode, and
++run the old "all root all the time" system.
+++
++This is not the recommended mode, and you should not use this unless you
++have a very good reason.
++
++*-u* 'user'::
++Set the user for the unprivileged monitoring process.  This has no effect
++when using -p.
+++
++The default user is set at configure time with 'configure
++--with-user=...'.  Typically this is 'nobody', but other distributions
++will probably have a specific 'nut' user for this task.  If your
++notification scripts need to run as a specific user, set it here.
+++
++You can also set this in the linkman:upsmon.conf[5] file with the
++RUN_AS_USER directive.
++
++UPS DEFINITIONS
++---------------
++
++In the linkman:upsmon.conf[5], you must specify at least one UPS that will
++be monitored.  Use the MONITOR directive.
++
++	MONITOR 'system' 'powervalue' 'username' 'password' 'type'
++
 +The 'system' refers to a linkman:upsd[1m] server, in the form
- +upsname[@hostname[:port]]+.  The default hostname is "localhost".  Some
- examples follow:
- 
-@@ -94,7 +94,7 @@
- This is the normal form.
- 
-  - "fenton@bigbox:5678" is a UPS called "fenton" on a system called 
--"bigbox" which runs linkman:upsd[8] on port "5678".
+++upsname[@hostname[:port]]+.  The default hostname is "localhost".  Some
++examples follow:
++
++ - "su700@mybox" means a UPS called "su700" on a system called "mybox".
++This is the normal form.
++
++ - "fenton@bigbox:5678" is a UPS called "fenton" on a system called
 +"bigbox" which runs linkman:upsd[1m] on port "5678".
- 
- The 'powervalue' refers to how many power supplies on this system are
- being driven this UPS.  This is typically set to 1, but see the section
-@@ -274,7 +274,7 @@
- UPS TYPES
- ---------
- 
--*upsmon* and linkman:upsd[8] don't always run on the same system.  When they
++
++The 'powervalue' refers to how many power supplies on this system are
++being driven this UPS.  This is typically set to 1, but see the section
++on power values below.
++
++The 'username' is a section in your linkman:upsd.users[5] file.
++Whatever password you set in that section must match the 'password'
++set in this file.
++
++The type set in that section must also match the 'type' here --
++*primary* or *secondary*.  In general, a primary process is one
++running on the system with the UPS actually plugged into a serial
++port, and a secondary is drawing power from the UPS but can't
++talk to it directly.  See the section on UPS types for more.
++
++NOTIFY EVENTS
++-------------
++
++*upsmon* senses several events as it monitors each UPS.  They are called
++notify events as they can be used to tell the users and admins about the
++change in status.  See the additional NOTIFY-related sections below for
++information on customizing the delivery of these messages.
++
++*ONLINE*::
++The UPS is back on line.
++
++*ONBATT*::
++The UPS is on battery.
++
++*LOWBATT*::
++The UPS battery is low (as determined by the driver).
++
++*FSD*::
++The UPS has been commanded into the "forced shutdown" mode.
++
++*COMMOK*::
++Communication with the UPS has been established.
++
++*COMMBAD*::
++Communication with the UPS was just lost.
++
++*SHUTDOWN*::
++The local system is being shut down.
++
++*REPLBATT*::
++The UPS needs to have its battery replaced.
++
++*NOCOMM*::
++The UPS can't be contacted for monitoring.
++
++*NOPARENT*::
++`upsmon` parent process died - shutdown impossible.
++
++*CAL*::
++UPS calibration in progress.
++
++*OFF*::
++UPS administratively OFF or asleep.
++
++*NOTOFF*::
++UPS no longer administratively OFF or asleep.
++
++*BYPASS*::
++UPS on bypass (powered, not protecting).
++
++*NOTBYPASS*::
++UPS no longer on bypass.
++
++
++NOTIFY COMMAND
++--------------
++
++In linkman:upsmon.conf[5], you can configure a program called the NOTIFYCMD
++that will handle events that occur.
++
+++NOTIFYCMD+ "'path to program'"
++
+++NOTIFYCMD "/usr/local/bin/notifyme"+
++
++Remember to wrap the path in "quotes" if it contains any spaces.
++
++The program you run as your NOTIFYCMD can use the environment variables
++NOTIFYTYPE and UPSNAME to know what has happened and on which UPS.  It
++also receives the notification message (see below) as the first (and
++only) argument, so you can deliver a pre-formatted message too.
++
++Note that the NOTIFYCMD will only be called for a given event when you set
++the EXEC flag by using the notify flags, as detailed below.
++
++NOTIFY FLAGS
++------------
++
++By default, all notify events (see above) generate a global message
++(wall) to all users, plus they are logged via the syslog.
++Except for Windows where upsmon only writes to the syslog by default.
++You can change this with the NOTIFYFLAG directive in the configuration file:
++
+++NOTIFYFLAG+ 'notifytype' 'flags'
++
++Examples:
++
++ - `NOTIFYFLAG ONLINE SYSLOG`
++
++ - `NOTIFYFLAG ONBATT SYSLOG+WALL`
++
++ - `NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC`
++
++The flags that can be set on a given notify event are:
++
++*SYSLOG*::
++Write this message to the syslog.
++
++*WALL*::
++Send this message to all users on the system via *wall*(1).
++
++*EXEC*::
++Execute the NOTIFYCMD.
++
++*IGNORE*::
++Don't do anything.  If you use this, don't use any of the other flags.
++
++You can mix these flags.  "SYSLOG+WALL+EXEC" does all three for a given
++event.
++
++NOTIFY MESSAGES
++---------------
++
++upsmon comes with default messages for each of the NOTIFY events.  These
++can be changed with the NOTIFYMSG directive.
++
+++NOTIFYMSG+ 'type' "'message'"
++
++Examples:
++
++ - `NOTIFYMSG ONLINE "UPS %s is getting line power"`
++
++ - ` NOTIFYMSG ONBATT "Someone pulled the plug on %s"`
++
++The first instance of %s is replaced with the identifier of the UPS that
++generated the event.  These messages are used when sending walls to the
++users directly from upsmon, and are also passed to the NOTIFYCMD.
++
++POWER VALUES
++------------
++
++The "current overall power value" is the sum of all UPSes that are
++currently able to supply power to the system hosting upsmon.  Any
++UPS that is either on line or just on battery contributes to this
++number.  If a UPS is critical (on battery and low battery) or has been
++put into "forced shutdown" mode, it no longer contributes.
++
++A "power value" on a MONITOR line in the config file is the number of
++power supplies that the UPS runs on the current system.
++
+++MONITOR+ 'upsname' 'powervalue' 'username' 'password' 'type'
++
++Normally, you only have one power supply, so it will be set to 1.
++
+++MONITOR myups@myhost 1 username mypassword primary+
++
++On a large server with redundant power supplies, the power value for a UPS
++may be greater than 1.  You may also have more than one of them defined.
++
+++MONITOR ups-alpha@myhost 2 username mypassword primary+
++
+++MONITOR ups-beta@myhost 2 username mypassword primary+
++
++You can also set the power value for a UPS to 0 if it does not supply any
++power to that system.  This is generally used when you want to use the
++upsmon notification features for a UPS even though it's not actually
++running the system that hosts upsmon.  Don't set this to "primary" unless
++you really want to power this UPS off when this instance of upsmon needs
++to shut down for its own reasons.
++
+++MONITOR faraway@anotherbox 0 username mypassword secondary+
++
++The "minimum power value" is the number of power supplies that must be
++receiving power in order to keep the computer running.
++
+++MINSUPPLIES+ 'value'
++
++Typical PCs only have 1, so most users will leave this at the default.
++
+++MINSUPPLIES 1+
++
++If you have a server or similar system with redundant power, then this
++value will usually be set higher.  One that requires three power supplies
++to be running at all times would simply set it to 3.
++
+++MINSUPPLIES 3+
++
++When the current overall power value drops below the minimum power value,
++upsmon starts the shutdown sequence.  This design allows you to lose some
++of your power supplies in a redundant power environment without bringing
++down the entire system while still working properly for smaller systems.
++
++UPS TYPES
++---------
++
 +*upsmon* and linkman:upsd[1m] don't always run on the same system.  When they
- do, any UPSes that are directly attached to the upsmon host should be
- monitored in "master" mode.  This makes upsmon take charge of that
- equipment, and it will wait for slaves to disconnect before shutting
-@@ -286,12 +286,12 @@
- it about the state of the UPS.  When that UPS goes critical (on battery
- and low battery), it immediately invokes the local shutdown command.  This
- needs to happen quickly.  Once it disconnects from the distant
--linkman:upsd[8] server, the master upsmon will start its own shutdown
-+linkman:upsd[1m] server, the master upsmon will start its own shutdown
- process.  Your slaves must all shut down before the master turns off the
- power or filesystem damage may result.
- 
- upsmon deals with slaves that get wedged, hang, or otherwise fail to 
--disconnect from linkman:upsd[8] in a timely manner with the HOSTSYNC
++do, any UPSes that are directly attached to the upsmon host should be
++monitored in "primary" mode.  This makes upsmon take charge of that equipment,
++and it will wait for the "secondary" systems to disconnect before shutting
++down the local system.  This allows the distant systems (monitoring over
++the network) to shut down cleanly before `upsdrvctl shutdown` runs
++and turns them all off.
++
++When upsmon runs as a secondary, it is relying on the distant system to tell
++it about the state of the UPS.  When that UPS goes critical (on battery
++and low battery), it immediately invokes the local shutdown command.  This
++needs to happen quickly.  Once all secondaries disconnect from the distant
++linkman:upsd[1m] server, its primary-mode upsmon will start its own shutdown
++process.  Your secondary systems must all quiesce and shut down before the
++primary turns off the shared power source, or filesystem damage may result.
++
++upsmon deals with secondaries that get wedged, hang, or otherwise fail to
 +disconnect from linkman:upsd[1m] in a timely manner with the HOSTSYNC
- timer.  During a shutdown situation, the master upsmon will give up after
- this interval and it will shut down anyway.  This keeps the master from
- sitting there forever (which would endanger that host) if a slave should
-@@ -307,7 +307,7 @@
- 
- For those rare situations where the shutdown process can't be completed
- between the time that low battery is signalled and the UPS actually powers
--off the load, use the linkman:upssched[8] helper program.  You can use it
++timer.  During a shutdown situation, the primary upsmon will give up after
++this interval and it will shut down anyway.  This keeps the primary from
++sitting there forever (which would endanger that host) if a secondary
++should break somehow.  This defaults to 15 seconds.
++
++If your primary system is shutting down too quickly, set the FINALDELAY
++interval to something greater than the default 15 seconds.  Don't set
++this too high, or your UPS battery may run out of power before the
++primary upsmon process shuts down that system.
++
++TIMED SHUTDOWNS
++---------------
++
++For those rare situations where the shutdown process can't be completed
++between the time that low battery is signalled and the UPS actually powers
 +off the load, use the linkman:upssched[1m] helper program.  You can use it
- along with upsmon to schedule a shutdown based on the "on battery" event.
- upssched can then come back to upsmon to initiate the shutdown once it has
- run on battery too long.
-@@ -374,12 +374,12 @@
- You can manually invoke this mode on the master upsmon by starting another
- copy with `-c fsd`.  This is useful when you want to initiate a shutdown
- before the critical stage through some external means, such as
--linkman:upssched[8].
-+linkman:upssched[1m].
- 
- DEAD UPSES
- ----------
- 
--In the event that upsmon can't reach linkman:upsd[8], it declares that UPS
++along with upsmon to schedule a shutdown based on the "on battery" event.
++upssched can then come back to upsmon to initiate the shutdown once it has
++run on battery too long.
++
++This can be complicated and messy, so stick to the default critical UPS
++handling if you can.
++
++REDUNDANT POWER SUPPLIES
++------------------------
++
++If you have more than one power supply for redundant power, you may also
++have more than one UPS feeding your computer.  upsmon can handle this.  Be
++sure to set the UPS power values appropriately and the MINSUPPLIES value
++high enough so that it keeps running until it really does need to shut
++down.
++
++For example, the HP NetServer LH4 by default has 3 power supplies
++installed, with one bay empty.  It has two power cords, one per side of
++the box.  This means that one power cord powers two power supply bays,
++and that you can only have two UPSes supplying power.
++
++Connect UPS "alpha" to the cord feeding two power supplies, and UPS
++"beta" to the cord that feeds the third and the empty slot.  Define alpha
++as a powervalue of 2, and beta as a powervalue of 1.  Set the MINSUPPLIES
++to 2.
++
++When alpha goes on battery, your current overall power value will stay
++at 3, as it's still supplying power.  However, once it goes critical (on
++battery and low battery), it will stop contributing to the current overall
++power value.  That means the value will be 1 (beta alone), which is less
++than 2.  That is insufficient to run the system, and upsmon will invoke
++the shutdown sequence.
++
++However, if beta goes critical, subtracting its contribution will take the
++current overall value from 3 to 2.  This is just high enough to satisfy
++the minimum, so the system will continue running as before.  If beta
++returns later, it will be re-added and the current value will go back to
++3.  This allows you to swap out UPSes, change a power configuration, or
++whatever, as long as you maintain the minimum power value at all times.
++
++MIXED OPERATIONS
++----------------
++
++Besides being able to monitor multiple UPSes, upsmon can also monitor them
++as different roles.  If you have a system with multiple power supplies
++serviced by separate UPS batteries, it's possible to be a primary on one
++UPS and a secondary on the other.  This usually happens when you run
++out of serial or USB ports and need to do the monitoring through another
++system nearby.
++
++This is also complicated, especially when it comes time to power down a
++UPS that has gone critical but doesn't supply the local system.  You can
++do this with some scripting magic in your notify command script, but it's
++beyond the scope of this manual.
++
++FORCED SHUTDOWNS
++----------------
++
++When upsmon is forced to bring down the local system, it sets the
++"FSD" (forced shutdown) flag on any UPSes that it is running in primary
++mode.  This is used to synchronize secondary systems in the event that
++a primary which is otherwise OK needs to be brought down due to some
++pressing event on the UPS manager system.
++
++You can manually invoke this mode on the system with primary-mode upsmon
++by starting another copy of the program with `-c fsd` command line argument.
++This is useful when you want to initiate a shutdown before the critical
++stage through some external means, such as linkman:upssched[1m].
++
++WARNING: Please note that by design, since we require power-cycling the
++load and don't want some systems to be powered off while others remain
++running if the "wall power" returns at the wrong moment as usual, the "FSD"
++flag can not be removed from the data server unless its daemon is restarted.
++If we do take the first step in critical mode, then we normally intend to go
++all the way���--���shut down all the servers gracefully, and power down the UPS.
++
++Keep in mind that some UPS devices and corresponding drivers would also latch
++or otherwise resurface the "FSD" state again even if "wall power" is available,
++but the remaining battery charge is below a threshold configured as "safe" in
++the device (usually if you manually power on the UPS after a long power outage).
++This is by design of respective UPS vendors, since in such situation they
++can not guarantee that if a new power outage happens, their UPS would safely
++shut down your systems again. So it is deemed better and safer to stay dark
++until batteries become sufficiently charged.
++
++When it is time to shut down, upsmon creates POWERDOWNFLAG to
++communicate to the operating system that the UPS should be commanded
++off late in the shutdown sequence.  This file is removed if present
++when upsmon starts, so that the next normal shutdown does not cause
++the UPS to be turned off.  (The file can't in general be removed
++during shutdown because the filesystem might be read only.  If the
++file is in a RAM-backed filesystem, the it won't be present and the
++check to remove it won't fire.)
++
++SIMULATING POWER FAILURES
++-------------------------
++
++To test a synchronized shutdown without pulling the plug on your UPS(es),
++you need only set the forced shutdown (FSD) flag on them.  You can do this
++by calling upsmon again to set the flag, i.e.:
++
+++upsmon -c fsd+
++
++After that, the primary and the secondary will do their usual shutdown
++sequence as if the battery had gone critical, while you can time how long
++it takes for them.  This is much easier on your UPS equipment, and it beats
++crawling under a desk to find the plug.
++
++Note you can also use a dummy SHUTDOWNCMD setting to just report that the
++systems would shut down at this point, without actually disrupting their work.
++
++WARNING: after such "dummy" experiments you may have to restart the NUT data
++server `upsd` to clear its "FSD" flag for the devices and clients involved,
++and make sure no files named by `POWERDOWNFLAG` option (e.g. `/etc/killpower`)
++remain on the `upsmon primary` systems under test.
++
++DEAD UPSES
++----------
++
 +In the event that upsmon can't reach linkman:upsd[1m], it declares that UPS
- "dead" after some interval controlled by DEADTIME in the
- linkman:upsmon.conf[5].  If this happens while that UPS was last known to be
- on battery, it is assumed to have gone critical and no longer contributes
-@@ -394,7 +394,7 @@
- 
- upsmon usually gives up root powers for the process that does most of
- the work, including handling signals like SIGHUP to reload the configuration
--file.  This means your linkman:upsmon.conf[8] file must be readable by
++"dead" after some interval controlled by DEADTIME in the
++linkman:upsmon.conf[5].  If this happens while that UPS was last known to be
++on battery, it is assumed to have gone critical and no longer contributes
++to the overall power value.
++
++upsmon will alert you to a UPS that can't be contacted for monitoring
++with a "NOCOMM" notifier by default every 300 seconds.  This can be
++changed with the NOCOMMWARNTIME setting.
++
++Also upsmon normally reports polling failures for each device that are in place
++for each POLLFREQ loop (e.g. "Data stale" or "Driver not connected") to
++system log as configured.  If your devices are expected to be AWOL for an
++extended timeframe, you can use POLLFAIL_LOG_THROTTLE_MAX to reduce the
++stress on syslog traffic and storage, by posting these messages only once
++in every several loop cycles, and when the error condition has changed or
++cleared. A negative value means standard behavior, and a zero value means
++to never repeat the message (log only on start and end/change of the failure
++state).
++
++RELOADING NUANCES
++-----------------
++
++upsmon usually gives up root powers for the process that does most of
++the work, including handling signals like SIGHUP to reload the configuration
 +file.  This means your linkman:upsmon.conf[1m] file must be readable by
- the non-root account that upsmon switches to.
- 
- If you want reloads to work, upsmon must run as some user that has
-@@ -402,7 +402,7 @@
- user just for this purpose, as making the file readable by "nobody"
- (the default user) would be a bad idea.
- 
--See the RUN_AS_USER section in linkman:upsmon.conf[8] for more on this topic.
++the non-root account that upsmon switches to.
++
++If you want reloads to work, upsmon must run as some user that has
++permissions to read the configuration file.  I recommend making a new
++user just for this purpose, as making the file readable by "nobody"
++(the default user) would be a bad idea.
++
 +See the RUN_AS_USER section in linkman:upsmon.conf[1m] for more on this topic.
- 
- Additionally, you can't change the SHUTDOWNCMD or POWERDOWNFLAG
- definitions with a reload due to the split-process model.  If you change
-@@ -433,16 +433,16 @@
- 
- Server:
- ~~~~~~~
--linkman:upsd[8]
++
++Additionally, you can't change the SHUTDOWNCMD or POWERDOWNFLAG
++definitions with a reload due to the split-process model.  If you change
++those values, you *must* stop upsmon and start it back up.  upsmon
++will warn you in the syslog if you make changes to either of those
++values during a reload.
++
++ENVIRONMENT VARIABLES
++---------------------
++
++*NUT_DEBUG_LEVEL* sets default debug verbosity if no *-D* arguments
++were provided on command line, but does not request that the daemon
++runs in foreground mode.
++
++*NUT_CONFPATH* is the path name of the directory that contains
++`upsmon.conf` and other configuration files.  If this variable is not set,
++*upsmon* uses a built-in default, which is often `/usr/local/ups/etc`.
++
++FILES
++-----
++
++linkman:upsmon.conf[5]
++
++SEE ALSO
++--------
++
++Server:
++~~~~~~~
++
 +linkman:upsd[1m]
- 
- Clients:
- ~~~~~~~~
--linkman:upsc[8], linkman:upscmd[8],
--linkman:upsrw[8], linkman:upsmon[8]
++
++Clients:
++~~~~~~~~
++
 +linkman:upsc[1m], linkman:upscmd[1m],
 +linkman:upsrw[1m], linkman:upsmon[1m]
- 
- CGI programs:
- ~~~~~~~~~~~~~
--linkman:upsset.cgi[8], linkman:upsstats.cgi[8], linkman:upsimage.cgi[8]
++
++CGI programs:
++~~~~~~~~~~~~~
++
 +linkman:upsset.cgi[1m], linkman:upsstats.cgi[1m], linkman:upsimage.cgi[1m]
- 
- Internet resources:
- ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsrw.txt nut-2.7.4/docs/man/upsrw.txt
---- nut-2.7.4/docs/man8/upsrw.txt	2016-12-29 13:17:35.439737471 +0300
-+++ nut-2.7.4/docs/man/upsrw.txt	2016-12-29 13:29:28.617206172 +0300
++
++Internet resources:
++~~~~~~~~~~~~~~~~~~~
++
++The NUT (Network UPS Tools) home page: https://www.networkupstools.org/
+diff -Naur nut-2.8.1-orig/docs/man/upsrw.txt nut-2.8.1/docs/man/upsrw.txt
+--- nut-2.8.1-orig/docs/man/upsrw.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsrw.txt	2023-11-01 03:52:52.132301336 +0100
 @@ -1,5 +1,5 @@
 -UPSRW(8)
 -========
@@ -3118,18 +4926,18 @@
  configures the hardware for you.
  
  The list of variables that allow you to change their values is based on
-@@ -101,7 +101,7 @@
- 
+@@ -119,7 +119,7 @@
  SEE ALSO
  --------
+ 
 -linkman:upsd[8], linkman:upscmd[8]
 +linkman:upsd[1m], linkman:upscmd[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upssched.conf.txt nut-2.7.4/docs/man/upssched.conf.txt
---- nut-2.7.4/docs/man8/upssched.conf.txt	2016-12-29 13:17:35.439837498 +0300
-+++ nut-2.7.4/docs/man/upssched.conf.txt	2016-12-29 13:17:50.912127533 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upssched.conf.txt nut-2.8.1/docs/man/upssched.conf.txt
+--- nut-2.8.1-orig/docs/man/upssched.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upssched.conf.txt	2023-11-01 03:43:22.059257159 +0100
 @@ -9,8 +9,8 @@
  DESCRIPTION
  -----------
@@ -3167,9 +4975,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upssched.txt nut-2.7.4/docs/man/upssched.txt
---- nut-2.7.4/docs/man8/upssched.txt	2016-12-29 13:17:35.439925101 +0300
-+++ nut-2.7.4/docs/man/upssched.txt	2016-12-29 13:29:28.618443605 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upssched.txt nut-2.8.1/docs/man/upssched.txt
+--- nut-2.8.1-orig/docs/man/upssched.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upssched.txt	2023-11-01 03:52:55.912069783 +0100
 @@ -1,5 +1,5 @@
 -UPSSCHED(8)
 -===========
@@ -3178,8 +4986,8 @@
  
  NAME
  ----
-@@ -10,14 +10,14 @@
- --------
+@@ -11,14 +11,14 @@
+ 
  *upssched*
  
 -NOTE: *upssched* should be run from linkman:upsmon[8] via the NOTIFYCMD.
@@ -3195,7 +5003,7 @@
  purpose was to allow for a shutdown to occur after some fixed period
  on battery, but there are other uses that are possible.
  
-@@ -42,7 +42,7 @@
+@@ -43,7 +43,7 @@
  	NOTIFYFLAG ONBATT SYSLOG+EXEC
  	NOTIFYFLAG LOWBATT SYSLOG+EXEC
  
@@ -3204,16 +5012,16 @@
  
  CONFIGURATION
  -------------
-@@ -64,7 +64,7 @@
+@@ -65,7 +65,7 @@
  
  If your UPS goes on and off battery frequently, you can use this program
  to reduce the number of pager messages that are sent out.  Rather than
 -sending pages directly from linkman:upsmon[8], use a short timer here.
 +sending pages directly from linkman:upsmon[1m], use a short timer here.
  If the timer triggers with the UPS still on battery, then send the page.
- If the power returns before then, the timer can be cancelled and no page 
+ If the power returns before then, the timer can be cancelled and no page
  is necessary.
-@@ -108,7 +108,7 @@
+@@ -128,7 +128,7 @@
  SEE ALSO
  --------
  
@@ -3222,9 +5030,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsset.cgi.txt nut-2.7.4/docs/man/upsset.cgi.txt
---- nut-2.7.4/docs/man8/upsset.cgi.txt	2016-12-29 13:17:35.440014391 +0300
-+++ nut-2.7.4/docs/man/upsset.cgi.txt	2016-12-29 13:29:28.619524960 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsset.cgi.txt nut-2.8.1/docs/man/upsset.cgi.txt
+--- nut-2.8.1-orig/docs/man/upsset.cgi.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsset.cgi.txt	2023-11-01 03:52:59.183109687 +0100
 @@ -1,5 +1,5 @@
 -UPSSET.CGI(8)
 -=============
@@ -3236,7 +5044,7 @@
 @@ -38,7 +38,7 @@
  nothing to do on this page.
  
- Setting values in read/write variables can also be done from the command 
+ Setting values in read/write variables can also be done from the command
 -line with linkman:upsrw[8].
 +line with linkman:upsrw[1m].
  
@@ -3268,9 +5076,9 @@
  
  See the example `upsset.conf` file for more information on how you do this.
  The short explanation is--if you can't lock it down, don't try to run it.
-diff -ur nut-2.7.4/docs/man8/upsset.conf.txt nut-2.7.4/docs/man/upsset.conf.txt
---- nut-2.7.4/docs/man8/upsset.conf.txt	2016-12-29 13:17:35.440112746 +0300
-+++ nut-2.7.4/docs/man/upsset.conf.txt	2016-12-29 13:17:50.913149909 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsset.conf.txt nut-2.8.1/docs/man/upsset.conf.txt
+--- nut-2.8.1-orig/docs/man/upsset.conf.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsset.conf.txt	2023-11-01 03:43:22.064024350 +0100
 @@ -9,18 +9,18 @@
  DESCRIPTION
  -----------
@@ -3293,18 +5101,18 @@
  directly as it would be protected by the LISTEN directives in
  your linkman:upsd.conf[5] file, tcp-wrappers (if available when NUT was built),
  and hopefully local firewall settings in your OS.
-@@ -55,7 +55,7 @@
- 
+@@ -69,7 +69,7 @@
  SEE ALSO
  --------
+ 
 -linkman:upsset.cgi[8]
 +linkman:upsset.cgi[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsstats.cgi.txt nut-2.7.4/docs/man/upsstats.cgi.txt
---- nut-2.7.4/docs/man8/upsstats.cgi.txt	2016-12-29 13:17:35.440204038 +0300
-+++ nut-2.7.4/docs/man/upsstats.cgi.txt	2016-12-29 13:29:28.620302753 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsstats.cgi.txt nut-2.8.1/docs/man/upsstats.cgi.txt
+--- nut-2.8.1-orig/docs/man/upsstats.cgi.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsstats.cgi.txt	2023-11-01 03:53:01.958219580 +0100
 @@ -1,5 +1,5 @@
 -UPSSTATS.CGI(8)
 -===============
@@ -3339,9 +5147,9 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/upsstats.html.txt nut-2.7.4/docs/man/upsstats.html.txt
---- nut-2.7.4/docs/man8/upsstats.html.txt	2016-12-29 13:17:35.440292541 +0300
-+++ nut-2.7.4/docs/man/upsstats.html.txt	2016-12-29 13:17:50.913831035 +0300
+diff -Naur nut-2.8.1-orig/docs/man/upsstats.html.txt nut-2.8.1/docs/man/upsstats.html.txt
+--- nut-2.8.1-orig/docs/man/upsstats.html.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/upsstats.html.txt	2023-11-01 03:43:22.067396326 +0100
 @@ -9,7 +9,7 @@
  DESCRIPTION
  -----------
@@ -3377,14 +5185,14 @@
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/usbhid-ups.txt nut-2.7.4/docs/man/usbhid-ups.txt
---- nut-2.7.4/docs/man8/usbhid-ups.txt	2016-12-29 13:17:35.440382577 +0300
-+++ nut-2.7.4/docs/man/usbhid-ups.txt	2016-12-29 13:29:28.622719509 +0300
+diff -Naur nut-2.8.1-orig/docs/man/usbhid-ups.txt nut-2.8.1/docs/man/usbhid-ups.txt
+--- nut-2.8.1-orig/docs/man/usbhid-ups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/usbhid-ups.txt	2023-11-01 03:53:04.678709468 +0100
 @@ -1,5 +1,5 @@
--USBHID-UPS(8) 
+-USBHID-UPS(8)
 -=============
-+USBHID-UPS(1m) 
-+===============
++USBHID-UPS(1m)
++==============
  
  NAME
  ----
@@ -3395,365 +5203,77 @@
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
- This driver, formerly called 'newhidups', replaces the legacy 'hidups' driver,
- which only supported Linux systems.
-@@ -214,7 +214,7 @@
- 
+ SUPPORTED HARDWARE
+ ------------------
+@@ -316,7 +316,7 @@
  The core driver
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources
  ~~~~~~~~~~~~~~~~~~
-diff -ur nut-2.7.4/docs/man8/victronups.txt nut-2.7.4/docs/man/victronups.txt
---- nut-2.7.4/docs/man8/victronups.txt	2016-12-29 13:17:35.440469505 +0300
-+++ nut-2.7.4/docs/man/victronups.txt	2016-12-29 13:29:28.623466787 +0300
+diff -Naur nut-2.8.1-orig/docs/man/victronups.txt nut-2.8.1/docs/man/victronups.txt
+--- nut-2.8.1-orig/docs/man/victronups.txt	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/docs/man/victronups.txt	2023-11-01 03:53:07.457934752 +0100
 @@ -1,5 +1,5 @@
 -VICTRONUPS(8)
 -=============
 +VICTRONUPS(1m)
 +==============
  
- NAME  
+ NAME
  ----
-@@ -9,7 +9,7 @@
- ----
+@@ -11,7 +11,7 @@
+ 
  This man page only documents the hardware-specific features of the the
- victronups driver.  For information about the core driver, see  
+ victronups driver.  For information about the core driver, see
 -linkman:nutupsdrv[8].
 +linkman:nutupsdrv[1m].
  
  SUPPORTED HARDWARE
  ------------------
-@@ -53,7 +53,7 @@
- 
+@@ -61,7 +61,7 @@
  The core driver:
  ~~~~~~~~~~~~~~~~
+ 
 -linkman:nutupsdrv[8]
 +linkman:nutupsdrv[1m]
  
  Internet resources:
  ~~~~~~~~~~~~~~~~~~~
---- nut-2.7.4/docs/man/Makefile.am.~2~	2016-12-29 14:19:30.511405768 +0300
-+++ nut-2.7.4/docs/man/Makefile.am	2016-12-29 14:21:34.444133222 +0300
-@@ -54,18 +54,18 @@
- 
- if WITH_MANS
- MAN_CLIENT_PAGES = \
--	nutupsdrv.8 \
--	upsc.8 \
--	upscmd.8 \
--	upsd.8 \
--	upsdrvctl.8 \
--	upslog.8 \
--	upsmon.8 \
--	upsrw.8 \
--	upssched.8
-+	nutupsdrv.1m \
-+	upsc.1m \
-+	upscmd.1m \
-+	upsd.1m \
-+	upsdrvctl.1m \
-+	upslog.1m \
-+	upsmon.1m \
-+	upsrw.1m \
-+	upssched.1m
- endif
- 
--man8_MANS = $(MAN_CLIENT_PAGES)
-+man_MANS = $(MAN_CLIENT_PAGES)
- 
- HTML_CLIENT_MANS = \
- 	nutupsdrv.html \
-@@ -81,10 +81,10 @@
- SRC_TOOL_PAGES = nut-scanner.txt nut-recorder.txt
- 
- if WITH_MANS
--MAN_TOOL_PAGES = nut-scanner.8 nut-recorder.8
-+MAN_TOOL_PAGES = nut-scanner.1m nut-recorder.1m
- endif
- 
--man8_MANS += $(MAN_TOOL_PAGES)
-+man_MANS += $(MAN_TOOL_PAGES)
- 
- HTML_TOOL_MANS = nut-scanner.html nut-recorder.html
- 
-@@ -103,16 +103,16 @@
- 	upsset.conf.5 \
- 	upsstats.html.5
- 
--MAN8_CGI_PAGES = \
--	upsset.cgi.8 \
--	upsstats.cgi.8 \
--	upsimage.cgi.8
-+MAN1m_CGI_PAGES = \
-+	upsset.cgi.1m \
-+	upsstats.cgi.1m \
-+	upsimage.cgi.1m
- endif
- 
- if WITH_CGI
-  man5_MANS += $(MAN5_CGI_PAGES)
- 
-- man8_MANS += $(MAN8_CGI_PAGES)
-+ man_MANS += $(MAN1m_CGI_PAGES)
- endif
- 
- HTML_CGI_MANS = \
-@@ -250,7 +250,7 @@
-  man3_MANS = $(MAN3_DEV_PAGES)
- 
- if !WITH_PKG_CONFIG
-- man1_MANS = $(MAN1_DEV_PAGES)
-+ man_MANS += $(MAN1_DEV_PAGES)
- endif
- # WITH_DEV
- endif
-@@ -305,7 +305,7 @@
- 
- # (--with-drivers=...)
- if SOME_DRIVERS
-- man8_MANS += $(DRIVER_MAN_LIST)
-+ man_MANS += $(DRIVER_MAN_LIST)
- 
- else
- 
-@@ -355,50 +355,50 @@
- 
- if WITH_MANS
- MAN_SERIAL_PAGES = \
--	al175.8	\
--	apcsmart.8	\
--	apcsmart-old.8	\
--	bcmxcp.8 	\
--	belkin.8 	\
--	belkinunv.8	\
--	bestfortress.8	\
--	bestuferrups.8	\
--	bestups.8 	\
--	bestfcom.8	\
--	blazer_ser.8	\
--	clone.8 \
--	dummy-ups.8	\
--	etapro.8	\
--	everups.8	\
--	gamatronic.8	\
--	genericups.8	\
--	isbmex.8	\
--	ivtscd.8	\
--	liebert.8	\
--	liebert-esp2.8	\
--	masterguard.8	\
--	metasys.8	\
--	mge-shut.8	\
--	mge-utalk.8	\
--	nutdrv_qx.8	\
--	oneac.8		\
--	microdowell.8	\
--	optiups.8	\
--	powercom.8 	\
--	powerpanel.8	\
--	rhino.8		\
--	riello_ser.8	\
--	safenet.8	\
--	solis.8		\
--	tripplite.8	\
--	tripplitesu.8	\
--	upscode2.8	\
--	victronups.8	\
--	apcupsd-ups.8
-+	al175.1m	\
-+	apcsmart.1m	\
-+	apcsmart-old.1m	\
-+	bcmxcp.1m 	\
-+	belkin.1m 	\
-+	belkinunv.1m	\
-+	bestfortress.1m	\
-+	bestuferrups.1m	\
-+	bestups.1m 	\
-+	bestfcom.1m	\
-+	blazer_ser.1m	\
-+	clone.1m \
-+	dummy-ups.1m	\
-+	etapro.1m	\
-+	everups.1m	\
-+	gamatronic.1m	\
-+	genericups.1m	\
-+	isbmex.1m	\
-+	ivtscd.1m	\
-+	liebert.1m	\
-+	liebert-esp2.1m	\
-+	masterguard.1m	\
-+	metasys.1m	\
-+	mge-shut.1m	\
-+	mge-utalk.1m	\
-+	nutdrv_qx.1m	\
-+	oneac.1m		\
-+	microdowell.1m	\
-+	optiups.1m	\
-+	powercom.1m 	\
-+	powerpanel.1m	\
-+	rhino.1m		\
-+	riello_ser.1m	\
-+	safenet.1m	\
-+	solis.1m		\
-+	tripplite.1m	\
-+	tripplitesu.1m	\
-+	upscode2.1m	\
-+	victronups.1m	\
-+	apcupsd-ups.1m
- endif
- 
- if WITH_SERIAL
--  man8_MANS +=  $(MAN_SERIAL_PAGES)
-+  man_MANS +=  $(MAN_SERIAL_PAGES)
- endif
- 
- HTML_SERIAL_MANS = \
-@@ -446,11 +446,11 @@
- # (--with-snmp)
- SRC_SNMP_PAGES = snmp-ups.txt
- if WITH_MANS
--MAN_SNMP_PAGES = snmp-ups.8
-+MAN_SNMP_PAGES = snmp-ups.1m
- endif
- 
- if WITH_SNMP
--  man8_MANS += $(MAN_SNMP_PAGES)
-+  man_MANS += $(MAN_SNMP_PAGES)
- endif
- 
- HTML_SNMP_MANS = snmp-ups.html
-@@ -469,18 +469,18 @@
- 
- if WITH_MANS
- MAN_USB_LIBUSB_PAGES = \
--	bcmxcp_usb.8 \
--	blazer_usb.8 \
--	nutdrv_atcl_usb.8 \
--	nutdrv_qx.8	\
--	richcomm_usb.8 \
--	riello_usb.8	\
--	tripplite_usb.8 \
--	usbhid-ups.8
-+	bcmxcp_usb.1m \
-+	blazer_usb.1m \
-+	nutdrv_atcl_usb.1m \
-+	nutdrv_qx.1m	\
-+	richcomm_usb.1m \
-+	riello_usb.1m	\
-+	tripplite_usb.1m \
-+	usbhid-ups.1m
- endif
- 
- if WITH_USB
-- man8_MANS += $(MAN_USB_LIBUSB_PAGES)
-+ man_MANS += $(MAN_USB_LIBUSB_PAGES)
- endif
- 
- HTML_USB_LIBUSB_MANS = \
-@@ -496,11 +496,11 @@
- # (--with-neon)
- SRC_NETXML_PAGES = netxml-ups.txt
- if WITH_MANS
--MAN_NETXML_PAGES = netxml-ups.8
-+MAN_NETXML_PAGES = netxml-ups.1m
- endif
- 
- if WITH_NEON
--   man8_MANS += $(MAN_NETXML_PAGES)
-+   man_MANS += $(MAN_NETXML_PAGES)
- endif
- 
- HTML_NETXML_MANS = netxml-ups.html
-@@ -508,11 +508,11 @@
- # (--with-powerman)
- SRC_POWERMAN_PAGES = powerman-pdu.txt
- if WITH_MANS
--MAN_POWERMAN_PAGES = powerman-pdu.8
-+MAN_POWERMAN_PAGES = powerman-pdu.1m
- endif
- 
- if WITH_LIBPOWERMAN
--   man8_MANS += $(MAN_POWERMAN_PAGES)
-+   man_MANS += $(MAN_POWERMAN_PAGES)
- endif
- 
- HTML_POWERMAN_MANS = powerman-pdu.html
-@@ -520,33 +520,33 @@
- # (--with-ipmi)
- SRC_IPMIPSU_PAGES = nut-ipmipsu.txt
- if WITH_MANS
--MAN_IPMIPSU_PAGES = nut-ipmipsu.8
-+MAN_IPMIPSU_PAGES = nut-ipmipsu.1m
- endif
- 
- if WITH_IPMI
--   man8_MANS += $(MAN_IPMIPSU_PAGES)
-+   man_MANS += $(MAN_IPMIPSU_PAGES)
- endif
- 
- HTML_IPMIPSU_MANS = nut-ipmipsu.html
- 
- SRC_MACOSX_PAGES = macosx-ups.txt
- if WITH_MANS
--MAN_MACOSX_PAGES = macosx-ups.8
-+MAN_MACOSX_PAGES = macosx-ups.1m
- endif
- 
- if WITH_MACOSX
--   man8_MANS += $(MAN_MACOSX_PAGES)
-+   man_MANS += $(MAN_MACOSX_PAGES)
- endif
- 
- HTML_MACOSX_MANS = macosx-ups.html
- 
- SRC_LINUX_I2C_PAGES = asem.txt
- if WITH_MANS
--MAN_LINUX_I2C_PAGES = asem.8
-+MAN_LINUX_I2C_PAGES = asem.1m
- endif
- 
- if WITH_LINUX_I2C
--   man8_MANS += $(LINUX_I2C_PAGES)
-+   man_MANS += $(LINUX_I2C_PAGES)
- endif
- 
- HTML_LINUX_I2C_MANS = asem.html
-@@ -561,7 +561,7 @@
- 	$(MAN_CLIENT_PAGES) \
- 	$(MAN_TOOL_PAGES) \
- 	$(MAN5_CGI_PAGES) \
--	$(MAN8_CGI_PAGES) \
-+	$(MAN1m_CGI_PAGES) \
- 	$(MAN1_DEV_PAGES) \
- 	$(MAN3_DEV_PAGES) \
- 	$(MAN_SERIAL_PAGES) \
-@@ -621,7 +621,7 @@
- 
- CLEANFILES = *.xml *.html
- 
--SUFFIXES = .txt .html .1 .3 .5 .8
-+SUFFIXES = .txt .html .1 .3 .5 .1m
- 
- if HAVE_ASCIIDOC
- 
-@@ -649,7 +649,7 @@
- .txt.5:
- 	$(A2X) $(A2X_MANPAGE_OPTS) $<
- 
--.txt.8:
-+.txt.1m:
- 	$(A2X) $(A2X_MANPAGE_OPTS) $<
- 
- else !HAVE_ASCIIDOC
-@@ -690,7 +690,7 @@
- 		exit 1; \
- 	fi
- 
--.txt.8:
-+.txt.1m:
- 	@if [ -r "$@" ]; then \
- 		echo "Not (re)building $@ manual page, since 'asciidoc', 'xmllint' or 'xsltproc' were not found." ; \
- 	else \
+diff -Naur nut-2.8.1-orig/configure.ac nut-2.8.1/configure.ac
+--- nut-2.8.1-orig/configure.ac	2023-10-31 23:30:21.000000000 +0100
++++ nut-2.8.1/configure.ac	2023-11-01 03:53:07.457934752 +0100
+@@ -2622,8 +2622,8 @@
+ 		AC_MSG_CHECKING([if we can build ${nut_doc_build_target_base}])
+ 		can_build_doc_man=no
+ 		if test "${nut_have_asciidoc}" = yes ; then
+-			( cd "$DOCTESTDIR" && ${A2X} --format manpage --destination-dir=. --xsltproc-opts="--nonet" "${abs_srcdir}"/docs/man/snmp-ups.txt && test -s snmp-ups.8 ) && can_build_doc_man=yes
+-			rm -f "${DOCTESTDIR}"/snmp-ups.8
++			( cd "$DOCTESTDIR" && ${A2X} --format manpage --destination-dir=. --xsltproc-opts="--nonet" "${abs_srcdir}"/docs/man/snmp-ups.txt && test -s snmp-ups.1m ) && can_build_doc_man=yes
++			rm -f "${DOCTESTDIR}"/snmp-ups.1m
+ 		fi
+ 		if test "${can_build_doc_man}" = yes ; then
+ 			AC_MSG_RESULT(yes)
+@@ -2637,7 +2637,7 @@
+ 				DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
+ 				if test "${nut_doc_build_target_flag}" = "auto" ; then
+ dnl Test that groff files exist (building from distributed tarball, not git repo)
+-					if test -s "${abs_srcdir}"/docs/man/snmp-ups.8 ; then
++					if test -s "${abs_srcdir}"/docs/man/snmp-ups.1m ; then
+ 						AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation, but can install pre-built distributed copies])
+ 						DOC_INSTALL_DISTED_MANS="yes"
+ 					else
+@@ -2994,8 +2994,8 @@
+ 		DRIVER_MAN_LIST=""
+ 		for i in ${DRIVER_BUILD_LIST}; do
+ 		    dnl See if source or pre-generated (tarball) doc file exists:
+-			if test -f ${srcdir}/docs/man/$i.txt -o -f ${srcdir}/docs/man/$i.8; then
+-				DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8"
++			if test -f ${srcdir}/docs/man/$i.txt -o -f ${srcdir}/docs/man/$i.1m; then
++				DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.1m"
+ 				DRIVER_MAN_LIST_PAGES="${DRIVER_MAN_LIST_PAGES} $i.txt"
+ 			fi
+ 		done
diff --git a/components/sysutils/nut/patches/08-upsmon-txt.patch b/components/sysutils/nut/patches/08-upsmon-txt.patch
new file mode 100644
index 0000000..06c6237
--- /dev/null
+++ b/components/sysutils/nut/patches/08-upsmon-txt.patch
@@ -0,0 +1,13 @@
+Avoid characters that asciidoc barfs on (2.8.1 release issue, fixed later).
+
+--- nut-2.8.1-orig/docs/man/upsmon.txt	2023-10-31 16:29:39.777964994 +0100
++++ nut-2.8.1-fixed/docs/man/upsmon.txt	2023-11-02 16:28:54.173790439 +0100
+@@ -414,7 +414,7 @@
+ running if the "wall power" returns at the wrong moment as usual, the "FSD"
+ flag can not be removed from the data server unless its daemon is restarted.
+ If we do take the first step in critical mode, then we normally intend to go
+-all the way���--���shut down all the servers gracefully, and power down the UPS.
++all the way -- shut down all the servers gracefully, and power down the UPS.
+ 
+ Keep in mind that some UPS devices and corresponding drivers would also latch
+ or otherwise resurface the "FSD" state again even if "wall power" is available,
diff --git a/components/sysutils/nut/patches/09-libusb-no-sfw.patch b/components/sysutils/nut/patches/09-libusb-no-sfw.patch
new file mode 100644
index 0000000..8c9f4be
--- /dev/null
+++ b/components/sysutils/nut/patches/09-libusb-no-sfw.patch
@@ -0,0 +1,14 @@
+OI does not require sfw (and that is a 32-bit inclined path anyway)
+
+--- nut-2.8.1-orig/m4/nut_check_libusb.m4	2023-09-19 23:43:43.000000000 +0200
++++ nut-2.8.1-fixed/m4/nut_check_libusb.m4	2023-11-04 21:06:37.924268597 +0100
+@@ -309,7 +309,8 @@
+ 			[solaris2.1*], [
+ 				AC_MSG_CHECKING([for Solaris 10 / 11 specific configuration for usb drivers])
+ 				AC_SEARCH_LIBS(nanosleep, rt)
+-				LIBS="-R/usr/sfw/lib ${LIBS}"
++				dnl #illumos is modern# LIBS="-R/usr/sfw/lib ${LIBS}"
++				LIBS="${LIBS}"
+ 				dnl FIXME: Sun's libusb doesn't support timeout (so blocks notification)
+ 				dnl and need to call libusb close upon reconnection
+ 				dnl TODO: Somehow test for susceptible versions?
diff --git a/components/sysutils/nut/patches/10-nut-2155.patch b/components/sysutils/nut/patches/10-nut-2155.patch
new file mode 100644
index 0000000..0cc8067
--- /dev/null
+++ b/components/sysutils/nut/patches/10-nut-2155.patch
@@ -0,0 +1,15 @@
+Fix SIGSEGV while preforming INSTCMD
+
+https://github.com/networkupstools/nut/pull/2155
+
+--- nut-2.8.1.x/drivers/dstate.c	2023-09-19 10:08:14.000000000 +0200
++++ nut-2.8.1/drivers/dstate.c	2023-11-09 04:46:33.193533124 +0100
+@@ -780,7 +780,7 @@
+ 			upsdebugx(3, "%s: TRACKING = %s", __func__, cmdid);
+ 
+ 		/* try the handler shared by all drivers first */
+-		ret = main_instcmd(arg[1], arg[2], conn);
++		ret = main_instcmd(cmdname, cmdparam, conn);
+ 		if (ret != STAT_INSTCMD_UNKNOWN) {
+ 			/* The command was acknowledged by shared handler, and
+ 			 * either handled successfully, or failed, or was not
diff --git a/components/sysutils/nut/pkg5 b/components/sysutils/nut/pkg5
index 3588f99..ae2a2d4 100644
--- a/components/sysutils/nut/pkg5
+++ b/components/sysutils/nut/pkg5
@@ -1,31 +1,46 @@
 {
     "dependencies": [
-        "SUNWcs",
         "library/augeas-tools",
         "library/gd",
+        "library/libmodbus",
         "library/libtool/libltdl",
+        "library/libusb-1",
         "library/neon",
-        "library/security/openssl",
+        "library/python/pyqt5",
+        "library/security/openssl-31",
+        "runtime/python-39",
         "shell/ksh93",
         "system/library",
-        "system/library/g++-7-runtime",
-        "system/library/gcc-7-runtime",
+        "system/library/g++-13-runtime",
+        "system/library/gcc-13-runtime",
         "system/library/math",
-        "system/library/usb/libusb",
         "system/management/freeipmi",
         "system/management/powerman",
         "system/management/snmp/net-snmp",
         "text/asciidoc"
     ],
     "fmris": [
-        "system/management/nut",
-        "system/management/nut-common",
         "system/management/nut/augeas",
-        "system/management/nut/bins",
         "system/management/nut/cgi",
+        "system/management/nut/clients",
+        "system/management/nut/common",
         "system/management/nut/devtools",
+        "system/management/nut/drivers/ipmi",
+        "system/management/nut/drivers/modbus",
+        "system/management/nut/drivers/neon",
+        "system/management/nut/drivers/powerman",
+        "system/management/nut/drivers/serial",
+        "system/management/nut/drivers/snmp",
+        "system/management/nut/drivers/software",
+        "system/management/nut/drivers/usb",
         "system/management/nut/drivers",
-        "system/management/nut/libs"
+        "system/management/nut/libs/pynut",
+        "system/management/nut/libs",
+        "system/management/nut/nut-monitor-gui-common",
+        "system/management/nut/nut-monitor-gui-py3qt5",
+        "system/management/nut/nut-monitor-gui",
+        "system/management/nut/server",
+        "system/management/nut"
     ],
     "name": "nut"
 }
\ No newline at end of file

--
Gitblit v1.9.3