<div dir="ltr">This likely isn't the minimal set of attributes, but I found this library very useful as a base for making a HID-UPS reporting device. <br><a href="https://github.com/abratchik/HIDPowerDevice">https://github.com/abratchik/HIDPowerDevice</a><div><br></div><div>-- Kelly</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Oct 27, 2025 at 5:24 PM Alexey D. Filimonov <<a href="mailto:alexey@filimonic.net">alexey@filimonic.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello. I'm trying to add MeanWell LAD-360 (non-UART version) PSU with <br>
UPS as a NUT device. I want it to be connected as USB HID UPS through <br>
ESP32-S3 or STM32 as a bridge.<br>
<br>
Please suggest me minimal HID Report descriptor to make NUT recognize <br>
such device as UPS, at least to report if it's on AC or on Batteries, <br>
without writing it's own driver for NUT.<br>
<br>
More details:<br>
<br>
I found that those devices are very good to replace 53.5v PSUs for small <br>
TP-Link PoE switches to power small LAN (like, 1-2 PoE switches, few <br>
Access Points, Router, Modem, media converter).<br>
<br>
The problem that device is not actually exposes full UPS interface, but <br>
only 5 output boolean signals:<br>
* AC OK<br>
* Discharging<br>
* Battery Full<br>
* Battery Low<br>
* Battery disconnected or wrong polarity<br>
<br>
And one input boolean signal : forced start (start from battery with no <br>
AC power present)<br>
<br>
For now, I have a USB bridge on ESP32-S3 that bridges MeanWell LAD <br>
outputs as USB HID device like this (simplified a little):<br>
<br>
```<br>
USAGE_PAGE(Power Page)<br>
USAGE(Power Page/UPS)<br>
UNIT(NONE)<br>
COLLECTION(APPLICATION)<br>
USAGE(Power Page/Power Summary)<br>
COLLECTION (PHYSICAL)<br>
FEATURE 1:<br>
Power Page/Power Summary ID = 1 (4 bit)<br>
USAGE_PAGE(Battery System Page)<br>
Battery System Page/Capacity mode = 2 (%, 2 bit)<br>
Battery System Page/Rechargable = 1 (1 bit)<br>
PAD (1 bit)<br>
Battery System Page/Capacity Granularity 1 = 1 (8 bit)<br>
Battery System Page/Capacity Granularity 2 = 1 (8 bit)<br>
Battery System Page/Full Charge Capacity = 100 (8 bit)<br>
INPUT 1:<br>
Battery System Page/AC Present (1 bit)<br>
Battery System Page/Battery present (1 bit)<br>
Battery System Page/Discharging (1 bit)<br>
Battery System Page/Fully Charged (1 bit)<br>
Battery System Page/Fully Discharged (1 bit)<br>
PAD (3 bit)<br>
Battery System Page/Remaining Capacity (8 bit, 0-100)<br>
END_COLLECTION(PHYSICAL)<br>
END_COLLECTION(APPLICATION)<br>
```<br>
<br>
For `Remaining Capacity`, I report emulated value based on flags device <br>
exposes have (Full + AC => 100%, Full + Discharging => 80%, etc..).<br>
<br>
Windows 11 catches this device as UPS quite good.<br>
<br>
Please suggest me minimal HID Report descriptor to make NUT recognize <br>
such device as UPS, at least to report if it's on AC or on Batteries, <br>
without writing it's own driver for NUT.<br>
<br>
Alexey<br>
<br>
<br>
_______________________________________________<br>
Nut-upsuser mailing list<br>
<a href="mailto:Nut-upsuser@alioth-lists.debian.net" target="_blank">Nut-upsuser@alioth-lists.debian.net</a><br>
<a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser</a><br>
</blockquote></div>