About technologies for your digital home

For beginners and tinkerers

DIY print server from RPi

December 9th, 2015

I have bought a Brother HL-2300D mono laser printer which has only an USB connection. Before that, I used a printer accessible through the network and I admit it was very convenient 🙂 So, I started to miss this function …

What are the options for printer server?

At least in my case, one option is to connect a printer to my D-Link 320 NAS through a USB port. The alternative firmware for D-Link NAS has a SMB service which shows connected printer as a SMB printer. However, it would not perform any print jobs spooling … The client machine will have perform that and sent to a printer. Not so good 🙁

DIY print server brother printer

Next option – RPi!

Yes, the old, good and tiny Linux box can perform different tasks in your home 🙂 You can easily make a DIY print server from RPi to perform full print server functions including spooling the documents before printing for you. The memory amount even in version 1 of RPi should not be an issue 🙂

If you are doing from scratch …

First, you have get an OS running on your RPi. If you are on Windows, you can use win32diskimager to put Rasbian on SD card. Or you could also use dd method for Linux. The process is pretty similar to putting OpenElec or other distro on SD card for RPi.

Once RPi runs OS, follow the steps

Connect using SSH to your Raspberry Pi with default username and password. In Rasbian case, default credentials are “pi” and “raspberry”.

I used an older version of Rasbian (wheezy) … because I had only 4GB SD card. The newer version (jessie) did not fit on mine 4GB card. Well, but the steps remain the same.

After connecting to RPi, first update your distro to latest version:

sudo apt-get update

sudo apt-get upgrade

It will take good while to complete both and you can grab some tea or coffee 😉

Now, you can issue the command:

sudo apt-get install cups

to install “Common Unix Printing System” on your RPi.

DIY print server from RPi for brother printer

Next step to modify a bit default configuration of CUPS

This line will let “pi” user administer the printing configuration and jobs on CUPS:

sudo usermod -a -G lpadmin pi

Here, you can change the default port and enable/disable the access restrictions by editing CUPS config file:

sudo nano /etc/cups/cupsd.conf

Inside which, you will find:

# Only listen for connections from the local machine.
#Listen localhost:631
#Listen /var/run/cups/cups.sock
Port 631

# Restrict access to the server…
<Location />
Order allow,deny
Allow all

# Restrict access to the admin pages…
<Location /admin>
Order allow,deny
Allow all

# Restrict access to configuration files…
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow all

Once you are done, restart the CUPS service:

sudo /etc/init.d/cups restart

First part of the job is done 🙂

Install the printer’s driver

Now, you can plug your your Brother printer to Raspberry Pi.

Later on, go in your browser (IP might be different in your case):

and log in with your user&password, click on Add printer button.


You should see the following screen:

DIY print server for Brother HL-L2300D printer

Just click on your printer and you will be be transferred to next page:

DIY print server for your Brother HL-L2300D

Choose your printer’s PPD file.

Last part of the installation

At least in my Brother HL-L2300D case, the file can be downloaded from Brother support website. You will need to choose hll2300dcupswrapper-3.2.0-1.i386.deb file and extract.

If you use Windows, you can use 7Zip archiver to uncompress deb file. After that, you will find the file within dir …\hll2300dcupswrapper-3.2.0-1.i386\opt\brother\Printers\HLL2300D\cupswrapper

Just click on Choose button and click on your ppd file and click on Add printer.

It will display default printer options like here.

If you go to you will see the error:

Idle - "File "/usr/lib/cups/filter/brother_lpdwrapper_HLL2300D" not available: No such file or directory

This file you will find in the same dir where you have extracted deb file.

Using Filezilla connected to RPi and copy the file brother_lpdwrapper_HLL2300D to /home/pi/

From SSH copied the file brother_lpdwrapper_HLL2300D to /usr/lib/cups/filter/:

sudo cp brother_lpdwrapper_HLL2300D /usr/lib/cups/filter/

sudo chmod +x /usr/lib/cups/filter/brother_lpdwrapper_HLL2300Dl

sudo /etc/init.d/cups restart
[ ok ] Restarting Common Unix Printing System: cupsd.

You can double check the status of the printer again, which should be ‘idle’.

If it’s still not idle, let’s check if you have done all steps above 😉

What’s left

Just to add the printer on your Windows machine

On the Windows computer, select “Add new printer” then “Connect to a printer on the Internet or network” and specify the full path of "http://{computername}:631/printers/{printername}"

In my case, the printer name is Brother_HL-L2300D_series and you will have to show where the printer drivers are located.

If you want to make a DIY print server from RPi for Macs,  here are few relevant links:
RPi as Airprint server
Raspberry Pi as CUPS Print Server for Windows and Macs

That’s it! You have just got a network printer 😉

Squeezing max printing performance from Brother HL-L2030D coming soon.