[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade

Bill Gee bgee at campercaver.net
Thu Dec 1 22:49:14 GMT 2022


Checking now - There is a file called 
/etc/systemd/system/nut-driver at .service.d/environ.conf.  Its contents are

==========================
[root at mythtv nut-driver at .service.d]# ll
total 8
-rw-r--r-- 1 root root 49 Nov 29 18:14 environ.conf
-rw-r--r-- 1 root root 81 Nov 30 18:58 
nut-driver-enumerator-generated-checksum.conf

[root at mythtv nut-driver at .service.d]# cat environ.conf
[Service]
Environment=NUT_STATEPATH=/var/run/nut

==========================

Which explains, I think, much of the problem.  I do not remember putting 
that file in place.  However, it is dated 29 Nov, just a couple of days 
ago, so it was probably me who did it.

Should I delete the file?  Or change it to use /run/nut?

And that raises another interesting question:  Since /var/run and /run 
are effectively the same thing, why does /run work and /var/run not work?

===============
Bill Gee

On 12/1/22 16:38, Simon Wilson via Nut-upsuser wrote:
> Working nut-driver, working nut-server. That's a lot further than you 
> were on Tuesday.
> 
> It's a little odd that nut-driver worked without STATEPATH being 
> uncommented in upsd.conf but nut-server needed the change.
> @Jim, without digging into source, any reason why that would be the case?
> @Bill, you didn't end up doing an 'environ.conf'-style drop-in file at 
> '/etc/systemd/system/nut-driver at .service.d/' did you (as that would 
> explain the difference between the two services)?
> 
> You will need to enable nut.target to have things start on boot, and 
> reboot to make sure everything starts OK.
> 
> Simon
> 
> ----- Message from Bill Gee <bgee at campercaver.net> ---------
>     Date: Thu, 1 Dec 2022 10:43:04 -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
> 
>> 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.nethttps://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
> 
> ----- End message from Bill Gee <bgee at campercaver.net> -----
> 



More information about the Nut-upsuser mailing list