Notes on the APC Back-UPS 700VA
I recently had to replace an old Belkin UPS that had developed some weird problems. After some searching around for a suitable replacement I bought an APC Back-UPS 700VA (model BX700UI) from a local web shop. Even though it's not listed under the Network UPS Tools hardware compatibility list, getting it to run under Debian was relatively simple. Still, here are some random notes about it in case anyone else finds them useful.
Image by Schneider Electric
As this blog post reports, the UPS is fully supported by the usbhid-ups driver in NUT. I'm currently using version 2.7.4 as packaged in Debian Stretch. Apart from setting the driver in /etc/nut/ups.conf
as described there is no other special NUT configuration necessary.
I also had to add an udev rule to change the owner and permissions of the USB device so that NUT could access the UPS. The correct rule can be found in this answer. Note that the "could not detach kernel driver from interface" part of the error message you get if this rule is missing is somewhat misleading.
I've been testing this UPS for around a week on a test setup and I didn't find any problems with the basic functionality. Switch over to battery works fine. The system shuts down cleanly when the UPS reports battery low and correctly turns off the UPS output afterwards. It also comes back on when the power returns.
My old Belkin UPS seemed to impose a hard 30 minute battery run time limit. It would not run the load for more than 30 minutes and would report that the battery is empty regardless of its state. This UPS doesn't have that limitation and will happily run on battery for hours if the load is low enough.
I did increase the battery.charge.low
and battery.runtime.low
to 20% and 5 minutes respectively. These settings determine when the system will consider the battery depleted and shut itself down. While I didn't find any problems with the defaults (10% and 2 minutes), they seemed to leave very little reserve. This reserve battery charge comes handy if the line power comes back for a minute and goes away again. In this case the UPS must have enough run time left to boot the system back up and shut it down again. Since the battery is large enough for my use case I thought increasing this safety margin made sense.
Note that setting the variables using upsrw requires that a upsd user is both defined in /etc/nut/upsd.users
with the permission for the SET action and also has a permission to connect to upsd in /etc/hosts.allow
. I overlooked that latter part and spent some time banging my head over the ERR ACCESS-DENIED error.
I'm not sure how persistent the settings done with upsrw are. They are supposed to write the values to the non-volatile memory in the UPS so they should only need setting once. They should survive across reboots and power losses, but so far I'm not totally convinced they will not revert back at some random time in the future.
As far as diagnostic information goes, this UPS isn't very generous. It doesn't measure line frequency, temperature or output voltage. It does measure input voltage and it returns reasonable values for it when the line power is present, but I noticed that it reports 256 V when the input voltage is in fact 0 V.
I had a quick look at the raw USB HID traffic from the UPS and I didn't find anything particularly interesting. At least it doesn't look like the relative lack of diagnostics is due to missing support in NUT.
The battery takes approximately 3 hours to fully recharge. I noticed some very faint crackling noise from it when it's charging. To me it hears like small bubbles popping when I press my ear against the case. This noise is distinct from the mains hum and doesn't hear like a DC-DC converter running. I don't have much experience with lead-acid batteries, so this is probably normal behavior. I just never noticed it before. Apparently even sealed gel batteries form some hydrogen gas that is then recombined inside with a catalyst.
Almost for sure your UPS is running on one or more 12V 6-cell batteries, most probably "nonspillable" ones. That bubbling noise means that in at least one of the batteries, at least of the cells is somewhat overcharged, but the overall voltage on whole battery is not "full" so the device tried to charge it anyways, because, well, the UPSes try to get their battery full to provide you with precious time/power.
In a 6-cell (or actually any X-cell) battery, all the cells are connected in series to get higher voltage. About 2V per charged cell, times 6, gives 12V battery. When not all of the cells them became charged at roughly the same time, they end up with different voltages, the total voltage on the battery will be lower than that of fully-charged state. All's fine. 2V per charged cell, one fully charged cell 2V + 5 not-charged-yet cells = less than 12V = UPS thinks it's not charged yet (fine! it is not fully charged!). However, if it keeps charging, the current flows through ALL the cells, both those 5 uncharged, and also through the one already charged. It's just the battery's internal construction: cells are in series. This will charge-up those 5 after some time, but this also means cause an over-charging the sixth one.
Overcharging means gassing.
A typical rather low-cost batteries are not made with pricey 'catalysts' or complex pressure valves. My ones, and a great deal of others, are made like you can see here: https://youtu.be/T3C41jR-lIg?t=125 - yeah, it's somewhat sealed, but the sealing is just a plastic cap, and a tight rubber cap underneath. The point of it is: the inner cap must be tight, to be nonspillable when the battery is rotated or manhandled, but it cannot be perfectly sealed, or the battery may explode when overcharged. The "vent" must be able to release some pressure when it builds up. Tight rubber cap is just perfect. The plastic cap over the rubber caps is there mostly for the looks, AND so that the rubber cap doesn't go into "I'm flying" mode. Without the plastic cap, those inner rubber caps may easily get launched into air whenever they actually do vent. On that video you can easily see that the plastic cap was NOT sealed. There's a lot of dirt under it. It was just glued in a few places. It can't be sealed perfectly, because if any cell starts gassing, and rubber passes the pressure, we can't have the pressure now kept under the plastic cap, it has to be allowed to leave asap.