# cupsd.conf from FreeBSD handbook does not work



## Snurg (Oct 10, 2016)

I am trying to set up cupsd on 11-RC1 but having difficulties to connect to the printer (Kyocera color printer on 192.168.178.21) using JetDirect sockets (which worked well on 10.3).
So I looked into the FreeBSD handbook and tried to apply that troubleshooting cupsd.conf from there.
But, when I try to restart run cupsd with that cupsd.conf shown in the FreeBSD handbook, I get the following error:

```
root@tester:/usr/local/etc/cups # /usr/local/etc/rc.d/cupsd restart
cupsd not running?
Starting cupsd.

Message from syslogd@tester at Oct 10 11:42:11 ...
tester cupsd: Unable to read "/usr/local/etc/cups/cupsd.conf" due to errors.
/usr/local/etc/rc.d/cupsd: WARNING: failed to start cupsd
root@tester:/usr/local/etc/cups #
```
The cupsd.conf is adapted according to the instructions in the handbook:

```
# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info

# Administrator user group...
SystemGroup wheel

# Listen for connections on Port 631.
Port 631
#Listen localhost:631
Listen /var/run/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
#BrowseAllow @LOCAL
BrowseAllow 192.168.178.*
BrowseAddress 192.168.178.*

# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption Never

# Allow access to the server from any machine on the LAN
<Location />
  Order allow,deny
  #Allow localhost
  Allow 192.168.178.*
</Location>

# Allow access to the admin pages from any machine on the LAN
<Location /admin>
  #Encryption Required
  Order allow,deny
  #Allow localhost
  Allow 192.168.178.*
</Location>

# Allow access to configuration files from any machine on the LAN
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  #Allow localhost
  Allow 192.168.178.*
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
    AuthType Basic
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
```
The permissions seem OK to me:

```
-rw-r-----  1 root  cups   2303 Oct 10 11:25 cupsd.conf
```

Any idea what I am doing wrong?


----------



## wblock@ (Oct 10, 2016)

The CUPS thing is an article, not in the Handbook.

There are many users of CUPS, but so far none have submitted up-to-date setup instructions to be included in the printing chapter of the Handbook.


----------



## drhowarddrfine (Oct 10, 2016)

wblock@ said:


> *none have submitted up-to-date setup instructions to be included in the printing chapter of the Handbook.*



Emphasis added.


----------



## scottro (Oct 10, 2016)

wblock@ has an article on using lp. 

http://www.wonkity.com/~wblock/docs/html/lpdprinting.html


I would replace your modified conf file with the default (you can always reinstall cups to get it).  Then, just start cups and  grab the ppd that you apparently had from the older release, put it in  /usr/local/etc/cups/ppd then run
`/usr/local/bin/lpadmin -p Kyocera -E -v socket://192.168.178.21 -P /usr/local/etc/cups/ppd/kyocera.ppd`  (Or whatever the name of the ppd is.)
Then
`/usr/local/bin/lpadmin -d Kyocera`

Then
`/usr/local/bin/lp /usr/local/share/cups/data/default-testpage.pdf`

(Actually, if you put something like `CUPS_OVERWRITE_BASE=yes` in /etc/make.conf and reinstall cups, you don't need the whole /usr/local/bin stuff. 
(I think that's what you put in make.conf, haven't done it in awhile--I print so infrequently that I usually don't bother, and just use the /usr/local/bin prefix when printing.)

I have found, in both Linux and FreeBSD, that this lpadmin method is just much quicker than the annoying waiting for the cups webserver to do its thing.


----------



## Remington (Oct 10, 2016)

drhowarddrfine said:


> Emphasis added.



Precisely.  That's why we need an online editor to make it easier to edit the docs.


----------



## wblock@ (Oct 10, 2016)

scottro said:


> wblock@ has an article on using lp


Well, that is on using lpr(1) and lpd(8).  Those are the real, original commands that CUPS copied incompatibly and then used the same names.

I don't use CUPS for the same reason I don't use inkjet printers: when I want to print something, I want it to print right now, not start a session of debugging and coaxing to eventually get something printed.



Remington said:


> Precisely. That's why we need an online editor to make it easier to edit the docs.


Adding it to the existing docs is the last step, not the first.  If you already have that content, we can talk.  If you don't have it, and plan to write it off the top of your head... it will be typical wiki brain-dump quality.


----------



## scottro (Oct 10, 2016)

Ah, I said lp--I should have said lpr, apologies.


----------



## Snurg (Oct 12, 2016)

I also do not like cups. It's just that it is used by default by KDE (and Gnome too, I think).
The bad thing is that it is built in all KDE stuff. One would have to build the whole metapackage from scratch without cups in the options. I do not use KDE or Gnome, but there are a few KDE applications I use, so the whole cups bagage gets installed.

I admit I am a lazy ass and as I didn't find an option to remove the cups package without uninstalling the whole KDE stuff I just deleted /usr/local/bin/lpr which is the one from cups.

Because, when I try to start lpd I get this message

```
# lpd
chkprintcap: rawlaser and lp share the same spool, /var/spool/lpd/lp
lpd: 1 errors in printcap file, exiting
#
```

My /etc/printcap:

```
lp:\
        :lp=:\
        :sh:\
        :mx#0:\
        :rm=kyo:\
        :rp=raw:\
        :sd=/var/spool/lpd/lp:\
        :lf=/var/log/lpd-errs:

rawlaser:\  
        :lp=:\
        :sh:\
        :mx#0:\
        :rm=kyo:\
        :rp=raw:\
        :sd=/var/spool/lpd/lp:\
        :lf=/var/log/lpd-errs:
```
is practically the same wblock@ suggested in his wonderful article.

`where` says there is only one lpd in /usr/sbin. That one does not contain the cursed string "cups".
Maybe the fake lpd (from cups) is hidden somewhere else?
Any idea?


----------



## scottro (Oct 12, 2016)

Not /usr/local/sbin? Bah, do I have cups on this?  I do---aha, it's /usr/local/libexec/cups/backend/lpd. 

It seems cups get installed by so many things as a dependency--I think firefox, among others, installs it, I've gotten lazier as I age, and just let it install then make use of it, as it is easy to install a printer if I have the ppd.


----------



## Remington (Oct 12, 2016)

I usually have this line in my /etc/make.conf to prevent CUPS from being installed thus keeping my packages list short.


```
OPTIONS_UNSET = CUPS
```


----------

