Jim Klimov
2022-Dec-01 18:44 UTC
[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
Curious finding up there. I think this is due to `load_upsdconf(0);` being at https://github.com/networkupstools/nut/blob/master/server/upsd.c#L1776 being after the initial signal-probing for competitors (or sending a command to a running daemon), so using built-in PID/STATE paths, and notably that probing happens before the optional chrooting (and PID file is later recorded relative to the chroot). For that initial probing, it would honor the NUT_ALTPIDPATH envvar (although still disregarding "relative to chroot" part if used), but not yet the know config file contents. So it is messed up somewhat. FWIW, last week I tried to track down current usage of various PATHs in the sources, see https://github.com/networkupstools/nut/issues/1712#issuecomment-1327627850 if interested :) Hope this helps, Jim Klimov On Thu, Dec 1, 2022 at 5:43 PM Bill Gee <bgee at campercaver.net> wrote:> My email client (Thunderbird) does not truncate, but it does wrap. The > truncations come from the way systemctl runs its output through a pager. > When I copy-paste from the bash session, it truncates at the right edge > of the window. I need to use the --full and --no-pager options to get > the full text, which will be wrapped as needed. > > Here is the output from upsd -DD: > > ==================================> [root at mythtv ~]# upsd -DD > Network UPS Tools upsd 2.8.0 > 0.000000 fopen /var/run/upsd.pid: No such file or directory > 0.000030 Could not find PID file '/var/run/upsd.pid' to see if > previous upsd instance is already running! > > 0.000250 [D1] debug level is '2' > 0.000335 listening on ::1 port 3493 > 0.000375 listening on 127.0.0.1 port 3493 > 0.001417 /var/run is world readable > 0.001557 Can't connect to UPS [cyberpower] > (usbhid-ups-cyberpower): No such file or directory > 0.002315 Running as foreground process, not saving a PID file > 0.002337 [D1] mainloop: UPS [cyberpower] is not currently connected > 0.002377 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 > 0.002399 [D2] mainloop: polling 2 filedescriptors > 2.003794 [D2] mainloop: no data available > 2.003842 [D1] mainloop: UPS [cyberpower] is not currently connected > 2.003897 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 > 2.003917 [D2] mainloop: polling 2 filedescriptors > 4.005963 [D2] mainloop: no data available > 4.006009 [D1] mainloop: UPS [cyberpower] is not currently connected > 4.006054 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 > 4.006073 [D2] mainloop: polling 2 filedescriptors > 6.008122 [D2] mainloop: no data available > =============================> > Just for grins, I edited /etc/ups/upsd.conf to uncomment the STATEPATH > line. I set it to /run/nut. When I ran upsd -DD again, it was still > looking at /var/run. However! It successfully connected to the > cyberpower device. Upsc returns good information. > > > ================================> [root at mythtv ups]# upsd -DD > Network UPS Tools upsd 2.8.0 > 0.000000 fopen /var/run/upsd.pid: No such file or directory > 0.000037 Could not find PID file '/var/run/upsd.pid' to see if > previous upsd instance is already running! > > 0.000271 [D1] debug level is '2' > 0.000357 listening on ::1 port 3493 > 0.000395 listening on 127.0.0.1 port 3493 > 0.001550 Connected to UPS [cyberpower]: usbhid-ups-cyberpower > 0.002323 Running as foreground process, not saving a PID file > 0.002347 [D2] mainloop: polling 3 filedescriptors > 0.002423 [D2] mainloop: polling 3 filedescriptors > 0.002493 [D2] mainloop: polling 3 filedescriptors > 0.002570 [D2] mainloop: polling 3 filedescriptors > 0.002648 [D2] mainloop: polling 3 filedescriptors > 0.002701 [D2] mainloop: polling 3 filedescriptors > 2.004311 [D2] mainloop: no data available > 2.004352 [D2] mainloop: polling 3 filedescriptors > 4.006061 [D2] mainloop: no data available > > [root at mythtv ups]# systemctl --full --no-pager status nut-server > ? nut-server.service - Network UPS Tools - power devices information server > Loaded: loaded (/usr/lib/systemd/system/nut-server.service; > disabled; preset: disabled) > Active: active (running) since Thu 2022-12-01 10:35:01 CST; 18s ago > Main PID: 3445 (upsd) > Tasks: 1 (limit: 9482) > Memory: 732.0K > CPU: 4ms > CGroup: /system.slice/nut-server.service > ??3445 /usr/sbin/upsd -F > > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: fopen > /var/run/upsd.pid: No such file or directory > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Could not find > PID file '/var/run/upsd.pid' to see if previous upsd instance is already > running! > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on ::1 > port 3493 > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on > 127.0.0.1 port 3493 > Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on ::1 port 3493 > Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on 127.0.0.1 > port 3493 > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Connected to UPS > [cyberpower]: usbhid-ups-cyberpower > Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Connected to UPS > [cyberpower]: usbhid-ups-cyberpower > Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Running as foreground > process, not saving a PID file > Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Running as > foreground process, not saving a PID file > > [root at mythtv ups]# upsc cyberpower at localhost > battery.charge: 100 > battery.charge.low: 10 > battery.charge.warning: 20 > battery.mfr.date: CPS > battery.runtime: 2100 > battery.runtime.low: 300 > battery.type: PbAcid > battery.voltage: 13.3 > battery.voltage.nominal: 12 > device.mfr: CPS > device.model: UPS CP1000AVRLCD > device.type: ups > driver.name: usbhid-ups > [-- snip --] > > > ==============> Bill Gee > > On 12/1/22 06:41, Simon Wilson via Nut-upsuser wrote: > > Hi Bill, well at least you now have a fully operating, starts-on-reboot > > driver - so that is progress. One thing we need to know which I asked > > but you've not answered: > > "Did you need to add the environment drop-in file? At which step did it > > work?" The answer to that may change next step. > > > > nut-server *should* just work if there is a driver available and running. > > > > OK, run: > > > > systemctl disable nut-server (stop it trying to run automatically) > > upsd -DD > > > > And then Ctrl-C to stop it once you have got output to screen with > > startup messages. > > > > Then copy back here the output from upsd -DD, preferably without > > truncating lines which your mail client seems to do :( > > > > I'm pretty sure that nut-server is using /var/run as its STATEPATH. Can > > you also include your upsd.conf, minus commented lines. > > > > Simon. > > > > ----- Message from Bill Gee <bgee at campercaver.net> --------- > > Date: Thu, 1 Dec 2022 06:14:10 -0600 > > From: Bill Gee <bgee at campercaver.net> > > Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade > > To: nut-upsuser at alioth-lists.debian.net > > > > > >> 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 at mythtv ~]# systemctl list-unit-files | grep -i nut > >> nut-driver-enumerator.path enabled disabled > >> nut-driver-enumerator.service enabled disabled > >> nut-driver at .service 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 at mythtv ~]# systemctl status nut-driver at cyberpower > >> ? nut-driver at cyberpower.service - Network UPS Tools - device driver > >> for NUT device 'cyberpower' > >> Loaded: loaded (/usr/lib/systemd/system/nut-driver at .service; > >> enabled; preset: disabled) > >> Drop-In: /etc/systemd/system/nut-driver at .service.d > >> ??environ.conf > >> /etc/systemd/system/nut-driver at cyberpower.service.d > >> ??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/nut-driver at cyberpower.service > >> ??791 /usr/sbin/usbhid-ups -a cyberpower > >> > >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: Using > >> subdriver: CyberPower HID 0.6 > >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: > >> Network UPS Tools - Generic HID driver 0.47 (2.8.0) > >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: USB > >> communication driver (libusb 1.0) 0.43 > >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: > >> cps_adjust_battery_scale: battery readings will be sca> > >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at 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 at 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 <bgee at campercaver.net> --------- > >>> Date: Wed, 30 Nov 2022 19:26:46 -0600 > >>> From: Bill Gee <bgee at campercaver.net> > >>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade > >>> To: nut-upsuser at alioth-lists.debian.net > >>> > >>> > >>>> 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 at mythtv ~]# journalctl -u nut-driver at cyberpower.service -f > >>>> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting > >>>> nut-driver at cyberpower.service - 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 at cyberpower[28719]: > >>>> Using subdriver: CyberPower HID 0.6 > >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]: > >>>> Network UPS Tools - Generic HID driver 0.47 (2.8.0) > >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]: > >>>> USB communication driver (libusb 1.0) 0.43 > >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at 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 at cyberpower[28691]: > >>>> Network UPS Tools - UPS driver controller 2.8.0 > >>>> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started > >>>> nut-driver at cyberpower.service - Network UPS Tools - device driver > >>>> for NUT device 'cyberpower'. > >>>> > >>>> [root at 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 at 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 at 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 at mythtv ups]# upsc cyberpower at 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 > >>> nut-driver at cyberpower.service to enabled for autostart, so with ONLY > >>> the enumerator services and nut-driver at cyberpower.service enabled, > >>> you should see something like the following for 'systemctl > >>> list-unit-files | grep -i nut': > >>> > >>> [root at emp80 ups]# systemctl list-unit-files | grep -i nut > >>> nut-driver-enumerator.path > >>> enabled > >>> nut-driver-enumerator.service > >>> enabled > >>> nut-driver at .service > >>> 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 nut-driver at cyberpower.service (from the > >>> 'indirect' call via nut-driver at .service). upsc will still not work. > >>> > >>> Monitor the driver for a while 'journalctl -u > >>> nut-driver at cyberpower.service -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 <bgee at campercaver.net> --------- > >>>>> Date: Wed, 30 Nov 2022 06:04:14 -0600 > >>>>> From: Bill Gee <bgee at campercaver.net> > >>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 > >>>>> upgrade > >>>>> To: nut-upsuser at alioth-lists.debian.net > >>>>> > >>>>> > >>>>>> 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/nut-driver at .service exists. I have > >>>>>> made no changes to it so far. Here are the contents, > >>>>>> unfortunately line-wrapped by Thunderbird. > >>>>>> > >>>>>> ===============================> >>>>>> [root at mythtv system]# grep -v '^#' nut-driver at .service > >>>>>> [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 > >>>>> nut-driver at cyberpower.service 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 nut-driver at cyberpower.service -f" in one > >>>>> terminal while you run "systemctl start > >>>>> nut-driver at cyberpower.service" 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/nut-driver at .service.d/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 nut-driver at cyberpower.service > >>>>> 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 at 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 <bgee at campercaver.net> --------- > >>>>>>> Date: Tue, 29 Nov 2022 19:25:19 -0600 > >>>>>>> From: Bill Gee <bgee at campercaver.net> > >>>>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 > >>>>>>> upgrade > >>>>>>> To: Jim Klimov <jimklimov+nut at gmail.com> > >>>>>>> Cc: Arnaud Quette via Nut-upsuser > >>>>>>> <nut-upsuser at alioth-lists.debian.net> > >>>>>>> > >>>>>>> > >>>>>>>> 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/nut-driver at .service (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/nut-driver at .service 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 > >>>>>> Nut-upsuser at alioth-lists.debian.net > >>>>>> > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser > >>>>> > >>>>> > >>>>> ----- End message from Bill Gee <bgee at campercaver.net> ----- > >>>>> > >>>>> > >>>>> > >>>> > >>>> _______________________________________________ > >>>> Nut-upsuser mailing list > >>>> Nut-upsuser at alioth-lists.debian.net > >>>> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser > >>> > >>> > >>> ----- End message from Bill Gee <bgee at campercaver.net> ----- > >>> > >>> > >>> > >> > >> _______________________________________________ > >> Nut-upsuser mailing list > >> Nut-upsuser at alioth-lists.debian.net > >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser > > > > > > ----- End message from Bill Gee <bgee at campercaver.net> ----- > > > > > > > > _______________________________________________ > Nut-upsuser mailing list > Nut-upsuser at alioth-lists.debian.net > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20221201/7de3041d/attachment-0001.htm>
Jim Klimov
2022-Dec-01 18:49 UTC
[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
For the sake of cross-referencing, posted an issue at https://github.com/networkupstools/nut/issues/1727 On Thu, Dec 1, 2022 at 7:44 PM Jim Klimov <jimklimov+nut at gmail.com> wrote:> Curious finding up there. I think this is due to `load_upsdconf(0);` > being at > https://github.com/networkupstools/nut/blob/master/server/upsd.c#L1776 > being after the initial signal-probing for competitors (or sending a > command to a running daemon), so using built-in PID/STATE paths, and > notably that probing happens before the optional chrooting (and PID file is > later recorded relative to the chroot). > > For that initial probing, it would honor the NUT_ALTPIDPATH envvar > (although still disregarding "relative to chroot" part if used), but not > yet the know config file contents. > > So it is messed up somewhat. > > FWIW, last week I tried to track down current usage of various PATHs in > the sources, see > https://github.com/networkupstools/nut/issues/1712#issuecomment-1327627850 > if interested :) > > Hope this helps, > Jim Klimov > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20221201/9b1846de/attachment.htm>
Simon Wilson
2022-Dec-01 22:42 UTC
[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
Just read through your tracking down of pid paths... yikes. I'm just looking forward to a set of RH/Fedora packages which are not borked out of the box. Simon. ----- Message from Jim Klimov via Nut-upsuser <nut-upsuser at alioth-lists.debian.net> --------- Date: Thu, 1 Dec 2022 19:44:18 +0100 From: Jim Klimov via Nut-upsuser <nut-upsuser at alioth-lists.debian.net> Reply-To: Jim Klimov <jimklimov+nut at gmail.com> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade To: Bill Gee <bgee at campercaver.net> Cc: nut-upsuser at alioth-lists.debian.net> Curious finding up there. I think this is due to `load_upsdconf(0);` being > at https://github.com/networkupstools/nut/blob/master/server/upsd.c#L1776 > being after the initial signal-probing for competitors (or sending a > command to a running daemon), so using built-in PID/STATE paths, and > notably that probing happens before the optional chrooting (and PID file is > later recorded relative to the chroot). > > For that initial probing, it would honor the NUT_ALTPIDPATH envvar > (although still disregarding "relative to chroot" part if used), but not > yet the know config file contents. > > So it is messed up somewhat. > > FWIW, last week I tried to track down current usage of various PATHs in the > sources, see > https://github.com/networkupstools/nut/issues/1712#issuecomment-1327627850 > if interested :) > > Hope this helps, > Jim Klimov > > On Thu, Dec 1, 2022 at 5:43 PM Bill Gee <bgee at campercaver.net> wrote: > >> My email client (Thunderbird) does not truncate, but it does wrap. The >> truncations come from the way systemctl runs its output through a pager. >> When I copy-paste from the bash session, it truncates at the right edge >> of the window. I need to use the --full and --no-pager options to get >> the full text, which will be wrapped as needed. >> >> Here is the output from upsd -DD: >> >> ==================================>> [root at mythtv ~]# upsd -DD >> Network UPS Tools upsd 2.8.0 >> 0.000000 fopen /var/run/upsd.pid: No such file or directory >> 0.000030 Could not find PID file '/var/run/upsd.pid' to see if >> previous upsd instance is already running! >> >> 0.000250 [D1] debug level is '2' >> 0.000335 listening on ::1 port 3493 >> 0.000375 listening on 127.0.0.1 port 3493 >> 0.001417 /var/run is world readable >> 0.001557 Can't connect to UPS [cyberpower] >> (usbhid-ups-cyberpower): No such file or directory >> 0.002315 Running as foreground process, not saving a PID file >> 0.002337 [D1] mainloop: UPS [cyberpower] is not currently connected >> 0.002377 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 >> 0.002399 [D2] mainloop: polling 2 filedescriptors >> 2.003794 [D2] mainloop: no data available >> 2.003842 [D1] mainloop: UPS [cyberpower] is not currently connected >> 2.003897 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 >> 2.003917 [D2] mainloop: polling 2 filedescriptors >> 4.005963 [D2] mainloop: no data available >> 4.006009 [D1] mainloop: UPS [cyberpower] is not currently connected >> 4.006054 [D1] mainloop: UPS [cyberpower] is now connected as FD -1 >> 4.006073 [D2] mainloop: polling 2 filedescriptors >> 6.008122 [D2] mainloop: no data available >> =============================>> >> Just for grins, I edited /etc/ups/upsd.conf to uncomment the STATEPATH >> line. I set it to /run/nut. When I ran upsd -DD again, it was still >> looking at /var/run. However! It successfully connected to the >> cyberpower device. Upsc returns good information. >> >> >> ================================>> [root at mythtv ups]# upsd -DD >> Network UPS Tools upsd 2.8.0 >> 0.000000 fopen /var/run/upsd.pid: No such file or directory >> 0.000037 Could not find PID file '/var/run/upsd.pid' to see if >> previous upsd instance is already running! >> >> 0.000271 [D1] debug level is '2' >> 0.000357 listening on ::1 port 3493 >> 0.000395 listening on 127.0.0.1 port 3493 >> 0.001550 Connected to UPS [cyberpower]: usbhid-ups-cyberpower >> 0.002323 Running as foreground process, not saving a PID file >> 0.002347 [D2] mainloop: polling 3 filedescriptors >> 0.002423 [D2] mainloop: polling 3 filedescriptors >> 0.002493 [D2] mainloop: polling 3 filedescriptors >> 0.002570 [D2] mainloop: polling 3 filedescriptors >> 0.002648 [D2] mainloop: polling 3 filedescriptors >> 0.002701 [D2] mainloop: polling 3 filedescriptors >> 2.004311 [D2] mainloop: no data available >> 2.004352 [D2] mainloop: polling 3 filedescriptors >> 4.006061 [D2] mainloop: no data available >> >> [root at mythtv ups]# systemctl --full --no-pager status nut-server >> ? nut-server.service - Network UPS Tools - power devices information server >> Loaded: loaded (/usr/lib/systemd/system/nut-server.service; >> disabled; preset: disabled) >> Active: active (running) since Thu 2022-12-01 10:35:01 CST; 18s ago >> Main PID: 3445 (upsd) >> Tasks: 1 (limit: 9482) >> Memory: 732.0K >> CPU: 4ms >> CGroup: /system.slice/nut-server.service >> ??3445 /usr/sbin/upsd -F >> >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: fopen >> /var/run/upsd.pid: No such file or directory >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Could not find >> PID file '/var/run/upsd.pid' to see if previous upsd instance is already >> running! >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on ::1 >> port 3493 >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on >> 127.0.0.1 port 3493 >> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on ::1 port 3493 >> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on 127.0.0.1 >> port 3493 >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Connected to UPS >> [cyberpower]: usbhid-ups-cyberpower >> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Connected to UPS >> [cyberpower]: usbhid-ups-cyberpower >> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Running as foreground >> process, not saving a PID file >> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Running as >> foreground process, not saving a PID file >> >> [root at mythtv ups]# upsc cyberpower at localhost >> battery.charge: 100 >> battery.charge.low: 10 >> battery.charge.warning: 20 >> battery.mfr.date: CPS >> battery.runtime: 2100 >> battery.runtime.low: 300 >> battery.type: PbAcid >> battery.voltage: 13.3 >> battery.voltage.nominal: 12 >> device.mfr: CPS >> device.model: UPS CP1000AVRLCD >> device.type: ups >> driver.name: usbhid-ups >> [-- snip --] >> >> >> ==============>> Bill Gee >> >> On 12/1/22 06:41, Simon Wilson via Nut-upsuser wrote: >> > Hi Bill, well at least you now have a fully operating, starts-on-reboot >> > driver - so that is progress. One thing we need to know which I asked >> > but you've not answered: >> > "Did you need to add the environment drop-in file? At which step did it >> > work?" The answer to that may change next step. >> > >> > nut-server *should* just work if there is a driver available and running. >> > >> > OK, run: >> > >> > systemctl disable nut-server (stop it trying to run automatically) >> > upsd -DD >> > >> > And then Ctrl-C to stop it once you have got output to screen with >> > startup messages. >> > >> > Then copy back here the output from upsd -DD, preferably without >> > truncating lines which your mail client seems to do :( >> > >> > I'm pretty sure that nut-server is using /var/run as its STATEPATH. Can >> > you also include your upsd.conf, minus commented lines. >> > >> > Simon. >> > >> > ----- Message from Bill Gee <bgee at campercaver.net> --------- >> > Date: Thu, 1 Dec 2022 06:14:10 -0600 >> > From: Bill Gee <bgee at campercaver.net> >> > Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade >> > To: nut-upsuser at alioth-lists.debian.net >> > >> > >> >> 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 at mythtv ~]# systemctl list-unit-files | grep -i nut >> >> nut-driver-enumerator.path enabled disabled >> >> nut-driver-enumerator.service enabled disabled >> >> nut-driver at .service 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 at mythtv ~]# systemctl status nut-driver at cyberpower >> >> ? nut-driver at cyberpower.service - Network UPS Tools - device driver >> >> for NUT device 'cyberpower' >> >> Loaded: loaded (/usr/lib/systemd/system/nut-driver at .service; >> >> enabled; preset: disabled) >> >> Drop-In: /etc/systemd/system/nut-driver at .service.d >> >> ??environ.conf >> >> /etc/systemd/system/nut-driver at cyberpower.service.d >> >> ??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/nut-driver at cyberpower.service >> >> ??791 /usr/sbin/usbhid-ups -a cyberpower >> >> >> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: Using >> >> subdriver: CyberPower HID 0.6 >> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: >> >> Network UPS Tools - Generic HID driver 0.47 (2.8.0) >> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: USB >> >> communication driver (libusb 1.0) 0.43 >> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: >> >> cps_adjust_battery_scale: battery readings will be sca> >> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at 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 at 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 <bgee at campercaver.net> --------- >> >>> Date: Wed, 30 Nov 2022 19:26:46 -0600 >> >>> From: Bill Gee <bgee at campercaver.net> >> >>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade >> >>> To: nut-upsuser at alioth-lists.debian.net >> >>> >> >>> >> >>>> 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 at mythtv ~]# journalctl -u nut-driver at cyberpower.service -f >> >>>> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting >> >>>> nut-driver at cyberpower.service - 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 at cyberpower[28719]: >> >>>> Using subdriver: CyberPower HID 0.6 >> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]: >> >>>> Network UPS Tools - Generic HID driver 0.47 (2.8.0) >> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]: >> >>>> USB communication driver (libusb 1.0) 0.43 >> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at 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 at cyberpower[28691]: >> >>>> Network UPS Tools - UPS driver controller 2.8.0 >> >>>> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started >> >>>> nut-driver at cyberpower.service - Network UPS Tools - device driver >> >>>> for NUT device 'cyberpower'. >> >>>> >> >>>> [root at 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 at 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 at 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 at mythtv ups]# upsc cyberpower at 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 >> >>> nut-driver at cyberpower.service to enabled for autostart, so with ONLY >> >>> the enumerator services and nut-driver at cyberpower.service enabled, >> >>> you should see something like the following for 'systemctl >> >>> list-unit-files | grep -i nut': >> >>> >> >>> [root at emp80 ups]# systemctl list-unit-files | grep -i nut >> >>> nut-driver-enumerator.path >> >>> enabled >> >>> nut-driver-enumerator.service >> >>> enabled >> >>> nut-driver at .service >> >>> 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 nut-driver at cyberpower.service (from the >> >>> 'indirect' call via nut-driver at .service). upsc will still not work. >> >>> >> >>> Monitor the driver for a while 'journalctl -u >> >>> nut-driver at cyberpower.service -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 <bgee at campercaver.net> --------- >> >>>>> Date: Wed, 30 Nov 2022 06:04:14 -0600 >> >>>>> From: Bill Gee <bgee at campercaver.net> >> >>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 >> >>>>> upgrade >> >>>>> To: nut-upsuser at alioth-lists.debian.net >> >>>>> >> >>>>> >> >>>>>> 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/nut-driver at .service exists. I have >> >>>>>> made no changes to it so far. Here are the contents, >> >>>>>> unfortunately line-wrapped by Thunderbird. >> >>>>>> >> >>>>>> ===============================>> >>>>>> [root at mythtv system]# grep -v '^#' nut-driver at .service >> >>>>>> [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 >> >>>>> nut-driver at cyberpower.service 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 nut-driver at cyberpower.service -f" in one >> >>>>> terminal while you run "systemctl start >> >>>>> nut-driver at cyberpower.service" 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/nut-driver at .service.d/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 nut-driver at cyberpower.service >> >>>>> 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 at 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 <bgee at campercaver.net> --------- >> >>>>>>> Date: Tue, 29 Nov 2022 19:25:19 -0600 >> >>>>>>> From: Bill Gee <bgee at campercaver.net> >> >>>>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 >> >>>>>>> upgrade >> >>>>>>> To: Jim Klimov <jimklimov+nut at gmail.com> >> >>>>>>> Cc: Arnaud Quette via Nut-upsuser >> >>>>>>> <nut-upsuser at alioth-lists.debian.net> >> >>>>>>> >> >>>>>>> >> >>>>>>>> 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/nut-driver at .service (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/nut-driver at .service 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 >> >>>>>> Nut-upsuser at alioth-lists.debian.net >> >>>>>> >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >> >>>>> >> >>>>> >> >>>>> ----- End message from Bill Gee <bgee at campercaver.net> ----- >> >>>>> >> >>>>> >> >>>>> >> >>>> >> >>>> _______________________________________________ >> >>>> Nut-upsuser mailing list >> >>>> Nut-upsuser at alioth-lists.debian.net >> >>>> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >> >>> >> >>> >> >>> ----- End message from Bill Gee <bgee at campercaver.net> ----- >> >>> >> >>> >> >>> >> >> >> >> _______________________________________________ >> >> Nut-upsuser mailing list >> >> Nut-upsuser at alioth-lists.debian.net >> >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >> > >> > >> > ----- End message from Bill Gee <bgee at campercaver.net> ----- >> > >> > >> > >> >> _______________________________________________ >> Nut-upsuser mailing list >> Nut-upsuser at alioth-lists.debian.net >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >>----- End message from Jim Klimov via Nut-upsuser <nut-upsuser at alioth-lists.debian.net> ----- -- Simon Wilson M: 0400 12 11 16