The `nut-server` (upsd) should be looking for pipe-files from drivers in the "STATEPATH" (should be `/run/nut` in your case as the driver got set up like this now).
The `/var/run is world readable` complaint indicates the `upsd` looks in `/var/run`rather than `(/var)/run/nut`. While debugging startups, it may help to set non-zero `debug_min` so the daemons (data server, drivers, upsmon) would be more verbose in their systemd journals: * https://github.com/networkupstools/nut/blob/035ae79dc28a04c443f110bd7046aab3c504319b/conf/upsd.conf.sample#L152 * https://github.com/networkupstools/nut/blob/035ae79dc28a04c443f110bd7046aab3c504319b/conf/upsmon.conf.sample.in#L447 * https://github.com/networkupstools/nut/blob/035ae79dc28a04c443f110bd7046aab3c504319b/docs/man/ups.conf.txt#L143 * https://github.com/networkupstools/nut/blob/035ae79dc28a04c443f110bd7046aab3c504319b/docs/man/ups.conf.txt#L281 Hope this helps, Jim Klimov On Thu, Dec 1, 2022 at 1:14 PM Bill Gee <[email protected]> wrote: > Hi Simon - > > I modified /usr/lib/tmpfiles.d/nut-client to use /run instead of > /var/run. I checked the startup status of the nut services. > > ================= > [root@mythtv ~]# systemctl list-unit-files | grep -i nut > nut-driver-enumerator.path > enabled disabled > nut-driver-enumerator.service > enabled disabled > [email protected] > indirect disabled > nut-monitor.service > disabled disabled > nut-server.service > enabled disabled > nut-driver.target > disabled disabled > nut.target > disabled disabled > ========================== > > I did a shutdown/reboot on the system. The usbhid driver loaded without > errors and did not complain about /var/run. /run/nut exists and > contains the expected two files. > > nut-server also started since it is set to "enabled", but failed to > connect to the driver. It complains about "no such file or directory". > What file is it looking for? I ran journalctl on it but got nothing > more than what systemctl status reports. > > =========================== > [root@mythtv ~]# systemctl status nut-driver@cyberpower > ● [email protected] - Network UPS Tools - device driver for > NUT device 'cyberpower' > Loaded: loaded (/usr/lib/systemd/system/[email protected]; > enabled; preset: disabled) > Drop-In: /etc/systemd/system/[email protected] > └─environ.conf > /etc/systemd/system/[email protected] > └─nut-driver-enumerator-generated-checksum.conf, > nut-driver-enumerator-generated.conf > Active: active (running) since Thu 2022-12-01 05:56:04 CST; 9min ago > Process: 712 ExecStartPre=/usr/bin/systemd-tmpfiles --create > /usr/lib/tmpfiles.d/nut-client.conf (code=exited, stat> > Process: 719 ExecStart=/bin/sh -c > NUTDEV="`/usr/libexec/nut-driver-enumerator.sh --get-device-for-service > cyberpowe> > Main PID: 791 (usbhid-ups) > Tasks: 1 (limit: 9482) > Memory: 2.9M > CPU: 113ms > CGroup: > /system.slice/system-nut\x2ddriver.slice/[email protected] > └─791 /usr/sbin/usbhid-ups -a cyberpower > > Dec 01 05:56:04 mythtv.billgee.local nut-driver@cyberpower[787]: Using > subdriver: CyberPower HID 0.6 > Dec 01 05:56:04 mythtv.billgee.local nut-driver@cyberpower[787]: Network > UPS Tools - Generic HID driver 0.47 (2.8.0) > Dec 01 05:56:04 mythtv.billgee.local nut-driver@cyberpower[787]: USB > communication driver (libusb 1.0) 0.43 > Dec 01 05:56:04 mythtv.billgee.local nut-driver@cyberpower[787]: > cps_adjust_battery_scale: battery readings will be sca> > Dec 01 05:56:04 mythtv.billgee.local nut-driver@cyberpower[719]: Network > UPS Tools - UPS driver controller 2.8.0 > Dec 01 05:56:04 mythtv.billgee.local usbhid-ups[791]: Startup successful > > [root@mythtv ~]# systemctl status nut-server > ● nut-server.service - Network UPS Tools - power devices information server > Loaded: loaded (/usr/lib/systemd/system/nut-server.service; > enabled; preset: disabled) > Active: active (running) since Thu 2022-12-01 05:56:07 CST; 9min ago > Main PID: 809 (upsd) > Tasks: 1 (limit: 9482) > Memory: 1000.0K > CPU: 15ms > CGroup: /system.slice/nut-server.service > └─809 /usr/sbin/upsd -F > > Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on ::1 port 3493 > Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on 127.0.0.1 > port 3493 > Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: /var/run is world > readable > Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: Can't connect to > UPS [cyberpower] (usbhid-ups-cyberpower): No suc> > Dec 01 05:56:08 mythtv.billgee.local upsd[809]: /var/run is world readable > Dec 01 05:56:08 mythtv.billgee.local upsd[809]: Can't connect to UPS > [cyberpower] (usbhid-ups-cyberpower): No such file> > Dec 01 05:56:10 mythtv.billgee.local nut-server[809]: Running as > foreground process, not saving a PID file > Dec 01 05:56:10 mythtv.billgee.local upsd[809]: Running as foreground > process, not saving a PID file > Dec 01 06:01:08 mythtv.billgee.local nut-server[809]: Can't connect to > UPS [cyberpower] (usbhid-ups-cyberpower): No suc> > Dec 01 06:01:08 mythtv.billgee.local upsd[809]: Can't connect to UPS > [cyberpower] (usbhid-ups-cyberpower): No such file> > ================================ > > > > =============== > Bill Gee > > On 11/30/22 21:14, Simon Wilson via Nut-upsuser wrote: > > ----- Message from Bill Gee <[email protected]> --------- > > Date: Wed, 30 Nov 2022 19:26:46 -0600 > > From: Bill Gee <[email protected]> > > Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade > > To: [email protected] > > > > > >> Hi Simon - > >> > >> I ran through the steps you gave below. To quote Gilbert&Sullivan ... > >> "Modified Rapture!" I suppose I should try a reboot to make sure > >> everything starts properly. > > > > Not yet with the reboot. Baby steps... :) you have a driver running from > > the service file! Celebrations are in order. > > > > Did you need to add the environment drop-in file? At which step did it > > work? > > > >> But first, there is a problem with upsc. Also nut-server complains > >> that it cannot connect to the device. > > > > Ok, that's next... your comments are wrong way around :) nut-server not > > starting is why upsc doesn't give you anything. > > > >> > >> /run/nut exists and contains two files. > >> > >> Here are some outputs: > >> > >> ====================================== > >> [root@mythtv ~]# journalctl -u [email protected] -f > >> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting > >> [email protected] - Network UPS Tools - device driver for > >> NUT device 'cyberpower'... > >> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]: > >> /usr/lib/tmpfiles.d/nut-client.conf:2: Line references path below > >> legacy directory /var/run/, updating /var/run/nut → /run/nut; please > >> update the tmpfiles.d/ drop-in file accordingly. > > > > That line is the "noise" error I mentioned. Edit > > /usr/lib/tmpfiles.d/nut-client.conf to read /run/nut, not /var/run/nut > > > >> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]: > >> /usr/lib/tmpfiles.d/nut-client.conf:3: Line references path below > >> legacy directory /var/run/, updating /var/run/nut → /run/nut; please > >> update the tmpfiles.d/ drop-in file accordingly. > > > > Ditto, although you probably don't need line 3 in the file anyway. > > > >> Nov 30 19:00:21 mythtv.billgee.local nut-driver@cyberpower[28719]: > >> Using subdriver: CyberPower HID 0.6 > >> Nov 30 19:00:21 mythtv.billgee.local nut-driver@cyberpower[28719]: > >> Network UPS Tools - Generic HID driver 0.47 (2.8.0) > >> Nov 30 19:00:21 mythtv.billgee.local nut-driver@cyberpower[28719]: USB > >> communication driver (libusb 1.0) 0.43 > >> Nov 30 19:00:21 mythtv.billgee.local nut-driver@cyberpower[28719]: > >> cps_adjust_battery_scale: battery readings will be scaled by 2/3 > >> Nov 30 19:00:21 mythtv.billgee.local usbhid-ups[28769]: Startup > >> successful > >> Nov 30 19:00:21 mythtv.billgee.local nut-driver@cyberpower[28691]: > >> Network UPS Tools - UPS driver controller 2.8.0 > >> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started > >> [email protected] - Network UPS Tools - device driver for > >> NUT device 'cyberpower'. > >> > >> [root@mythtv ups]# ll /run/nut > >> total 4 > >> srw-rw---- 1 nut nut 0 Nov 30 19:00 usbhid-ups-cyberpower > >> -rw-r--r-- 1 nut nut 6 Nov 30 19:00 usbhid-ups-cyberpower.pid > >> > >> > >> [root@mythtv ups]# systemctl --no-pager --full status nut-server > >> ● nut-server.service - Network UPS Tools - power devices information > >> server > >> Loaded: loaded (/usr/lib/systemd/system/nut-server.service; > >> enabled; preset: disabled) > >> Active: active (running) since Wed 2022-11-30 19:06:53 CST; 13min > >> ago > >> Main PID: 28918 (upsd) > >> Tasks: 1 (limit: 9482) > >> Memory: 736.0K > >> CPU: 20ms > >> CGroup: /system.slice/nut-server.service > >> └─28918 /usr/sbin/upsd -F > >> > >> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: /var/run is > >> world readable > >> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: /var/run is world > >> readable > >> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Can't connect to UPS > >> [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Can't connect > >> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Running as > >> foreground process, not saving a PID file > >> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Running as > >> foreground process, not saving a PID file > >> Nov 30 19:11:53 mythtv.billgee.local nut-server[28918]: Can't connect > >> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> Nov 30 19:11:53 mythtv.billgee.local upsd[28918]: Can't connect to UPS > >> [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> Nov 30 19:16:53 mythtv.billgee.local nut-server[28918]: Can't connect > >> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> Nov 30 19:16:53 mythtv.billgee.local upsd[28918]: Can't connect to UPS > >> [cyberpower] (usbhid-ups-cyberpower): Connection refused > >> > >> [root@mythtv ups]# ps ax | grep ups > >> 768 ? Ss 0:00 /usr/sbin/cupsd -l > >> 773 ? Ss 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of > >> 10-100 startups > >> 28769 ? Ss 0:00 /usr/sbin/usbhid-ups -a cyberpower > >> 28918 ? Ss 0:00 /usr/sbin/upsd -F > >> 28929 pts/1 S+ 0:00 grep --color=auto ups > >> > >> [root@mythtv ups]# upsc cyberpower@localhost > >> Error: Driver not connected > > > > upsc won't work without nut-server running, so this is expected based on > > the above failure to start nut-server. > > > >> > >> > > > > So... next. > > > > Fix nut-client.conf contents, and make sure that you can start / restart > > the driver as needed with no errors. Set [email protected] > > to enabled for autostart, so with ONLY the enumerator services and > > [email protected] enabled, you should see something like > the > > following for 'systemctl list-unit-files | grep -i nut': > > > > [root@emp80 ups]# systemctl list-unit-files | grep -i nut > > nut-driver-enumerator.path > > enabled > > nut-driver-enumerator.service > > enabled > > [email protected] > > indirect > > nut-monitor.service > > disabled > > nut-server.service > > disabled > > nut-driver.target > > disabled > > nut.target > > disabled > > > > Stop any running nut processes, and reboot. On reboot the only thing > > that should autostart is [email protected] (from the > > 'indirect' call via [email protected]). upsc will still not work. > > > > Monitor the driver for a while 'journalctl -u > > [email protected] -f' and make sure it is stable and stays > > connected - google searches show some flakiness with some cyberpower > UPSs. > > > > Once you are confident that the driver is reliable, starting OK and > > staying up then move on to nut-server. > > > > I'll check in this evening and we can do some more digging on that. > > > > Simon > > > >> > >> =============== > >> Bill Gee > >> > >> On 11/30/22 07:21, Simon Wilson via Nut-upsuser wrote: > >>> Comments inline. > >>> > >>> ----- Message from Bill Gee <[email protected]> --------- > >>> Date: Wed, 30 Nov 2022 06:04:14 -0600 > >>> From: Bill Gee <[email protected]> > >>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade > >>> To: [email protected] > >>> > >>> > >>>> Hi Simon -- > >>>> > >>>> Yes, I am pretty sure this is the RedHat packaging problem. I sure > >>>> hope they get it squared away. I have only one system using nut and > >>>> that is because all my other systems have APC battery backup and run > >>>> apcupsd. Apcupsd may be old, grey and unmaintained, but it Just Works. > >>>> > >>>> You mention that the STATEPATH line in upsd.conf will override other > >>>> settings. It does not appear to be the case for me. The only way I > >>>> could get the driver to run was by setting NUT_STATEPATH on the > >>>> command line. Perhaps that is an issue with the driver and not > >>>> nut-server? > >>>> > >>>> In answer to your questions: > >>>> > >>>> 1) /usr/lib/systemd/system/[email protected] exists. I have made > >>>> no changes to it so far. Here are the contents, unfortunately > >>>> line-wrapped by Thunderbird. > >>>> > >>>> ================================ > >>>> [root@mythtv system]# grep -v '^#' [email protected] > >>>> [Unit] > >>>> Description=Network UPS Tools - device driver for %I > >>>> After=local-fs.target > >>>> > >>>> > >>>> PartOf=nut-driver.target > >>>> > >>>> > >>>> [Service] > >>>> EnvironmentFile=-/etc/ups/nut.conf > >>>> SyslogIdentifier=%N > >>>> ExecStartPre=-/usr/bin/systemd-tmpfiles --create > >>>> /usr/lib/tmpfiles.d/nut-client.conf > >>>> ExecStart=/bin/sh -c 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh > >>>> --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: > >>>> Could not find a NUT device section for service unit %i" >&2 ; exit > >>>> 1 ; } ; /usr/sbin/upsdrvctl start "$NUTDEV"' > >>>> ExecStop=/bin/sh -c 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh > >>>> --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo "FATAL: > >>>> Could not find a NUT device section for service unit %i" >&2 ; exit > >>>> 1 ; } ; /usr/sbin/upsdrvctl stop "$NUTDEV"' > >>>> StartLimitInterval=0 > >>>> Restart=always > >>>> RestartSec=15s > >>>> Type=forking > >>>> > >>>> [Install] > >>>> WantedBy=nut-driver.target > >>>> =================================== > >>> > >>> OK, so that's the same as mine. It's ExecStartPre task is to create > >>> the pid folder from your answer to the third (unasked) question :) > >>> which is that outlined in /usr/lib/tmpfiles.d/nut-client.conf > >>> > >>> You have /var/run/nut 0770 root nut - so systemd should ensure that > >>> exists. > >>> > >>> By the way, having it with "/var/run/nut" will trigger a 'noise' > >>> error about the "/var" path - change it to just be /run/nut in > >>> nut-client.conf. > >>> > >>> As a test, what happens if you: > >>> > >>> - make sure nut.conf has MODE=standalone > >>> - make sure ALL nut services are stopped, i.e. 'ps -ax | grep ups' > >>> should give you only the grep process as an answer > >>> - delete /run/nut folder (it will get re-created automatically) > >>> - take /etc/ups/upsd.conf back to have commented out STATEPATH as > >>> distributed in the package > >>> - run "systemctl enable nut-driver-enumerator.path > >>> nut-driver-enumerator.service --now" - this will enable and start the > >>> services that monitor ups.conf for changes and then write the actual > >>> driver service file; the second one also runs early in boot and > >>> ensures that the service file exists and is correct. > >>> - run 'nut-scanner -U' and copy its output into ups.conf instead of > >>> your current definition with name heading [cyberpower], save and > >>> exit: this will trigger the above enumerators to run and re-do the > >>> [email protected] file > >>> > >>> Based on an out of the box install, you have at this point done > >>> enough that the driver should run (*should*!!!!) > >>> > >>> - run "journalctl -u [email protected] -f" in one > >>> terminal while you run "systemctl start > >>> [email protected]" in another - what does journalctl > output? > >>> > >>> Assuming it does not start (based on what you have said below), show > >>> the messages. > >>> > >>> If it still does not start as configured above, but you \can/ run > >>> /usr/sbin/usbhid-ups with your environment variables specified like > >>> you had done before, and it *does* run, then do the following steps > >>> to create a systemd drop-in file for the variable, but make the steps > >>> use /run/nut instead of /var/run/nut: > >>> https://bugzilla.redhat.com/show_bug.cgi?id=2127269#c8 (comment 8, > >>> formatted for ease of reading). You want to get back to the RH/Fedora > >>> default of using /run/nut, not /var/state/ups > >>> > >>> 1. uncomment the "STATEPATH /var/run/nut" as already mentioned > >>> 2. create: /etc/systemd/system/[email protected]/environ.conf > >>> with these two lines: > >>> > >>> [Service] > >>> Environment=NUT_STATEPATH=/var/run/nut > >>> > >>> 3. and finally do: systemctl daemon-reload > >>> > >>> ...then try and run systemctl start [email protected] > >>> again, while monitoring journalctl. > >>> > >>> > >>> If that does not work - then I'm out of ideas at this point lol... :-D > >>> > >>> 'set' has nothing BTW on my working system related to nut. > >>> > >>>> > >>>> 2) In /etc/ups/upsd.conf, the original STATEPATH line is > >>>> > >>>> STATEPATH /var/run/nut > >>>> > >>>> Right now the original line is commented and I added another line to > >>>> point at /var/state/ups. > >>>> > >>>> 3) You only asked two questions, but I sense a third might be > >>>> important. Originally the system had > >>>> /usr/lib/tmpfiles.d/nut-common.conf. I have modified that file and > >>>> no longer have the original. I copied that file to nut-client.conf, > >>>> and both have the same contents: > >>>> > >>>> ======================= > >>>> # State file (e.g. upsd to driver) and pidfile location for NUT: > >>>> D /var/run/nut 0770 root nut - - > >>>> X /var/run/nut > >>>> ======================== > >>>> > >>>> 4) And one more unasked question! :-) When I look at the > >>>> environment variables on the system, I see this: > >>>> > >>>> ======================== > >>>> [root@mythtv tmpfiles.d]# set | grep -i nut > >>>> _=/etc/ups/nut.conf > >>>> ======================== > >>>> > >>>> > >>>> > >>>> Bill Gee > >>>> > >>>> On 11/30/22 01:20, Simon Wilson via Nut-upsuser wrote: > >>>>> ----- Message from Bill Gee <[email protected]> --------- > >>>>> Date: Tue, 29 Nov 2022 19:25:19 -0600 > >>>>> From: Bill Gee <[email protected]> > >>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 > >>>>> upgrade > >>>>> To: Jim Klimov <[email protected]> > >>>>> Cc: Arnaud Quette via Nut-upsuser > >>>>> <[email protected]> > >>>>> > >>>>> > >>>>>> I got it to run, but what a mess ... > >>>>>> > >>>>>> Yes, I am running systemctl daemon-reload and systemctl restart > >>>>>> nut-server after each change I make. > >>>>>> > >>>>> > >>>>> Hi Bill, > >>>>> > >>>>> Drivers and upsd share defaults (see 'man nutupsdrv'). > >>>>> > >>>>> Your original error message ("writepid: fopen > >>>>> /var/run/usbhid-ups-cyberpower.pid: Permission denied") would seem > >>>>> to indicate, same as the Red Hat bug, that your driver's default > >>>>> pid path is /var/run. > >>>>> > >>>>> The driver by default uses STATEPATH (which can be over-ridden in > >>>>> upsd.conf) to store pid files. The driver .service file is supposed > >>>>> to make sure that path exists by running the ExecStartPre line, > >>>>> which gets its instructions from the referenced ".conf" file from > >>>>> /usr/lib/tmpfiles.d. The .service file then calls 'upsdrvctl start' > >>>>> to start your usbhid-ups driver, as defined in ups.conf. Those all > >>>>> need to align... > >>>>> > >>>>> 2 x questions: > >>>>> > >>>>> 1. Without its comments, what are the active lines (as installed, > >>>>> without any changes) in /usr/lib/systemd/system/[email protected] > >>>>> (or wherever that service file is located on your system)? > >>>>> 2. in your upsd.conf (also as installed, without any changes), what > >>>>> is the commented out STATEPATH you later mention uncommenting? > >>>>> > >>>>>> I created /usr/lib/tmpfiles.d/nut-client.conf The owner is > >>>>>> root:root and permissions are 0644. The contents are > >>>>>> > >>>>>> # State file (e.g. upsd to driver) and pidfile location for NUT: > >>>>>> D /var/run/nut 0770 root nut - - > >>>>>> X /var/run/nut > >>>>>> > >>>>>> I uncommented the STATEPATH line in /etc/ups/upsd.conf. > >>>>>> > >>>>>> I created a directory /var/state/ups, set to 777 permissions. > >>>>>> Changed the STATEPATH line in upsd.conf. No success. > >>>>>> > >>>>>> I looked at /usr/lib/systemd/system/[email protected] but could > >>>>>> not see any changes to be made. The bug report at RedHat mentions > >>>>>> that a file identified in ExecStartPre does not exist, but I could > >>>>>> not duplicate. > >>>>>> > >>>>>> I tried running this as root: > >>>>>> > >>>>>> NUT_STATEPATH=/var/state/ups NUT_ALTPIDPATH=/var/state/ups > >>>>>> /usr/sbin/usbhid-ups -u nut -g nut -s cyberpower -x port=auto > >>>>>> > >>>>>> And it works. I tried it with only one or the other of the two > >>>>>> environment variables, but did not work. It has to have both. > >>>>>> > >>>>>> =============== > >>>>>> Bill Gee > >>>>>> > >>>> > >>>> _______________________________________________ > >>>> Nut-upsuser mailing list > >>>> [email protected] > >>>> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser > >>> > >>> > >>> ----- End message from Bill Gee <[email protected]> ----- > >>> > >>> > >>> > >> > >> _______________________________________________ > >> Nut-upsuser mailing list > >> [email protected] > >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser > > > > > > ----- End message from Bill Gee <[email protected]> ----- > > > > > > > > _______________________________________________ > Nut-upsuser mailing list > [email protected] > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >
_______________________________________________ Nut-upsuser mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
