You are not logged in.

#1 2016-08-23 12:48:08

DigitalFlow
Member
Registered: 2016-02-20
Posts: 4

Cupsd not started by Systemd

Hello everyone,

I'm running Arch for some time now and I am very happy with it.

Since the last update I'm having issues with Cups and Systemd.
Although Systemd mentions, that it starts the CUPS scheduler on boot, the CUPS daemon is not started.

I enabled org.cups.cupsd.service in systemd and when starting it manually it works fine.
After booting however, cupsd is not running and I can't print.
There are no entries in journalctl that would point out any issues, when checking

systemctl | grep cups

I receive the following output:

org.cups.cupsd.path                                                                                                           loaded active waiting   CUPS Scheduler
org.cups.cupsd.socket                                                                                                         loaded active listening CUPS Scheduler

Can you give me some hints where to search for the issue? Is it already a problem, that org.cups.cupsd.path is waiting instead of listening?

I appreciate your help.

Kind Regards,
Florian

Offline

#2 2016-08-23 15:58:06

paulkerry
Member
From: Sheffield, UK
Registered: 2014-10-02
Posts: 611

Re: Cupsd not started by Systemd

You should have "org.cups.cupsd.service" listed in your output which runs cupsd

What output do you get from...

systemctl status org.cups.cupsd.service

You may perhaps have to reinstall cups?

Offline

#3 2016-08-24 11:25:29

Applebloom
Member
Registered: 2016-08-06
Posts: 3

Re: Cupsd not started by Systemd

I have the same issue.

[root@x201t ~]# systemctl status org.cups.cupsd.service 
● org.cups.cupsd.service - CUPS Scheduler
   Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:cupsd(8)
[root@x201t ~]# systemctl status org.cups.cupsd.socket
● org.cups.cupsd.socket - CUPS Scheduler
   Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.socket; enabled; vendor preset: disabled)
   Active: active (listening) since śro 2016-08-24 13:20:41 CEST; 3min 52s ago
   Listen: /run/cups/cups.sock (Stream)

sie 24 13:20:41 x201t systemd[1]: Listening on CUPS Scheduler.
[root@x201t ~]# systemctl status org.cups.cupsd.path 
● org.cups.cupsd.path - CUPS Scheduler
   Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.path; enabled; vendor preset: disabled)
   Active: active (waiting) since śro 2016-08-24 13:20:41 CEST; 3min 53s ago

sie 24 13:20:41 x201t systemd[1]: Started CUPS Scheduler.

This is also happening in a VM with fresh Arch install.

The problem seems to be that cupsd is started with -l option (on demand) and it's started when you try to access printers in any application.

Last edited by Applebloom (2016-08-24 12:00:30)

Offline

#4 2016-08-24 20:11:15

pypi
Wiki Maintainer
Registered: 2014-04-22
Posts: 250

Re: Cupsd not started by Systemd

At least on my install, CUPS is started automatically when I go to use it on the local machine, and I can print fine. If you have set up CUPS to accept requests from other computers on the network, you will need to add to add a drop in file as described at the end of the manual setup page of the wiki.

The fact that you can't print might well be a completely separate issue. What applications are you printing from? What error messages do you get? What happens if you print a file using lp?

Offline

#5 2016-08-25 12:46:24

kekules_dream
Member
Registered: 2009-05-19
Posts: 102

Re: Cupsd not started by Systemd

The OP mentioned that the daemon, although enabled, is not starting at boot.

Like the OP, i have enabled org.cups.cupsd:

% systemctl list-unit-files --type=service |grep enabled |grep cups
org.cups.cupsd.service

But immediately after booting:

% systemctl status org.cups.cupsd
● org.cups.cupsd.service - CUPS Scheduler
   Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:cupsd(8)

% lpstat -a                                                                                                                                        :(
lpstat: Bad file descriptor

# systemctl start org.cups.cupsd

# systemctl status org.cups.cupsd
● org.cups.cupsd.service - CUPS Scheduler
   Loaded: loaded (/usr/lib/systemd/system/org.cups.cupsd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-08-25 07:40:39 CDT; 19s ago

# lpstat -a
Brother_HL-2070N_series accepting requests since Sun 21 Aug 2016 07:37:10 AM CDT

As you can see, for me as well cups can be started manually, but it is consistently not starting at boot even though it is enabled. I have tried disabling and re-enabling the daemon, and reinstalling cups, libcups and cups-filters. None of that helped.

Last edited by kekules_dream (2016-08-25 12:57:45)

Offline

#6 2016-08-25 16:52:18

loqs
Member
Registered: 2014-03-06
Posts: 17,327

Re: Cupsd not started by Systemd

$ systemctl enable org.cups.cupsd.service 
Created symlink /etc/systemd/system/printer.target.wants/org.cups.cupsd.service → /usr/lib/systemd/system/org.cups.cupsd.service.
Created symlink /etc/systemd/system/sockets.target.wants/org.cups.cupsd.socket → /usr/lib/systemd/system/org.cups.cupsd.socket.
Created symlink /etc/systemd/system/multi-user.target.wants/org.cups.cupsd.path → /usr/lib/systemd/system/org.cups.cupsd.path.

org.cups.cupsd.service will be started when printer.target is reached
org.cups.cupsd.socket will be started when sockets.target is reached
org.cups.cupsd.path will be started when multi-user.target is reached

man systemd.special wrote:

       printer.target
           This target is started automatically as soon as a printer is
           plugged in or becomes available at boot.

           This may be used to pull in printer management daemons dynamically
           when printer hardware is found.

If printer.target is never reached then org.cups.cupsd.service will not started even though it is enabled
Would also recommend reading socket-activation2.html which covers the different activation types using cups as its example.

Offline

#7 2016-09-01 21:33:14

dr.dynamics
Member
Registered: 2011-11-10
Posts: 48

Re: Cupsd not started by Systemd

I am having the same issue.  All of the symlinks listed above are present, but when I boot, systemd does not start cups.  If I try to print, nothing happens.  If I systemctl restart org.cups.cupsd, it starts and works fine, and I can print normally.  My printer is a network printer, would that have anything to do with it?  How do I tell if printer.target is reached?

What sucks most about this is that it was working fine before, and when you count on it, it fails.

Offline

#8 2016-09-06 01:00:42

sbs
Member
Registered: 2014-01-12
Posts: 8

Re: Cupsd not started by Systemd

loqs wrote:

If printer.target is never reached then org.cups.cupsd.service will not started even though it is enabled

I don't know how CUPS used to work, but I think loqs has correctly identified the issue now. Since org.cups.cupsd.service contains the line:

WantedBy=printer.target

then it will not be started automatically until a local printer is plugged in. You could temporarily change the line to:

WantedBy=multi-user.target

but this would be overwritten the next time `cups` is updated.

For a network printer, I was able to get org.cups.cupsd.service to start on boot by enabling cups-browsed.service, as suggested in the CUPS wiki, even though I didn't really want Avahi, which it requires.

This works because cups-browsed.service contains the lines:

Requires=org.cups.cupsd.service
WantedBy=multi-user.target

Offline

#9 2016-09-12 10:46:39

kekules_dream
Member
Registered: 2009-05-19
Posts: 102

Re: Cupsd not started by Systemd

loqs and sbs, I'm sure that is all good information but this problem started recently and the printer has been plugged in the entire time.

Anyway, for my case, this appears to be solved. I was looking in /etc/cups and noticed I had some files in there with some really old modification times (up to 3 years old). Then I read in the cups wiki article that clients.conf is deprecated. I had a /etc/cups/clients.conf and clients.conf~. I moved them out and rebooted. Now every time I reboot the daemon starts automatically, localhost:631 works and lpstat -p gives the appropriate output.

Offline

#10 2016-09-12 11:58:54

Raynman
Member
Registered: 2011-10-22
Posts: 1,539

Re: Cupsd not started by Systemd

sbs wrote:

You could temporarily change the line to:

WantedBy=multi-user.target

but this would be overwritten the next time `cups` is updated.

You could simply add the appropriate symlink manually or like this:

# systemctl add-wants multi-user.target org.cups.cupsd.service

Offline

Board footer

Powered by FluxBB