Turn Any USB Printer into an AirPrint / Mopria Wi-Fi Printer
Share an old USB printer as a native AirPrint and Mopria network printer on Windows, then print from iPhone, iPad, Android, macOS and Linux with no apps.
If your printer only has a USB cable, every phone and laptop in the house treats it as invisible. The usual fixes are all bad: buy a new Wi-Fi printer, hunt down a discontinued AirPrint adapter, or dedicate a Raspberry Pi to CUPS.
There is a better option. Printman turns the Windows PC that already owns the printer into a real IPP Everywhere / AirPrint print server. Your USB printer starts appearing as Printman - <printer> in the native print dialog of every device on your Wi-Fi, and none of them need an app, a driver or a cloud account.
In this guide you will share an old USB printer and print to it from an iPhone, iPad, Android phone, Mac, Windows PC and Linux machine.
What You Need
- A Windows 10 (build 19041+) or Windows 11 PC with the printer’s normal Windows driver already installed.
- The printer connected over USB (a local network printer works too).
- A home Wi-Fi / LAN that the PC and your other devices share.
- Printman: a single standalone
printman.exe, around 60 MB, with no .NET installation required.
Download the latest Standalone ZIP from the Printman releases page, extract printman.exe to a folder such as C:\Tools\Printman, and you are ready.
Why This Works (and Most “AirPrint Adapters” Don’t)
AirPrint, Mopria and modern Linux/macOS printing are all built on the same open standards: IPP Everywhere for the job protocol and mDNS / DNS-SD (Bonjour) for discovery. A real Wi-Fi printer is simply a small computer running an IPP server and announcing itself on the network.
Printman does the exact same thing on your Windows PC:
- It listens on port 631 for IPP print jobs.
- It announces shared printers over mDNS as
_ipp._tcpwith the_universaland_printsubtypes. - It accepts the job formats phones actually send, such as PDF, JPEG, PNG, PWG Raster (
.pwg) and Apple Raster (.urf), and renders them using the same native Windows pipeline Printman already uses. - Because it speaks the standard protocol, devices need no proprietary app. Your phone thinks it is talking to a normal Wi-Fi printer, because it is.
Step 1: Share the Printer
Open Windows Terminal or PowerShell in the folder that contains printman.exe and run:
./printman.exe share
With no arguments, printman share shares the Windows default printer. You will see the printer announced together with its ipp:// URL, for example:
[NETWORK PRINTERS] Sharing 1 printer as "Printman - HP LaserJet Professional P1102"
Service: Printman - HP LaserJet Professional P1102
URL: ipp://192.168.1.50:631/ipp/print
[DISCOVERY] mDNS / Bonjour announce enabled on _ipp._tcp
Press Ctrl+C to stop sharing.
Prefer to choose exactly what is shared? Use the interactive checklist:
./printman.exe share --select
Move with ↑ / ↓, tick with Space, and confirm with Enter. Any printers you names on the command line start ticked.
Other handy forms:
# Share specific printers (partial names work)
./printman.exe share "HP Laser" "Canon"
# Share every installed printer
./printman.exe share --all
# Share the printer and also start the browser web UI
./printman.exe share --web
Shared printers are open to your local network. Native print dialogs cannot type a PIN, so anyone on your Wi-Fi can print to a shared printer, exactly like a normal Wi-Fi printer. The PIN still protects the web UI (
serve/share --web). Requests from non-private IP addresses are rejected.
Step 2: Approve the Windows Firewall Prompt
The first time you share, Windows shows a UAC / firewall prompt asking whether to allow Printman on the network. Approve it and make sure the Private network box is ticked.
If devices later cannot see the printer, Printman runs a read-only check and prints the exact netsh commands to allow inbound printing traffic. You can also re-run:
# Disable Bonjour announcements if your network blocks multicast
./printman.exe share --no-mdns
# Use a different IPP port (default is 631)
./printman.exe share --ipp-port 8631
Step 3: Print from Your Devices
Once shared, no further setup is needed on the client devices. Use the table below.
| Your device | How to print |
|---|---|
| iPhone / iPad | Open a document → Share → Print → pick Printman - <printer> (AirPrint) |
| Android | Print from any app → choose the printer (Mopria / Default Print Service) |
| Windows 10 / 11 | Settings → Bluetooth & devices → Printers & scanners → Add device |
| macOS | System Settings → Printers & Scanners → Add Printer → Default (Bonjour) |
| Linux / ChromeOS | Appears automatically as a driverless (IPP Everywhere) printer |
Because the printer is announced over mDNS, it usually shows up within a few seconds of opening the print dialog. If it does not, see the troubleshooting section below.
Step 4: Keep It Running 24/7 (Optional)
To make the shared printer always available without launching a terminal command by hand:
-
Press
Win + R, typeshell:startup, and press Enter. -
Right-click in the folder → New → Shortcut.
-
Set the target to:
"C:\Tools\Printman\printman.exe" share -
Name it
Printman Shareand save.
Every time Windows boots, the printer is announced on your network, and any phone can print to it.
The Web UI Still Exists, and Works Alongside Sharing
Sharing gives you the native print dialog. If you also want a page you can open in a browser to upload a file, check the live queue or manage stuck jobs, start the web UI too:
./printman.exe share --web
# or, equivalently:
./printman.exe serve --share "HP Laser"
Network jobs and web uploads go through the same serialized spooler pipeline, so everything shows up in one live queue and can be cancelled from the same dashboard.
Troubleshooting
The printer does not appear in the print dialog
- Make sure the phone and the PC are on the same Wi-Fi / VLAN. Guest networks and AP isolation block mDNS.
- Re-run
printman shareand check that the console prints anipp://URL for your LAN IP. - Some routers block multicast; try connecting by URL instead, or run
printman share --no-mdnsand add the printer manually using the printedipp://URL. - On Windows clients, check Settings → Bluetooth & devices → Printers & scanners and click Add device again.
“Blocked by firewall” or devices still cannot connect
- Re-approve Printman for Private networks in Windows Defender Firewall.
- Follow the
netshcommands Printman prints at startup.
Port 631 is already in use
Another print service (or an old install) may be holding port 631. Share on a different port:
./printman.exe share --ipp-port 8631
Can I still use PIN protection?
PIN protection applies to the web UI, not to native print dialogs, because phones cannot enter a PIN when printing from the system dialog. If you need access control, run the web UI with a PIN (printman serve --pin 123456) instead of sharing, or use sharing only on a network you trust.
Frequently Asked Questions
Do I need to install anything on the iPhone or Android phone?
No. That is the whole point. The printer speaks AirPrint / Mopria / IPP Everywhere natively, so the phone’s built-in print service finds it and prints to it with no app.
Does it work over the internet?
No, and that is a feature. Printman only accepts private / LAN addresses. Nothing about your documents or your printer ever leaves your local network.
Which file formats can a phone send?
iPhone and iPad typically send PDF or Apple Raster (.urf); Android usually sends PDF, JPEG, PNG or PWG Raster (.pwg). Printman handles all of these natively.
Can I share more than one printer?
Yes. Pass several names, use the --select checklist, or share everything with --all. Each printer appears separately in the print dialog as Printman - <printer>.
What if the printer jams or a job gets stuck?
Run printman queue to watch the live spooler, printman cancel <id> to drop a single job, or printman purge "HP Laser" to clear the whole queue. The web UI exposes the same controls as buttons.
Turning a reliable USB printer into a real Wi-Fi printer is now a one-command change. If it saves you from buying a throwaway plastic printer, consider buying me a coffee.
Written by EslaMx7
Printman is an open-source tool built to keep resilient USB printers out of landfills.
Related guides
All guides →Mopria Print Service: Print from Android to a USB Printer
Android prints through Mopria or the Default Print Service. Share the USB printer from Windows and Android finds it, so you can print from any app.
TutorialHow to Print from a Chromebook to a USB Printer (Windows Share)
Chromebooks have no USB printer drivers. Share the printer from Windows over IPP Everywhere and your Chromebook finds it automatically, with nothing to install.
TutorialPrint from a Mac to a USB Printer over Wi-Fi (Bonjour)
macOS can print to a Windows-shared USB printer through Bonjour and IPP Everywhere. Share it once with Printman and add it from Printers & Scanners.