apple / cups

Apple CUPS Sources
https://www.cups.org
Apache License 2.0
1.9k stars 461 forks source link

Brother HL-L2340D Network printer works with OS X CUPS but not Linux #4747

Closed michaelrsweet closed 8 years ago

michaelrsweet commented 8 years ago

Version: 2.1.2 CUPS.org User: hwinslow

I have a Brother HL-L2340D printer. I'm wanting to use it over the network. I can correctly get the IP and then use the web admin panel.

The printer shows up several times in avahi. (It supports multiple protocols.)

My roommate is using OS X and he's able to trivially find the printer and print to it, through CUPS.

I'm not able to get it to print myself.

michaelrsweet commented 8 years ago

CUPS.org User: h.blischke

I guess the "trivial" support of this printer on OS X is due to the fact that brother claims this printer supports AirPrint.

For use on Linux, you need to download both the printer's LPD filter and the printer's cupswrapper filter.

But be careful, open printing tags this (and similar printers) as "paperweight".

michaelrsweet commented 8 years ago

CUPS.org User: hwinslow

Yeah, I guessed AirPrint had something to do with it. But I'm a little fuzzy on the relationship between AirPrint and existing protocols. Wikipedia tells me that it's an extension of IPP. I'm not sure if there's some special sauce that I'll never get working on linux, or if AirPrint mostly just detects the settings automatically and the rest is IPP.

I did install both the cupswrapper filter and the LPD filter. The packages from brother install to /opt. I'm guessing that's why CUPS doesn't detect them automatically, but I'm able to browse to the .ppd file when setting up the printer.

I don't get any errors, but when I try to print, my print job (successfully) vanishes into the void.

michaelrsweet commented 8 years ago

CUPS.org User: h.blischke

Please post the '[Job xxx]' messages from the cups error_log (log level debug), where xxx is the job ID, to see what really happens.

But, what strikes me, is that the lad filter for this printer claims to convert the source stream to PCL, whereas somewhere on Brother's web site they state that this printer has (only) the GDI emulation. ????

michaelrsweet commented 8 years ago

CUPS.org User: hwinslow

Oh, I see. A filter's path is getting mangled for some reason.

D [19/Dec/2015:08:32:27 -0500] [Job 54] cp: cannot stat ‘/usr/lib/cups/filter/brother_lpdwrapper_HLL2340D/inf/brusrlibcupsfilterbrother_lpdwrapper_HLL2340Drc’: Not a directory D [19/Dec/2015:08:32:27 -0500] [Job 54] sh: /usr/lib/cups/filter/brother_lpdwrapper_HLL2340D/lpd/filter_usrlibcupsfilterbrother_lpdwrapper_HLL2340D: Not a directory

Where would CUPS get this filename? (I think the package I'm using is screwing this path up.)

michaelrsweet commented 8 years ago

CUPS.org User: hwinslow

Or maybe not, I'm not finding "usrlibcupsfilter" in the package source.

michaelrsweet commented 8 years ago

CUPS.org User: h.blischke

I installed both packages from the brother web site (the latest versions listed there) and set up a fake printer (actually a program which dumps the final stream to a file) as HL-L2340D and printed a test page.

The error_log showed no error messages (cups 1.7.2), and the final output pretended to be PCL (from the PJL statements), but printing this in raw mode to a printer which should recognize PCL printed garbage – so that stuff seems not to be HP PCL but some other thing.

There is not much more I could do (short of sending you the error_log and the dumped data).

michaelrsweet commented 8 years ago

CUPS.org User: hwinslow

Thanks. Yeah, now I'm just wrestling with filter paths.

It's missing this: /usr/lib/cups/filter/brother_lpdwrapper_HLL2340D

Which is in: /opt/brother/Printers/HLL2340D/cupswrapper

I guess I should add that to PATH? I can't seem to find how to add paths to the filter environment.

michaelrsweet commented 8 years ago

CUPS.org User: h.blischke

If correctly installed, /usr/lib/cups/filter/brother_lpdwrapper_HLL2340D should be a symbolic link to

/opt/brother/Printers/HLL2340D/cupswrapper/brother_lpdwrapper_HLL2340D

which is a Perl script that sets up all needed directory paths and calls the other scripts / programs installed there.

michaelrsweet commented 8 years ago

CUPS.org User: h.blischke

If correctly installed, /usr/lib/cups/filter/brother_lpdwrapper_HLL2340D should be a symbolic link to

/opt/brother/Printers/HLL2340D/cupswrapper/brother_lpdwrapper_HLL2340D

which is a Perl script that sets up all needed directory paths and calls the other scripts / programs installed there.

michaelrsweet commented 8 years ago

CUPS.org User: hwinslow

Oh, haha, awesome. Thanks.

Problem solved.