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

I have a similar problem with a Brother HL-1212W printer. Silverblue is detecting the printer on the Wifi network as @jakfrost has described but print jobs are just disappearing as @courtiol describes. I have tried USB connection and the result is the same.

The brother website says to use the Driver Install Tool but the following errors come up:

[root@fedora Downloads]# bash linux-brprinter-installer-2.2.3-1
Input model name ->HL-1212W

You are going to install following packages.
hl1210wlpr-3.0.1-1.i386.rpm
hl1210wcupswrapper-3.0.1-1.i386.rpm
OK? [y/N] ->y

dnf install glibc.i686
linux-brprinter-installer-2.2.3-1: line 2235: dnf: command not found
dnf install libstdc++.i686
linux-brprinter-installer-2.2.3-1: line 2237: dnf: command not found
rpm -ihv --nodeps --replacefiles --replacepkgs hl1210wlpr-3.0.1-1.i386.rpm
error: can’t create transaction lock on /usr/share/rpm/.rpm.lock (Read-only file system)
rpm -ihv --nodeps --replacefiles --replacepkgs hl1210wcupswrapper-3.0.1-1.i386.rpm
error: can’t create transaction lock on /usr/share/rpm/.rpm.lock (Read-only file system)

###############################ls: cannot access ‘/usr/share/ppd/.ppd’: No such file or directory
ls: cannot access '/usr/share/cups/model/
.ppd’: No such file or directory

restorecon -RFv /usr/lib/cups/filter
setsebool -P cups_execmem 1

0: beh
1: cups-brf:/
2: ipps
3: socket
4: hp
5: https
6: http
7: lpd
8: ipp
9: smb
10: hpfax
11: dnssd://Brother%20HL-1210W%20series._pdl-datastream._tcp.local/?uuid=e3248000-80ce-11db-8000-7440bb87c429
12: lpd://BRW7440BB87C429/BINARY_P1
13 (I): Specify IP address.
14 (A): Auto. (dnssd://Brother%20HL-1210W%20series._pdl-datastream._tcp.local/?uuid=e3248000-80ce-11db-8000-7440bb87c429)

select the number of destination Device URI.

Hello @xprojects ,
I have my printer working right now. This is a shot of the main printer admin page (localhost:631)


If you go to printers where you have already configured your particular printer, and select address (the link) this is where you get taken. This is the default setup that Silverblue comes with, I didn’t attempt to install their driver, just their driver that comes with Fedora Linux. Their install script is dnf based for a traditional RPM centric Fedora Workstation, so it won’t work with Silverblues rpm-ostree based hybrid packaging model.
I still find that if I let Silverblue “discover” the printer first, then edit it to select the correct driver manually from the available list for Brother printers, it works every time. Silverblue, and presumably Workstation pick a generic PS printer every time instead of selecting the Brother model I have. This has been going on since F35, and I am running rawhide now and is still the case if I delete my printer and re-install. The change to the new browser based, more CUPS oriented administration bugs me but works and does expose all of the options for the printer.

Thanks @jakfrost I think I have tried what you have suggested. I selected a driver from the database and have had a play with the CUPS web interface by clicking on the address hyperlink. The webpage tells me the past print jobs that have gone to printer. Unfortunately, a gremlin is in the printer.

The automatically added printer was HL1210W and the closest on the driver database appeared to be HL1240

Yeah, I always use the BR3 drivers not the Cups+Gutenprint one, at least right now it’s the one working for me. Like I said, mine gets picked as a generic printer, not even a Brother at all. I think it is a configuration thing, if you have the BRAdmin SW for windows and can use it that may help you configure the printer. At least I seem to remember doing something similar to mine about 8 years ago.

thanks @jakfrost I do have the brother windows software for the printer. Do you mean just using the printer with windows rather than linux or is there some way to transfer settings from windows to linux?

Good Heavens no! What I am talking about is that Brother printers can be setup to communicate via the various standard protocols as well as Brother specific. I think they can also be selected with the front panel. Although, if this worked prior to the switch to the new driver setup in Linux for most peripherals, it seems strange it doesn’t for you now. I had an issue at first during the change, and wouldn’t have noticed if this happened with F33 even since I print very rarely. I did get the printer to print and I could get the printer setup in Gnome Settings but it was discovered as a Generic PS printer. Which brings me back to the setup of my printer, both of my Brother printers I had setup at first use to be LPR (I think) in their configuration screen (Dip switches on the older B&W Lazer). This is going from memory from what 10 years ago now so you should read about it a bit. What I do recall was the default setup my Brother printers came with was more suited to Windows and I had to change it to make printing effortless on Linux.