Installing printer: where to put the CUPS filters?

Hi all,

I am trying to install a Brother printer (DCP-L2520DW).

I had no success using the RPMs prepared by Brother, but in their CUPS RPM variant (Printer Drivers | Downloads | DCP-L2520DW | United States | Brother), the PPD file is present. So I could easily add the PPD while adding the new printer.

However this is not sufficient since the CUPS filters are not found:

[XXX@fedora Downloads]$ lpstat -p
printer Brother is idle.  enabled since Mon 28 Jun 2021 03:48:29 PM CEST
        File "/usr/lib/cups/filter/brother_lpdwrapper_DCPL2520DW" not available: No such file or directory

The file containing the filters is also present in the RPM, but I cannot cp it into “/usr/lib/cups/filter”.

Is there a way to make CUPS look for these filters elsewhere? If not, what shall I do?

I did look at other related posts but they pointed to an non-brother RPM and the link is now broken.

Many thanks.

Okay, I’m a bit confused. I have two Brother printers connected to my Fedora Linux Silverblue box, and did not have to install any proprietary Brother driver.

Maybe I’m misunderstanding…but why can’t you just layer / install the rpm manually via rpm-ostree?

Hi and thanks for having a look.

It is true that Silverblue comes with some Brother drivers out of the box, but no model listed in there seems close to the printer I have.

I did try to install the CUPS driver first using rpm-ostree:

X@fedora Downloads]$ rpm-ostree install dcpl2520dwcupswrapper-3.2.0-1.i386.rpm
<snip>
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
 Problem: conflicting requests
  - nothing provides dcpl2520dwlpr needed by dcpl2520dwcupswrapper-3.2.0-1.i386

Based on the error message, I have now tried to first install the LPR driver:

rpm-ostree install dcpl2520dwlpr-3.2.0-1.i386.rpm

That LPR install did work (it added tons of PERL packages with it, but I guess it needs it).

I rebooted and tried to installed the CUPS driver again and it did work.

Then, after another reboot, I tried to pin my printer:

[X@fedora ~]$ /usr/lib/cups/backend/snmp X.X.X.X
network lpd://BRW38B1DB3BD300/BINARY_P1 "Brother DCP-L2520DW series" "Brother DCP-L2520DW series" "MFG:Brother;CMD:PJL,HBP,URF;MDL:DCP-L2520DW series;CLS:PRINTER;CID:Brother Laser Type1;URF:W8,CP1,IS4-1,MT1-3-4-5-8,OB10,PQ4,RS300-600,V1.3,DM1;" ""

So far, so good.

But then adding the printer as follows seem to work but prints nothing:

The journal says:

[X@fedora ~]$ journalctl -xe

Jun 30 16:37:41 fedora cupsd[2270]: REQUEST localhost - alex "POST /jobs/ HTTP/1.1" 200 179 Restart-Job successful-ok
Jun 30 16:37:41 fedora cupsd[2270]: Manual_URI alex 19 [30/Jun/2021:16:37:41 +0200] total 0 - localhost Print Self-Test Page - -

And the print queue confirms that all is successful but that all contains 0 pages:

What am I doing wrong??

So I have two brother printers, but they are connected via USB now. I will set them up on the network and see if they install correctly there. I use the Brother HL-5250DN and HL-3075CW, and both get automatically recognized when plugged in and work right OOTB. This is a screenshot of Setings/Printers after the CW was automatically recognized then added I could alter driver settings there, without directly using rpm-ostree.


You can clearly see the options include installing/searching for another driver or using a PPD file.

1 Like

I tried with USB and the printer gets detected but it still does not print.
For fun, I tried using other drivers (e.g. Generic PCL Laser Printer) and interestingly for some it does print a blank page, which means that there is some communication going on.
So I guess the issue lies in the particular driver I am trying to use :frowning:

On Arch (working) this is what they say about that particular driver:

I wonder if the lib32 thingy and that the driver is .i386 suggest a way to move forward for a standard 64 bits x86 architecture…?

1 Like

Well there is the ability to install the i686 version of any library with the obvious caveats of potentially introducing conflicts. The source RPM’s noted in your screenshot are i386 rpms, so it appears they are 32 bit. Does Brother have 64 bit versions available? I’d be surprised if they don’t.

I have a Brother printer, and the only Linux drivers for it are 32-bit. So, I print only from my iPhone or iPad.

1 Like

I print from both of my Brother printers connected to my 64 Bit Silverblue setup. I think that it may be some dependency issue at play here. I know for a fact that I don’t have to install anything else beyond whatever Fedora Linux Silverblue announces it is installing as a driver when I connect the printers first time. Then I print. I cannot imagine it being any easier than that.

Thanks @jakfrost, unfortunately like @blueshurricane4 for the printer/scanner I have Brother only provides 32 bits drivers.
Has anyone else experience in these matters?
Isn’t there way to make this work?

1 Like

If you can submit print jobs and nothing comes out it may be an SELinux thing. The Brother proprietary drivers seem to use the cups_execmem boolean, which is disabled by default in Silverblue.

To set the boolean use:
sudo setsebool -P cups_execmem 1

Confirm it’s set:
sudo getsebool cups_execmem
should show cups_execmem is on.

Probably then a good time to restart CUPS before trying to print:
systemctl restart cups.service

Not sure if it is because I am using Kinoite or not but without messing with it, cups_execmem was already on for me.

So that does not solve the issue but thanks @joefidler for the insight!

1 Like