# Printer problem



## dave-570 (Mar 28, 2015)

I am fairly new to FreeBSD using Linux for a long time. I would like to install my HP 1510 Deskjet. Now iI have followed all the instructions in the handbook. But when iI load CUPS it just doesn't see the printer? Is this because FreeBSD is loading the USB driver, unlpt0? If so how do iI get it to not load the module so CUPS can detect the hardware?? Thanks in advance!!
PS My kernel does NOT have device unlpt0 compiled in. The book says freebsdFreeBSD will automatically load it when a printer is plugged in to a USB port. Hplip is also installed.


----------



## shepper (Mar 28, 2015)

> USB
> 
> USB printers can be connected to any available USB port on the computer.
> 
> When FreeBSD detects a USB printer, two device entries are created: /dev/ulpt0 and /dev/unlpt0. Data sent to either device will be relayed to the printer. After each print job, ulpt0 resets the USB port. Resetting the port can cause problems with some printers, so the unlpt0 device is used instead. unlpt0 does not reset the USB port at all.



You could be having a number of problems.  Is this the guide you followed?  Did you set the device permissions for a user as described here?

In Linux, permissions are either preset or allocated by systemd settings.  Both have small but real security risks.  In general, BSD's  have you consciously accept the risk by setting the permission manually.

As an aside, FreeBSD comes with a simple print spooler that would give you basic printing functionality using a print/ghostscript filter with the 
	
	



```
-sdriver=ijs
```


----------



## Oko (Mar 29, 2015)

dave-570 said:


> I am fairly new to BSD using linux for a long time. I would like to install my HP 1510 Deskjet. Now i have followed all the instructions in the handbook.


No you didn't! Handbook merely mentions CUPS in the section about other spooling systems

https://www.freebsd.org/doc/handbook/printing-other.html

Handbook recommends native pooling LPD spooling system and talks mostly about ASCII and PostScript capable printers. One would have very hard time to configure non-PostScript printer like yours which requires third party drivers by reading the handbook.

Setting up CUPS is more or less the same on Linux and FreeBSD. Check out the documentation there is nothing specific for BSDs.

http://www.cups.org/doc-1.1/sam.html

If you need little bit more hand holding there is FreeBSD CUPS documentation

https://www.freebsd.org/doc/en_US.ISO8859-1/articles/cups/


Now in all seriousness you have never configured CUPS? Right? You have used some Ubuntu version where you just plugged the printer and things work out of box.

Please post your /usr/local/etc/cups/cupsd.conf and log files before we go any further.


----------



## diizzy (Apr 5, 2015)

There really should be a large note in the handbook saying that everything that doesn't do PCL5 (or higher) and/or Postscript is "best effort" and may/may not work.
//Danne


----------



## dave-570 (Oct 28, 2015)

Oko said:


> No you didn't! Handbook merely mentions CUPS in the section about other spooling systems
> 
> https://www.freebsd.org/doc/handbook/printing-other.html
> 
> ...


----------



## dave-570 (Oct 28, 2015)

I'm not stupid, I did follow the links in the hand book and I don't use Ubuntu I use Arch. FreeBSD might get a bigger following if the help on here wasn't so RUDE !!!!


----------



## Oko (Oct 28, 2015)

dave-570 said:


> I'm not stupid, I did follow the links in the hand book and I don't use Ubuntu I use Arch. FreeBSD might get a bigger following if the help on here wasn't so RUDE !!!!


You are responding to the seven months old post of mine. I am not sure how did you inferr from my post that I was saying or considering you "being stupid".  I did however expose fallacy of your claim that you did you homework and read the documentation before reporting the problem. We are still waiting for that  cupsd.conf and log files to help you. In the mean time you might want to be reminded that the core FreeBSD user base mostly consist of professionals and serious hobbyist who don't quite care about "bigger following" the way some Linux distros care.


----------



## shepper (Oct 28, 2015)

Arch Linux offers 2 different printing systems:  CUPS and LPRng.  HPLIP is based on CUPS.  FreeBSD provides a stripped down, no frills printing system in the base install: LPR.  You would only need to add print/ghostscript to get your HP 1510 Deskjet working.  Ghostsript is only needed because the 1510 is not capable of directly processing most print jobs.  The handbook tells how to setup LPR printing not CUPS/HPLIP.  FreeBSD also offers CUPS/HPLIP and LPRng printing systems as options.

For myself, the reason I "follow" the BSD's is that they do things differently; often with an eye towards simplicity, stability and security.  LPR is one of those simple, stable secure things that the BSD's do differently.


----------



## Oko (Oct 28, 2015)

shepper said:


> Arch Linux offers 2 different printing systems:  CUPS and LPRng.  HPLIP is based on CUPS.  FreeBSD provides a stripped down, no frills printing system in the base install: LPR.


FreeBSD provides original Line Printing Daemon (LPD) which supports the network printing protocol with the same name. LPRng is Patrick Powell's enhancement of the original LPD protocol which was in works since late 80s. It came out of Patric's and other people's frustration with inability of LPD to administer complex usage  policies. We are talking about people who were managing hundreds of printers among thousands of users. Last time I checked LPRng which is also available in FreeBSD ports it didn't support Internet Printing Protocol (IPP) which is the main enhancement introduced by CUPS. IPP is fairly useful thing enabling you to check the status of (toner, paper, duplex) of smart printers which started in late 90s.

CUPS is owned by Apple corporation now. Linux traditionally came with LPRng but soon converted to CUPS (most Linux distros). It also uses avahi-daemon, another can of warms besides CUPS, for self-discovery of printers.  

Now going to the planet Earth the first thing a novice user has to understand (if that is the goal) is relationship and difference among pooling systems (LPD, LPRng, CUPS), filters (a2ps, foomatic-filter, apsfilter, cups-filter), and printer drivers (ghostcript, hpijs/HPLIP,foo2zjs, splix, Gutenprint)  . Once the person understands that we can really talk about configuration of printers.

For the record FreeBSD handbook unless recently updated assumed that person in question has a printer which is capable of printing ASCII code which and talking natively LPD network protocol. It address PostScript printing briefly (this is what we use in reality) but assumes that the printer speaks PostScript language which is a reasonable expectation for any organization but possibly not for an individual. It never explains the role of filters and drivers.

I happen to know the person who wrote the original document twenty years ago and could even help little bit documentation project. What I can't do is make manufacturers like Brother release their Linux close source, binary blob Linux drivers for BSDs.


----------



## wblock@ (Oct 28, 2015)

Oko said:


> For the record FreeBSD handbook unless recently updated assumed that person in question has a printer which is capable of printing ASCII code which and talking natively LPD network protocol.


The Handbook printing chapter actually _was_ entirely rewritten several months ago.  It covers and explains a lot of things the old one did not, and does not do nonsensical things for no explained reason (like giving a printer a bunch of different names).  It does talk about filters, and gives a few specific examples for host-based printers.
It starts here: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/printing.html

The CUPS article is pointed out, but coverage is not included directly.  My frustration factor with CUPS is so high that I do not use it.  I just want to print things, not fight with a bunch of "easy" configuration.  LPD does that.  That said, the chapter is written so CUPS or other printing systems can be easily added.


----------



## Oko (Oct 28, 2015)

wblock@ said:


> The Handbook printing chapter actually _was_ entirely rewritten several months ago.


I just saw that you rewrote the chapter. That is a big service to the community! Thank you so much. Over the years I wrote several long howtos explaining in detail printing process. I wish I was keeping them on one place.

Actually LPD is one of those small archaic daemons which is the part of all BSDs which could use some serious face lift (code audit, pruning, and adding IPP protocol, privilege separation, security enhancements and similar). NetBSD people had that on their todo list 5-6 years ago as a Google Summer Code project but they have never found a student.


----------



## shepper (Oct 28, 2015)

Oko said:


> What I can't do is make manufacturers like Brother release their Linux close source, binary blob Linux drivers for BSDs.



I have been shopping for printers and contacted Brother support regarding the source of their binary blob.  Their web site says it is under GPL2 but the source is not available.  Their Linux support person was clueless about providing the source.

That said, there are many Brother printers that support PCL6 and I had success setting up a neighbors HL-2270DW using ghostscript pxlmono.  I generated a HL-2270DW ppd if anyone wants it.  Other Brother printers have a postscript emulation:BR-script.


----------



## Oko (Oct 28, 2015)

shepper said:


> I have been shopping for printers and contacted Brother support regarding the source of their binary blob.


Some of their entry level Laser printers use those "open source" Linux drivers. They have a hidden binary blob. Brother people are OK and I talked to their customer service in Japan once. They actually use FreeBSD internally. There is at least one if not two Japanese printer companies which use NetBSD to drive controllers in their printers.  



shepper said:


> That said, there are many Brother printers that support PCL6 and I had success setting up a neighbors HL-2270DW using ghostscript pxlmono.  I generated a HL-2270DW ppd if anyone wants it.  Other Brother printers have a postscript emulation:BR-script.


They are indeed good value. What you will find out once when you get to the range $350+ that all manufacturers sell printers which are fully PostScript, ASCII code capable and speak LPD and IPP out of box. The real difference is the total cost of the ownership (means how many pages will you get out of the toner, the price of the toner, rollers and similar). Brother as I said is a really good value.

The real problem are low end consumer devices (most consumers are uneducated enough that will even buy inkjets). Those vary greatly but there are some really good low end monochromatic laser printers with low overall cost of ownership which you can buy for around $100. However you have really to do your homework.


----------

