飞牛和群晖 共享 UPS(NUT)完整教程与故障修复

2026-08-29 17:32:34 2点赞 2收藏 1评论

适用:飞牛 fnOS 作 NUT 主服务器(USB 直连 UPS)+ 群晖 Synology 作网络 UPS 客户端。 本教程基于真实排障过程写成,解决了"改 UPS 名字后飞牛一断电就误关机"的问题。 核心就一句话:只需改飞牛的 UPS 名字,账号密码、群晖全都不用动。


1. 架构

市电 ── UPS(Voltronic QS,USB)── 飞牛 192.168.1.12 (NUT master,USB 直连) │ NUT 协议,3493 端口 └── 群晖 192.168.1.10 (NUT slave,网络客户端)

  • 飞牛:通过 USB 连 UPS,运行 nutdrv_qx 驱动 + upsd(服务器)+ upsmon(master)。

  • 群晖:通过局域网连飞牛的 upsd,作为网络 UPS 客户端(slave)。

飞牛和群晖 共享 UPS(NUT)完整教程与故障修复

2. 故障现象与根因

现象

按网上教程把飞牛的 UPS 设备名从 2159221 改成 ups 之后,只要一断电、UPS 转电池供电,飞牛立刻提示"电量低于 15%"并关机,但实际电量还很充足。UI 上电量显示却正常。

根因(实测确认)

  1. 改名字时只改了 /etc/nut/ups.conf/etc/nut/upsmon.conf,漏了第三处。

  2. 飞牛自己的 UI/关机逻辑(trim_sac)是通过 /etc/nut/device.conf 里的 last-device.name 去查 UPS 的,而这个文件还停留在旧名字 2159221

  3. 名字对不上 → 断电瞬间飞牛 UI 查询 UPS 得到空数据 → 触发兜底策略(电量低于 15% 即关机) → 直接关机。

  4. 实测:断电时用 upsc 直接轮询驱动数据,电池电量 100→81%、电压 13.60→13.10→12.50V,驱动从未报过低电量。坐实了是"UI 查空"而非真低电量。

一句话结论

device.conf 里的名字没跟着改,导致 UI 断电时查空误关机。 修法就是把 device.conflast-device.name 改成和 ups.conf 一致的名字。


3. 为什么名字必须是 ups

群晖作为网络 UPS 客户端时,DSM 界面只让你填服务器 IP,UPS 名写死为 ups(界面没有名称字段)。账号密码实测完全不用动——群晖直接用飞牛现有的 NUT 用户连上。

因此被连接的 NUT 服务器(飞牛)上必须有一个名为 ups 的 UPS,群晖才连得上。这也是网上教程让你把飞牛设备名改成 ups 的原因——不是随便改的,是为了迁就群晖。

结论:飞牛的 UPS 名必须保持 ups,不能改回 2159221,否则群晖连不上(群晖界面无法改名字)。


4. 修复步骤:只改飞牛这 3 处名字

以下命令在飞牛终端(需 sudo)执行。全部完成后再重启。

4.1 /etc/nut/ups.conf —— 设备段名

段名必须是 ups:

sudo sed -i 's/^[2159221]$/[ups]/' /etc/nut/ups.conf

对应段内容(驱动参数不动):

[ups] driver = "nutdrv_qx" port = "auto" vendorid = "0665" productid = "5161" bus = "003" override.x.additional.lowbatt = "15" override.x.additional.devicetype = "USB"

4.2 /etc/nut/upsmon.conf —— MONITOR 行

sudo sed -i 's/^MONITOR 2159221 /MONITOR ups /' /etc/nut/upsmon.conf

改后(账号密码保持现状,不动):

MONITOR ups 1 monuser trim-secret master

4.3 /etc/nut/device.conf —— 关键,最容易漏

sudo sed -i 's/^last-device.name = 2159221/last-device.name = ups/' /etc/nut/device.conf

改后:

last-device.name = ups

4.4 确认三处一致

grep -n '^[' /etc/nut/ups.conf grep -n '^MONITOR' /etc/nut/upsmon.conf grep -n 'last-device.name' /etc/nut/device.conf

期望输出:[ups] / MONITOR ups 1 ... / last-device.name = ups

4.5 按顺序重启并验证

sudo systemctl daemon-reload sudo systemctl restart nut-driver@ups sleep 1 sudo systemctl restart nut-server sleep 2 sudo systemctl restart nut-monitor sleep 2 upsc -l # 应显示 ups upsc ups battery.charge # 应显示数字(如 100) systemctl is-active nut-driver@ups nut-server nut-monitor # 三个 active


4.6 允许群晖远程连接:upsd 监听 0.0.0.0(必备)

飞牛 upsd 默认只监听 127.0.0.1:3493(仅本机),群晖从局域网连不上。必须放开监听:

sudo sed -i 's/^LISTEN 127.0.0.1 3493/LISTEN 0.0.0.0 3493/' /etc/nut/upsd.conf

改后重启 nut-server 并确认监听地址已放开:

sudo systemctl restart nut-server sudo ss -tlnp | grep 3493 # 期望 0.0.0.0:3493,不是 127.0.0.1

若飞牛启用了防火墙,还需放行 3493/TCP,否则群晖仍连不上。

5. 群晖侧:什么都不用改

  1. 控制面板 → 硬件和电源 → UPS。

  2. 勾选 启用 UPS 支持

  3. 模式选 "网络 UPS 服务器"(客户端/从机,不是 USB 直连)。

  4. 服务器地址填 192.168.1.12

  5. 其他什么都不填、什么都不改,保存。

保存后页面应显示 UPS 已连接、有电量,即配置完成。


6. 最终断电实测(验收)

  1. 拔掉 UPS 市电插头。

  2. 期望:两台 NAS 都继续运行,不再一断电就关机

  3. 飞牛/群晖均显示电量缓慢下降(如 100→90→80…)。

  4. 到达关机策略(飞牛 15% 或 900 秒;群晖按自己设置)才关机。

  5. 全程无"一断电就关机"即修复成功。


7. 故障排查思路(备查)

如果以后再次出现"断电即关机/低电量误报",按此顺序查:

# 1) 名字三处是否一致(最常错) grep -n '^[' /etc/nut/ups.conf grep -n '^MONITOR' /etc/nut/upsmon.conf grep -n 'last-device.name' /etc/nut/device.conf # 2) 驱动是否真的上报低电量(直接问驱动,绕过 UI) upsc ups battery.charge upsc ups battery.voltage upsc ups ups.status # 3) 谁在连 upsd、有没有认证失败 sudo ss -tnp | grep 3493 sudo journalctl -u nut-server --no-pager -n 40 | grep -iE 'login|denied|error'

实测结论:这类"断电就关机但电量充足"的误报,绝大多数不是驱动问题,也不是账号密码问题,而是 UI 拿旧名字查 UPS 得到空数据导致的兜底关机。先对名字,再查数据。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
1评论

  • 精彩
  • 最新
  • 真不错我那时候极空间群晖也折腾很久

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
2
扫一下,分享更方便,购买更轻松