Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions NEWS.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,41 @@ https://github.com/networkupstools/nut/milestone/13
rate, data bits, parity, stop bits, flow control, per-byte read timeout,
and transmission pacing. Also improved serial resource handling and
reconnection behavior. [issue #3510, PR #3543]
* Reworked incoming serial framing to use the total packet length declared
by byte `[1]`, instead of treating every `0xFF` as a new packet and every
`0xFE` as its end. A leading `0xFF` now starts a frame only while the
reader is idle; subsequent `0xFF` and `0xFE` values are preserved as
payload or checksum data. The frame is completed at its declared length
and accepted only when that final byte is `0xFE`. Declared lengths are
also bounded by the receive buffer before further bytes are stored.
This prevents valid 18-byte and 50-byte HWINFO replies containing an
internal `0xFF` from being split into unrecognized fragments, allowing
the driver to obtain model, firmware, serial number and battery-pack
information instead of repeatedly requesting HWINFO and delaying normal
polling. The raw packet captures and protocol analysis which made this
correction possible were contributed by GitHub user `freechurros`.
[issue #3592]
* Applied follow-up hardware-test feedback from `freechurros`: corrected
`interpret_pkt_hwinfo()` to validate the HWINFO checksum instead of the
DATA checksum, exposed unrecognized packets through `debug_pkt_raw`, and
published the documented lower-case `battery.charger.status` values for
compatibility with Home Assistant. [issue #3592]
* Send the long, short and compatibility hardware-discovery requests from
`upsdrv_initinfo()`, checking the serial descriptor before every request.
Failed or partial writes now mark data stale and invalidate the port so
the normal update cycle reopens it before further communication.
* Refresh cached model-specific data from every valid HWINFO packet and
restart discovery after a serial reconnection, allowing a replaced UPS
to be identified without restarting the driver.
* Added the legacy five-byte compatibility initialization request
(`FF 05 01 06 FE`) as a third fallback. The driver first makes six
extended initialization attempts, then selects randomly among the
extended, normal and compatibility requests so older or otherwise
compatibility-dependent NHS units can answer with their supported
protocol variant.
* Consolidated the NHS model-code metadata into an indexed lookup table,
preserving the existing model descriptions and nominal VA mappings while
making unknown-code handling explicit.

- `nutdrv_qx` driver updates:
* Added the `richcomm-svc` USB communication subdriver for older
Expand Down
2 changes: 2 additions & 0 deletions docs/nut.dict
Original file line number Diff line number Diff line change
Expand Up @@ -2238,6 +2238,7 @@ fosshost
fp
fprintf
freebsd
freechurros
freedesktop
freeipmi
freetype
Expand Down Expand Up @@ -3758,6 +3759,7 @@ xAAAA
xCC
xD
xF
xFE
xFF
xXXXX
xYYYY
Expand Down
Loading
Loading