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

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

适用:飞牛 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


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 得到空数据导致的兜底关机。先对名字,再查数据。

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

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

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