MUST_EP2000PRO(8)

πŸ“¦
version 2.8.5 Β· 4 versions
, in fedora 43, fedora 44

πŸ’– MUST_EP2000PRO(8) πŸ’–

okay bestie, so this is the NUT manual page for must_ep2000pro, and it's literally the driver that talks to your MUST EP2000Pro UPS over RS-232 serial Modbus. no cap. let's get into it 🫢


✨ NAME ✨

must_ep2000pro β€” the driver for MUST EP2000Pro UPS with an RS-232 serial Modbus connection. that's the whole vibe πŸ’…


🌸 SYNOPSIS 🌸

must_ep2000pro -h

must_ep2000pro -a DEVICE_NAME [OPTIONS]
Note: this page is ONLY about the hardware-specific stuff for the must_ep2000pro driver. for the core driver tea, go read nutupsdrv(8). periodt.

πŸ¦‹ SUPPORTED HARDWARE πŸ¦‹

so this driver handles MUST EP2000Pro–compatible, line-interactive UPS units, and they gotta have these two things:

  1. a 12V or 24V external battery
  2. a connection that's RS-232 or USB (via one of those RS232-to-USB converter dongles)

here are some models that might be covered by this driver πŸ‘‘:

  • Original EP200Pro
  • Energy Smart.2
  • Luxeon UPS-500ZR
  • Bineos EP20-1000 PRO
  • any other work with original program from MUST

and rn, it's only actually been tested on this one 🧚:

  • Energy Smart.2 600W

ngl, these devices generally don't serve up ANY identification data, so autodetection is just not happening, sorry bestie 😭. the only documented piece of info is "software version", and honestly its meaning is unknown. it's giving mystery.

the must_ep2000pro driver uses the libmodbus project for its Modbus implementation. iconic collaboration fr fr ✨


πŸ’œ INSTALLATION πŸ’œ

this driver should be built by default if libmodbus and the development headers are available. but you can force the configure script to build it with these args:

:; ./configure --with-serial=yes --with-modbus=yes

you ALSO gotta give proper (R/W) permissions on the local serial device file so the NUT driver's run-time user can access it. this may need extra setup for start-up scripting, udev or upower rules, to apply the rights on every boot β€” especially if your device nodes are tracked by a virtual filesystem. so annoying but we deal πŸ’€

for example, a USB-to-serial converter can show up as /dev/ttyACM0 or /dev/ttyUSB0 on Linux, or /dev/ttyU0 on FreeBSD (note the capital "U", don't be fooled). and a built-in serial port can be /dev/ttyS0 on Linux, or one of the /dev/cua* names on FreeBSD. slay πŸŽ€


🌈 EXTRA ARGUMENTS 🌈

this driver also supports these optional settings:

  • lowbatt=num β€” sets the value of battery.charge.low to num. heads up tho: the device itself has only switch-off on low battery voltage. that's it, that's the whole setting.

⭐ INSTANT COMMANDS ⭐

this driver supports some instant commands (peep upscmd(8) for the full lore):

  • beeper.enable β€” enable the UPS beeper πŸ”Š
  • beeper.disable β€” disable the UPS beeper πŸ”‡
  • shutdown.return β€” turn off the load and wait for the power to return

πŸ’€ KNOWN PROBLEMS πŸ’€

okay so these are important, read them carefully bestie:

  • if you run the shutdown.return command with mains present, it does nothing.
  • if you run the shutdown.return command without mains present, it immediately powers off the device. no chill whatsoever.
  • there is no setting in the device documentation to specify a shutdown delay.
  • on the development side: to write even a SINGLE register, you must use the "write multiple registers" command. yeah. one register. multiple registers command. that's just how it is πŸ™ˆ

πŸŽ€ AUTHOR πŸŽ€

Mikhail Mironov <mike@darkmike.ru>


πŸ”₯ SEE ALSO πŸ”₯

The core driver:

Internet resources:


and that's a wrap, bestie! πŸ’– this whole thing is from Network UPS Tools 2.8.5, dated 10/07/2026, so if you're reading this way later, vibe check the version first. mwah, go configure your UPS 🫢✨

πŸ“¦ where this page comes from