[Nut-upsuser] CyberPower CST150UC: Question re: battery.runtime.low configuration settings

Charles Lepple clepple at gmail.com
Thu Apr 25 02:06:45 BST 2024


On Apr 24, 2024, at 3:45 PM, tim.o via Nut-upsuser <nut-upsuser at 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 at gmail




More information about the Nut-upsuser mailing list