Hi everyone,
I wanted to share a working configuration for Zircon UPS devices (and other rebadged units) that identify as ID 0001:0000 Fry's Electronics via USB.
I spent several days trying to integrate this UPS into Proxmox. It was quite tricky because these units do not work with the standard usbhid-ups driver, and information on this specific Hardware ID is scarce. After a lot of trial and error, I found a stable solution using the nutdrv_qx driver.
Below is the complete guide to get it running. You can also find the configuration files in my GitHub repository here: GitHub: NUT-frey-Electronics
1. Prerequisites
Ensure you have NUT installed on your system:
Verify your UPS is connected and detected (look for ID 0001:0000):
2. Configuration Files
/etc/nut/nut.conf Set the mode to standalone to allow the local system to manage the UPS.
/etc/nut/ups.conf This is the most important part. The Zircon UPS requires the nutdrv_qx driver and the hunnox subdriver.
3. Applying Changes
Whenever you modify nut.conf or ups.conf, you must restart the driver and the services.
Restart the Driver:
Restart the Services:
4. Verifying the Connection
To verify communication and see real-time data (battery charge, voltage, etc.):
(Note: If you named your UPS something else in ups.conf, use that name instead of zircon.)
5. Discord Notifications (Optional)
If you want real-time alerts on Discord, follow these steps.
Step A: User Authentication (/etc/nut/upsd.users) Define an admin user and a monitor user.
Step B: Create the Notification Script (/etc/nut/upsalert.sh)
Make it executable:
Step C: Edit /etc/nut/upsmon.conf Tell upsmon to use the script. Ensure the MONITOR line matches the user/password created in step A.
test the script with
6. Final Refresh
After editing upsmon.conf, restart the client:
To verify your configuration and see your UPS data, run:
Hopefully, this saves someone else the time I spent debugging this!
Regards
Alex
I wanted to share a working configuration for Zircon UPS devices (and other rebadged units) that identify as ID 0001:0000 Fry's Electronics via USB.
I spent several days trying to integrate this UPS into Proxmox. It was quite tricky because these units do not work with the standard usbhid-ups driver, and information on this specific Hardware ID is scarce. After a lot of trial and error, I found a stable solution using the nutdrv_qx driver.
Below is the complete guide to get it running. You can also find the configuration files in my GitHub repository here: GitHub: NUT-frey-Electronics
1. Prerequisites
Ensure you have NUT installed on your system:
Code:
apt update && apt install nut
Verify your UPS is connected and detected (look for ID 0001:0000):
Code:
lsusb
Output: Bus 003 Device 003: ID 0001:0000 Fry's Electronics
2. Configuration Files
/etc/nut/nut.conf Set the mode to standalone to allow the local system to manage the UPS.
Code:
MODE=standalone
/etc/nut/ups.conf This is the most important part. The Zircon UPS requires the nutdrv_qx driver and the hunnox subdriver.
Code:
maxretry = 3
[zircon]
driver = "nutdrv_qx"
subdriver = "hunnox"
protocol = q1
port = "auto"
vendorid = "0001"
productid = "0000"
norating
novendor
langid_fix = "0x0409"
desc = "Zircon UPS"
ignorelb
override.battery.charge.low = 20
runtimecal = 300,100,600,50
default.battery.voltage.high = "13.8"
default.battery.voltage.low = "11"
3. Applying Changes
Whenever you modify nut.conf or ups.conf, you must restart the driver and the services.
Restart the Driver:
Code:
upsdrvctl stop upsdrvctl start
Restart the Services:
Code:
systemctl restart nut-server nut-client
4. Verifying the Connection
To verify communication and see real-time data (battery charge, voltage, etc.):
Code:
upsc zircon
(Note: If you named your UPS something else in ups.conf, use that name instead of zircon.)
5. Discord Notifications (Optional)
If you want real-time alerts on Discord, follow these steps.
Step A: User Authentication (/etc/nut/upsd.users) Define an admin user and a monitor user.
Code:
[admin]
password = A_Boesch1987
actions = SET
instcmds = ALL
[monuser]
password = monitorpasswort
upsmon master
Step B: Create the Notification Script (/etc/nut/upsalert.sh)
Code:
!/bin/bash
WEBHOOK_URL="https://discord.com/api/webhooks/1458652842549182505/K2VTI-xfZSa9EW8q1jc6Z2>
case "$1" in
ONLINE) MSG="✅ Power Restored! Server running on AC." ;;
ONBATT) MSG="⚠️ Power Outage! UPS taking over." ;;
LOWBATT) MSG=" Battery critically low!" ;;
SHUTDOWN) MSG=" System shutdown initiated." ;;
COMMBAD) MSG="❌ Connection to UPS lost!" ;;
COMMOK) MSG=" Connection to UPS restored." ;;
*) MSG="USV Event: $1" ;;
esac
curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"**[NUT-Alarm]** $MS>
Make it executable:
Code:
chmod +x /etc/nut/upsalert.sh
Step C: Edit /etc/nut/upsmon.conf Tell upsmon to use the script. Ensure the MONITOR line matches the user/password created in step A.
Code:
# Path to your script
NOTIFYCMD "/etc/nut/upsalert.sh"
#Monitor line
MONITOR zircon@localhost 1 monuser monitor_password_here master
#Define which events trigger the script
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
test the script with
Code:
/etc/nut/upsalert.sh "TEST-MESSAGE"
6. Final Refresh
After editing upsmon.conf, restart the client:
Code:
systemctl restart nut-client
To verify your configuration and see your UPS data, run:
Code:
upsc zircon
Hopefully, this saves someone else the time I spent debugging this!
Regards
Alex