Udostępnianie drukarki USB w sieci
Ostatnia zmiana: 2022-01-23 08:34
Jeżeli router posiada port USB można z łatwością przemienić go w serwer wydruku, tzw.
printserver. Wykorzystany program (p910nd) jest prostym serwisem odbierającym polecenia pochodzące z sieci i wysyłającym to na USB. Nie zarządza on wydrukiem, nie pamięta stron, nie modyfikuje stron wydruku ani nie interpretuje poleceń/kodu wydruku. Po prostu przesyła to co odebrał do drukarki. W przypadku Gargoyle wystarczy doinstalować dodatek
plugin-gargoyle-usb-printer, dla LuCI -
luci-app-p910nd. Jeżeli nie mamy środowiska graficznego lub chcemy skonfigurować drukarkę ręcznie można posłużyć się poniższym poradnikiem.
Instalacja
Należy wcześniej podłączyć drukarkę do portu USB rutera. Niezbędne są moduły do obsługi USB oraz wspomniany program:
# opkg update
# opkg install kmod-usb-core kmod-usb2 kmod-usb-printer p910nd
W zależności od posiadanego routera może być także konieczne doinstalowanie pakietu
kmod-usb-uhci lub
kmod-usb-ohci.
Konfiguracja
Znajduje się standardowo w w pliku /etc/config/p910nd. Włączenie demona to wydanie poleceń:
# uci set p910nd.@p910nd[0].device=/dev/usb/lp0
# uci set p910nd.@p910nd[0].port=0
# uci set p910nd.@p910nd[0].enabled=1
# uci commit p910nd
# /etc/init.d/p910nd enable
# /etc/init.d/p910nd start
Przy domyślnych ustawieniach portem drukarki jest
9100 (9100 + numer określony w
port), protokół -
raw. W zależności od numeru używanego kernela, urządzenie może nazywać się
/dev/lp0 - należy to sprawdzić i ustawić właściwą nazwę.
Konfiguracja klienta Windows/Linux/MacOS
Opis dostępny jest pod adresem
https://openwrt.org/docs/guide-user/services/print_server/p910ndprinterserver#configure_clients (EN)
Zakończenie
Nie wszystkie drukarki będą chciały współpracować w ten sposób. Niektóre modele odmawiają współpracy i nie ma niestety na to rozwiązania (poza zainstalowaniem innego serwera wydruku, np. cupsa). Jedyna możliwość ew. modyfikacji to wyłączenie dwukierunkowości transmisji:
# uci set p910nd.@p910nd[0].bidirectional=0
# uci commit p910nd
# /etc/init.d/p910nd restart
Niektóre drukarki (np. LaserJet HP1020) wymagają załadowania firmware przed rozpoczęciem drukowania, inaczej będą odmawiały drukowania. Aby to zrobić, należy utworzyć plik np.
/etc/hotplug.d/usb/20-printer, np. o następującej zawartości:
#!/bin/sh
FIRMWARE="/usr/lib/sihp1020.dl"
DEVICE=/dev/usb/lp0
if [ "$ACTION" = "add" ]; then
for i in $(seq 30); do
if [ -c $DEVICE ]; then
cat $FIRMWARE > $DEVICE
logger "Wyslano firmware do drukarki"
exit
fi
sleep 1
done
fi
Plik
/usr/lib/ssihp1020.dl jest to firmware dla określonego typu drukarki. Dla niektórych można je znaleźć np. w
http://oleg.wl500g.info/hplj/ i należy go umieścić w podanym katalogu (
/usr/lib). Zadaniem skryptu jest wykrycie pojawienia się drukarki i wysłanie do niej wskazanego firmware.