The cups-lpd package must be installed and set up in order to accept requests to print using the LPD protocol on port 515. (in addition to a properly configured CUPS system).
In all versions of CentOS, first install the cups-lpd package as follows.
yum install cups-lpd
Depending on the CentOS version you are using, there are different ways to enable and configure the service.
CentOS 4, 6, and 6
Enable the service and restart xinetd. Edit /etc/xinetd.d/cups-lpd and change.
disable = yes
to
disable = no
Add the following to the file /etc/xinetd.d/cups-lpd, below the line server = /usr/libexec/cups/daemon/cups-lpd
server_args = -o document-format=application/octet-stream
Restart the xinetd service.
service xinetd restart chkconfig xinetd on
Change /etc/cups/cupsd.conf as follows.
# Allow remote access Port 631 Listen /var/run/cups/cups.sock # Share local printers on the local network. Browsing On BrowseOrder allow,deny BrowseAddress @LOCAL DefaultAuthType Basic <Location /> # Allow shared printing... Order allow,deny Allow @LOCAL </Location>
Restart CUPS as follows.
service cups restart
CentOS 7 and 8
After installing the cups-lpd package, configure systemd to start listening on the LPD socket (port 515).
systemctl enable --now cups-lpd.socket
To enable CentOS to accept print jobs via LPD on port 515 and process them using CUPS, run the aforementioned command.
If you also require command-line options for cups-lpd, such as the ability to turn off the printing of job cover sheets, then follow these steps to expand the systemd unit configuration.
Create a directory named /etc/systemd/system/cups-lpd\@.service.d
Create a file named cups-lpd.conf
Add the following entries to the file.
[Service] ExecStart= ExecStart=-/usr/lib/cups/daemon/cups-lpd -o <option>=<value>
Reload the server as follows.
systemctl daemon-reload
Restart cups-lpd.
systemctl restart cups-lpd.socket
To add job-sheets=none to the cups-lpd command line, for instance.
# mkdir /etc/systemd/system/cups-lpd\@.service.d # vi /etc/systemd/system/cups-lpd\@.service.d/cups-lpd.conf # cat /etc/systemd/system/cups-lpd\@.service.d/cups-lpd.conf [Service] ExecStart= ExecStart=-/usr/lib/cups/daemon/cups-lpd -o job-sheets=none # systemctl daemon-reload # systemctl restart cups-lpd.socket