Tytuł tego wpisu zapewne brzmi nietypowo, jednak już spieszę wyjaśnić o co chodzi. Drukarka atramentowa ma to do siebie, że trzeba jej używać od czasu do czasu, żeby tusze nie pozasychały. Ponieważ problem znacząco nasilił się u mnie po zainstalowaniu systemu stałego zasilania atramentem (CISS), który opisywałem wcześniej, postanowiłem znaleźć jakieś rozwiązanie systemowe.
Drukarka atramentowa Canon IP4000 podłączona jest w tej chwili do routera (Linksys WRT160NL z zainstalowanym systemem OpenWRT), tak jak to opisywałem wcześniej. Opis był co prawda dla dd-wrt i starego routera, ale poza tym nic się nie zmieniło.
Na codzień używam Ubuntu zainstalowanego na trzech komputerach w domu, a w standardowych sterownikach nie ma opcji czyszczenia głowicy i temu podobnych czynności. W związku z tym konserwacja drukarki jest jeszcze bardziej uciążliwa, bo trzeba do tego uruchomić Windowsa. Postanowiłem więc, że przygotuję rozwiązanie, dzięki któremu będę mógł wykonywać automatyczny wydruk co jakiś czas (może nawet codziennie lub co dwa dni), a dodatkowo znaleźć sposób na czyszczenie dysz z poziomu komputerów z Linuksem, a najlepiej bezpośrednio z routera.
Z poziomu sterowników windowsowych drukarka skonfigurowana jest tak, że sama się uruchamia w razie potrzeby, a po pewnym czasie wyłącza. Upraszcza to sprawę zdecydowanie, bo przy obecnej konfiguracji, nie martwiąc się o włączenie drukarki, wysyła się po prostu wydruk do routera na port 9100.
Trzeba się zastanowić przy okazji jak jest realizowane czyszczenie dysz. Jest to po prostu wydruk zawierający pewne kody sterujące. Co zrobić, żeby przechwycić taki wydruk do pliku, by móc go później wysyłać do drukarki z routera lub innego komputera? Nic prostszego. Wystarczy w Windows zmienić port drukarki z usb lub sieciowego (jak w moim przypadku) na plikowy (file). Po wykonaniu tej czynności i włączeniu czyszczenia dysz (lub dowolnej innej czynności konserwacyjnej bądź wydruku), otrzymujemy pytanie o ścieżkę i nazwę pliku, pod którą należy zapisać wydruk.
W ten prosty sposób stałem się właścicielem plików czyszczenie.prn, czyszczeniedokladne.prn i testdysz.prn. Wszystkie odpowiadają wykonywanym od czasu do czasu przeze mnie czynnościom konserwacyjnym. Gdy mamy te pliki, trzeba się zastanowić jak wysłać je do drukarki. Pomocny jest program net cat (nc), który potrafi otworzyć port sieciowy i do niego pisać (oraz czytać, co jednak w naszej sytuacji nie jest potrzebne).
Co zrobić więc, żeby router potrafił sam wyczyścić dysze? Po pierwsze zainstalować nc (opkg update; opkg install netcat). Gdy to się uda, wystarczy wysłać zawartość pliku czyszczenie.prn do portu 9100 TCP routera (czyli na localhost gdy robimy to z routera). Po tej czynności chcemy, żeby nc nie nasłuchiwał odpowiedzi, tylko zakończył działanie (opcja -c). Cała komenda będzie więc wyglądać tak:
cat /sciezka/czyszczenie.prn | nc -c localhost 9100
Banalnie proste, prawda? Teraz wystarczy dopisać do crona na routerze, żeby jakiś wydruk wykonywał się co kilka dni, a do tego może nawet dołożyć automatyczne czyszczenie dysz i test co jakiś czas i zapewne o problemie zasychania dysz można zapomnieć.
Powyższy opis powstał dla routera z OpenWRT i drukarki Canon IP4000, ale informacje przydać się mogą każdemu użytkownikowi drukarki atramentowej i Linuksa.
a co z automatycznym uzupełnianiem podajników na papier ? 😉
Sterowany przez drukarkę która to sterowana jest przez router 😉