Brother MFC-L3770CDW printer not working in F40 (confirmed fine in Ubuntu)

Hello Fedora experts,

I can’t get my printer, a Brother MFC-L3770CDW to work in Fedora. When I install the drivers and create a network printer all seems good, but actually trying to print a test page does nothing. There is no error: just a short pause showing the job queued, then a notification that the job completed successfully.

Does anyone have a relatively recent Brother model (or ideally this same one) working?

What can I do to debug this situation?

Currently, I’ve created to fresh virtual machines (one Ubuntu 24.04 LTS and one Fedora 40) and ran the installer in the fresh VM for both. Ubuntu seems to work fine (I can print) but Fedora 40 behaves as above.

I am happy to provide ANY information required to resolve this. I just don’t know what to look at since there’s no actual error reported…

EDIT 1: I just added the printer in an EndeavourOS virtual machine and it works fine there as well…

EDIT 2: This is what I see in the journal when printing

Jul 03 20:16:08 fedora cupsd[912]: REQUEST localhost - - "POST /printers/Brother-MFC-L3770CDW HTTP/1.1" 200 371 Create-Job successful-ok
Jul 03 20:16:08 fedora cupsd[912]: REQUEST localhost - - "POST /printers/Brother-MFC-L3770CDW HTTP/1.1" 200 513 Send-Document successful-ok
Jul 03 20:16:08 fedora kernel: process 'root/usr/bin/brprintconf_mfcl3770cdw' started with executable stack
Jul 03 20:16:11 fedora cupsd[912]: REQUEST localhost - - "POST / HTTP/1.1" 200 157 Cancel-Subscription successful-ok
Jul 03 20:16:12 fedora cupsd[912]: Brother-MFC-L3770CDW localuser 1 [03/Jul/2024:20:16:12 +0100] total 0 - localhost Test Page - -
Jul 03 20:16:16 fedora systemd[1]: dbus-:1.3-org.opensuse.CupsPkHelper.Mechanism@1.service: Deactivated successfully.
Jul 03 20:16:16 fedora audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=dbus-:1.3-org.opensuse.CupsPkHelper.Mechanism@1 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
1 Like

I wonder if this is some issue with SELinux? This is what the installer log produces while running:

semanage fcontext -a -t bin_t /opt/brother
restorecon -R /opt/brother
semanage fcontext -a -t cupsd_rw_etc_t /opt/brother/Printers/(.*/)?inf(/.*)?
restorecon -R /opt/brother/Printers
semanage fcontext -a -t bin_t /opt/brother/Printers/(.*/)?lpd(/.*)?
restorecon -R /opt/brother/Printers
semanage fcontext -a -t bin_t /opt/brother/Printers/(.*/)?cupswrapper(/.*)?
restorecon -R /opt/brother/Printers
restorecon -RFv /usr/lib/cups/filter
Relabeled /usr/lib/cups/filter/brother_lpdwrapper_mfcl3770cdw from unconfined_u:object_r:bin_t:s0 to system_u:object_r:bin_t:s0
setsebool -P cups_execmem 1

Does this configuration seem sane? I have very little knowledge of SELinux. I am simply making an assumption. Is there something I can do to check if there is any SELinux “denied” event? I couldnt’ find anything in journalctl

I would forget abot the brother drivers and set up the printer as “cups driverless”. In the printer you should enable the protocols “Airprint” and “IPP”. If you search for “cups driverless” in Google or similar you can find further information, for example https://wiki.debian.org/CUPSDriverlessPrinting.

Thank you @vekruse - I just managed to print a test page following those instructions. Only thing I would point out, is that rather than using the “._ipp._tcp.local” name, I used the actual printer IP address. This is because I have two subnets in my home, so I assume I would only be able to print from the other subnet

❯ driverless
ipp://Brother%20MFC-L3770CDW%20series._ipp._tcp.local/

# NOTE: replaced with actual printer IP address as
# I need to be able to print from a different subnet as well

❯ lpadmin -p Brother-MFC-L3770CDW -v ipp://192.168.4.5/ -E -m everywhere

❯ lpadmin -p Brother-MFC-L3770CDW -v ipp://192.168.4.5/ -E -m driverless:ipp://192.168.4.5/

Yes, my Brother, an MFC-L3780CDW, prints and scans without issue, using airscan and the everywhere driver. On a minimal install

sudo dnf install avahi sane-backends cups cups-filters
sudo systemctl start avahi-daemon cups 
sudo lpadmin -p BrotherMFC -E -v ipp://192.168.1.50/ipp/print -m everywhere
sudo lpadmin -d BrotherMFC

If you don’t install the full workstation, you might need the additional packages.
I have a page on it, that covers a few distributions and some BSDs at
https://srobb.net/cliscanprint.html

And to add for those who just will be printing pdfs, you can do it with netcat.
With a networked printer at 192.168.1.50, it would be

netcat 192.168.1.50 9100 < myfile.pdf

though of course, lpadmin gives you a lot more flexibililty.

1 Like

Wow I did not know this fixes the scanner as well! Can confirm:

~> scanimage -L
device `v4l:/dev/video3' is a Noname Integrated Camera: Integrated I virtual device
device `v4l:/dev/video1' is a Noname Integrated Camera: Integrated C virtual device
device `airscan:e0:Brother MFC-L3770CDW series' is a eSCL Brother MFC-L3770CDW series ip=192.168.4.5

Thanks for pointing this out. I was able to scan as well. Here I was thinking “I need to deal with the scanning part as well over the weekend”…

My only gripe is that this should all work out-of-the-box. Why should one have to run lpadmin manually to add devices that support IPP?

Anyway, thank you again @scottro and @vekruse for helping me resolve this fully.

I’m glad it helped. The forum gave an annoying message when I began to reply, to the effect that the topic is solved so don’t reply needlessly, blah blah. As for why it’s not automatic, I’m not sure–with Ubuntu the printer does automagically appear in cups without any configuration, and I just put it down to my having done a minimal install, but from your post, we know that it happens anyway.

For me personally, I prefer that it doesn’t attach automatically–suppose it were an office where this printer wasn’t supposed to be used by some people, or other situations where automatic config would be a bad thing.
Either way, it’s a fairly easy fix, and glad you got it (and scanning) working. Thanks for coming back and letting us know.

I do have an issue still: there are two subnets in my home network. When I am on the same subnet as the scanner (192.168.4.0/24), all works well. However, when I am on the other subnet (192.168.5.0/24), the scanner is not detected and I cannot use it:

> scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

I can however still print, as the print queue is explicitly added with the specific IP address.

Is there a way manually define an eSCL/WSD scanner, the same way I did with lpadmin for the print queue? I would like for machines on the second subnet to be able to scan.

It could if cups-browsed.service was enabled and if the printer has registered itself with avahi. Some programs like Firefox or Libreoffice may even use the printer without configuring it. All that as long as the printer implents AirPrint or Mopria. The Open Printing and Printer Working Group are working on making printing just as easy as connecting a USB memory stick – it just works.

1 Like

So, to answer this question, I was able to run a utility with my laptop on the same subnet as the printer to discover the required configuration:

root@host # airscan-discover 
[devices]
  Brother MFC-L3770CDW series = http://192.168.4.5:80/eSCL/, eSCL
  Brother MFC-L3770CDW series = http://192.168.4.5:80/WebServices/ScannerService, WSD

On computers in the other subnet that are unable to discover the devices, I copy-pasted the configuration into the /etc/sane.d/airscan.conf at the very end of the file:

> tail -n 4 /etc/sane.d/airscan.conf
[devices]
  Brother MFC-L3770CDW series = http://192.168.9.51:80/eSCL/, eSCL
  Brother MFC-L3770CDW series = http://192.168.9.51:80/WebServices/ScannerService, WSD

Now I can both print and scan from computers in the other subnet as well!