🌐
Linux Man Pages
linux.die.net › man › 8 › usbhid-ups
usbhid-ups(8): Driver for USB/HID UPS equipment - Linux man page
usbhid-ups brings USB/HID UPS monitoring to NUT on all platform supporting USB through libusb.
Discussions

`usbhid-ups` sucks CPU in a tight `select` loop (2.8.2+ later branch build)
The room was noisy and warm. PC investigation led to some discoveries: strace shows intensive looping (about 15k lines per second) for what seems to be empty reads of a bit too many sockets (e.g. s... More on github.com
🌐 github.com
8
June 19, 2024
USB UPS not supported by usbhid-ups, even explore subdriver reads it wrong. I've manually decoded input and feature reports and they fit.
Hi I'm writing a dummy driver for NUT for unsupported UPS speaking USB HID. I managed to read and decode everything. I think the result of the work is worth sharing to understand if usbhid-ups ... More on github.com
🌐 github.com
7
December 19, 2025
usbhid-ups high cpu usage
Hello! I couldn't find a discussion or forum anywhere, so I hope this is the right place to post this. I recently tried to edit my NUT configuration so it would run a bash script when the UPS (... More on github.com
🌐 github.com
7
February 23, 2026
UPS with nut usb-hid driver and Prometheus (working example included)
You can also use https://github.com/NixOS/nixpkgs/pull/213006 which makes it a bit easier to configure power.ups. Try it or even give it a code review! More on reddit.com
🌐 r/NixOS
2
4
September 23, 2023
🌐
Debian Manpages
manpages.debian.org › testing › nut-server › usbhid-ups.8.en.html
usbhid-ups(8) — nut-server — Debian testing — Debian Manpages
October 17, 2025 - Unlike previous versions of this driver, it is now possible to control multiple UPS units simultaneously with instances of this driver running in parallel, provided they can be distinguished by setting some combination of the device-matching options. ... [mge] driver = usbhid-ups port = auto vendorid = 0463 [tripplite] driver = usbhid-ups port = auto vendorid = 09ae
🌐
openSUSE Manpages
manpages.opensuse.org › leap-16.0 › nut › usbhid-ups(8)
usbhid-ups(8) — nut
April 1, 2025 - Unlike previous versions of this driver, it is now possible to control multiple UPS units simultaneously with this driver, provided they can be distinguished by setting some combination of the device-matching options. For instance: [mge] driver = usbhid-ups port = auto vendorid = 0463 [tripplite] driver = usbhid-ups port = auto vendorid = 09ae
🌐
Arch Linux Man Pages
man.archlinux.org › man › usbhid-ups.8.en
usbhid-ups(8) — Arch manual pages
Unlike previous versions of this driver, it is now possible to control multiple UPS units simultaneously with instances of this driver running in parallel, provided they can be distinguished by setting some combination of the device-matching options. ... [mge] driver = usbhid-ups port = auto vendorid = 0463 [tripplite] driver = usbhid-ups port = auto vendorid = 09ae
🌐
Ubuntu
manpages.ubuntu.com › focal › man(8)
Ubuntu Manpage: usbhid-ups - Driver for USB/HID UPS equipment
usbhid-ups brings USB/HID UPS monitoring to NUT on all platform supporting USB through libusb.
🌐
ArchWiki
wiki.archlinux.org › title › Network_UPS_Tools
Network UPS Tools - ArchWiki
For many UPS connected by USB, use the usbhid-ups(8) driver. For UPS with serial port, use port=/dev/ttySX, where X is the number of serial port (Example: /dev/ttyS1).
🌐
Fossies
fossies.org › linux › nut › drivers › usbhid-ups.c
NUT: drivers/usbhid-ups.c | Fossies
April 7, 2026 - 1 /* usbhid-ups.c - Driver for USB and serial (MGE SHUT) HID UPS units 2 * 3 * Copyright (C) 4 * 2003-2022 Arnaud Quette <arnaud.quette@gmail.com> 5 * 2005 John Stamp <kinsayder@hotmail.com> 6 * 2005-2006 Peter Selinger <selinger@users.sourceforge.net> 7 * 2007-2009 Arjen de Korte ...
🌐
Debian Manpages
manpages.debian.org › unstable › nut-server › usbhid-ups.8.en.html
usbhid-ups(8) — nut-server — Debian unstable — Debian Manpages
Unlike previous versions of this driver, it is now possible to control multiple UPS units simultaneously with instances of this driver running in parallel, provided they can be distinguished by setting some combination of the device-matching options. ... [mge] driver = usbhid-ups port = auto vendorid = 0463 [tripplite] driver = usbhid-ups port = auto vendorid = 09ae
Find elsewhere
🌐
GitHub
github.com › ludoux › esp32-nut-server-usbhid
GitHub - ludoux/esp32-nut-server-usbhid: A demo running on ESP32-S3 to communicate with USB-HID UPS and to be a tiny NUT (Network UPS Tools) Server · GitHub
This is a simple project which contains a USB Host part to communicate with UPS as a HID Device, a protocol_examples_common to connect to specific Wi-Fi, a non-blocking TCP Server to response to work as a tiny NUT server, and a led_strip to ...
Starred by 106 users
Forked by 16 users
Languages   C 98.1% | CMake 1.9%
🌐
TED Felix
tedfelix.com › software › nut-network-ups-tools.html
HOWTO: Set Up NUT, the Network UPS Tools
Check the NUT Hardware Compatibility List to figure out which driver will work for your UPS. For my USB UPS, the correct driver is "usbhid-ups".
🌐
GitHub
github.com › networkupstools › nut › issues › 2484
`usbhid-ups` sucks CPU in a tight `select` loop (2.8.2+ later branch build) · Issue #2484 · networkupstools/nut
June 19, 2024 - # systemctl status nut-driver@eco650 -l | cat ● nut-driver@eco650.service - Network UPS Tools - device driver for NUT device 'eco650' Loaded: loaded (/lib/systemd/system/nut-driver@.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/nut-driver@eco650.service.d └─nut-driver-enumerator-generated-checksum.conf, nut-driver-enumerator-generated-devicename.conf, nut-driver-enumerator-generated.conf Active: active (running) since Fri 2024-04-19 16:13:53 CEST; 2 months 0 days ago Main PID: 2232101 (usbhid-ups) Tasks: 2 (limit: 154419) Memory: 1.1M CPU: 1month 3d 4h 48min 41.608s CGroup: /system.slice/system-nut\x2ddriver.slice/nut-driver@eco650.service └─2232101 /usr/local/ups/bin/usbhid-ups -FF -a eco650 Warning: journal has been rotated since unit was started, output may be incomplete.
Author   networkupstools
🌐
GitHub
github.com › networkupstools › nut › issues › 3227
USB UPS not supported by usbhid-ups, even explore subdriver reads it wrong. I've manually decoded input and feature reports and they fit. · Issue #3227 · networkupstools/nut
December 19, 2025 - $ ./usbhid-ups -DDDDDDD -s ups1 -x port=auto -x vendorid=5131 -x productid=2007 -x subdriver=explore -x pollonly -x pollinterval=2 0.000001 [D3] main_arg: var='port' val='auto' 0.000118 [D6] testinfo_reloadable: var=port, infoname=driver.parameter.port, newval=auto, reloadable=0, reload_flag=0 0.000151 [D6] testinfo_reloadable: verdict for (re)loading var=port value: 1 0.000194 [D5] send_to_all: SETINFO driver.parameter.port "auto" 0.000226 [D3] main_arg: var='vendorid' val='5131' 0.000272 [D5] send_to_all: SETINFO driver.parameter.vendorid "5131" 0.000301 [D3] main_arg: var='productid' val='2
Author   networkupstools
🌐
NUT
networkupstools.org › docs › FAQ.html
Driver not connected
There may also be a conflict with an already running instance of the driver, e.g. when a systemd unit instance nut-driver@yourdevicename.service was automatically created and started by the nut-driver-enumerator, and then you try to follow older revisions of the NUT documentation or blogs, and start another copy with upsdrvctl (which should only be used on legacy systems nowadays). When the usbhid-ups was first written, it replaced an older driver hidups which used the Linux kernel USB HID API.
🌐
GitHub
github.com › networkupstools › nut › issues › 3325
usbhid-ups high cpu usage · Issue #3325 · networkupstools/nut
February 23, 2026 - I recently tried to edit my NUT configuration so it would run a bash script when the UPS (Back-UPS ES 600M1) reached ~60%. I used Gemini to give me a clear answer, but after a day of implementing the changes, my server's CPU usage was idling at 16-17% instead of 0-3% and i verified it was being caused by usbhid-ups.
Author   networkupstools
🌐
Reddit
reddit.com › r/nixos › ups with nut usb-hid driver and prometheus (working example included)
r/NixOS on Reddit: UPS with nut usb-hid driver and Prometheus (working example included)
September 23, 2023 -

I had a small fight with nixos to get my ups working so i thought i might share it. This configuration works on 23.05

configuration.nix

  power.ups = {
    enable = true;
    mode = "netserver";
    ups = {
      usbups = {
        driver = "usbhid-ups";
        port = "auto"; 
        description = "USB UPS";
        summary = ''
          override.battery.charge.low = 33
        '';
      };
    };
  };

  environment.etc = {

    "nut/upsd.conf".source = pkgs.writeText "upsd.conf"
      ''
        LISTEN 127.0.0.1 3493
      '';

    "nut/upsd.users".source = pkgs.writeText "upsd.users"
      ''
        [upsmon]
            password  = pass
            upsmon primary
            actions = set
            actions = fsd
            actions = test.panel.start
            instcmds = ALL
      '';

    "nut/upsmon.conf".source = pkgs.writeText "upsmon.conf"
      ''
        MONITOR usbups@localhost 1 upsmon pass primary
        MINSUPPLIES 1
        SHUTDOWNCMD "${pkgs.systemd}/bin/systemctl poweroff"
        POLLFREQ 5
        POLLFREQALERT 5
        HOSTSYNC 15
        DEADTIME 15
        POWERDOWNFLAG /etc/killpower
        RBWARNTIME 43200
        NOCOMMWARNTIME 300
        FINALDELAY 5
      '';
  };

if you want to graph the details with grafana here is a working example with prometheus-nut-exporter:

  services.grafana.enable = true;
  services.grafana.settings.server = {
    domain = "FQDN";
    http_port = 2342;
    http_addr = "127.0.0.1";
  };

  services.prometheus = {
    enable = true;
    port = 9001;

    exporters = {

      nut = {
        enable = true;
        port = 9006;
        listenAddress = "127.0.0.1";
        nutServer = "127.0.0.1";
      };

      node = {
        enable = true;
        enabledCollectors = [ "zfs" "systemd" "processes"  ];
        port = 9002;
      };
    };

    scrapeConfigs = [
      {
        job_name = "nut";
        metrics_path = "/ups_metrics";
        params = {
          ups = [ "usbups" ];
        };
        static_configs = [{
          targets = [
            "127.0.0.1:${toString config.services.prometheus.exporters.nut.port}"
          ];
          labels = {
            ups = "usbups";
          };
        }];
      }
      {
        job_name = "node";
        static_configs = [{
          targets = [
            "127.0.0.1:${toString config.services.prometheus.exporters.node.port}"
          ];
        }];
      }
    ];

  };
🌐
Reddit
reddit.com › r/homelab › nut with old serial usb ups
r/homelab on Reddit: NUT With old Serial USB UPS
October 15, 2024 -

Hello everyone, I’ve recently restored an old STD60S UPS from Control Systems to working condition. It’s a rather unknown brand, but they make good UPS units. I bought a Serial to USB adapter on Amazon to control my UPS, as it’s currently powering a Proxmox server. I discovered NUT (Network UPS Tools), which seems to be a great solution for managing my UPS in case of a power outage; specifically, I want to set it up so that if the batteries drop below 20%, the NUT system sends a shutdown signal to my Proxmox server.

I downloaded the “proprietary” software for this UPS on a Windows VM, and it works correctly after installing the software and the drivers for the Serial to USB converter. The issue is that I need to install the UPS monitor with NUT on the entire Proxmox node, but unfortunately, I’m not sure how to do it or which driver to use.

I’ve installed NUT on my Proxmox server, but when I run nut-scanner -U, no device is detected. I can’t find my UPS on the NUT compatibility list, although from what I understand, NUT works with most UPS units, even those that aren’t listed.

What driver would you recommend using with NUT for my UPS, which has serial port control, when using a Serial to USB cable?

🌐
GitHub
github.com › networkupstools › nut › issues › 2925
usbhid-ups - USB often disconnects when losing power or recovering power · Issue #2925 · networkupstools/nut
April 28, 2025 - Mon Apr 28 18:45:25 2025 daemon.err upsmon[2256]: 39619.446827 UPS 5p1150@localhost on battery Mon Apr 28 18:46:03 2025 daemon.warn odhcpd[1466]: No default route present, overriding ra_lifetime to 0! Mon Apr 28 18:46:14 2025 kern.info kernel: [ 3544.579832] usb 1-1.3: USB disconnect, device number 7 Mon Apr 28 18:46:15 2025 kern.info kernel: [ 3545.640324] usb 1-1.3: new low-speed USB device number 8 using dwc_otg Mon Apr 28 18:46:15 2025 kern.info kernel: [ 3546.232860] usb 1-1.3: New USB device found, idVendor=0463, idProduct=ffff, bcdDevice= 2.02 Mon Apr 28 18:46:15 2025 kern.info kernel:
Author   networkupstools
🌐
TrueNAS Community
truenas.com › forums › archives › freenas (legacy software releases) › freenas help & support › hardware
How to use the latest version of usbhid-ups / apc-hid to fix wrong voltages? | TrueNAS Community
January 4, 2023 - root@freenas[~]# upsc myups battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: 2001/09/25 battery.mfr.date: 2015/07/09 battery.runtime: 28 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.4 battery.voltage.nominal: 12.0 device.mfr: American Power Conversion device.model: Back-UPS XS 950U device.serial: NANNNNANNNNN device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: APC HID 0.96 driver.version