Zápisník · 23. dubna 2023
Samsung tiskárna a Raspberry Pi Zero
Jak z Raspberry Pi Zero udělat síťový tiskový server CUPS pro tiskárnu Samsung a zkompilovat ovladač SpliX pro ARM.
Jestli máte někde několik počítačů na jednu (nesíťovou) tiskárnu stejně
jako my doma, tak se možná potýkáte s problémem, jak tisknout. Mnoho
lidí napadne posílání souborů na počítač připojený k tiskárně přes
služby určené pro normální komunikaci mezi lidmi - např. email nebo
různé chatovací aplikace. Toto řešení je ale dost neefektivní a vyžaduje
několik zcela zbytečných úkonů. Aby se tomuto předešlo, tak existují
tiskové servery, které přijímají tiskové úlohy po síti a tisknou je.
Můžeme jej nechat běžet na klasickém osobním počítači, ale to je opět
docela blbé, protože musíme stroj startovat a při běhu žere docela dost
elektriky.
Dobré je k tomuto účelu využít nějaké drobné nízkoenergetické zařízení,
které má alespoň USB a interface pro připojení k internetu. Já
momentálně používám Raspberry PI v jeho nejlevnější a nejméně vybavené
variantě Zero. Má 512 MB paměti a 1 GHz procesor, což je pro tento účel
až až. V minulosti jsem to zkoušel i na nějakém levném routeru, kde se
dalo rozjet Openwrt. Abych tam mohl vůbec něco
zprovoznit, tak jsem do USB musel připojit flashku, kterou jsem mountnul
do rootu jako overlay, abych rozšířil úložiště. Zkoušel jsem zprovoznit
CUPS server, ale bohužel to nešlo, protože 32 MB operační paměti
nestačilo ke stabilnímu fungování. Použitelné to ale do své smrti bylo,
šlo tam zprovoznit alespoň direct-printing, kdy to, co přijde po
internetu jde přímo do tiskárny. Server pro toto se jmenuje p910nd a v
openwrt to má přímo balíček. Návod na zprovoznění mají
tady.
Výhody:
- Dá se to rozjet i na té největší bramboře
- Je to funkční
- Jede to se všemi tiskárnami
Nevýhody:
- Na každém počítači ze kterého se tiskne je potřeba nainstalovat
drivery pro tiskárnu - Neumí probudit tiskárnu z režimu spánku
Až mi jednoho dne router odešel do křemíkového nebe, tak jsem jako
náhradu použil již zmíněné Raspberry PI Zero. Abych předešel nastavování
driverů úplně všude, tak jsem zvolil CUPS server, který se pro tisk
používá snad ve všech unixových distribucích. Stáhl jsem si Raspbian
Lite (bez grafického prostředí). Nastavil jsem si standardní věci -
nastavení internetu, SSH přístup, hostname, přihlašování a další takové
srandy. Potom jsem se pustil do instalace potřebných věcí.
Instalace
- Přes micro USBéčko s OTG kabelem připojíme tiskárnu
- Nainstalujeme CUPS:
sudo apt install cups - Přidáme současnému uživateli práva k přístupu k tiskárně:
sudo usermod -a -G lpadmin pi - Povolíme přístup k tiskovému serveru zvnějšku:
sudo cupsctl --remote-any - Přes prohlížeč na počítači ve stejné síti načteme ovládání CUPSu na
http://ip_adresa_rpi:631 - Jdeme do
Administrationa z tama dámeAdd a printer - Nahoře zvolíme radio-input s názvem tiskárny. Pokud tam nebude,
zkuste tistárnu probudit ze spaní/restartovat - Mezitím ale zjistíme, že nemáme drivery
Právě s těmi drivery je největší problém při provozu na Raspberry PI.
Pokud bychom stáhli ty od výrobce, tak je sice nainstalujeme, ale ale
nebudou fungovat, protože je výrobce nevytváří pro ARMHF architekturu.
Nejspíše se potom při tisku zobrazí chybová hláška
/usr/lib/cups/filter/rastertospl failed, protože to tu binárku prostě
nespustí správně. S tím se bohužel nedá nic dělat, takže budeme muset
použít alternativu. Tou je splix driver. Dokonce je i v oficiálních
repozitářích jako balíček printer-driver-splix, jenže je to nějaká
starší verze, která některé tiskárny nepodporuje. Mezi ně zrovna patří
moje Samsung M2020. Jak to ale vyřešit? No, vezmeme si aktuální verzi
a zkompilujeme si to ze zdrojáků. Na Raspberry PI to sice bude trvat
dýl, ale já byl líný to cross-compilovat na jinším počítači, tak jsem si
raději počkal. Jak na to:
- Stáhneme knihovnu potřebnou ke kompilaci:
sudo apt-get install libcups2-dev - potřebujeme jbigkit:
git clone https://github.com/Distrotech/jbigkit.git cd jbigkitmakesudo make install- Naklonujeme z gitu pomocí
git clone https://gitlab.com/ScumCoder/splix.git git checkout patches- Přepneme adresář:
cd splix/splix make- A nakonec dáme binárky na svá místa:
sudo make install - Zkopírujeme .ppd, aby jej CUPS našel:
sudo cp ppd/m2020.ppd /usr/share/cups/model/ - Restartujeme CUPS:
sudo systemctl restart cups - Opět půjdeme do administrace CUPSu a nastavíme tiskárnu. Driver by
to mělo najít automaticky. Aby šlo na tiskárně tisknout i z jiných
počítačů, zaškrtneme políčkoShare this printer - Vyzkoušíme tisk testovací stránky
- Jestli to nevytiskne chybu, tak je hotovo!
Ještě takový tip na konec: Když už to Raspberry PI jede, tak je škoda
jej používat jen na tisk, můžeme přes USB připojit přes převodník velký
harddisk a vytvořit si domácí NAS úložiště a nebo klidně cokoliv
dalšího, představivosti se meze nekladou.