Dodanie drukarki USB do routera z OpenWrt

Zawarto┼Ť─ç

Ostatnio zdecydowa┼éem si─Ö na dodanie drukarki pod┼é─ůczonej za pomoc─ů portu USB do mojego routera z oprogramowaniem OpenWrt.

Podczas gdy na co dzie┼ä korzystam z rozwi─ůzania bezprzewodowego z wbudowanym AirPrint (dzi─Öki czemu drukuj─Ö bezpo┼Ťrednio z iPhone/iPad), udost─Öpnienie drukarki na USB w sieci wi─ů┼╝e si─Ö z zakupem serwera druku (print server).

Niestety, obecnie dost─Öpnym serwerom druku brakuje wsparcia dla, chocia┼╝by AirPrint, czyli mo┼╝liwo┼Ťci drukowania bezprzewodowego z urz─ůdze┼ä Apple takich jak iPhone czy iPad.

Jeżeli już znajdę taki, który podsiada AirPrint, to albo jest on bardzo drogi, albo producent zaprzestał jego dalszego rozwoju, a szkoda.

W zwi─ůzku z tym postanowi┼éem wykorzysta─ç m├│j router z oprogramowaniem OpenWrt. Jako ┼╝e posiada on dwa porty USB, z czego jeden, USB 2.0, kt├│ry akurat mam wolny, nadaje si─Ö on idealnie do pod┼é─ůczenia drukarki.

Tak naprawdę zależało mi najbardziej na AirPrint, a co z tego wyszło, przeczytasz dalej.

Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03

Słowem wstępu #

Na wstępie sprzęt, który będę używał w poniższym przykładnie:

  • Router: Linksys WRT3200ACM z oprogramowaniem OpenWrt
  • Drukarka: Samsung CLP-325 na USB

Moim g┼é├│wnym za┼éo┼╝eniem b─Ödzie udost─Öpnienie drukarki w sieci, z mo┼╝liwo┼Ťci─ů druku z komputera z macOS. Dodatkowo uwzgl─Ödni─Ö drukowanie z poziomu komputera z systemem Windows.

W typowym rozwi─ůzaniu (Raspbian + Raspberry Pi + drukarka USB) pos┼éu┼╝y┼ébym si─Ö pakietem CUPS i tyle. Niestety, w obecnej wersji oprogramowania OpenWrt pakietu CUPS nie u┼Ťwiadczymy, ze wzgl─Ödu na ograniczenia ze strony router├│w (pami─Ö─ç i moc obliczeniowa). CUPS sam w sobie ma spore wymagania pod tym wzgl─Ödem, w zwi─ůzku z tym oficjalne ┼║r├│d┼éa zalecaj─ů inne podej┼Ťcie.

Oczywi┼Ťcie, je┼╝eli chcesz, to mo┼╝esz skompilowa─ç w┼éasny pakiet CUPS ze ┼║r├│de┼é. Da si─Ö i nawet b─Ödzie dzia┼éa─ç. Jednak┼╝e problem pojawi si─Ö, gdy b─Ödziesz chcia┼é zaktualizowa─ç oprogramowanie na twoim routerze. Mimo ┼╝e wed┼éug mojego opisu b─Ödziesz w ┼éatwy spos├│b m├│g┼é przywr├│ci─ç ustawienia i zainstalowane pakiety, go w przypadku CUPS, b─Ödziesz musia┼é go skompilowa─ç na nowo, a wierz mi, nie jest to szybkie rozwi─ůzanie.

Instalacja serwera druku #

Serwer druku p910nd dost─Öpny jest w postaci gotowego pakietu do zainstalowania z poziomu przegl─ůdarki (System > Software) lub terminala:

opkg update
opkg install p910nd

Dodatkowo warto zainstalowa─ç aplikacj─Ö, dodaj─ůc─ů mo┼╝liwo┼Ť─ç zarz─ůdzania serwerem z poziomu naszego panelu administracyjnego LuCI.

opkg install luci-app-p910nd

Ostatnim pakietem, który potrzebujemy, jest obsługa drukarek USB.

opkg install kmod-usb-printer

Znalezienie drukarki #

Nim zaczniemy konfiguracj─Ö naszego serwera druku, musimy sprawdzi─ç, czy nasza drukarka jest wykrywana przez system.

Po pod┼é─ůczeniu kabla USB (przy w┼é─ůczonej drukarce) i wykonaniu w terminalu komendy dmsg powinni┼Ťmy zobaczy─ç co┼Ť takiego:

usb 1-1: new high-speed USB device number 4 using orion-ehci
usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 4 if 0 alt 0 proto 2 vid 0x04E8 pid 0x329F

I za pomoc─ů komendy lsusb sprawdzamy, czy nasze urz─ůdzenie jest rozpoznane prawid┼éowo. W przypadku mojej drukarki otrzyma┼éem:

Bus 001 Device 004: ID 04e8:329f Samsung Electronics Co., Ltd CLP-325 Color Laser Printer

Czyli wszystko na dobrej drodze.

Sprawdzamy, czy drukarka jest prawidłowo rozpoznana:

ls /dev/usb/lp*

Po czym mo┼╝emy przej┼Ť─ç dalej.

Konfiguracja serwera druku #

Z poziomu przegl─ůdarki przechodzimy do Services (Us┼éugi) > p910nd - Print server.

OpenWrt - Services - p910nd

Konfiguracja jest w zasadzie bardzo prosta.

OpenWrt - p910nd Print Server

Po pierwsze zaznaczamy opcj─Ö enabled aby nasz serwer by┼é w┼é─ůczony.

W nast─Öpnym kroku musimy sprecyzowa─ç nasze urz─ůdzenie (Device). Domy┼Ťlnie /dev/usb/lp0. Je┼╝eli mamy tylko jedn─ů drukark─Ö, to w zasadzie nie musimy nic tutaj zmienia─ç.

W pozycji Interface (Interfejs) wybieramy LAN, czyli nasza serwer druku b─Ödzie nas┼éuchiwa─ç ┼╝─ůda┼ä wydruku z sieci lokalnej.

Nast─Öpnie Port, kt├│ry domy┼Ťlnie ustawiony jest na 9100.

Zaznaczenie ÔÇîBidirectional mode pozostawiamy bez zmian (w przypadku co niekt├│rych drukarek atramentowych t─Ö opcj─Ö b─Ödziemy musieli wy┼é─ůczy─ç).

Nast─Öpnie klikamy Save & Apply (Zapisz i Zastosuj).

WA┼╗NE Po ca┼éych tych zabawach warto uruchomi─ç nasz router ponownie lub z poziomu terminala uruchomi─ç ponownie serwer p910nd aby unikn─ů─ç problem├│w.

/etc/init.d/p910nd restart

Osobi┼Ťcie tego nie zrobi┼éem przy pierwszym podej┼Ťciu i zastanawia┼éem si─Öm, dlaczego nie dzia┼éa ­čśé.

Instalacja drukarki na komputerze z macOS #

Na poniższym przykładzie użyłem macOS Big Sur 11.0.1

Przechodzimy do ustawień systemowych (Settings) i sekcji Drukarki i Skanery (Printers & Scanners).

macOS Big Sur - System Preferences - Printers & Scanners

Za pomoc─ů przycisku + (plus) dodajemy nasz─ů drukark─Ö.

macOS Big Sur - Printers & Scanners

W oknie Dodaj Drukark─Ö (Add Printer) wybieramy ┼Ťrodkow─ů ikon─Ö i wprowadzamy adres IP naszego routera w polu adresu.

macOS Big Sur - Add Printer

W polu protokół (Protocol) wybieramy HP JetDirect - Socket.

Nast─Öpnie przechodzimy do pola Use, w kt├│rym musimy wybra─ç, jak─ů metod─ů nasz komputer przetwarza┼é drukowane dokumenty.

Wybieramy Select software… i z listy wybieramy nasz─ů drukark─Ö. Je┼╝eli wcze┼Ťniej pod┼é─ůczali┼Ťmy drukark─Ö do naszego komputera za pomoc─ů kabla USB i mo┼╝na by┼éo na niej drukowa─ç, bardzo prawdopodobne, ┼╝e oprogramowanie b─Ödzie dost─Öpne.

Oczywi┼Ťcie, w polu nazwy (Name), kt├│re przeskoczy┼éem, wpisujemy nazw─Ö naszej drukarki, jak─ů chcemy widzie─ç w systemie.

Nast─Öpnie nale┼╝y nacisn─ů─ç przycisk Add (Dodaj) i spr├│bowa─ç co┼Ť wydrukowa─ç.

Podczas dodawania drukarki mo┼╝emy otrzyma─ç komunikat, ┼╝e system nie jest w stanie zweryfikowa─ç drukarki w naszej sieci. Nie musimy si─Ö za bardzo tym przejmowa─ç, wi─Öc klikamy przycisk Kontynuuj (Continue).

Instalacja drukarki na komputerze z Windows 10 #

Na poniższym przykładzie używałem Windows 10 (20H2)

Aby zainstalowa─ç drukark─Ö w systemie Windows 10, z poziomu menu Start przechodzimy do Ustawie┼ä a nast─Öpnie do sekcji Urz─ůdzenia.

Windows 10 - Ustawienia - Urz─ůdzenia

Z lewej strony okna wybieramy Drukarki i skanery po czym klikamy na przycisk Dodaj drukark─Ö lub skaner.

Windows 10 - Drukarki i Skanery

Oczywi┼Ťcie, na tym etapie nasza drukarka nie zostanie wyszukana automatycznie, w zwi─ůzku z tym musimy klikn─ů─ç opcj─Ö Drukarki, kt├│rej szukam, nie ma na li┼Ťcie.

Windows 10 - Drukarki, kt├│rej szukam, nie ma na li┼Ťcie

W nast─Öpnym oknie wybieramy Dodaj drukark─Ö, u┼╝ywaj─ůc adresu TCP/IP lub nazwy hosta i klikamy Dalej.

Windows 10 - Dodawanie drukarki

W polu adresu wpisujemy IP naszego routera.

Odznaczamy pole Sprawd┼║ drukark─Ö i automatycznie wybierz sterowniki do u┼╝ycia, gdy┼╝ nasz router nie informuje jaka drukarka jest aktualnie pod┼é─ůczona. Wybieramy przycisk Dalej.

Windows 10 - Dodawanie drukarki - Wpisz nazw─Ö hosta lub adres IP

Po chwili system rozpocznie wykrywanie portu TCP/IP.

Windows 10 - Wykrywanie portu TCP/IP

Gdy to zostanie zako┼äczone, na nast─Öpnym etapie pozostawiamy domy┼Ťlnie wybrane ustawienia (Generic Network Card) i klikamy Dalej.

Windows 10 - Wymagane dodatkowe informacje na temat portu

Teraz przyjdzie nam wybra─ç sterowniki naszego urz─ůdzenia.

Podobnie jak w poprzednim kroku, je┼╝eli wcze┼Ťniej pod┼é─ůczali┼Ťmy nasz─ů drukark─Ö za pomoc─ů kabla USB do komputera i mogli┼Ťmy drukowa─ç bez problemu, wszystko powinno by─ç w systemie.

Po wybraniu tego, czego szukamy, klikamy Dalej.

W nast─Öpnym kroku mo┼╝emy sprecyzowa─ç nazw─Ö naszej drukarki lub zostawi─ç domy┼Ťlnie wybran─ů przez system. Klikamy Dalej.

Windows 10 - Wpisz nazw─Ö drukarki

Na pytanie, czy chcemy udost─Öpni─ç drukark─Ö w sieci, wybieramy Nie udost─Öpniaj tej drukarki, gdy┼╝ jest ona ju┼╝ w sieci.

Windows 10 - Udost─Öpnienie drukarki

W ostatnim kroku b─Ödziemy mieli mo┼╝liwo┼Ť─ç wydrukowania strony testowej. Je┼╝eli wszystko wykonali┼Ťmy poprawnie, drukarka powinna zacz─ů─ç drukowa─ç.

Windows 10 - Pomy┼Ťlnie dodano drukark─Ö

Ale co z AirPrint? #

I tak jak nie chcia┼éem i┼Ť─ç drog─ů CUPS, kt├│ry doda┼éby mi AirPrint w prosty spos├│b, musia┼éem pomy┼Ťle─ç co dalej.

Czytaj─ůc g┼é─Öbiej, dowiedzia┼éem si─Ö co nieco, ┼╝e AirPrint korzysta z protoko┼éu IPP. Serwer p910nd dzia┼éa na zasadzie AppSocket ze wsparciem protoko┼éu LPD/LPR.

Dodatkowo AirPrint wymaga obs┼éugi mDNS (Bonjour/Avahi) w celu wykrycia drukarki przez urz─ůdzenia Apple.

Pakiet avahi dost─Öpny jest z poziomu pakiet├│w w OpenWrt.

Ale po kolei.

Najpierw upewniłem się, że drukarka wykrywana jest w sieci automatycznie.

Automatyczne wykrywanie drukarki w sieci #

W tym celu wykorzystujemy wpisy w usłudze avahi.

Je┼╝eli nie mamy avahi w systemie, zainstalujemy je w nast─Öpuj─ůcy spos├│b:

opkg update
opkg install avahi-daemon

Zgodnie z oryginalnym wpisem tworzymy nowy plik z poziomu terminala nano /etc/avahi/services/printer.service i wklejamy poni┼╝sz─ů zawarto┼Ť─ç.

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">Samsung CLP-325 on %h</name>
  <service>
    <type>_pdl-datastream._tcp</type>
    <port>9100</port>
    <txt-record>qtotal=1</txt-record>
    <txt-record>note=room 2</txt-record>
    <txt-record>ty=Samsung CLP-325</txt-record>
    <txt-record>product=(Samsung CLP-320 series)</txt-record>
    <txt-record>usb_MFG=Samsung</txt-record>
    <txt-record>usb_MDL=CLP-320 series</txt-record>
    <txt-record>Color=F</txt-record>
    <txt-record>Duplex=F</txt-record>
    <txt-record>Bind=F</txt-record>
    <txt-record>Collate=F</txt-record>
    <txt-record>Sort=F</txt-record>
    <txt-record>Staple=F</txt-record>
    <txt-record>Punch=F</txt-record>
    <txt-record>PaperMax=legal-A4</txt-record>
  </service>
</service-group>

Oczywi┼Ťcie, nazw─Ö drukarki dostosowujemy do naszych potrzeb.

Uruchamiamy ponownie usługę:

/etc/init.d/avahi-daemon restart

W przypadku macOS warto┼Ť─ç w sekcji product= odpowiada za nazw─Ö sterownika w systemie, dzi─Öki czemu nasza drukarka nie tylko b─Ödzie wykrywana automatycznie, ale r├│wnie┼╝ system wybierze poprawne sterowniki.

macOS Big Sur - Add printer - Bonjour

Jak jednak zauważysz, drukarka jest prawidłowo wykrywana w systemie macOS, ale nie w Windows 10.

Windows 10 - Wyszukiwanie drukarki

Taka to natura avahi oraz brak wsparcia ze strony Windows 10.

W przypadku systemu Windows 10, dodawanie drukarki musimy wykonać w sposób bardziej manualny, tak jak opisałem powyżej.

Drukowanie z telefonu (w tym iPhone) #

Niestety, przy zastosowaniu p910nd jako serwera druku, nici z dodania obsługi AirPrint.

Po ma┼éu zacz─ů┼éem si─Ö z tym oswaja─ç (szukaj─ůc innego rozwi─ůzania), ale postanowi┼éem poeksperymentowa─ç.

Otóż skoro moja drukarka działa w sieci, jest wykrywana przez system macOS automatycznie, to może jest nadzieja.

HP (obecny w┼éa┼Ťciciel sekcji drukarek Samsunga), tak jak i inni producenci wypuszczaj─ů w┼éasne oprogramowanie dla urz─ůdze┼ä przeno┼Ťnych (czy to z Androidem, czy iOS/iPadOS) umo┼╝liwiaj─ůcych drukowane, nawet w przypadku, gdy nie ma mo┼╝liwo┼Ť─ç wykorzystania natywnie wbudowanej opcji w system tj. AirPrint.

Si─Ögn─ů┼éem wi─Öc po aplikacj─Ö Mobile Print (Android, iOS/iPadOS).

Mimo, ┼╝e nie jestem fanem tego typu rozwi─ůza┼ä, tak jak wi─Ökszo┼Ť─ç u┼╝ytkownik├│w, o czym ┼Ťwiadcz─ů bardzo niskie oceny, nic wi─Öcej mi nie zosta┼éo.

Po uruchomieniu aplikacji klikn─ů┼éem napis Select Device aby doda─ç urz─ůdzenie i po chwili zobaczy┼éem, ┼╝e moje urz─ůdzenie jest wykrywane poprawnie! Do wi─Öcej, po dodaniu go do programu nagle wy┼Ťwietli┼éa si─Ö jako dost─Öpna z zielonym ptaszkiem.

Szybko wydrukowa┼éem jedno zdj─Öcie z mojej galerii. Co┼Ť, czego bym si─Ö nie spodziewa┼é, wydruk si─Ö pojawi┼é i to tak jak powinien.

A więc działa!

Mimo że połowiczny sukces (nadal nie mam wygodnego AirPrint), to mogę drukować.

No ale co z AirPrint? #

Niestety, z wykorzystaniem OpenWrt, na obecnym etapie rozwojowym nie jest to mo┼╝liwe. Koniec i kropka.

Oczywi┼Ťcie jest nadzieja dzi─Öki projektowi OpenPrinting/ipp-usb, ale to mo┼╝e w przysz┼éo┼Ťci.

U┼╝ycie p910nd zamiast CUPS ma swoje wady i zalety.

Zalet─ů, jak wspomnia┼éem wcze┼Ťniej, jest ma┼éa zasobo┼╝erno┼Ť─ç, dzi─Öki czemu mo┼╝na go zainstalowa─ç i u┼╝ywa─ç bez problem├│w nawet na ma┼éo wydajnym routerze. Serwer druku jest szybki, przygotowanie druku (spooling) nast─Öpuje po stronie klienta i wysy┼éane jest bezpo┼Ťrednio do drukarki.

Wad─ů jest natomiast chocia┼╝by brak obs┼éugi AirPrint, przez co drukowanie z telefon├│w tj. iPhone, odbywa─ç si─Ö mo┼╝e tylko dzi─Öki dodatkowej aplikacji, tak jak wspomnia┼éem wcze┼Ťniej.

Co wi─Öc pozostaje? #

Cel niniejszego wpisu, czyli dodanie drukarki USB do routera z OpenWrt, umo┼╝liwiaj─ůcy drukowanie w sieci zosta┼é osi─ůgni─Öty.

Dla mnie jednak to nie wystarczy, wi─Öc ca┼éo┼Ť─ç powy┼╝ej traktuje raczej jako eksperyment i skusze si─Ö jeszcze raz na wykorzystanie Raspberry Pi.

Tym razem, na The Pi Hut kupi┼éem Raspberry Pi Zero W, kt├│re kosztowa┼éo tylko ┬ú9.30 (~46.60z┼é)! Do tego dokupi┼éem kabel mini-HDMI (bo akurat tego nie mia┼éem) - ┬ú2.40 (~12z┼é) oraz obudow─Ö za ┬ú3.00 (15z┼é). Wykorzystuj─ůc jak─ů┼Ť nieu┼╝ywan─ů ┼éadowark─Ö do telefonu (1.5A), rozwi─ůza┼éem problem ┼éadowania. Wykorzysta┼éem r├│wnie┼╝ walaj─ůc─ů si─Ö w szufladzie kart─Ö microSD oraz przej┼Ťci├│wk─Ö microUSB na pe┼énowymiarowy port USB. I tak z wykorzystaniem czystego Raspbian oraz doinstalowanego pakietu CUPS mog─Ö w prosty spos├│b otrzyma─ç w┼éasny, bezprzewodowy oraz ma┼éo pr─ůdo┼╝erny serwer druku… z obs┼éug─ů AirPrint.

Ah.. mog┼éem tak zrobi─ç od razu, ale wola┼éem sprawdzi─ç, czy nie da si─Ö wykorzysta─ç tego, co ju┼╝ mam. A n├│┼╝ komu┼Ť powy┼╝sze rozwi─ůzanie si─Ö przyda.

Pozdrawiam.

Komentarze
Kategorie