[Nut-upsuser] NUT Configuration Question

Jeff Rickman jrickman at myamigos.us
Thu Nov 11 23:49:55 GMT 2021


In regards to the "auto" setting for "port" in "ups.conf", after a few 
hours of online reading a number of days ago, I eventually found a post 
to the effect that the "usbhid-ups" driver works in a way that "auto" is 
the appropriate setting. The programmers can explain better than I as to 
why that is.

I have experimented with separating these USB-attached devices, and they 
are the only _external_ USB devices, to different "bus" values per 
'lsusb' and that does not seem to make any difference.

In my case, 1 USB bus has 1 UPS connected and another USB bus has the 
other UPS connected. No other USB devices are on those USB buses per 
'lsusb'.

If USB power saving is a potential issue, then I am interested in what 
Linux commands (this is a Debian Linux box) might be used to check for 
that. Nothing in a 'lsusb -v' output suggesys anything.

As noted in my original post, these 2 UPS have different 'vendorid' and 
I have tried calling the drivers with that value attached in the format 
of "-x vendorid=XXXX", but that does not make any difference. Perhaps 
the driver simply ignores that specific variable? I have not tried other 
unique variables.

My own thinking on this matter is leaning in the direction of some sort 
of software collision or competition since I can 'power cycle by power 
switch', 'hard reset by reset switch', or 'shutdown -r 0' via CLI the 
Linux box and that reboot clears the problem for a random amount of time.

Yes, the occurence of this issue is random, but it appears guaranteed to 
happen within 60 minutes or so of starting up NUT after a power-up or 
reboot.

For the record, I have a monitoring PC that watches 2 different UPS 
devices that use 2 different drivers in NUT. That PC does not encounter 
the issue that I am reporting here.


On 11/11/2021 5:26 PM, Jim Klimov wrote:
> Hello,
> 
>    I can at least address part of your question -- NUT per se is not 
> limited to monitoring one device per system. Each driver runs as a 
> separate process, using a separate device node to talk to USB hardware.
> 
>    Can't vouch however for other variables in the equation, such as 
> system drivers, libusb (0.1 as supported in NUT releases so far), or 
> behavior of the USB hub in the chipset (can it be just overloaded by two 
> devices - electrically or logically? or entering some power-saving mode 
> and resetting all ports instead of one? are there other devices 
> connected to it?)
> 
>    I wonder now, if using "auto" port instead of particular path like 
> /dev/ttyUSB<N> can cause re-discoveries of the device over time, and if 
> the two drivers collide then or steal devices from each other.
> 
>    I believe that with at least master-branch codebase of NUT, it should 
> be possible and valid to specify device details like vendor and product 
> IDs, to auto-match a specific device per driver config instance.
> 
> Jim
> 
> 
> On Wed, Nov 10, 2021, 07:44 Jeff Rickman <jrickman at myamigos.us 
> <mailto:jrickman at myamigos.us>> wrote:
> 
>     ** The actual problem is listed at the very bottom of this email **
>     ** All of the lead-in data is requested per the NUT webpages **
> 
>     OS:
>     4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
> 
>     NUT version info:
>     nut-client  2.7.4-8  amd64  network UPS tools - clients
>     nut-server  2.7.4-8  amd64  network UPS tools - core system
> 
>     All aspects of NUT on this Debian system were installed from
>     Debian-provided packages using their "apt" package tool. Even the Linux
>     kernel on this system is from a Debian-provided package.
> 
>     2 UPS devices are in question here, but from different manufacturers
> 
>     UPS Model: Cyberpower CPS CP 1500C
>     - CPS CP 1500C per 'upsc'
>     - has the LCD display and NO front panel USB-A ports
>     - older unit, perhaps 5 years old, batteries have been replaced once
>     - more data requires UP de-installation
>     - NUT "vendorid" of 0764
>     - uses the NUT "usbhid-ups" driver as show here:
> 
>     Network UPS Tools - Generic HID driver 0.41 (2.7.4)
>     USB communication driver 0.33
>     Using subdriver: CyberPower HID 0.4
>     cps_adjust_battery_scale: battery readings will be scaled by 2/3
> 
> 
>     UPS Model: Eaton 5S 1500 LCD (from vendor's tag)
>     - brand new unit
>     - Batteries were manufactuered in April 2021 per shipping box
>     - NUT "vendorid" of 0463
>     - uses the NUT "usbhid-ups" driver as shown here:
> 
>     Network UPS Tools - Generic HID driver 0.41 (2.7.4)
>     USB communication driver 0.33
>     Using subdriver: MGE HID 1.39
> 
> 
>     ** THE PROBLEM **
> 
>     Either UPS connected to any USB2 port on this PC will work fine without
>     any troule what-so-ever.
> 
>     When BOTH UPS are connected to discrete USB2 ports on this PC, or any
>     other Linux PC where I run NUT, _EITHER_UPS_ will eventually drop out
>     with a "Communication Lost" message. There are no mysterious external
>     factors taking place like AC power outages, AC power spikes, or heavy
>     loads on the UPS. A 'upsc' printout of "ups.load" reads 10 or less at
>     all times on the Cyberpower unit; the Eaton unit has nothing plugged
>     into it.
> 
>     A query of the "missing" UPS using "upsc" might show something like
>     this:
> 
>     nano1 ~ # upsc es1500
>     Init SSL without certificate database
>     Error: Unknown UPS
> 
>     Yes, both UPS devices have been entered into "ups.conf" as follows:
>     [cpups]
>     # ups.vendorid: 0764
>         driver = usbhid-ups
>         port = auto
>         desc = "CP UPS on NANO1"
> 
>     [es1500]
>     # ups.vendorid: 0463
>         driver = usbhid-ups
>         port = auto
>         desc = "Eaton Ellipse Pro 1500 on NANO-1"
> 
>     I have experimented with "direct calling" the "usbhid-ups" driver with
>     the "-x vendorid=" parameter... even though the manpages suggest not
>     doing that; they suggest we use "upsdrvctl" instead, but that can't
>     seen
>     to handle 2 different vendor's UPS devices with different vendorid
>     values both using the same driver. Even that direct calling approach
>     does not help as either UPS will eventually disappear with a
>     "Communication Lost" message on the console.
> 
>     Some might be tempted to say, "Oh that UPS must be going bad." or "That
>     USB cable or port must be going bad.". I thought that a few YEARS AGO
>     when I first saw this problem occur. I can easily swap around USB2
>     ports, USB cables (I have a few spares), and monitoring PCs - none of
>     that makes any difference at all.
> 
>     My only workaround hads been to separate the 2 UPS devices that both
>     used the NUT "usbhid-ups" driver to separate monitoring devices (low
>     power Atom PCs or Raspberry Pi boxes). That workaround is getting old
>     and I am hoping for a better solution.
> 
>     I prefer to monitor my UPS devices even when the devices they protect
>     are powered down. In that manner I have caught signs of UPS needing
>     batteries replaced and odd AC power problems.
> 
> 
>     Does the NetworkUPSTools project officially support 2 physically
>     different UPS from 2 completely different vendors (based on NUT
>     reported
>     "vendorid") both accessing the same NUT driver on the same monitoring
>     device? The manpage for the "usbhid-ups" driver does not say if it does
>     or does not support multiple UPS devices requiring it.
> 
> 
>     -- 
>     "No one gets sick on Wednesdays." (unknown)
> 
>     _______________________________________________
>     Nut-upsuser mailing list
>     Nut-upsuser at alioth-lists.debian.net
>     <mailto:Nut-upsuser at alioth-lists.debian.net>
>     https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
> 



More information about the Nut-upsuser mailing list