Introduction

This is a brief tutorial to make the Brother DCP-135C printer/scanner work on Arch. While this tutorial is based on the DCP-135C specifically, it can be used as a general guide for most Brother USB printers.
On Brother's Linux Driver page you can find extra information along with drivers for different printer models.

Printer

Prerequisites

This tutorial assumes you have the following packages installed. Failure to do so may result in hard to trace issues with printing.

cups

ghostscript

gsfonts

foomatic-filters

arch x86_64 requires lib32-libcups

If you previously tried to install the printer in CUPS, remove it and any remaining driver files!!

Brother's scripts make use of the C Shell (csh) instead of the more common Bash. We must install tcsh from the "extra" repo.

# pacman -S tcsh

Your user is a member of the printer group (lp). Be sure to logout for changes to take affect.

Installing printer drivers

Installing the printer (Local USB)

The kernel module usblp must be blacklisted before installing the driver, otherwise the Device URI will be wrong and the printer won't work.

Warning: Blacklisting modules in rc.conf has been obsoleted and no longer works in initscripts 2011.06.1-1, so you'll have to use the following method.

To disable the module, create a .conf file inside /etc/modprobe.d/ as follows:

/etc/modprobe.d/blacklist.conf

# Do not load the usblp module on boot
blacklist usblp

Note: The blacklist command will blacklist a module so that it will not be loaded automatically, but may be loaded if another non-blacklisted module depends on it, or if it is loaded manually.

However, there is a workaround for this behaviour; the install command instructs modprobe to run a custom command instead of inserting the module in the kernel as normal, so you can force the module to always fail loading with:

/etc/modprobe.d/blacklist.conf

...
install usblp /bin/false
...

This will effectively "blacklist" that module and any other that depends on it.

Reboot the box to take effect, or manually remove the module without rebooting:

# modprobe -r usblp

You have to start the cups daemon (as root, of course) if it doesn't run already, otherwise the installation script won't work and throws a failure.

# rc.d start cupsd

Now lets plug in the printer and run the script to install the driver for us.

As root in terminal:

# /usr/local/Brother/Printer/dcp135c/cupswrapper/cupswrapperdcp135c

It will stop the cups daemon, and restart it.

Warning: Daemon may fail to start due to bug in csh. If "Unknown colorls variable `mh'." message is displayed, before starting daemon, execute:

unset LS_COLORS

Now go to the CUPS setup page: http://localhost:631/
Click on Manage Printers you should see your DCP135C printer automatically installed and configured. Print a test page!

If the test page fails with error "Printer not connected; will retry in 30 seconds..." then.

Click Delete Printer and remove the automatically created printer.

Click Administration --> Find New Printers

You should see your Brother printer listed here, add it!

Print a test page

NOTE: Be sure to add cupsd to the DAEMON line in rc.conf so it loads everytime at startup.

Installing the printer (Network, Ethernet)

Now lets run the script to install the driver for us.

As root in terminal:

/usr/local/Brother/Printer/dcp135c/cupswrapper/cupswrapperdcp135c

It will stop the cups daemon if it's running, and restart it.

Warning: Daemon may fail to start due to bug in csh. If "Unknown colorls variable `mh'." message is displayed, before starting daemon, execute: