A few weeks ago I’ve tried setting up a print server so everyone at my home can use the printer from their PCs. What I’ve thought would be a very straightforward task ended up taking a whole day of configuring and debugging the functionality.

The main issue was most likely the usage of samba protocol for printer sharing - which requires setting up Active Directory… Which would require migrating everyone to a new platform… Which is somethething avoidable if we just use IPP printing with mDNS for service discovery.

There is also an option of using the built-in Wi-Fi functionality, which to its credit actually works quite well, until you realise that directly connecting 10+ year old printer to the network might cause some security concerns. One way of fixing this issue would be limiting the amount of computers which can access the printer, but there is also an option to use CUPS for print sharing. In that case all of the network traffic is parsed by (hopefully) well-maintained and up to date application.

Setting up print server

So, in order to setup a printer server with this printer, I downloaded the drivers for linux platform from here in deb format, which is supported by dpkg, package manager used by debian, the distribution running on my server. You have to download both the LPR driver and CUPSwrapper. CUPSwrapper is used for connecting the LPR driver to the CUPS service, which we will use to share the printer.

image of drivers to download

Installing the drivers also isn’t as straightfoward as one might think - they were written in i386 (basically x86) and not for amd64, so we will have to allow the x32 drivers with:

# dpkg --add-architecture i386

With i386 architecture added in, now we can install the LPR driver with:

# dpkg -i (LPR driver file)

The guide on the printer producer’s website adds –force-all to the command, but I’ve found that it was not necessary for my installation. After the driver, now we can install CUPSwrapper driver:

# dpkg -i (CUPSwrapper driver name)

Just in case we can check if the drivers have installed properly with:

$ dpkg -l | grep Brother

If this command displays driver entities, it went well. HOWEVER be aware that in order for CUPS printing to work properly we also need to install libcups2’s i386 version of library with:

# apt install libcups2:i386

Otherwise we will end up with detected printer, which will not receive files properly, leading to failures.

If the installation fails, one reason might be missing lpr firmware, which can be installed with:

# apt install lpr

Alright, driver is sending test print pages properly and we can see the printer’s… well, printing. Now comes the next part - sharing it through network by print server. It should be fairly straightforward now, since the steps to share it using CUPS is:

  • Enable mDNS discovery.
  • Share IPP printer through mDNS.
  • Connecting clients to the IPP printer.

All of which can be found on ArchWiki, one of the greatest sources of information about linux in general.

Conclusion

Hopefully now everything is working fine. I wish everyone working printers and no issues with networking, paper, toners and inkjets. Something which happens way too often. There is a reason why IT department’s biggest nightmare are broken printers - everything and everyone can be the issue.