NUTDRV_SIEMENS_SITOP(8)

🌸 NUTDRV_SIEMENS_SITOP(8) 🌸

okay bestie, welcome to the NUT Manual page for nutdrv_siemens_sitop β€” yes that's a mouthful, yes we're gonna get through it together πŸ’–

✨ NAME ✨

nutdrv_siemens_sitop β€” the driver for the Siemens SITOP UPS500 series UPS. that's it, that's the whole vibe check 🫢

✨ SYNOPSIS ✨

nutdrv_siemens_sitop -h

nutdrv_siemens_sitop -a UPS_NAME [OPTIONS]
note, bestie πŸŽ€ this man page is only about the hardware-specific stuff this driver does. for the tea on the core driver itself, go read nutupsdrv(8). iykyk.

✨ SUPPORTED HARDWARE ✨

so nutdrv_siemens_sitop supports the Siemens UPS models from the SITOP UPS500 series. some of those models have a serial port, others have a USB port. and here's the little plot twist πŸ‘€ β€” the USB models actually contain a serial-over-USB chip, so as far as this driver is concerned, all of them are serial models. it's giving "they're all the same bestie underneath."

this driver should work with every model in the SITOP UPS500 series, as long as your kernel has support for the serial port device (peep the USB driver section below, it's right there πŸ”₯).

note πŸ’… this driver has only ever been tested with the SITOP UPS500S-2.5 with USB port (Siemens product number 6EP1933-2EC41). so yeah, main character model right there.

✨ DEVICE SETTINGS ✨

the UPS gets configured via DIP-switches. for everything to function correctly alongside NUT, set those DIP-switches like this:

  • switch 1-4 β€” choose whatever suits your situation tbh. any combination will work with NUT. no cap, anything goes 🌈
  • switch 5 (β‡’ / t) β€” set to OFF (t). this makes sure the UPS will not cut power unless NUT tells it to do so (or unless the batteries are exhausted). periodt.
  • switch 6-10 (delay) β€” set to OFF (minimum delay). setting a higher delay will actually also work, but any command from NUT will be delayed as well before the UPS executes it. and even with the minimum setting it'll already take 5 seconds before a command from NUT gets executed. so like… yeah, minimum is the move πŸ’€
  • switch 11 (INTERR.) β€” set to ON (interrupt the output after the timer expires). this makes sure the UPS briefly interrupts the output power in response to the shutdown.return command. see the Instant Commands section below πŸ‘‘
  • switch 12 (ON/OFF) β€” set to ON (enable the UPS functionality). without this, the UPS will never supply power from its batteries. literally never. so don't skip it πŸ™ˆ

✨ USB DRIVER ✨

the USB versions of the UPS contain an FTDI USB-to-serial converter chip. it's programmed with a non-standard product ID (for example 0403:e0e3), but it can still be used with the normal ftdi_sio driver. slay.

note πŸ¦‹ the following hints may be specific to GNU/Linux.

use lsusb to figure out which product ID your model actually uses, and replace all occurrences of e0e3 in the following examples with the actual Product ID. don't forget, bestie πŸŽ€

modprobe ftdi_sio
echo 0403 e0e3 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

if your system uses udev, you can automate that whole thing with a udev rule:

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="e0e3", \
  RUN+="/sbin/modprobe ftdi_sio", \
  RUN+="/bin/sh -c 'echo 0403 e0e3 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"

and you can use the following udev rule to get yourself a predictable device name β€” for example /dev/ttyUPS:

SUBSYSTEM=="tty" ATTRS{idVendor}=="0403", ATTRS{idProduct}=="e0e3" SYMLINK+="ttyUPS"

✨ POLLING ✨

plot twist: the UPS does not have a special get status command. instead it just continuously sends out status update messages β€” tens of messages per second, it's literally spamming the group chat 😭. every pollinterval, these messages get read from the serial port buffer.

so in order to react quickly to status changes from the UPS, and to keep the serial buffer from overflowing, pollinterval should be set to a relatively low value. the recommended value is 1 (second). lowkey important, don't sleep on it πŸ’œ

✨ EXTRA ARGUMENTS ✨

this driver supports the following optional settings:

  • max_polls_without_data=num β€” the serial port gets polled periodically for new data (see Polling). if there's no valid new data after num polls, the driver assumes communication with the UPS is lost. the default value is 2. heads up though β€” lower values may cause spurious Data stale messages, especially at startup 🫢

✨ INSTANT COMMANDS ✨

  • shutdown.return β€” the behavior of this command depends on the line state:
    • on line: after 5 seconds (or longer, if DIP switches 6-10 are not OFF), the UPS will shut off its output. after another 5 seconds, the output is activated again. little nap, then back to business ✨
    • on battery: after 5 seconds (or longer, if DIP switches 6-10 are not OFF), the UPS will shut off its output. the output will stay off, until the line voltage has returned.
  • shutdown.stayoff β€” the behavior of this command also depends on the line state:
    • on line: after 5 seconds (or longer, if DIP switches 6-10 are not OFF), the UPS will shut off its output. the output stays off until the line voltage has been removed for at least 1 second, and has been re-applied.
    • on battery: this command behaves the same as shutdown.return.

✨ INSTALLATION ✨

first things first β€” make sure your operating system has created a serial device for the UPS. see the USB driver section for more info 🧚

next, make sure NUT has access rights to that device file. for example, by creating an udev rule that grants permission to the NUT user, or by adding the NUT user to a user group that can access serial devices (e.g. the dialout group on Debian-based systems). permissions are the moment, bestie πŸ‘‘

✨ DIAGNOSTICS ✨

you can verify that the hardware is functioning correctly by monitoring the serial port with a terminal program β€” for example picocom:

:; picocom -b 9600 -d 8 -p n /dev/ttyUPS
important πŸ’€ NUT must not be running when you do this. like, not at all.

you should now see a continuous stream of 5-character texts coming in, for example:

BUFRD
BA>85
DC_OK

to exit picocom, use Ctrl+A Ctrl+X. you're welcome πŸŽ€

✨ KNOWN ISSUES AND BUGS ✨

  • Untested models β€” as mentioned under Supported hardware, this driver has not been tested with all models in the SITOP UPS500 series. sad but true 😭
  • Data stale messages β€” the firmware in these UPSes is quite buggy, ngl. after sending data to the UPS, it sometimes just… stops sending status updates. the driver tries to prevent this (e.g. by sending commands twice, and by sending additional LF characters after each command). it's doing its best 🫢

once the UPS is in this state, communication can only be restored by rebooting the UPS, or by unplugging and reconnecting the USB cable. truly the "have you tried turning it off and on again" of it all πŸ’€

during normal operation, no commands are sent to the UPS at all (only at shutdown), so this issue is expected to have little impact on usability. okay so like, mostly we're fine πŸ™ˆ

it is not certain if the serial models are affected by this issue as well.

✨ AUTHOR ✨

Matthijs H. ten Berge πŸ‘‘ (icon behavior)

✨ SEE ALSO ✨

the core driver:

internet resources:


and that's the whole page bestie, you ate that πŸ’…βœ¨ this was Network UPS Tools 2.8.4, dated 09/19/2025 β€” go forth and keep those batteries safe, mwah πŸŽ€πŸ¦‹πŸ’–

πŸ“¦ where this page comes from