On Jan 11, 2015, at 11:48 PM, Graham Menhennitt <[email protected]> 
wrote:

>> The file drivers/usbhid-ups.c is looking for any of the following conditions 
>> to declare LB:
>> 
>> • STATUS(LOWBATT)
>> • STATUS(TIMELIMITEXP)
>> • STATUS(SHUTDOWNIMM)
>> 
>> The mapping to HID Path names will depend on the model, but STATUS(LOWBATT) 
>> can come from ...BelowRemainingCapacityLimit, which is 0 in both instances 
>> in your log. STATUS(TIMELIMITEXP) maps to ...RemainingTimeLimitExpired, 
>> which I don't see, and STATUS(SHUTDOWNIMM) would cause an ups.alarm message 
>> to show up in upsc.
>> 
> 
> Thanks very much for replying, Charles.
> 
> I've done a bit more investigating. I added a diagnostic printf("%x", 
> ups_status) at the point where LB is set. It shows that it's 
> RemainingTimeLimitExpired that's causing the LB condition. Below is a bit 
> more of the driver log which shows RemainingTimeLimitExpired changing to 1 
> and then back to 0 again. What does that variable mean?

Ah, when I said earlier that I didn't see "RemainingTimeLimitExpired", it seems 
that it is not being polled as frequently as the other values. (See "pollfreq" 
versus "pollinterval" in the usbhid-ups man page, which map to the "Full 
update..." and "Quick update..." sections in the debug output, respectively.)

RemainingTimeLimitExpired is supposed to indicate that the estimated battery 
time remaining is below the RemainingTimeLimit threshold (battery.runtime.low 
in the NUT variable namespace), but your UPS isn't publishing that time 
threshold, only the current remaining time estimate. (Per the previous email, 
the battery.runtime.low value in upsc seems to be coming from the 
override.battery.runtime.low setting in ups.conf.)

I still think the combination of override.battery.runtime.low and the ignorelb 
setting should get you the shutdown trigger you are looking for. You might also 
need to set pollfreq to a lower value than its default of 30 seconds, since the 
RemainingTimeLimit value is not requested during the Quick update every two 
seconds.

On the other hand, the whole reason for the two separate polling frequencies is 
that low-speed USB is only 1.5 Mbit signaling, and has even lower throughput, 
so it isn't possible to poll all of the variables every two seconds. You could 
try setting the HU_FLAG_QUICK_POLL bit in drivers/apc-hid.c on 
RemainingTimeLimit. At that point, you should be able to see how often the UPS 
updates the runtime estimate - it might be dropping below 90 (or whatever the 
internal threshold is for RemainingTimeLimit) for short intervals.

-- 
Charles Lepple
clepple@gmail



_______________________________________________
Nut-upsuser mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to