On Apr 24, 2024, at 3:45 PM, tim.o via Nut-upsuser 
<nut-upsuser@alioth-lists.debian.net> wrote:
>> Have you tried any other values? 3600 is hex 0xe10, and 16 is 0x10, so it is 
>> quite possible the UPS is using an 8-bit field to store battery.runtime.low. 
>> I'm guessing the maximum is going to be 255.
>> 
> I am not sure I follow. Would you mind unpacking this for me?
> When I initially issued 'upsrw' this is what was returned. What does the 
> value '300' indicate, if not seconds;

Confirmed, it's seconds. (The maximum length for that field is just the number 
of digits that the driver is prepared to accept as a string, but it just 
converts them to a number to send to the UPS.)

> and attempting to change it to '3600' sets it two '16'. Is this what you mean 
> when you're referring to a '8-bit field'?

Yes, sorry, I missed the default of 300, and I was mixing bits and hexadecimal. 
At least 9 bits are needed to represent 300 decimal.

Let's say the UPS stores the runtime in 9 bits, and consider what would happen 
if you send 3600:

3600 decimal = 1110 0001 0000 binary

Low 9 bits = ___0 0001 0000 binary = 16 decimal

(note that 0 and -1 may have special meaning to the UPS, but this will probably 
hold true for other values)

My guess is that if you sent 520, upsc would return 8 (for a revised maximum of 
511 seconds). If not, the UPS is even weirder than most :-)

As you found, the ignorelb option is available to work around limitations in 
the UPS shutdown logic.

-- 
Charles Lepple
clepple@gmail


_______________________________________________
Nut-upsuser mailing list
Nut-upsuser@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to