[Nut-upsuser] [dev] Minimal HID that NUT should accept
Alexey D. Filimonov
alexey at filimonic.net
Tue Oct 28 00:12:50 GMT 2025
Hello. I'm trying to add MeanWell LAD-360 (non-UART version) PSU with
UPS as a NUT device. I want it to be connected as USB HID UPS through
ESP32-S3 or STM32 as a bridge.
Please suggest me minimal HID Report descriptor to make NUT recognize
such device as UPS, at least to report if it's on AC or on Batteries,
without writing it's own driver for NUT.
More details:
I found that those devices are very good to replace 53.5v PSUs for small
TP-Link PoE switches to power small LAN (like, 1-2 PoE switches, few
Access Points, Router, Modem, media converter).
The problem that device is not actually exposes full UPS interface, but
only 5 output boolean signals:
* AC OK
* Discharging
* Battery Full
* Battery Low
* Battery disconnected or wrong polarity
And one input boolean signal : forced start (start from battery with no
AC power present)
For now, I have a USB bridge on ESP32-S3 that bridges MeanWell LAD
outputs as USB HID device like this (simplified a little):
```
USAGE_PAGE(Power Page)
USAGE(Power Page/UPS)
UNIT(NONE)
COLLECTION(APPLICATION)
USAGE(Power Page/Power Summary)
COLLECTION (PHYSICAL)
FEATURE 1:
Power Page/Power Summary ID = 1 (4 bit)
USAGE_PAGE(Battery System Page)
Battery System Page/Capacity mode = 2 (%, 2 bit)
Battery System Page/Rechargable = 1 (1 bit)
PAD (1 bit)
Battery System Page/Capacity Granularity 1 = 1 (8 bit)
Battery System Page/Capacity Granularity 2 = 1 (8 bit)
Battery System Page/Full Charge Capacity = 100 (8 bit)
INPUT 1:
Battery System Page/AC Present (1 bit)
Battery System Page/Battery present (1 bit)
Battery System Page/Discharging (1 bit)
Battery System Page/Fully Charged (1 bit)
Battery System Page/Fully Discharged (1 bit)
PAD (3 bit)
Battery System Page/Remaining Capacity (8 bit, 0-100)
END_COLLECTION(PHYSICAL)
END_COLLECTION(APPLICATION)
```
For `Remaining Capacity`, I report emulated value based on flags device
exposes have (Full + AC => 100%, Full + Discharging => 80%, etc..).
Windows 11 catches this device as UPS quite good.
Please suggest me minimal HID Report descriptor to make NUT recognize
such device as UPS, at least to report if it's on AC or on Batteries,
without writing it's own driver for NUT.
Alexey
More information about the Nut-upsuser
mailing list