As I switched quite a lot of my daily work to Linux, I kept printing and scanning to the Windows. It's not that my Brother MFC-J475DW had no Linux drivers - they are available. However, since the printer is quite an old beast now, you'll notice that the official instructions call for installing i386 packages. Guess what I don't want on my system?
So, I used my new installation as an opportunity to adjust procedure a bit and do as minimal setup as possible.
When it comes to printer packages, there is some good news. While packages do identify as 32-bit, they are actually agnostic and they don't actually need i386 architecture installed. We just use dpkg
to install them:
sudo dpkg -i --force-all mfcj475dwlpr-3.0.0-1.i386.deb
sudo dpkg -i --force-all mfcj475dwcupswrapper-3.0.0-1.i386.deb
With those, your printer is installed, assuming you're happy with the default settings. You can access CUPS interface at http://localhost:631/printers and adjust it further from there. However, since I use it via a network, this will not work. I need to adjust its IP address (the easiest way to do it is by deleting and recreating the printer):
lpadmin -x MFCJ475DW
lpadmin -p Inkjet -D "Brother MFC-J475DW" -E \
-v lpd://<IP>/binary_p1 \
-P /opt/brother/Printers/mfcj475dw/cupswrapper/brother_mfcj475dw_printer_en.ppd
Here I also like to adjust default resolution to be "Best" as I only use my inkjet for photos anyhow:
lpoptions -p Inkjet -l
lpadmin -p Inkjet -o BRResolution=Best
With printer out of the way, we can follow the same principle to install the scanner driver:
sudo dpkg -i --force-all brscan4-0.4.11-1.amd64.deb
sudo brsaneconfig4 -a name=Inkjet model=MFC-J475DW ip=<IP>
And that's all there is to it.
PS: These instructions work for pretty much any Brother printer.