@@ -58,6 +58,11 @@ https://github.com/networkupstools/nut/milestone/13
5858 attempts on timeout errors, simplifying error recovery. [PR #3414]
5959 * Increased default TCP response timeout to 2000 ms. [PR #3418]
6060
61+ - `dummy-ups` driver updates:
62+ * Added `authconf` driver parameter for repeater mode to control
63+ authentication configuration discovery. It accepts `default`, `none`,
64+ or a specific authconf file path. [issue #3329]
65+
6166 - `nutdrv_qx` driver updates:
6267 * Only claim a USB device as "supported" during discovery out of the box
6368 if `subdriver_command` was assigned (`1A86:7523` is used by CH340/341
@@ -69,14 +74,84 @@ https://github.com/networkupstools/nut/milestone/13
6974 similar to specifying `novendor` in the `ups.conf` (except that the
7075 option bypasses the check altogether, so driver instances handling well
7176 behaved devices would also not show their manufacturer). [issue #3436]
77+ * Modified `armac` subdriver's USB interrupt read logic to request up to
78+ 8 bytes per read instead of strictly requiring 6 bytes. This resolves
79+ an initialization failure with certain UPS models (e.g., SVC
80+ VP-1250-LCD) that return a 7-byte report instead of the standard 6 bytes,
81+ allowing the Megatec payload to be successfully reconstructed. [PR #3485]
82+ * In `Voltronic-QS-Hex` subdriver, the format string sanity check added in
83+ recent NUT releases caught a mismatch in `ups.load` reading. [issue #3532]
84+ * Modified `voltronic-qs` subdriver to request the QI command, supplying
85+ NUT with battery charge, runtime, input frequency, output current, and
86+ input transfer low/high values on devices which support it (`H`, `I`, `J`
87+ protocols, e.g. Powershield PSDR800). [#3521]
88+
89+ - Introduced a new NUT driver named `ragtech` which provides support for the
90+ Ragtech "Easy Pro" family of line-interactive UPS units (also sold under
91+ the NEP, TORO, INNERGIE and OneUP brands in Brazil). Devices present a USB
92+ CDC-ACM serial interface (VID `0x04D8`, PID `0x000A`) and speak a proprietary
93+ 6-byte register-access protocol with read/write/AND/OR opcodes; the driver
94+ covers the 20 models in the family-10 device table and was validated
95+ end-to-end against an Easy 2000 TI. Shutdown-related instant commands are
96+ opt-in via the `allow_shutdown` flag because the firmware does not
97+ auto-restart on mains return. [Initial PR #3447]
98+ * Put the CDC-ACM port into raw mode at startup. A freshly enumerated
99+ port defaults to canonical mode, where the kernel buffers the firmware's
100+ binary replies waiting for a newline that never arrives, so the first
101+ poll timed out as "no reply to initial status poll" unless the port had
102+ been set raw externally. [issue #3500]
103+ * Retry the initial status poll a few times before bailing out, so the
104+ driver starts cleanly under the stock systemd units when the device has
105+ only just enumerated at boot, instead of leaning on a fatal exit and a
106+ `Restart=on-failure` cycle. [issue #3500]
107+ * Drain the firmware's handshake reply before the first status poll.
108+ Some models (e.g. the Easy Pro 3200 VA GT) are half-duplex and dropped
109+ the read command that was sent while the handshake reply was still in
110+ flight. [issue #3500]
111+ * Compute `battery.charge` as `raw / 2.55` so a fully charged battery
112+ reports exactly 100 % instead of 100.2 %.
113+ * Added a `va` option to override the apparent-power rating when the
114+ firmware model id is shared between product lines, correcting
115+ `ups.power.nominal`, `ups.realpower.nominal` and the computed
116+ `ups.load`. [issue #3500]
117+
118+ - `richcomm_usb` driver updates:
119+ * Completed support for NUT standard USB configuration options, and fixed
120+ some problems possible when iterating devices. [issue #1768, PR #3477]
72121
73122 - `usbhid-ups` driver updates:
74123 * When reconnecting, report success more visibly (not only in debug), and
75124 do not reset driver state to "quiet" when it will loop trying. [PR #3423]
125+ * `idowell-hid` subdriver now also supports GoldenMate 1000VA/800W LiFePO4
126+ battery packs (`0x06da:0xffff`), which carry the same `-BMS-` firmware and
127+ HID descriptor as the existing `0x075d:0x0300` device. The shared
128+ Phoenixtec vendor ID (`0x06da`) is gated by device strings so the other
129+ devices on that ID still fall through to `liebert-hid` / `mge-hid`.
130+ [issue #3501, PR #3502]
131+ * `mge-hid` subdriver updated to suppress `CHRG` status on constant-charge
132+ mode devices when battery is fully charged. [issue #3518, PR #3519]
133+
134+ - `snmp-ups` driver updates:
135+ * Extended the XPPC-MIB subdriver (enterprise 935) to expose
136+ `battery.runtime`, `battery.voltage`, `input.frequency`,
137+ `output.voltage.nominal` and `ups.firmware.aux` from Phoenixtec
138+ based UPS cards that already answer the rest of the subtree. [#2608]
76139
77140 - common code:
78- * Revised 'dstate' machinery to track socket connections closed mid-way
79- through a call, to avoid access after `free()`. [#3302]
141+ * Revised 'dstate' machinery to track socket connections closed mid-way
142+ through a call, to avoid access after `free()`. [#3302]
143+ * When dealing with driver `AF_UNIX` sockets (non-WIN32), use non-blocking
144+ `connect()` to ensure a timeout if something does not respond. [PR #3456]
145+ * Windows driver state named pipes now use explicit security attributes
146+ instead of relying on default settings from the launch context. [PR #3479]
147+ * Likewise for named pipes in other NUT daemons and `upssched`. [PR #3527]
148+ * Drivers with libusb-1.0 code path, and `nutdrv_qx` in particular: revise
149+ to fix per-close `libusb_exit()` deadlock, and escalate a persistent
150+ `LIBUSB_ERROR_OVERFLOW` state to USB reset handling. [PR #3448]
151+ * Some driver code paths used buffers sent via USB transfers as fixed-size
152+ chunks populated only partially with bytes we intended. These buffers are
153+ now more diligently pre-zeroed as their siblings were in other code paths,
154+ to avoid sending host stack garbage to a device. [#3529]
80155
81156 - NUT client libraries:
82157 * Complete support for actions documented in `docs/net-protocol.txt`
@@ -110,6 +185,40 @@ https://github.com/networkupstools/nut/milestone/13
110185 allows to pass the `certfile` argument needed for OpenSSL builds. [#3331]
111186 * The `libupsclient` (C) and `libnutclient` (C++) API were updated to
112187 report the ability to check `CERTIDENT` information. [#3331]
188+ * Introduced support for "authconf" files to store and convey NUT client
189+ authentication details. [issue #3329]
190+
191+ - Various clients:
192+ * Flush standard output and error buffers before handling clean exit
193+ rituals, to avoid losing the result of client's work in case that
194+ clean-up crashes (e.g. due to third-party code involved). [#3454]
195+
196+ - `upsimage.cgi` client updates:
197+ * Adjust scaling for small (single-digit) value ranges to avoid division
198+ by zero and not rendering anything. [issue #3469]
199+
200+ - `upsc`, `upscmd`, `upsrw` command-line client updates:
201+ * Enabled support for `nutauth.conf` files to provide credentials and/or
202+ SSL settings in the client which previously only did best-effort attempts
203+ at secure communications without an individual certificate, and only
204+ anonymously for reading. The new `-A filename` option defaults to trying
205+ to use a `nutauth.conf` file (if found in one of the default locations)
206+ but not failing if one is not usable; specific values can require use of
207+ such a file (`default`) or to not even try reading one (`none`).
208+ [issues #3329, #3411]
209+
210+ - `upslog` client/tool updates:
211+ * Added support for best-effort use of `nutauth.conf` files from default
212+ locations or via `-A` option, as described above. Since this client
213+ can establish multiple connections, keep in mind that currently it
214+ can only identify itself with some one (first seen) client certificate,
215+ if `CERTIDENT` settings are used. Multiple `CERTHOST` directives for
216+ specially trusted servers can be used. [#3329]
217+
218+ - `upsstats`, `upsset`, `upsimage` CGI client updates:
219+ * Added support for best-effort use of `nutauth.conf` files from default
220+ locations described above (no way to choose the location, other than
221+ by web-server environment variables for CGI calls). [#3329]
113222
114223 - `upsmon` client updates:
115224 * Introduced support for `CERTFILE` option, so the client can identify
@@ -119,11 +228,36 @@ https://github.com/networkupstools/nut/milestone/13
119228 success of SSL initialization with both backends is more diligently
120229 tracked) should now not cause exit of the client if secure connection
121230 is not required by its configuration in the first place. [#3420]
231+ * Potentially a breaking change for existing deployments with `upsmon` and
232+ `upssched` integration: the `CMDSCRIPT` and `NOTIFYCMD` definitions were
233+ revised for the first token to mean an exact program name (possibly with
234+ spaces in the value), not a shell scriptlet. Documentation in earlier
235+ NUT releases implied that arguments could be passed here -- this is no
236+ longer true. If you need to pass special arguments to a notification
237+ program, please use additional separately quoted tokens, or write a
238+ small helper script to do so and specify its path here.
239+ The `SHUTDOWNCMD` is still a scriptlet, as far as specifying command
240+ arguments is concerned, but it also newly supports parsing multiple
241+ tokens as additional arguments. [PR #3499]
242+ * Introduced a new notification type for unexpected clock change which
243+ is specially handled (data re-initialization), whether due to sleep
244+ and wake-up, or NTP/RTC clock changes during boot, or severe delays
245+ on a stressed system (to name a few practical cases). [issue #3405]
246+
247+ - `upssched` client/tool updates:
248+ * Fixed handling of `NOTIFYMSG` from command line if other arguments are
249+ present (e.g. debugging with `-DDDDDD`). [issues #3105, #3525, PR #3527]
122250
123251 - `NUT-Monitor` Python GUI client:
124252 * Fixed Qt tray tooltips to render in plain text, not rich text which
125253 ended up as literal HTML on KDE Plasma 6; now that rich text formatting
126254 is only used for main window status labels. [PR #3430]
255+ * Fixed both Python 2 and 3 variants to handle automatic client reconnection
256+ (e.g. after system suspend/resume, network interruption, or NUT server
257+ restart). [issue #3509, PR #3523]
258+
259+ - `upssched` client/tool updates:
260+ * Added a `clean_exit()` handler similar to that in `upsmon`. [PR #3499]
127261
128262 - `upsd` data server updates:
129263 * If we hit "Too many open files" during configuration reload, close
@@ -134,6 +268,9 @@ https://github.com/networkupstools/nut/milestone/13
134268 much later (tell the sysadmin to increase `ulimit` or set up a more
135269 conservative `MAXCONN`). If there is a separate soft and hard limit,
136270 and `MAXCONN` exceeds the soft limit, try to raise the bar. [issue #3365]
271+ * If SSL configuration was provided, but the server failed to apply some
272+ aspect of that, it should now abort with an explanation (and not proceed
273+ with insecure start-up like it could do before). [issue #3331, PR #3435]
137274
138275 - Recipes, CI and helper script updates not classified above:
139276 * Introduced `ci_build.sh` settings and respective CI workflow settings
@@ -142,14 +279,18 @@ https://github.com/networkupstools/nut/milestone/13
142279 files. Both can be enabled by `export DO_USE_NUTCI_CACHE=yes` and would
143280 store data under a `${CI_CACHE_NUT_BASEDIR}` directory (defaults to
144281 `~/.cache/nut-ci`); more fine-tuning environment variables are provided.
145- [issues #3108, #3390, #1711, PR #3109]
282+ Directory names are based on hashes of strings that identify the content,
283+ which are size-limited to some 8 characters.
284+ [issues #3108, #3390, #1711, #3526, PR #3109]
146285 * Rearranged the GHA job to prepare Dist and Docs Tarballs. [PR #3460]
147286 * Updated `scripts/Windows/dllldd.sh` helper script to better detect DLL
148287 names not exposed with dynamic linking metadata (e.g. some Mozilla NSS
149288 dependencies were not previously discovered and bundled). [issue #3420,
150289 PRs #3429, #3432]
151290 * Updated a NUT CI farm worker to FreeBSD 15 and updated the recipes and
152291 documentation according to problems that were found along the way. [#3453]
292+ * Various recipe portability fixes for AIX, NetBSD and OmniOS at least.
293+ [#3489, #3495, #3498]
153294 * Jenkins used as the NUT CI farm core has bumped JDK requirements for its
154295 controllers and build agents, `docs/config-prereqs.txt` revised.
155296
0 commit comments