NOTICE: This blog post is based on my original post from 2012 which you can find here- https://www.lynsayshepherd.com/blog/2013/01/14/wireless-printingairprint-server-via-the-raspberry-pi/.
Before going any further, update your Pi:
sudo apt-get update sudo apt-get update
Next, install the following packages required for printing. I think the avahi-discover package is still required (I installed it anyway)
sudo apt-get install avahi-discover cups cups-pdf python-cups
Grab a cup of tea whilst the packages install. You’ll need to add your username to the CUPS server so you’re able to add printers, view print queues, etc.
sudo usermod -aG lpadmin pi
Check that CUPS has installed correctly and that the service works.
sudo /etc/init.d/cups start
You’ll need to check the Avahi service works too (it finds various devices on the network which are discoverable). Again, I’m not 100% sure this is required with the more up-to-date versions of CUPS. You can try omitting it if you wish.
sudo /etc/init.d/avahi-daemon start
Next, you’ll need to edit the CUPS config file:
sudo nano /etc/cups/cupsd.conf
You’ll need to set-up the port we’re going to be listening on. Comment out the line that reads “Listen localhost:631”. Add in “Port 631”. It should look something like this:
#Listen localhost:631 Port 631
The config file will also need to be edited to control access to the server by adding “Allow @Local” in several places e.g.:
# Restrict access to the server... Order allow,deny Allow @Local
You need to include it in these areas of the config file:
# Restrict access to the server... # Restrict access to the admin pages... # Restrict access to configuration files...
Save the config file and restart the CUPS service:
sudo /etc/init.d/cups restart
Now, find the IP address of your Pi. It’ll be something like 192.168.1.x
ifconfig
Navigate to the CUPS configuration page by typing the IP address you just retrieved and the port number CUPS uses (so it’ll be an address like 192.168.1.x:631). A security exception message may pop up but that’s ok.
Click on the Admin tab and view the server settings which are towards the right-hand side of the screen. Tick the box that says “share printers connected to this system”. You’ll be asked for the username and password of the Raspberry Pi.
Plug your printer into one of the USB ports on the Pi. Click “add printer” in the CUPS web interface and it should appear under local printers. You’ll have to fill in details for the printer, such as name and location. You can enter whatever you want in here but the important part is ensuring you tick the “share this printer” box.
Following this, you’ll have to select the appropriate printer driver from a (large) list that appears. Enter print and paper settings too. You’re now ready to click on maintenance > print test page. If everything has gone to plan, the test page will print successfully.
Wireless printing should now work!
In the past, I have included a section regarding AirPrint, with details on how to set that up. AirPrint is now supported by CUPS and it should (and I emphasise “should”) work. Personally, I have tested it on both i0S 9.0.2 and iOS 6.1.6 and had no problems printing.
The section on printing with Windows has been omitted this time around too- I use OS X, iOS or, Raspbian 99% of the time. Sorry.