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