Once a year or so I actually write something about computers… ;)
After I upgraded my iPhone to iOS4, I noticed that it finally had the ability to print stuff… ooh! ahh! What does it take to do so? Why… buy a new printer of course! (If you really want to, there are Airprint Printers on Amazon)
A little googling around revealed that someone figured out a better solution, at least if you run a printserver with cups. Ryan Finnie’s blog has a great writeup on what it takes – just a printserver with a pdf filter, and an mDNS advertisement of the queue, with a little special sauce added. tjfontaine’s blog took it a step further, and wrote a python script to grab the stock queue advertised from cups, and generate the Avahi service file to advertise it as AirPrint. Sweet!
And now the obligatory enviro-rant…
It’s pretty crummy, IMHO, that Apple encourages purchase of new printers just for this capability. I’ve never liked how disposable so many printers seem to be, and this just promotes that disposal:
AirPrint only works with a network connection to an AirPrint-capable printer. A printer connected to the USB port of your Mac, PC, AirPort Base Station, or Time Capsule is not supported.
c’mon guys, step up. You seem to like to flaunt your enviro-cred, so write a little code, send out a low-carbon-footprint firmware update, and make AirPrint possible on existing setups! Reduce and re-use!
The developer releases of OS/X had support for exposing CUPS queues as AirPrint queues. Apple pulled that support. As near as anyone can tell there was no technical reason for that. So speculation is rampant that the removal was patent-related.
Also note that you might have to add “ServerAlias *” to cupsd.conf to make cups permit referring to itself using other hostnames, such as yourhostname.local.