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

Simon Wilson simon at simonandkate.net
Thu Dec 1 22:38:06 GMT 2022


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> -----

-- 
Simon Wilson
M: 0400 12 11 16




More information about the Nut-upsuser mailing list