You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# 🖨️ AirPrint Bridge: Seamlessly Enable AirPrint for Non-AirPrint Printers on macOS
2
-
Print Wirelessly from Your iPhone and iPad — No AirPrint Printer Required!
1
+
# 🖨️ AirPrint Bridge
3
2
4
-
## 📜 Description
5
-
6
-
AirPrint Bridge enables AirPrint functionality on macOS for printers that don't natively support it. This script allows iOS and iPadOS devices to print directly to printers that do not natively support AirPrint. The project doesn’t rely on any additional binaries that aren't built in on macOS, uses almost no resources, and is entirely automated. It naturally supports Apple’s Bonjour Sleep Proxy, so printers will continue to work when the host computer is asleep or rebooted (even pre-login).
Developing and maintaining projects of this nature requires time and dedication. If you appreciate the effort, please feel free to show your support by giving this repository a ⭐.
-**Operating System**: macOS 10.15 (Catalina) or later. (Not officially tested on macOS versions prior to 10.15, but likely compatible.)
42
-
-**Shell**: Bash.
43
-
- A trusty old **printer**
11
+
AirPrint Bridge enables AirPrint functionality on macOS for printers that don't natively support it. This script allows iOS and iPadOS devices to print directly to printers that do not natively support AirPrint. The project doesn't rely on any additional binaries that aren't built in on macOS, uses almost no resources, and is entirely automated. It naturally supports Apple's Bonjour Sleep Proxy, so printers will continue to work when the host computer is asleep or rebooted (even pre-login).
44
12
45
-
## 💾 Installation
13
+
## 🚀 Quick Start
46
14
47
15
### 1. Share Your Printers
48
16
49
17
Enable printer sharing via:
50
18
-**System Settings > General > Sharing** (macOS Ventura and newer), or
Check the box for **Printer Sharing** and select the printer(s) you’d like to share. Alternatively, visit **System Settings > Printers & Scanners**, select the printer(s), and enable “Share this printer on the network.”
54
-
55
-
### 2. Download the Script
21
+
Check the box for **Printer Sharing** and select the printer(s) you'd like to share.
56
22
57
-
Clone the repository or download the `airprint_bridge.sh` script directly:
Open **Terminal.app** and navigate to the folder where you saved the script (e.g., `cd Downloads`).
67
-
68
-
```bash
30
+
# Make the script executable
69
31
chmod +x airprint_bridge.sh
70
-
```
71
-
72
-
### 4. Test the Script
73
-
74
-
Run the script in **test mode**:
75
32
76
-
```bash
33
+
# Test the script first
77
34
sudo ./airprint_bridge.sh -t
78
-
```
79
-
80
-
What happens:
81
-
82
-
1. Detects local shared printers that lack AirPrint support.
83
-
2. Checks and fixes firewall and cups config as required
84
-
3. Generates a registration script (`airprint_bridge_launcher.sh`) to register printers via `dns-sd`.
85
-
4. Runs that registration script in the foreground so you can test printing from an iOS device.
86
-
87
-
The script will now hang while advertising your printers. If you can see and use your printer from iOS, you’re ready to install. **Use `CTRL-C`** to terminate.
88
-
89
-
### 5. Install the Service
90
35
91
-
```bash
36
+
# Install the service
92
37
sudo ./airprint_bridge.sh -i
93
38
```
94
39
95
-
- Detects local shared printers that lack AirPrint support.
96
-
- Generates (or updates) the registration script.
97
-
- Creates and loads a `launchd` plist so your printers are always advertised at startup/reboot.
98
-
99
-
### 6. Verify Installation
40
+
### 3. Start Printing
100
41
101
42
Open an app on your iOS device with printing capabilities (Safari, Mail, Photos, etc.), tap **Print**, and choose the newly advertised printer(s).
102
-
Happy Printing!
103
43
104
-
## ⚙️ Additional Options
44
+
## ✨ Key Features
105
45
106
-
### 1. Logging
46
+
-**🖨️ Enable AirPrint for Non-AirPrint Printers**: Share printers that do not natively support AirPrint with your iOS devices
47
+
-**🔍 Automatic Detection**: Automatically detects shared printers lacking AirPrint support
48
+
-**🔄 Persistent Service**: Installs as a `launchd` service to ensure AirPrint functionality is always available
49
+
-**🧪 Test Mode**: Run in test mode to verify functionality before installation
50
+
-**🗑️ Easy Uninstallation**: Clean removal of the script and associated services
51
+
-**💤 Bonjour Sleep Proxy**: Automatically registers with the sleep proxy so AirPrint services continue to work when the system is asleep
107
52
108
-
By default, **logging** is disabled, so the script outputs only to the terminal (stderr). If you would like to enable verbose logging to a file named `airprint_bridge.log` in the script’s directory, open `airprint_bridge.sh` and set:
With `LOGGING=1`, any messages output by the script will also be appended to `airprint_bridge.log`. This is helpful for debugging or auditing the script’s activity.
66
+
-**Operating System**: macOS 10.15 (Catalina) or later
67
+
-**Shell**: Bash
68
+
-**Printer**: Any printer that can be shared on macOS
115
69
116
-
### 2. Custom Script Filename (`-f`)
70
+
##💡 How It Works
117
71
118
-
The `-f` option allows you to specify a **custom filename and/or location** for the generated AirPrint registration script. By default, the script is named `airprint_bridge_launcher.sh` and is created in the current working directory (then copied to `/usr/local/bin` during installation).
72
+
1.**Printer Detection**: Identifies all shared printers on your Mac; filters out those already AirPrint-capable
73
+
2.**Capability Analysis**: Generates a suitable URF string based on each printer's capabilities (color, duplex, paper types, etc.)
74
+
3.**Bonjour Registration**: Uses `dns-sd` to advertise each printer under the `_ipp._tcp.,_universal` service type
75
+
4.**Launchd Integration**: Automatically starts and keeps the advertising service running in the background, even before user login
76
+
5.**Bonjour Sleep Proxy**: macOS's built-in Bonjour Sleep Proxy keeps these printers discoverable to iOS devices, even if the Mac is sleeping
119
77
120
-
For example, to place the launcher script in a custom path:
-**Home Users**: Enable AirPrint for older printers without buying new hardware
81
+
-**Small Offices**: Share existing network printers with iOS devices
82
+
-**Developers**: Test printing functionality on iOS apps with any printer
83
+
-**Educational Institutions**: Enable students to print from iPads to existing infrastructure
125
84
126
-
This tells `airprint_bridge.sh` to generate `/path/to/custom_launcher.sh` rather than the default `airprint_bridge_launcher.sh`. This can be useful if you need the script in a specific location or under a specific name.
85
+
## 🔧 Advanced Features
127
86
128
-
> **Note**: The `-f` option only overrides the generation of the **registration** script, not the main `airprint_bridge.sh` itself.
87
+
-**Custom Script Location**: Specify custom paths for the registration script
88
+
-**Verbose Logging**: Enable detailed logging for debugging
89
+
-**Test Mode**: Verify functionality before permanent installation
90
+
-**Clean Uninstallation**: Complete removal of all components
129
91
130
92
## 🗑️ Uninstallation
131
93
@@ -135,42 +97,38 @@ To remove AirPrint Bridge entirely:
135
97
sudo ./airprint_bridge.sh -u
136
98
```
137
99
138
-
- Unloads and removes the `launchd` plist file.
139
-
- Deletes the registration script from `/usr/local/bin`.
140
-
- Restores cups config changes if previously modified by script.
141
-
- Terminates any running `dns-sd` processes associated with AirPrint Bridge. (skips gracefully if none are found)
100
+
This will:
101
+
- Unload and remove the `launchd` plist file
102
+
- Delete the registration script from `/usr/local/bin`
103
+
- Restore CUPS configuration changes if previously modified by script
104
+
- Terminate any running `dns-sd` processes associated with AirPrint Bridge
142
105
143
-
Your system will be returned to its original state (i.e., as if AirPrint Bridge was never installed).
106
+
## 🤝 Contributing
144
107
145
-
## 💡 How It Works
108
+
We welcome contributions! Please see our [Contributing Guide](https://sapireli.github.io/AirPrint_Bridge/docs/contributing) for details.
146
109
147
-
1.**Printer Detection**: Identifies all shared printers on your Mac; filters out those already AirPrint-capable.
148
-
2.**Capability Analysis**: Generates a suitable URF string based on each printer’s capabilities (color, duplex, paper types, etc.).
149
-
3.**Bonjour Registration**: Uses `dns-sd` to advertise each printer under the `_ipp._tcp.,_universal` service type.
150
-
4.**Launchd Integration**: Automatically starts and keeps the advertising service running in the background, even before user login.
151
-
5.**Bonjour Sleep Proxy**: macOS’s built-in Bonjour Sleep Proxy keeps these printers discoverable to iOS devices, even if the Mac is sleeping.
-**Printers Not Found**: Confirm the printers are installed, powered on, and marked “Shared” on your Mac.
156
-
-**Dependencies Missing**: Ensure that `dns-sd`, `lpstat`, `lpoptions`, and `launchctl` are installed (they are typically standard on macOS).
157
-
-**Permission Issues**: Use `sudo` for installation or uninstallation.
158
-
-**Firewall Issues**: Make sure printer sharing and Bonjour services aren’t blocked in your macOS firewall.
159
-
-**No Output in Log**: If you enabled logging but see no file, ensure the script has permission to create/write the file.
160
-
-**Phantom Printer Remains**: Toggle macOS **Printer Sharing** off and back on if a printer still appears after uninstalling.
117
+
# Install documentation dependencies
118
+
npm install
119
+
120
+
# Start documentation development server
121
+
npm start
122
+
```
161
123
162
124
## 📄 License
163
125
164
-
This project is licensed under the MIT License.
126
+
This project is licensed under the MIT License - see the [License](https://sapireli.github.io/AirPrint_Bridge/docs/license) page for details.
165
127
166
128
## 🙌 Acknowledgements
167
129
168
130
- Inspired by [@PeterCrozier](https://github.com/PeterCrozier/AirPrint)
169
-
- Insights from [GeekBitZone’s AirPrint guide](https://www.geekbitzone.com/posts/2021/macos/airprint/macos-airprint/)
170
-
171
-
## 🤝 Contributing
172
-
173
-
Feedback, bug reports, and pull requests are encouraged and appreciated. Feel free to open an issue on GitHub.
131
+
- Insights from [GeekBitZone's AirPrint guide](https://www.geekbitzone.com/posts/2021/macos/airprint/macos-airprint/)
174
132
175
133
## 🌟 Give It a Star ⭐
176
134
@@ -182,42 +140,6 @@ If you find this project useful or interesting, please consider giving it a star
182
140
183
141
AirPrint, iPhone, iPad, Mac, and macOS are trademarks of Apple Inc., registered in the U.S. and other countries. Bonjour is a trademark of Apple Inc. Other trademarks and trade names may be used in this project to refer to entities claiming the marks and names of their respective products. Use of these trademarks does not imply any affiliation with or endorsement by their respective owners.
184
142
185
-
---
186
-
187
143
## 🛡️ Disclaimer
188
144
189
145
This script is provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, or non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
190
-
191
-
---
192
-
## 🔍 SEO Keywords
193
-
194
-
- Enable AirPrint for non-AirPrint printers
195
-
- Print from iPhone to shared printer
196
-
- How To Print to iPhone or iPad With or Without AirPrint
197
-
- AirPrint for older printers
198
-
- macOS AirPrint bridge
199
-
- iPad printing non-AirPrint printer
200
-
- Add AirPrint support to printer macOS
201
-
- Print wirelessly from iPhone to any printer
202
-
- Open source AirPrint solution
203
-
- Convert non-AirPrint printers to AirPrint
204
-
- iOS printing non-AirPrint
205
-
- Turn macOS into AirPrint server
206
-
- AirPrint without new hardware
207
-
- free AirPrint solution
208
-
- Enable AirPrint on legacy printers
209
-
- Turn shared printers into AirPrint devices
210
-
- iPhone printing with shared printers
211
-
- Hack to allow AirPrint print sharing on a Mac
212
-
- Airprint Activator
213
-
- Airprint Enabler
214
-
- AirPrint Hacktivator
215
-
- enable AirPrint on older printers
216
-
- make non-AirPrint printers AirPrint compatible
217
-
- print fron an iphone to a non-AirPrint compatible printer
218
-
- free alternative to Handyprint
219
-
- iOS Airprint Sharing on Mac OS
220
-
- iOS AirPrint for Mac
221
-
- enable AirPrint for any printer
222
-
- Airprint proxy
223
-
- How to turn your Mac into an AirPrint server using Airprint Bridge
0 commit comments