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 🙁
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”.
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.
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/
Inside which, you will find:
# Only listen for connections from the local machine.
# Restrict access to the server…
# Restrict access to the admin pages…
# Restrict access to configuration files…
Require user @SYSTEM
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:
Just click on your printer and you will be be transferred to next page:
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
http://192.168.2.120:631/printers/ 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 😉
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
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.