środa, 4 kwietnia 2018

Drukujemy z Linuksa (i innych systemów) na drukarce Windows

Jeśli mówimy o udostępnianiu drukarki obsługiwanej przez system Windows dla Linuksa lub udostępnianiu drukarki linuksowej dla stacji roboczych Windows, to najczęściej mamy na myśli wykorzystanie protokołu SMB oraz, w przypadku Linuksa – pakietu samba.

Chciałbym tu zaproponować zupełnie inne rozwiązanie, oparte o usługi LPD/LPR, które zostały zaimplementowane w każdej wersji Windows (w Windows 10 Microsoft miał to usunąć, na szczęście dotychczas tego nie zrobił), chociaż nie są instalowane i uruchamiane domyślnie.

Rozwiązanie takie wydaje mi się prostsze, a już na pewno jest o wiele bardziej uniwersalne. Można na przykład drukować z Linuksa na windowsowej drukarce GDI, do której albo w ogóle nie ma sterowników w systemie druku cups, albo istniejący sterownik jest kiepskiej jakości, co się zdarza, gdy społeczność próbuje odtworzyć działanie drukarki, do której producent nie udostępnił specyfikacji. Warunkiem dokonania takiej sztuki jest jednak, aby w systemie Windows dało się skonfigurować wirtualną drukarkę postscriptową, a nie próbowałem tego robić w systemach nowszych niż XP (i nie wiem, czy się w ogóle da).

No dobrze: starczy już tego wstępu, pora brać się do roboty.

1. Konfigurujemy i udostępniamy wirtualną drukarkę PostSript jak opisano tutaj. Jeśli brak sterownika w systemie Linux nie jest problemem, to możemy pominąć całą zabawę z GhostScriptem i udostępnić od razu odpowiednią drukarkę fizyczną.

2. Teraz musimy zainstalować i uruchomić usługi drukowania dla systemów Unix/Linux. W systemie Windows XP robi się to w ten sposób, że uruchamiamy Panel Sterowania, wybieramy ikonę „Dodaj lub usuń programy”, klikamy przycisk „Dodaj/Usuń składniki systemu Windows” i instalujemy „Inne usługi plików i drukowania w sieci” (potrzebna płyta lub katalog instalacyjny).


Wracamy do głównego okna Panelu sterowania, wybieramy ikonę „Usługi”, znajdujemy usługę „Serwer wydruku TCP/IP” i we właściwościach (prawy klawisz myszy -> „Właściwości”) przestawiamy tryb uruchamiania na automatyczny.


Ciekawostka: Drukarka udostępniana poprzez „Serwer wydruku TCP/IP” wcale nie musi być jednocześnie udostępniana w sieci Windows. Można więc po zainstalowaniu usług drukowania powrócić do okna dialogowego udostępniania drukarki (patrz wpis podlinkowany w punkcie 1) i wyłączyć udostępnianie. Ważne, żeby zachowała się „Nazwa udziału” nadana podczas udostępniania – będzie to nazwa kolejki wydruku LPD.


3. Pora przejść do Linuksa. Na potrzeby prezentacji wybrałem dystrybucję Lubuntu 16.04 LTS, bo ma stosunkowo niskie wymagania sprzętowe (to jest w końcu blog dla dinozaurów), a z systemów rodziny Ubuntu korzysta stosunkowo duża liczba użytkowników. No a dlaczego nie Puppy? Testowany przeze mnie w 2015 roku Puppy Precise Retro zdezaktualizował się znacznie bardziej niż Windows XP (chociaż jest od niego o wiele młodszy), zaś jego następca, Tahrpup, to już nie jest dystrybucja dla słabego sprzętu. Moim zdaniem Puppy utracił w ten sposób sens swojego istnienia.

    Ale do rzeczy: uruchamiamy Lubuntu, otwieramy menu (można w tym przypadku mówić o menu „Start”, czy też jakiś linuksiarz się obrazi?), „Narzędzia systemowe”, „Drukarki” i …


Upsss! Czy to nie jest irytujące, że w systemie operacyjnym domyślnie drukarki nie działają?

No dobrze, zainstalujmy tego cups-a (potrzebne połączenie z internetem):
sudo apt install cups

Teraz można już dodać drukarkę. Klikamy przycisk „Dodaj”, rozwijamy „Drukarka sieciowa” i zaznaczamy „Komputer lub drukarka LPD/LPR”.


Wpisujemy adres IP komputera obsługującego drukarkę, a jako nazwę kolejki – nazwę nadaną w systemie Windows podczas udostępniania.

Jako sterownik drukarki wybierzmy Generic Postscript Printer Foomatic/Postscript.


Pozostaje tylko nadanie nazwy i stosownego opisu...


i mamy skonfigurowaną drukarkę.


Możemy teraz wydrukować stronę testową. Jeśli wszystko wykonaliśmy poprawnie, wynik powinien być taki, jak poniżej.


Ktoś jeszcze nie wierzy, że to działa? No to niech sam sprawdzi.

4. Jeśli już mamy w sieci skonfigurowaną drukarkę LPR, to możemy na niej drukować nie tylko z poziomu Linuksa czy innych systemów uniksopodobnych, ale także na przykład… z Windows 10. W ten sposób możemy drukować na drukarce podłączonej do komputera z Windows XP (a nawet z Windows 98, bo i tam da się udostępnić drukarkę w ten sposób), co „windowsowymi” mechanizmami okazuje się trudne do osiągnięcia (bo Microsoft pozmieniał te mechanizmy).

Konfiguracja drukarki w systemie Windows 10 (podobnie jest w 7 i 8) przebiega następująco. Otwieramy Panel Sterowania…

Dygresja: Jeśli ktoś nie może znaleźć panela sterowania, to niech sobie wyszuka przy pomocy wyszukiwarki. Mnie osobiście wkurza to, że Microsoft w każdej kolejnej kompilacji systemu zmienia położenie różnych ustawień w interfejsie. Nie mam czasu ani ochoty, żeby za tym nadążać.

klikamy ikonę „Urządzenia i drukarki”, następnie link „Dodaj drukarkę”. W tym momencie włącza się irytująca funkcja Windows 10 wyszukująca dostępne drukarki sieciowe. Jeśli mamy małą sieć domową, nie stanowi to problemu, jednak w przypadku dużej sieci lepiej szybko kliknąć „Drukarki, której szukam, nie ma na liście” (naszej drukarki i tak nie znajdzie).

Następnie wybieramy opcję „Dodaj drukarkę lokalną lub sieciową z ustawieniami ręcznymi”. To nam zapewni maksymalną kontrolę i nie będziemy potem godzinami zastanawiać się „co nam tu Windows ustawił, że nie działa”.


Tworzymy nowy port drukarki i wybieramy typ „Standard TCP/IP port”.


Wpisujemy adres IP komputera obsługującego drukarkę i nie zaznaczamy opcji „Sprawdź drukarkę i automatycznie wybierz sterownik do użycia”.


W następnym oknie zaznaczamy „LPR”, wpisujemy nazwę kolejki (nazwa nadana drukarce podczas udostępniania pod Windows XP) i koniecznie zaznaczamy opcję „Włączone zliczanie bajtów LPR”. Bez tego nie będzie działać.


Pora wybrać sterownik drukarki. Zaznaczamy jakiś sterownik postscriptowy dostępny w systemie. U mnie dobrym wyborem okazał się „HP Color LaserJet CP4005 PS Class Driver”.


Jeszcze jakaś sensowna nazwa drukarki i gotowe!


Teraz możemy wydrukować stronę testową, pamiętając, że w systemie Windows 10 trzeba w tym celu otworzyć „Właściwości drukarki”, a nie „Właściwości” (kolejne dziwactwo).

Wam też działa, prawda?

5. Drukarkę LPD/LPR można też udostępnić pod kontrolą Windows 10 (podobnie 7 i 8). Wprawdzie nie próbowałem w tym systemie konfigurować wirtualnej drukarki postscriptowej i nie wiem, czy w ogóle się da, ale jest wiele drukarek standardowo obsługujących PostScript czy chociażby PCL. Udostępnienie drukarki w ten sposób pozwoli nam drukować na niej nie tylko z poziomu systemów Linux/Unix, ale również spod Windows XP czy 98.

Otwieramy Panel sterowania, klikamy ikonę „Programy i funkcje”, a następnie link „Włącz lub wyłącz funkcje systemu Windows” (albo, co będzie bardziej w stylu Windows 10, wyszukujemy odpowiedni aplet Panela sterowania w wyszukiwarce) i włączamy dwie funkcje: „Monitor portu LPR” i „Usługa drukowania za pośrednictwem portu LPD”.


Potrzebne będzie połączenie z internetem, gdyż system pobiera niezbędne pliki z serwisu Windows Update.

Teraz we „Właściwościach drukarki” (a nie we „Właściwościach”!) włączamy udostępnianie i wpisujemy nazwę udziału, która staje się nazwą kolejki wydruku LPD.

 

Podobnie jak to miało miejsce pod Windows XP, udostępnianie można teraz wyłączyć. Ważne, żeby zachowała się wpisana nazwa udziału.


Pozostaje podłączyć drukarkę w docelowym systemie. Jak to zrobić w Linuksie napisałem powyżej (tylko trzeba odpowiedni sterownik wybrać, może jakiś generic PCL), a pod Windows XP – kto doczytał do tego miejsca, na pewno sobie poradzi. Powodzenia!

5 komentarzy: