Printman Icon
Printman
Tutorial•8 min read•

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.

#Network Printer Sharing#AirPrint#Mopria#IPP Everywhere#Windows 11#DIY Print Server

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._tcp with the _universal and _print subtypes.
  • 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:

  1. Press Win + R, type shell:startup, and press Enter.

  2. Right-click in the folder → New → Shortcut.

  3. Set the target to:

    "C:\Tools\Printman\printman.exe" share
  4. Name it Printman Share and 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 share and check that the console prints an ipp:// URL for your LAN IP.
  • Some routers block multicast; try connecting by URL instead, or run printman share --no-mdns and add the printer manually using the printed ipp:// 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 netsh commands 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.

Buy Me a Coffee

Related guides

All guides →