.~~.   .~~.
		    '. \ ' ' / .'
		     .~ .~~~..~.                       _                          _
		    : .~.'~'.~. :      ___ ___ ___ ___| |_ ___ ___ ___ _ _    ___|_|
		   ~ (   ) (   ) ~    |  _| .'|_ -| . | . | -_|  _|  _| | |  | . | |
		  ( : '~'.~.'~' : )   |_| |__,|___|  _|___|___|_| |_| |_  |  |  _|_|
		   ~ .~ (   ) ~. ~                |_|                 |___|  |_|
		    (  : '~' :  )
		     '~ .~~~. ~'
			 '~'
		

Raspberry Pi jako serwer wydruku

Jak to się mówi... Potrzeba jest matką wynalazków. W moim przypadku był to problem takiego rodzaju że na dwa komputery w biurze miałem jedną drukarkę. Dość starą drukarkę bo to HP LaserJet 1010 wydana w wrześniu 2003. Drukarka nie ma żadnych innych portów niż USB type B, i stała daleko od komputera a ja nie miałem tak długiego kabla żeby ją podłączyć. Więc wpadłem na pomysł aby podłączyć ją do Raspberry i zrobić z RPI serwer wydruku. Poniżej znajdują się czynność, które wykonywałem aby to skonfigurować.

  1. Instalacja aktualizacji oraz niezbednych pakietów.
    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt install cups
    
  2. Umożliwienie dostępu z sieci do CUPS Raspberry Pi, w normalnych warunkach CUPS nasłuchuje tylko i wyłącznie na pętli zwrotnej.
    $ sudo cupsctl --remote-admin --remote-any --share-printers
    
  3. Dodawnie uprawnień użytkownikom do zarządzania drukarkami.

    W pliku /etc/cups/cupsd.conf odszukujemy sekcję Limit CUPS-Add-Modify-Printer pierwszą napotkaną, może ich być wiele, następnie w opcji Require user po @SYSTEM dopisujemy użytkownika, w tym przypadku będzie to pi. Zapisujemy plik i restartujemy usługę.

    $ sudo systemctl restart cups
    
  4. Dodawnie drukarki w systemie CUPS

    W przeglądarce w pasku adresu, wpisujemy http://<adres_ip raspberry_pi>:631, klikamy na zakładkę Administration, następnie wybieramy opcje Add printer. Zostanie poproszeni o dane logowania, używamy danych logowania z użytkownika pi. W sekcji Local printers powinniśmy dostrzec naszą drukarkę. Jeśli tak to wybieramy ją i klikamy continue. Następnie zaznaczamy opcję Share this printer i klikamy continue. W opcji Model, wyszukujemy model podłączonej drukarki, jeśli nie możemy go znaleźć oznacza to że nie ma sterowników zainstalowanych do naszego urządzenia. Jeśli znaleźlismy naszą drukarkę możemy teraz przejść do punktu nr. 6.

  5. Instalacja sterowników drukarki w systemie Linux.

    Jeśli CUPS nie obsługuje naszej drukarki domyślnie, to pierwszą rzeczą jaką powinniśmy zrobić to odwiedzić stronę http://openprinting.org/printers. Znajdują się na niej otwarte sterowniki drukarek. Jeśli nie znaleźliśmy na niej nic odpowiedniego dla naszego urządzenia pozostaje, nam tylko strona producenta. Po zainstalowaniu sterownika, wracamy z powrotem do punktu 4. Uwaga! Drukarki HP przy wyborze sterownika HPLIP (sterownik własnościowy), należy instalować z poziomu oprogramowania sterownika. Po zainstalowaniu sterownika za pomocą polecenia:

    $ sudo apt install hplip
    

    Uruchamiamy kreator dodawania drukarek poleceniem:

    $ sudo hp-setup -i
    

    Kreator zapyta o typ połączania (usb, lan, lpt), a następnie automtycznie wykryje podłączoną drukarkę, lub poprosi o wybór urządzenia jeśli podłączyliśmy więcej niż jedno. Po tym kreator zapyta o instalację pluginu, jest on niezbędny do obsługi naszego urządzenia. Plugin zostanie pobrany ze strony HP, w trakcie możemy otrzymać błąd Unable to receive key from keyserver, nie jest to błąd krytyczny, musimy po prostu potwierdzić że chcemy pobrać wtyczkę bez weryfikacji źródła. Po zainstalowaniu wtyczki zostanie zapytanie o dodanie kolejki wydruku, opis oraz lokalizację drukarki. Na koniec zostaniemy zapytani o stronę testową. Warto to zrobić ponieważ od razu będzie wiadomo czy drukarka współpracuje z zainstalownym właśnie sterownikiem.

    Po wydrukowaniu strony testowej, drukarka powinna automatycznie pojawić się w panelu CUPS.

  6. Dodawanie drukarki w systemie Windows

    Możliwe są dwa dojścia. Zauważyłem że np. drukarka HP LaserJet 1020, nie chcę drukować po zainstalowaniu za pomocą protokołu Bonjour firmy Apple. Mimo pojawiących się rzeczy w kolejce wydruku w panelu CUPS.

    • Dojście nr. 1 - protokoł Bonjour:

      Na naszym Windowsie instalujemy program Kreator drukarek Bonjour Po uruchomieniu powinien automatycznie odszukać drukarę, widniejącą pod: <nazwa_drukarki>@<nazwa_hosta_raspberry>. Następnie wybieramy sterownik, jeśli nie znaleźliśmy naszego możemy go załadować z dysku. Na razie wybierzmy jakiś generyczny sterownik, ponieważ program lub się tu wykrzaczyć i po prostu nieoczekiwanie zamknąć. Po dodaniu drukarki, przechodzimy do jej właściwości w Panelu sterowania czy w Ustawieniach, wybieramy drukarkę klikamy na nią PPM z menu kontekstowego wybieramy opcję Właściwości drukarki następnie zakładkę Zaawansowane w sekcji Sterownik, kilkamy Nowy sterownik i dopiero tutaj ładujemy nasz sterownik. Dla pewności drukujemy stronę testową. To dojście działa między innymi dla HP LaserJet 1010 na Windows 10.

    • Dojście nr. 2 - ręczna konfiguracja IPP:

      Sposób może brzmieć skomplikowanie, jedak jest prostszy niż poprzedni... W aplecie Urządzenia i drukarki' panelu sterowania wybieramy Dodaj drukarkę następnie odnośnik Drukarki, której szukam nie ma na liście' zaznaczamy opcje Wybierz drukarkę udostępnioną według nazwy w poniższym okienku wpisujemy:

      http://<adres_ip_raspberry>:631/printers/<nazwa_drukarki_w_CUPS>
      

      Potem klikamy przycisk Dalej, system powinien się skomunikować z drukarką i wyświetlić nam okienko wyboru sterowników. Wybieramy odpowiedni dla naszego urządzenia sterownik lub ładujemy go z dysku. Po zainstalowniu, drukujemy stronę testową.

    Tutaj możemy zakończyć naszą instalację, jednak przedstawię poniżej jeszcze jeden punkt, lekko poprawiający korzystanie z CUPS.

  7. Dostrajanie CUPS. (Opcjonalnie)

    Nie będzie tu tego wiele. Ale dwie rzeczy rzucają się w oczy przy wykorzystywaniu serwera wydruku z RPI np. w firmie. Pierwsza z nich to korzystanie z nazwy FQDN zamiast z adresu IP, oraz logowanie do samego panelu administracyjnego, a nie tylko do funkcji zarządzania drukarkami.

    • Przyjazna nazwa serwera wydruku.

      W pliku konfiguracyjnym /etc/cups/cupsd.conf, edytujemy opcję Listen, ustawiając ją na *:631 następnie pod nią dopisujemy opcję ServerAlias ustawiając ją na FQDN naszego serwera wydruku. Plik zapisujemy i restartujemy usługę.

      $ sudo systemctl restart cups
      
    • Blokada nieautoryzowanego dostępu do panelu administracyjnego CUPS.

      W pliku konfiguracyjnym, odnajdujemy sekcję <Location /admin> dopisujemy wewnątrz niej opcję Require user @SYSTEM pi. Plik zapisujemy i restartujemy usługę.

To rozwiązanie działa... Do czasu. Po kilku miesiącach drukarka na każdą stronę wydruku, drukowała Stronę z napisem "Unsupported Personality: PCL". Pomogła zmiana sterownika z HPLIP na CUPS+Gutenprint, ale co ciekawe tylko na Debianie. Na innych systemach drukarka nie chciała w ogóle drukować na tym sterowniku. Po tych doświadczeniach stwierdzam że nie ma się co bawić w takie rozwiązania, lepiej kupić jakąś porządną drukarkę sieciową ze wsparciem zarówno dla systemów GNU/Linux jak MS Windows.

~xf0r3m