Skip to content

FTY remerge from master as of 2026-06-30#3516

Open
jimklimov wants to merge 796 commits into
networkupstools:FTYfrom
jimklimov:FTY-remerge-20260630
Open

FTY remerge from master as of 2026-06-30#3516
jimklimov wants to merge 796 commits into
networkupstools:FTYfrom
jimklimov:FTY-remerge-20260630

Conversation

@jimklimov

@jimklimov jimklimov commented Jun 30, 2026

Copy link
Copy Markdown
Member

Update the codebase changes accumulated since NUT v2.8.5 release, and rectify a few DMF-specific script/recipe nuances.

jimklimov and others added 30 commits June 22, 2026 13:06
…FLAGS [networkupstools#3495]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
GCC will silently accept warning disable options, but then if there
is an issue, warn about the option.

"cc1: note: unrecognized command-line option '-Wno-unknown-warning-option'
may have been intended to silence earlier diagnostics"

Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
Signed-off-by: Doug Nazar <nazard@nazar.ca>
…ther Phoenixtec devices

GoldenMate 1000VA/800W LiFePO4 packs reuse the shared Phoenixtec vendor
ID 0x06da:0xffff with the same -BMS- firmware and HID descriptor as the
existing iDowell 0x075d:0x0300 device, so they fall back to the generic
liebert-hid handler (bogus battery.runtime, etc).

The 0x06da VID is shared: mge-hid claims it for AEG PROTECT NAS and
liebert-hid is its default sink. Probe order is mge -> idowell -> liebert,
so idowell can intercept GoldenMate before liebert provided it does not
grab the other 0x06da devices.

- Add a named PHOENIXTEC_VENDORID define and use it for the 0x06da:0xffff
  device-table entry (feeds the udev/nut-scanner parser).
- Gate idowell_claim() on the device's -BMS-/Smart-Battery strings, like
  mge_claim() does for AEG, returning 0 for non-GoldenMate 0x06da so they
  fall through to liebert-hid / mge-hid.
- Bump IDOWELL_HID_VERSION to 0.21 and add a NEWS.adoc entry.
- List both GoldenMate variants in data/driver.list.in.

Fixes: networkupstools#3501
Signed-off-by: Boris Shor <boris@bshor.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
… scaling, va override

Startup robustness (issue networkupstools#3500, Easy Pro 3200 VA GT on a Raspberry Pi)
----------------------------------------------------------------------
The reporter's unit failed every boot with "no reply to initial status
poll", even though it speaks the family-10 protocol correctly (its 30-byte
main range decodes cleanly against the OEM Supervise 8 readings). The root
cause, pinned down from an strace + the probe script, was the serial line
discipline, not the protocol:

  * A freshly enumerated CDC-ACM tty comes up in canonical mode (ICANON).
    In that mode the kernel buffers incoming bytes until it sees a newline.
    The firmware's replies are raw binary and never contain one, so the
    bytes were held in the kernel and the first poll always timed out. The
    driver had been relying on the port already being raw -- which happened
    to be true on the author's host only because its systemd unit ran
    "stty ... raw" in an ExecStartPre, masking the bug. Without that external
    step (e.g. a plain "upsdrvctl start"), the driver never worked.

    upsdrv_initups() now sets raw 8N1 mode itself: tcgetattr/clear ICANON et
    al./tcsetattr, leaving the baud untouched (CDC-ACM ignores it at the
    wire), with CLOCAL set and HUPCL cleared so neither the reconfigure nor
    the eventual close toggles DTR, and DTR/RTS are forced low afterwards.
    The previous "NEVER call tcsetattr" comment was unfounded: NUT's own
    ser_set_speed() configures raw mode via tcsetattr and is used by ~50
    serial drivers, the reporter observed no DTR pulse / shutdown, and this
    driver's shutdown path is a register write, not a DTR edge.

  * upsdrv_initinfo() now retries the wake-up handshake and first poll a few
    times before calling fatalx(). Right after a cold boot the device may
    have only just enumerated and the firmware can need a moment to answer.
    Retrying lets the driver come up cleanly under the stock NUT systemd
    units (which start it as soon as the device node appears) instead of
    depending on a fatal exit plus a Restart=on-failure cycle to recover,
    which is noisy and only retries on a 5 s cadence. Combined with the raw
    mode above, no external stty, sleep, or .device binding is needed.

  * The firmware answers the handshake with a byte or two (e.g. 0xCA). Some
    models are half-duplex and drop a command sent while that reply is still
    in flight; the handshake reply is now drained before the first poll
    (which only works because raw mode actually delivers those bytes).

Other fixes
-----------
  * Compute battery.charge as raw / 2.55 so a full battery reports exactly
    100 % instead of 100.2 % (drops the previous clamp).

  * Add a "va" ups.conf option to override the apparent-power rating. The
    model id byte is shared between product lines (a 3200 VA GT reports the
    same id as an Easy 2200 TI), so the driver cannot always pick the right
    VA from its table; the override corrects ups.power.nominal,
    ups.realpower.nominal and the computed ups.load.

Verified: family-10 Easy 2000 TI on hardware (raw mode, handshake drain,
battery 100.0, va=3200 override) and the 3200 VA GT by the reporter
(full telemetry, matching Supervise 8). Driver bumped to 0.10, still
DRV_EXPERIMENTAL.

Signed-off-by: juslex <66561713+juslex@users.noreply.github.com>
The ragtech driver talks to a USB CDC-ACM device node (/dev/ttyACM*) through
the serial layer. Classifying it as "serial" media lets the auto-generated
nut-driver@<ups> service depend on systemd-udevd / nut-udev-settle, so it
waits for the device node to be published by udev before starting instead of
racing the enumeration at boot. Requested by @jimklimov in issue networkupstools#3500.

Add a [ragtech-serial] section to the enumerator self-test fixture and the
matching entries in the affected expected outputs (device-name listing,
config dump, and MEDIA/checksum listing). Full self-test passes (104 cases).

Signed-off-by: juslex <66561713+juslex@users.noreply.github.com>
`upsimage.cgi`: adjust scaling for small ranges (single-digit)
CI: Fix RPATH for illumos and related OSes
…ing_with_readonly_nfs_mount

Fix building with a read-only nfs mounted source
…-readings

snmp-ups: map more xppc readings for Phoenixtec UPS cards
…ot/github_actions/actions/cache-6

build(deps): bump actions/cache from 5 to 6
…ot/github_actions/actions/checkout-7

build(deps): bump actions/checkout from 6 to 7
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
ragtech: drain handshake reply, fix battery scaling, add va override
nut-driver-enumerator: classify ragtech as serial media
Try to avoid losing client outputs if exit clean-up crashes; try to avoid (Open)SSL-related crashes there
jimklimov and others added 28 commits July 13, 2026 21:57
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…pipe_security() to be reusable [networkupstools#3479, networkupstools#3525]

Co-authored-by: mbv06 <mbv06.dev@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… attributes for listening pipes [networkupstools#3525]

Replicate what was done for dstate.c in PR networkupstools#3479.

Co-authored-by: mbv06 <mbv06.dev@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…#3526, networkupstools#3109]

* Do not add optional dependency on `cut`
* Consider starting AND ending characters of input hash string for more randomness

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…we can follow up, logging the error in a way that seems too fatal to warnings parsers [networkupstools#1711]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…ions are present [networkupstools#3525, networkupstools#3105]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…e `SKIP: can't open existing event log NAMED_PIPE` messages [networkupstools#3527]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…log()/upsdebug() from this method [networkupstools#3527]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…Pipe(): add PIPE_REJECT_REMOTE_CLIENTS flag to only work with local host clients [networkupstools#3527]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…le command-line args as separately quoted tokens in the directive [networkupstools#3499]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
… in upsmon [networkupstools#3499]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…ert-related data [networkupstools#3499]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…in one token [networkupstools#3499]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…ome [networkupstools#3529]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
blazer_usb, nutdrv_qx: play safer with temporary buffers, pre-zero some more
…hrg-status-at-full-charge

mge-hid: suppress CHRG on CC-mode devices when battery is fully charged
…ut CHRG status suppression [networkupstools#3518, networkupstools#3519]

Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
upsmon et al: introduce NOTIFY_SUSPEND_TIMEJUMP_UNEXPECTED
Handle `upsmon` NOTIFYCMD and `upssched` CMDSCRIPT values strictly as paths
`upssched` and other NUT daemons: fix Windows state pipe permissions
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
@AppVeyorBot

Copy link
Copy Markdown

@AppVeyorBot

Copy link
Copy Markdown

Build nut 2.8.5.4942-FTY failed (commit 79995f2cf8 by @jimklimov)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Entries related to continuous integration infrastructure (here CI = tools + scripts + recipes) DMF NUT Data/Dynamic Mapping File/Format/Functionality feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants