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 ================================== 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 >>
Simon Wilson
2022-Nov-30 13:21 UTC
[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
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> ----- -- Simon Wilson M: 0400 12 11 16
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. But first, there is a problem with upsc. Also nut-server complains that it cannot connect to the device. /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. 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. 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 ==============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> ----- > > >