Każdy lubi czasami ponarzekać na Appla, TimaKuka i fanbojów z Ajfonami - For-eSami pijących kawę w Starbucksach. Polecam blog
http://applefobia.blox.pl. Jednym z ograniczeń (a może zalet?) sprzętu z Cupertino jest specyficzny kuperyński standard drukowania AirPrint, który umożliwia (utrudnia?) drukowanie wprost z iPadów czy iPhonów. Wiele nowych drukarek wi-fi za 2-3k PLN posiada już te cechę, ale można coś zaoszczędzić, na dodatek nadmierny ruch w eterze jest szkodliwy dla zdrowia.
Przede wszystkim nie każdą drukarkę da się podpiąć do rutera z OpenWrt i sprawić, aby działała jak AirPrint. Nadają się drukarki obsługujące postscript albo PCL (może inne też, warto poeksperymentować).
Nie nadają się proste drukarki GDI, wymagające tzw. filtrów.
Jak to sprawdzić? Musimy gdzieś zaopatrzyć się w specyficzny dla drukarki plik .ppd. Można go znaleźć w sterownikach dla Linuksa dostarczanych przez producenta, wiele jest na stronie
http://cups.org/ppd.php, czy innych.
Jeżeli w pliku .ppd jest wiersz w rodzaju:
*cupsFilter: "application/vnd.cups-postscript 0 rastertosamsungspl"
to nie warto się męczyć. Można próbować, jeżeli rzeczony filtr to "rastertohp" , "rastertoepson" , "rastertoescpx" , "rastertopclx" - takie filtry są dostępne dla OpenWrt.
Co należy zrobić:
Zakładamy, że mamy już zainstalowaną obsługę USB i serwer wydruku, zgodnie z instrukcjami Obsy`ego i Arteq`a.
1.
Dezaktywujemy serwer wydruku p910nd (o ile go mamy)
/etc/init.d/p910nd stop
/etc/init.d/p910nd disable
2.
Instalujemy, konfigurujemy i uruchamiamy serwer wydruku CUPS
opkg update
opkg install cups
Standardowo CUPS nie jest gotowy do pracy, musimy coś poprawić.
-Zmienić uprawnienia niektórych plików
chmod 700 /usr/lib/cups/backend/usb
chmod 700 /usr/lib/cups/backend/parallel
-Edytować /etc/cups/cupsd.conf
user i group z nobody/nogroup do root/root
dodać linię:
ServerAlias nazwa_hosta.local
Nazwę hosta znajdziesz w /etc/config/system
Teraz można uruchomić CUPS
/etc/init.d/cupsd start
/etc/init.d/cupsd enable
CUPS-em zarządzamy przez stronę:
http://numer_ip_naszego_rutera:631 albo nazwa_hosta.lan:631
Gdy tam wejdziemy (menu Administration, podmenu Manage Printers) wywalamy domyślne drukarki USB i parallel. Następnie dodajemy naszą - gdy jest włączona powinna ukazać się po wybraniu opcji Find New Printer. Klikamy w nią, wykonujemy polecenia, nie zapominamy o zaznaczeniu opcji udostępnienia w sieci, gdy pokaże się opcja "wybierz plik .ppd " używamy wcześniej omawianego naszego.
CUPS gotowy.
3.
Instalujemy, konfigurujemy i uruchamiamy avahi-daemonopkg install avahi-daemon
touch /etc/avahi/services/AirPrint.service
Edytujemy utworzony w ten sposób plik /etc/avahi/services/AirPrint.service wypełniając go następującą treścią:
<?xml version="1.0"?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Nazwa_Twojej_Drukarki</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>rp=printers/Nazwa_kolejki_CUPS</txt-record>
<txt-record>ty=Nazwa_Twojej_Drukarki</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>URF=none</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0xkod_drukarki</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/gif,image/jpeg,image/png,image/tiff,text/html,text/plain,application/vnd.cups-banner,application/vnd.cups-postscript,application/vnd.cups-raw,application/vnd.hp-hpgl,image/x-bitmap</txt-record>
</service>
</service-group>
Komentarz:
Nazwa_Twojej_Drukarki - pisz co chcesz.
Nazwa_kolejki_CUPS - znajdziesz w pliku /etc/cups/printers.conf - sekcja w ostrych nawiasach po słowie Printer lub DefaultPrinter.
kod_drukarki - znajdziesz w pliku /etc/cups/printers.conf po słowie Type
Pozostaje uruchomić avahi-daemon:
/etc/init.d/avahi-daemon start
/etc/init.d/avahi-daemon enable
Voilà, Drukarka AirPrint na OpenWrt gotowa!
PS.
Oczywiście zdaję sobie sprawę, że istnieje szybsza forma umożliwienia drukowania AirPrint - uruchomienie usługi na lokalnym komputerze - na przykład przy pomocy AirPrint Hacktivator na Makach. Podany sposób jest jednak całkowicie niezależny od komputera lokalnego, poza tym przy pomocy ruterka z allegro za 50-100 PLN można przerobić stare szafo-xero-drukarki walające się po biurach i gabinetach na fanbojniaste (a może potrzebne do pracy?) AirPrinty. Spotkało to drukarkę Color LaserJet 2840, ruter był podpięty do sieci przewodowej (bez wifi). AccesPoint tworzący część bezprzewodową sieci nie był w ogóle "ruszany".