IOS - iPhone, iPad - drukowanie via CUPS

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.

print