RESOLVED: Printing via USB Port

Bill Tillman btillman99 at yahoo.com
Sat Feb 27 18:49:49 UTC 2010



--- On Fri, 2/26/10, Robert Bonomi <bonomi at mail.r-bonomi.com> wrote:


From: Robert Bonomi <bonomi at mail.r-bonomi.com>
Subject: Re: Printing via USB Port
To: btillman99 at yahoo.com
Date: Friday, February 26, 2010, 8:29 PM


> From owner-freebsd-questions at freebsd.org  Fri Feb 26 18:20:29 2010
> Date: Fri, 26 Feb 2010 16:19:40 -0800 (PST)
> Cc: freebsd-questions at freebsd.org
> Subject: Re: Printing via USB Port
>
>
> >
> > From: Warren Block <wblock at wonkity.com>
> > Subject: Re: Printing via USB Port
> > Date: Friday, February 26, 2010, 5:38 PM
> >
> > On Fri, 26 Feb 2010, Bill Tillman wrote:
> > > 
> > > Thanks again for your valuable input. I have set up lpd printing on my old 
> > > FreeBSD server at least a dozen times and it became a simple routine to do 
> > > with apsfilter.Let me see if I can place all my cards in one place and 
> > > perhaps we can find the bug.
> >
> > I think I found it. The HL-2040 is a GDI printer, aka winprinter (aka "oh no,
> > one of those", aka "I guess I didn't really want to print that after all").
> > It won't respond to PCL, unlike the one I looked up first, the HL-2060.
> >
> > Based on http://beej.us/hl2040/:
> >
> >  % cd /usr/local/libexec
> >  % cp ps2pcl ps2hl1250
> >
> > Change the line in ps2hl1250 to:
> >
> > /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=hl1250 -sOutputFile=- -
> >                                                 ^^^^^^
> > And change the if= line in the printcap to refer to ps2hl1250.
> >
> > (And remember, buying winprinters just encourages them to make more.)
> >
> > -Warren Block * Rapid City, South Dakota USA
>
> Warren,
>
> Once again many thanks, but that is one of the first things I tried. By 
> checking ghostcript's drivers
>
> #gs -h | grep hl
>
> I found many drivers for the HL-12xx models. I have used this in my previous 
> setup with my old parallel server. I actually tried what you suggested and it
> only worked when using the parallel cable, not the USB. For some reason the 
> USB connection on this and any other FreeBSD server I connect to is DOA for
> printing. I run mouse and keyboard via USB. But these print jobs are lining 
> up in the queue and just sit there no matter how many times I reconnect the 
> printer, or reboot it or reboot the computer. And once again I'm seeing two 
> instances of lpd running when I only launched it from the command-line once,
> no entry in /etc/rc.conf.
>
> BigDell# ps -ax | grep lpd
> 1311 ?? Is 0:00.00 lpd
> 1329 ?? IE 0:00.00 lpd
>
> BigDell# lpq
> no entries
>
> BigDell# lpc status all
> lp:
>  queuing is enabled
>  printing is enabled
>  no entries in spool area
>  printer idle
>
> BigDell#
>
> This just don't make sense and I hope when we find it it's something we can
>  laugh about.
>

OK, it's time to try some _basics_.   Can you throw data _directly_ at the
printer (i.e., *NOT* through lpr/lpd), and will it print?

You can't use a simple  'echo Hello, World! >/dev/lp' to find out, because its 
a fscking 'winprinter'.

power everything down, connect the USB cable only, power up the printer first,
then the computer.

When it has come up, do you have a /dev/usb/lp0 device?

Have you created a symlink at /dev/lp that points to /dev/usb/lp0?


What happens if you do (as root) where 'testfile.ps' is a simple Postscript doc]:
    # /usr/local/libexec/ps2hl1250 < testfile.ps >/dev/usb/lp0

how about: 
    # /usr/local/libexec/ps2hl1250 < testfile.ps >/dev/lp


For that matter, what does "find /dev -name '*lp*' -ls" show?

If any of the names show as symlinks, do an 'ls -l' on the symlink target.

I'm guessing that /dev/lp is a 'character device' node, pointing to the 
parallel port; and when lpd tries tyo print to _that_ -- with only the USB
connection, --  it *doesn't*work* (for what is now an 'obvious' reason :)
 
Okay guys this is finally working. I found the answer here:
 
http://forums.freebsd.org/showthread.php?p=64508
 
This didn't come up in my other searches. This morning I put in "freebsd hl2040 usb" into my yahoo search and this came up.
 
Seems this guy got it to work by using unlpt0 not ulpt0. I had tried this before and was using the ifhp filter but that didn't work. So I did this with /etc/printcap:
 
lp|HL2040|Brother HL-2040:\
        :lp=/dev/unlpt0:\
        :af=/home/bill/hl1250.ppd:\
        :if=/usr/local/bin/foomatic-rip:\
        :lf=/var/log/lpd/hl2040.log:\
        :sh:sd=/var/spool/lpd/laser:

I got the hl1250.ppd file from openprinting.org. I edited the file like the poster said to do to be sure the gs program was pointed to by it's complete pathname. I then installed the foomatic-filter port because the foomatic-rip program was not on this machine. I also made myself a member of the deamon group like this post said, but I don't think this will actually be required. 
 
I'm in another room doing most of this by ssh to the FreeBSD box with the printer in another part of the house. I ran a postscript file through this and thought I heard the printer ejecting pages down the hall. To my surprise there were four perfectly formatted pages sitting in the output bin waiting for me.
 
I setup one of the IBM Postscript printers on one of my Windows clients and pointed it to the lpr port on the FreeBSD server. Then I sent it a test page and all is well. Now I have got this bitch working and can thow the old server and the parallel cable into the closet.
 
Thanks for everyone's help. Wish this hadn't been so cryptic, but then again this is why my friends who run Linux are always laughing their ass off at me.
 


      


More information about the freebsd-questions mailing list