October 18th 2015

Wireless Printing/AirPrint Server via the Raspberry Pi [updated guide]

NOTICE: This blog post is based on my original post from 2012 which you can find here- http://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


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.


  1. Thanks, this was really easy to set up as outlined above. For anyone following this, at one point (adding printer) it asked for a password. I guessed pi, raspberry and it seemed happy with that.

    Comment by Andrew — October 27, 2015 @ 5:11 am

  2. You said:
    > Before going any further, update your Pi:
    >sudo apt-get update
    >sudo apt-get update

    Did you mean to say:
    sudo apt-get update
    sudo apt-get upgrade

    Comment by Peter Shank — December 4, 2015 @ 6:51 am

  3. If you’re using an older HP printer, you should also install the hplip package, which provides additional CUPS drivers for HP printers.

    Comment by Mike Schaffer — April 24, 2016 @ 7:45 am

  4. Just wanted to say thanks for this, Lynsay, it worked just perfectly. Solved a long-standing problem for me, these Raspberry Pis are absolutely astounding!


    Comment by Matt Gumbley — May 29, 2016 @ 12:21 pm

  5. cupsd.conf file format has changed, instructions no longer valid. Now use for format. Not obvious what to change. Request guidance. iPhone IOS10 will not print now on my RPI2 print server. Neither will a Windows machine.

    Comment by Bruce Labitt — November 5, 2016 @ 7:37 pm

RSS feed for comments on this post.

Leave a comment

Note: Comments will not appear on the website until they have been moderated.