[Nut-upsdev] Masterguard/Phoenixtec USB driver

Edgar Fuß ef at math.uni-bonn.de
Mon Nov 2 10:31:26 GMT 2020

Hello again.

Back in the day (2007) I wrote a USB-capable driver for my Masterguard/Phoenixtec UPSes (in case you locally archived this list, this very mail is a reply to a rather long thread from then), which I used ever since. However, the world has been going on since then and I need to get away with the old 2.0.4 binaries currently in use.
These boxes (I use two A3000-19 and two A700-19) are extremely robust and while Masterguard has been acquired by Chloride, then Emerson and is now Vertiv and finally they moved from Erlangen to Munich, I'm still talking to the same person and they still provide preventive maintanance and battery replacement (at very reasonable prices), so I'd like to stick to them.

So I'll need to pick up my old work and integrate someting into an up-to-date version of NUT and try again to upstream it.

The (even back then) existing masterguard driver is not an option (provides less than half the information mine does) and looks weird.

No existing driver seems to support the central get-status (GS) command used by these UPSes.

I could just try to port my thirteen-year old work (USB will only work on NetBSD) but I guess it's preferrable to start over.
I do have an official protocol definition (which I was asked not to disclose).

These UPSes have both serial and USB ports; the USB protocol is neither HID nor a usual (as far as I can tell) serial-over-USB one, but trivial. According to reading my sources, it may require some timing quirks but I'm unsure whether my workarounds in the old code were owed to the UPS or old NetBSD USB code.

Reading through the Developer Guide, it looks like the qx driver (which I guess didn't exist back then) could be well suited, but I'm unsure how it handles USB and whether, if one command sent to the UPS will return a dozen values, it will issue the command once or a dozen times (which could be a show-stopper since the connection is awfully slow).

In case it turns out I can't base on the qx framework: what's the suggested way to abstract the serial/USB connection thing.

Any hints/documentation pointers welcome.

More information about the Nut-upsdev mailing list