IOS - iPhone, iPad - drukowanie via CUPS

W pracy mam sieciową drukarkę która obsługuje AirPrint i tu problemu nie ma, jednak w domu mam starego poczciwego HP LaserJet 2200 wpiętego w sieć, na którym też chciałbym czasem coś wydrukować z telefonu.
Jako że mam serwer Dell T20 w domu to z pomocą przychodzi nam tutaj standardowy demon wydruku CUPS.
Na początek trzeba zainstalować wszystkie potrzebne paczki:
apt-get install cups-pdf avahi-daemon python-cups cups-driver-gutenprint git apt-get install foomatic-db foomatic-db-engine foomatic-filters
Oraz w moim przypadku, gdy mam drukarkę HP
apt-get install hplip
Teraz czas na konfiguracje demona CUPS:
/etc/cups/cupsd.conf
Szukamy „Listen /var/run/cups/cups.sock” i dodajemy nasz IP serwera wydruku. Domyślnie działa to tylko na sockecie i localhoscie, dodajemy:
... Listen nasz_ip:631 PreserveJobHistory No FileDevice Yes ServerAlias * ...
Teraz dodatkowe uprawnienia, czyli sekcje Location:
<Location /> Order allow,deny </Location> <Location /admin> Order allow,deny </Location> <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny </Location>
zmieniamy (dodajemy @LOCAL):
<Location /> Order allow,deny allow @LOCAL </Location> <Location /admin> Order allow,deny allow @LOCAL </Location> <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny allow @LOCAL </Location>
Teraz do CUPS-a musimy dodac nowe typy mime, tak aby zrozumiał system IOS:
echo "image/urf urf string(0,UNIRAST)" > /usr/share/cups/mime/airprint.types echo "image/urf application/pdf 100 pdftoraster" > /usr/share/cups/mime/airprint.convs
Restart CUPS-a:
/etc/init.d/cups restart
Teraz wchodzimy przez WWW na adres http://nasz_ip:631 oraz dodajemy w systemie nasz drukarkę (login root + hasło).
Na koniec samo uruchomienie AirPrint:
/etc/init.d/avahi-daemon start cd /tmp git clone https://github.com/tjfontaine/airprint-generate.git mv airprint-generate/airprint-generate.py /usr/local cd /usr/local chmod +x airprint-generate.py ./airprint-generate.py -d /etc/avahi/services /etc/init.d/avahi-daemon restart
Sprawdzamy czy jest nasza drukarka:
ls /etc/avahi/services/
Wynik:
ls /etc/avahi/services/ AirPrint-HP_LaserJet_2200.service
Gotowe :) Drukujemy.
