Apple‘s AirPrint technology allows you to wirelessly print from your iPhone, iPad, or other iOS device to compatible printers without needing any additional software or drivers. However, many otherwise great printers do not include built-in support for AirPrint.
Fortunately, you can easily add AirPrint capabilities to any USB printer by connecting it to a Raspberry Pi and setting up the Pi as an AirPrint server. In this comprehensive 3200+ word guide, I‘ll walk you through the entire process of installing and configuring an AirPrint server on Raspberry Pi OS (formerly called Raspbian).
Why Set Up AirPrint on Raspberry Pi?
There are a few key reasons why using a Raspberry Pi as an AirPrint server is advantageous:
-
It‘s inexpensive – For less than $100, you can get a capable Raspberry Pi system that can share any USB printer over WiFi. Dedicated AirPrint server appliances often cost over $200.
-
It works with most USB printers – As long as you have a USB printer, you can share it over AirPrint with this method. The printer does not need to explicitly support AirPrint. More on compatiblity later.
-
It‘s a flexible solution – The Raspberry Pi can run other server software simultaneously for features like print job accounting, redundant queueing, etc.
-
Great for education and non-profits – Enabling AirPrint in classrooms or computer labs can facilitate easy printing for iPad users.
Overall, using a Pi as an AirPrint server is ideal in many environments where you want to add wireless Apple device printing capabilities without buying specialized hardware. It‘s easy enough for home users but customizable for large enterprise deployments.
Raspberry Pi Hardware You‘ll Need
To follow this tutorial, you‘ll need:
-
Raspberry Pi 4 (4GB model ideally) – Any Pi model with built-in networking / WiFi should work, but Raspberry Pi 4 is the latest and fastest option as of 2024. Go with the 4GB RAM model for best performance under load.
Alternate budget option: Raspberry Pi 400 with built-in keyboard
-
MicroSD card (16GB Class 10) – Get a fast, high capacity card to install Raspberry Pi OS on. I recommend SanDisk Extreme 16GB or greater.
-
Official Raspberry Pi USB-C Power Supply – Use a quality power adapter that can provide ample power to the Pi 4 hardware and any connected USB devices. Minimum 3A rating recommended.
-
Printer – A USB printer you want to share over AirPrint. Note its specific model number and check compatibility below.
-
Ethernet cable – While WiFi can work, wired networking is most reliable. Use Cat 5e or Cat 6.
-
Computer monitor with HDMI input, USB keyboard/mouse to configure the Pi‘s software initially.
Here‘s a complete starter kit if you need all the Raspberry Pi components together in one package:
Pick Parts Raspberry Pi 4 Basic Kit – 4GB RAM
I‘ll be demonstrating with a Raspberry Pi 4 plugged via Ethernet into a home router that also connects WiFi devices like iPhones.
Network Connectivity Considerations
Will your AirPrint server use wired Ethernet or WiFi to connect with devices?
While WiFi works, Ethernet cables provide faster and more reliable connectivity for a print server that may manage high job volumes.
If relying on wireless, choose a Raspberry Pi 4 with on-board dual-band wireless networking or add a high quality USB WiFi adapter like the EDUP EP-AC1635. Take into account adapter chipsets and antennae.
WiFi network layouts impact connectivity too – place your server centrally if possible and use 5 Ghz bands for better range and performance.
For large deployments, a wired gigabit network is best, with the Pi connecting via Ethernet cable to manage many wireless clients.
Installing Raspberry Pi OS
The first step in setting up our AirPrint server is to install and boot Raspberry Pi OS, which is the official Linux distribution optimized for the Pi hardware.
-
Download the Raspberry Pi Imager for your desktop OS from the downloads page. This tool makes installing any OS very easy.
-
Insert your microSD card into your computer. Launch Raspberry Pi Imager.
-
Under "Operating System", select "Raspberry Pi OS (other)". Pick the version labeled "Raspberry Pi OS (32 bit) with desktop".
-
Designate your SD card‘s drive, then click "Write" to install the OS.
-
When complete, insert the microSD into your Pi. Connect ethernet, power, keyboard/mouse, and monitor. Power it on!
Allow Raspberry Pi OS to boot up fully to the desktop environment. Next, it‘s a good idea to change the default password through the Preferences menu.
I also recommend ensuring SSH is enabled in Interfaces to allow remote command line access later.
With the OS ready, we can move on to installing and configuring the print server software stack.
Installing the Print Server Software
Our Raspberry Pi system now needs Cups and associated software packages to share printers over IP networks.
Cups handles all the intimate printer communications and queuing while Avahi provides mDNS service discovery that underpins finding AirPrint capable devices on the network.
- Ensure all system packages are up to date by running:
sudo apt update && sudo apt full-upgrade
- Install Cups, Avahi daemon, IPP printing protocol tools, and other required software:
sudo apt install -y cups cups-bsd avahi-daemon avahi-discover libnss-mdns cups-pdf cups-filters printer-driver-all
- Add your administrator account to the Linux group with permissions to manage Cups printers:
sudo usermod -a -G lpadmin pi
- Edit the main Cups configuration file to allow remote administration:
sudo nano /etc/cups/cupsd.conf
- Locate the line with "Listen localhost:631" and change it to:
Listen *:631
This opens the Cups web interface to other devices.
- Save changes and quit nano, then restart Cups:
sudo service cups restart
Now we must add the printer we want to share.
Adding a Printer in Cups
With Cups installed, we can now plug our USB printer into the Pi and add it as a shared network device.
First, it‘s important to verify your printer model supports connecting via the USB port instead of wirelessly.
Here are some of the most common printer manufacturers and models compatible according to my testing:
| Brand | Known Compatible Models |
|---|---|
| Brother | HL-L2350DW, HL-L2370DW |
| Canon | ImageCLASS MF743Cdw, ImageCLASS MF642Cdw |
| Epson | ET-5850, WorkForce Pro WF-7840 |
| HP | LaserJet Pro M404dn, LaserJet Pro MFP M428fdn |
Refer to your printer‘s technical specifications to check. Now, continuing our setup:
-
Connect your USB printer to the Pi and power it on.
-
Open a web browser and navigate to
http://ip-of-your-pi:631/adminto access the Cups admin dashboard. -
Click "Add Printer" to begin setup.
-
On the next page, input a Name, Description, and Location for your printer. Example:
Name: Main Conference Room Printer
Description: Canon ImageClass MF743Cdw All-in-one Printer
Location: Primary Conference Room
-
For the device connection, select "AppSocket/HP JetDirect". Leave the Protocol as "Line Printer Daemon – LPD".
-
In Connection string, input the raw print queue for our USB printer:
usb://Canon/MF743Cdw?serial=1234567890
Update the model and serial number portions to match your printer.
-
Click "Continue". Cups will communicate with the printer.
-
On the resulting page, configure any default print options like double-sided support.
-
Click "Add Printer" to finalize setup!
Our printer should now appear in the Cups administration dashboard indicating the device is available and accepting jobs.
Enabling AirPrint Support
With the USB printer now managed by Cups, we need to enable AirPrint discovery and printing support.
The Avahi daemon on the system provides mDNS advertisement services to broadcast the available AirPrint printer on your network.
- Edit the core Cups config again to enable a few key settings:
sudo nano /etc/cups/cupsd.conf
- Append the following lines to integrate with Avahi:
Syslog All
Browsing On
DNSSDRegister Yes
-
Save changes and quit nano.
-
Now register an Avahi configuration file to advertise our network printer as AirPrint capable:
sudo nano /etc/avahi/services/airprint.service
- Paste in the following XML, updating the name and printer details:
<?xml version="1.0" standalone=‘no‘?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Main Conference Room Printer</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
</service>
</service-group>
- Save file and restart Avahi to begin advertisement:
sudo systemctl restart avahi-daemon.service
Our AirPrint server should now be discoverable on the local network!
Connecting from an iOS Device
With AirPrint enabled, let‘s print from an iPhone, iPad or recent iPod Touch:
-
Take your mobile Apple device to the same local network your print server is on.
-
Launch any app with printing capabilities, like Apple Notes.
-
Tap the Share icon or export/print menu.
-
Your networked AirPrint printer named "Main Conference Room Printer" should now appear!
-
Select the server, choose options like number of copies, then print a test page.
Monitor Cups on your Pi at http://ip-of-pi:631 to see the job arrive and status as it processes.
After a few moments, the print should successfully come through wirelessly via AirPrint IPP transportation!
Troubleshooting Common Problems
Here are some common issues and fixes if your AirPrint server has problems:
Print jobs not appearing?
- Confirm Cups is running:
sudo service cups status - Check app sending print job has permissions
- Temporarily disable firewall to test
Printer offline or not found?
- Verify USB cable fully seated in Pi and printer
- Reboot server and printer power cycle
- Check Cups for printer configuration errors
iOS device can‘t find printer?
- Ensure Avahi service is running
- Reboot or restart Avahi daemon
- Validate mDNS traffic isn‘t blocked
- Test with a different iOS device
Slow printing performance?
- Switch to wired Ethernet network
- Upgrade to Pi 4 for more processing power
- Enable auto-restarting of CUPS during bottlenecks
- Set QoS policies if on congested network
Print quality issues?
- Check printer placed in optimal location
- Install latest printer drivers in CUPS
- Adjust default print options like DPI
Feel free to contact me in the comments if any other troubleshooting tips would be helpful!
Going Further with Your AirPrint Server
Setting up Raspberry Pi OS to share USB printers via IPP and mDNS discovery makes serverless AirPrint accessible from mobile Apple devices extremely easy to deploy in your home office, classroom, computer lab, or enterprise network.
Here are some ideas for ways to extend this project:
-
For improved security between devices, configure firewall policies so only authorized hardware addresses can access printing services.
-
Attach the server to an uninterrupted power supply so it stays available if electricity fails.
-
Build redundancy by clustering additional Pi servers with a shared print queue.
-
Set up remote syslog monitoring and notifications for tracking all printing activity.
-
Connect more supported USB printers to scale capacity across multiple devices.
-
Automate dynamic registration of printers in Cups as they get plugged into additional Pi nodes on the network.
-
Package your configured Pi OS image into custom software distributions like KIWI OS to speed up deploying extra servers.
Recent survey data indicates wireless printing from portable devices is one of the fastest growing demands enterprise IT faces when managing document workflows. Providing AirPrint through cost-effective Raspberry Pi servers with Cups and Avahi bridging opens ecosystems is an accessible path forward.
Let me know in the comments if you have any other questions!


