AirPrint op je oude printer

Een paar weken nadat ik mijn printer kocht, een hp photosmart premium, kondigde apple i.s.m. hp airprint aan. Printen vanaf je ipad/iphone. Omdat mijn printer net uit was, ging ik ervan uit dat deze er ook wel mee zou gaan werken. Zeker omdat het aangekondigde airprint model betreft uiterlijk 100% overeenkwam. Helaas.. niets bleek minder waar.

Hp is zo cheap geweest om de firmware van de printer niet upgradable te maken (note to self: lekke webinterface dichtzetten).

Al snel kwamen er ‘oplossingen’ om m.b.v cups en de avahi-deamon (open source bonjour, welke je apparatuur adverteert) airprint te simuleren en de printjobs door te sturen naar de betreffende printer. Helaas werkte dit voor geen ene meter..

Na een aantal jaar besloot ik nog eens een poging te wagen. Om niet opnieuw het wiel uit te vinden ben ik eens gaan googlen. Al snel kwam ik op dit artikel:

http://www.ezunix.org/index.php?title=Enable_iOS_AirPrint_with_any_printer_supported_by_CUPS

Een test in een Virtuele machine gaf een positief resultaat en nu heb ik dus een airprint service draaien op mijn thuis servertje. Ik zal hieronder beschrijven wat je allemaal moet doen. Ik ga hier uit van een debian achtige distro (ik gebruik op het moment van schrijven ubuntu 12.04.

Eerst installeren we een aantal pakketten. Misschien heb je ze al, zo niet, dan toch.
De belangrijkste hier zijn cups (unix print service) en de avahi-deamon (bonjour, zodat ios het apparaat kan viden).

apt-get install cups-pdf avahi-daemon python-cups cups-driver-gutenprint
apt-get install foomatic-db foomatic-db-engine foomatic-filters

Mocht je een hp printer hebben is het handig te checken of deze libs ook mee zijn gekomen:

apt-get install hplip

Nu gaan we de cups deamon config aanpassen:

vi /etc/cups/cupsd.conf

Na de regel “Listen /var/run/cups/cups.sock”
Plak je het volgende:

Listen ip-van-je-server:631
PreserveJobHistory No
FileDevice Yes
ServerAlias *

Vervang verder de volgende passages:

# Restrict access to the server...
<Location />
  Order allow,deny
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

Door:

# Restrict access to the server...
<Location />
  Order allow,deny
  allow @LOCAL
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  allow @LOCAL
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  allow @LOCAL
</Location>

Verder moeten er nog een 2tal mime files komen:

echo "image/urf urf string(0,UNIRAST<00>)" > /usr/share/cups/mime/airprint.types
echo "image/urf application/pdf 100 pdftoraster" > /usr/share/cups/mime/airprint.convs

Herstart nu de cups daemon
/etc/init.d/cups restart

Je kan nu met je webbrowser naar de interface van cups:

http://ip-van-je-server:631/admin/

Je zal moeten inloggen. Mijn local unix account werkte prima.

Tijd om de printer aan te zetten/verbinden. Dit kan een usb of netwerkprinter zijn.

Via ‘new printer’ kan je je printer toevoegen. Wat er nu volgt is afhankelijk van je type printer. Mijn netwerkprinter werd direct gevonden en als optie weergeven. Zodra je klaar bent met toevoegen kan je een testpagina afdrukken. Ook is het een goed idee de default settings aan te passen waaronder de papiersoort (die gekke Amerikanen gebruiken geen a4, maar letter) en de afdruk methode (grijswaarden/kleuren).

Enige wat rest is de avahi-deamon te configureren zodat de printer geadverteerd word in het lokale netwerk. Een beste meneer “Timothy J Fontaine” heeft hiervoor een script gemaakt:

etc/init.d/avahi-daemon start
mkdir /opt/airprint
cd /opt/airprint
wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
chmod +x airprint-generate.py
./airprint-generate.py -d /etc/avahi/services
/etc/init.d/avahi-daemon restart
ls /etc/avahi/services/

Als het goed is is de printer nu zichtbaar in IOS.

Het is misschien ook een goed idee om de webinterface achter apache te plaatsen in reverse proxy icm een htpasswd. Omdat je het path niet kan wijzigen, is het handig hier een subdomein voor te gebruiken.

 

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

2-factor authenticatie

De de-facto standaard om via ssh in te kunnen loggen op een linux server is vooralsnog username/wachtwoord. Mocht iemand deze 2 gegevens bemachtigen heb je een simpel te raden wachtwoord.
Om dit te voorkomen kan je een extra factor aan de vergelijking toevoegen. We spreken dan van 2 factor authenticatie....

download machine

Voor de basis installatie van een downloadmachine gebruik ik ubuntu server 64bits, op het moment van schrijven 12.04.....

Retrobright

Een oude spelcomputer en de kleur is niet meer wat hij geweest is (lees: geel ipv grijs)? Waarschijnlijk kun je met wat huis-tuin-en-keuken middelen een eind komen in het schoonmaken. Met spullen die in drogist en supermarkt te koop zijn kan een goede reinigingspasta worden gemaakt....