Ok, since my stepfather bough an Ipad, as did my brother, it was time for me criticising it – and improving it as well.
One thing said at the beginning: You dont need to jailbreak your Ipad, the way to get you pad printing is simple and straight forward. Unfortunately you will need a computer running some software (free).. but hey, at least you dont have to buy a new printer ,0)
Ok, so what will you need?
* CUPS – www.cups.org
* AVAHI – www.avahi.org
* (Obviously Linux)
The first is a printer server for linux, the second an open source implementation of Zeroconf.
Why that? Well, it seems that AirPrint is just a shiny name, in the end it seems just to be some Zeroconf – or at least Zeroconf compatible protocol.. anyhow, the better for us, isnt it?
Alright, lets get our stuff started. In my case i used a Debian Lenny VM on a Windows 7 Host – but i guess one could be using any Linux in Standalone or VM environment.
Please install both software via APT, Yum or whatever package manager you like, i especially recommend building them from sources, but that is you choice. Once installed navigate to localhost:631 and install the printer you want to use with your Ipad – the menues are straight forward and you shouldnt run into any problems here…
Now for the tricky part. As the Ipad (or rather the iOS) expects a certain kind of printer in the network we have to give it the impression that you CUPS enabled printer is an AirPrint machine. For that we have to create a file in “/etc/avahi/services” – the file is called “playprinter.service”. The content should be like this:
<?xml version=”1.0″ standalone=’no’?><!–*-nxml-*–>
<!DOCTYPE service-group SYSTEM “avahi-service.dtd”>
<service-group>
<name>#My Printer Name#</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtver=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>rp=printers/#My Printer Name#</txt-record>
<txt-record>ty=#My Printer Name#</txt-record>
<txt-record>adminurl=http://printers.00:631/printers/#My Printer Name#</txt-record>
<txt-record>note=#SomeNote#</txt-record>
<txt-record>priority=0</txt-record>
<txt-record>product=virtual Printer</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0×801046</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>Binary=T</txt-record>
<txt-record>Fax=F</txt-record>
<txt-record>Color=T</txt-record>
<txt-record>Duplex=T</txt-record>
<txt-record>Staple=F</txt-record>
<txt-record>Copies=T</txt-record>
<txt-record>Collate=F</txt-record>
<txt-record>Punch=F</txt-record>
<txt-record>Bind=F</txt-record>
<txt-record>Sort=F</txt-record>
<txt-record>Scan=F</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/urf</txt-record>
<txt-record>URF=W8,SRGB24,CP1,RS600</txt-record>
</service>
</service-group>
Wherever you see some #bla# you can enter your own stuff except for the parts where it says /printer/… there you have to enter the name of your Printer as it reads in your Control Panel Url!
Alright, have fun with it :0)