Az alábbi szakaszok a nyomtatóhardver és -szoftver leggyakoribb problémáit tekintik át, valamint bemutatják a megoldás módját vagy lehetoséget adnak a megkerülésükre. Szó lesz a GDI nyomtatókról, PPD-fájlokról, valamint a portok beállításáról. Szintén tárgyaljuk a leggyakoribb nyomtatási problémákat, a hibás nyomatok és a nyomtatási sorok kezelését.
A szabványos nyomtatónyelveket nem támogató, csak speciális vezérloszekvenciákkal szabályozható nyomtatókat GDI-nyomtatóknak szokás hívni. Ezek a nyomtatók csak azon operációsrendszer-verziók alatt használhatók, amelyekhez a gyártó biztosít illesztoprogramot. A GDI a Microsoft* által grafikus eszközökhöz kifejlesztett programozási felület. A gyártók általában csak a Windowshoz adnak illesztoprogramot és mivel a Windows-illeszto a GDI-felületet használja, ezeket a nyomtatókat szintén GDI-nyomtatóknak szokás hívni. A tényleges problémát nem a programozási felület jelenti, hanem az a tény, hogy a GDI-nyomtatók csak az adott nyomtatómodell egyedi nyomtatónyelvével vezérelhetok.
Egyes nyomtatók átkapcsolhatók, hogy GDI-módban muködjenek, vagy a szabványos nyomtatónyelvek valamelyikével. Ha lehetséges, nézze meg a nyomtató kézikönyvét. Bizonyos modelleknél az átkapcsoláshoz szükség van egy speciális Window-szoftverre (figyeljen rá, hogy a Windows-illeszto lehet, hogy minden alkalommal visszaállítja a nyomtatót GDI-módra, ha Windowsból nyomtat). Más GDI-nyomtatókhoz vannak szabványos nyomtatónyelvi bovítomodulok.
Egyes gyártók egyedi illesztoprogramokat biztosítanak GDI-nyomtatóikhoz. Az egyedi illesztoprogramok hátránya, hogy nincs garancia arra, hogy ezek muködnek a telepített nyomtatórendszerrel, és hogy megfelelok a különféle hardverplatformokhoz. A szabványos nyomtatónyelveket támogató nyomtatók ezzel szemben nem függenek a nyomtatási rendszer egy adott változatától, sem a használt hardverplatformtól.
Az egyedi Linux-illesztoprogramok munkára bírása helyett lehet, hogy költséghatékonyabb megoldás egy támogatott nyomtató vásárlása. Ez megoldja az illesztoprogram problémáját egyszer és mindenkorra: nincs többé szükség speciális illesztoprogramok telepítésére és beállítására, valamint a nyomtatási rendszer fejlesztései miatt új illesztoprogram-verziók beszerzésére.
Ha a manufacturer-PPDs csomag nem tartalmaz megfelelo PPD-fájlt egy PostScript-nyomtatóhoz, akkor használható a nyomtatógyártó illesztoprogram CD-jén található PPD-fájl, vagy letöltheto egy alkalmas PPD-fájl a nyomtatógyártó weboldaláról.
Ha a PPD-fájl ZIP-archívum (.zip) vagy önkicsomagoló ZIP-archívum (.exe) formájában érkezik, akkor csomagolja ki az unzip paranccsal. Eloször tekintse meg a PPD-fájl licencfeltételeit. Ezután a cupstestppd segédprogrammal ellenorizze, hogy a PPD-fájl megfelel-e az Adobe PostScript Printer Description File Format Specification, version 4.3.
specifikáció eloírásainak. Ha a segédprogram FAIL
eredményt ad vissza, akkor a PPD-fájlban komoly hibák vannak, és komoly hibákra lehet számítani a nyomtatásnál is. A cupstestppd által azonosított problémákat lehetoleg meg kell szüntetni. Ha szükséges, kérjen helyes PPD-fájlt a nyomtató gyártójától.
A legbiztonságosabb megközelítés a nyomtatót közvetlenül az elso párhuzamos portra kötni és az alábbi beállításokat megadni a BIOS-ban:
I/O address (I/O-cím): 378 (hexadecimális)
Interrupt (megszakítás): mindegy
Mode (mód): normal (normál), SPP vagy output only (csak kimenet)
DMA: disabled (letiltva)
Ha a nyomtató a fenti beállítások ellenére sem érheto el a párhuzamos porton, akkor írja be az I/O-címet közvetlenül az /etc/modprobe.conf fájlba 0x378 formában. Ha két párhuzamos port van, amelyek I/O-címei 378 és 278 (hexadecimális), akkor ezeket 0x378,0x278 formában adja meg.
Ha a 7. megszakítás szabad, akkor az az alább bemutatott módon aktiválható (Példa 9-1). A megszakítási mód aktiválása elott ellenorizze a/proc/interrupts fájlban, hogy mely megszakítások vannak már használatban. Csak az éppen használt megszakítások kerülnek megjelenítésre. Ez függhet attól, hogy mely hardverelemek aktívak. A párhuzamos port megszakítását más eszköz nem használhatja. Ha nem biztos a dolgában, használja a lekérdezéses (polling) módot az irq=none beállítással.
Példa 9-1 /etc/modprobe.conf: Az elso párhuzamos port megszakítási módja
alias parport_lowlevel parport_pc options parport_pc io=0x378 irq=7
Csatlakoztassa a nyomtatót közvetlenül a számítógéphez. Tesztelési célból állítsa be a nyomtatót helyi nyomtatóként. Ha így muködik, akkor a probléma a hálózatban lesz.
A TCP/IP-hálózatnak és a névfeloldásnak muködnie kell.
Az alábbi paranccsal ellenorizheto, hogy létesítheto-e TCP-kapcsolat agép neve gépen futó lpd-vel (port 515):
netcat -z host 515 && echo ok || echo failed
Ha az lpd felé nem létesítheto kapcsolat, akkor lehet, hogy az lpd nem fut, vagy valamilyen gond van a hálózattal.
A root felhasználó nevében adja ki az alábbi parancsot egy (várhatóan jó hosszú) állapotjelentés lekéréséhez a távoli host gépen található sorról (queue), feltéve, hogy az lpd aktív és a gép elfogadja a kéréseket:
echo -e "\004queue" \
| netcat -w 2 -p 722 host 515
Ha az lpd nem válaszol, akkor lehet, hogy nem fut, vagy valamilyen gond van a hálózattal. Ha·az lpd válaszol, akkor a válaszból ki kell derülnie, hogy miért nem lehet nyomtatni a host gép sorára (queue). Ha a Példa 9-2 példában bemutatotthoz hasonló választ kap, akkor a problémát a távoli lpd okozza.
Példa 9-2 Az lpd hibaüzenete
lpd: your host does not have line printer access lpd: queue does not exist printer: spooling disabled printer: printing disabled
A CUPSD hálózati kiszolgáló alapértelmezésben 30 másodpercenként meghirdeti magát a 631-es UDP-porton. Így a következo parancs használható annak kiderítésére, hogy muködik-e CUPS hálózati kiszolgáló a hálózaton. A parancs végrehajtása elott gyozodjön meg róla, hogy leállította a helyi CUPS-démont.
netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID
Ha létezik nyilvános üzeneteket küldo CUPS hálózati kiszolgáló, akkor a kimenet az alábbi példában bemutatotthoz lesz hasonló: Példa 9-3.
Példa 9-3 A CUPS hálózati kiszolgáló nyilvános üzenete
ipp://192.168.2.202:631/printers/queue
Az alábbi paranccsal ellenorizheto, hogy létesítheto-e TCP-kapcsolat a host gépen futó cupsd-vel (631-es port):
netcat -z host 631 && echo ok || echo failed
Ha a cupsd felé nem létesítheto kapcsolat, akkor lehet, hogy a cupsd nem fut, vagy valamilyen gond van a hálózattal. Az lpstat -h host -l -t paranccsal lekérheto egy (várhatóan jó hosszú) állapotjelentés a host gépen található összes sorról, feltéve, hogy a cupsd aktív és a gép elfogadja a kéréseket.
A következo paranccsal ellenorizheto, hogy a host gépen található sor (queue)) elfogad-e egy mindössze egyetlen soremelés karakterbol álló nyomtatási feladatot. Semmi sem kerül kinyomtatásra. A nyomtató esetleg kidob egy üres oldalt.
echo -en "\r" \
| lp -d queue -h hostA nyomtatókiszolgáló egységekben (pl. JetDirect) futó nyomtatásisor-kezelok néha problémát jelenthetnek, ha túlságosan sok nyomtatási feladattal kell megküzdeniük. Mivel ezt a nyomtatókiszolgáló egységben muködo nyomtatásisor-kezelo okozza, semmit nem lehet tenni vele. Kerülo megoldásként ki lehet hagyni a nyomtatókiszolgáló egységben muködo nyomtatásisor-kezelot, ha közvetlenül, egy TCP-socketen keresztül címzi meg a nyomtatót. Lásd:Szakasz 9.4, Hálózati nyomtatók
Ily módon a nyomtatókiszolgáló egység az adatátvitel különbözo formái (TCP/IP-hálózat és helyi nyomtatókapcsolat) közötti átalakítóvá egyszerusödik. A módszer használatához ismerni kell a nyomtatókiszolgáló egység TCP-portját. Ha a nyomtató a nyomtatókiszolgáló egységhez csatlakozik és be van kapcsolva, akkor ez a TCP-port általában meghatározható az nmap csomagban található nmap segédprogrammal a nyomtatókiszolgáló egység bekapcsolása után. Az nmap IP-cím például a következo eredményt adhatja egy nyomtatókiszolgáló egység esetében:
Port State Service 23/tcp open telnet 80/tcp open http 515/tcp open printer 631/tcp open cups 9100/tcp open jetdirect
Ez a kimenet azt jelzi, hogy a nyomtatókiszolgáló egységre csatlakozó nyomtató a 9100-as TCP socketporton keresztül érheto el. Alapértelmezésben az nmap csak az /usr/share/nmap/nmap-services fájlban felsorolt ismert portokat ellenorzi. Az összes lehetséges port ellenorzéséhez használja az nmap -p mettol-meddig IP-cím parancsot. Ez viszont eltarthat egy darabig. További információt talál az nmap parancs kézikönyvoldalán.
Az alábbihoz hasonló paranccsal
echo -en "\rHello\r\f" | netcat -w 1 IP-address port cat file | netcat -w 1 IP-address port
küldhet karaktersorozatokat vagy fájlokat közvetlenül a megfelelo portra annak ellenorzésére, hogy a nyomtató valóban elérheto-e ezen a porton.
A nyomtatórendszerben a nyomtatási feladat akkor fejezodik be, ha a CUPS háttérrendszer befejezi az adatok elküldését a fogadónak (a nyomtatónak). Ha a fogadón a további feldolgozással probléma van, például a nyomtató nem képes a nyomtatóspecifikus adatok kinyomtatására, a nyomtatási rendszer ezt már nem veszi észre. Ha a nyomtató nem képes a nyomtatóspecifikus adatok kinyomtatására, akkor válasszon a nyomtatónak jobban megfelelo PPD-fájlt.
Ha az adatátvitel a fogadóra több kísérlet után sem sikerül, akkor a CUPS háttérrendszer, például az USB vagy a socket hibát jelez a nyomtatási rendszer (a cupsd) felé. A háttérrendszer dönti el, hogy hány további kísérletet tegyen még, mielott visszajelezné, hogy az adatátvitel nem sikerült. Mivel ezek után a további kísérletek hiábavalók, a cupsd letiltja az adott sorra nyomtatást. A probléma okának megszüntetése után a rendszergazdának újra engedélyeznie kell a nyomtatást a cupsenable paranccsal.
Ha egy CUPS hálózati kiszolgáló meghirdeti a sorait a kliensgépek felé tallózáson keresztül, és egy megfelelo helyi cupsd aktív a kliensgépeken, akkor a kliens cupsd elfogadja az alkalmazások nyomtatási feladatait és továbbítja oket a kiszolgálón futó cupsd felé. Amikor a cupsd elfogad egy nyomtatási feladatot, akkor új feladatszámot ad neki. Ez azt jelenti, hogy a kliensgépen a feladat száma nem fog megegyezni a kiszolgáló feladatszámával. Mivel a nyomtatási feladatok jellemzoen azonnal továbbítódnak, nem törölhetok a feladatszámmal a kliensgépen, mivel a kliens cupsd-je a nyomtatási feladatot befejezettnek tekinti azonnal, ahogy az továbbítódott a kiszolgáló cupsd-je felé.
Ahhoz, hogy a nyomtatási feladatot törölni lehessen a kiszolgálón, az lpstat -h cups.example.com -o paranccsal állapítsa meg a feladat számát a kiszolgálón, feltéve, hogy a kiszolgáló nem végzett még a feladat kinyomtatásával (nem küldte még el a nyomtatóra). A feladatszám segítségével a kiszolgálón a következo paranccsal törölheto a nyomtatási feladat:
cancel -h cups.example.com queue-jobnnumber
A nyomtatási feladatok a sorokban maradnak és a nyomtatásuk folytatódik, hacsak ki és be nem kapcsolja a nyomtatót, valamint újra nem indítja a számítógépet a nyomtatási folyamat közben. A hibás nyomtatási feladatokat a cancel paranccsal lehet eltávolítani a sorból.
Ha egy nyomtatási feladat hibás, vagy hiba történik a gép és a nyomtató közötti kommunikációban, akkor a nyomtató egy csomó papírt ki fog nyomtatni hibás karakterekkel, mert nem lesz képes az adatok helyes értelmezésére. Ennek megelozéséhez tegye a következoket:
A nyomtatás leállításához vegye ki az összes papírt a tintasugaras nyomtatóból, vagy nyissa ki a lézernyomtató papírtálcáját. Egyes nyomtatókon külön gomb is van az éppen folyó nyomtatás megszakítására.
Lehet, hogy a nyomtatási feladat még mindig a sorban van, mivel a feladatok csak akkor törlodnek a sorból, ha már teljes egészében el lettek küldve a nyomtatóra. Az lpstat -o vagy lpstat -h cups.example.com -o paranccsal ellenorizheti, melyik sor nyomtatása folyik éppen. A nyomtatási feladat törléséhez adja ki a cancel sor-feladatszám vagy cancel -h cups.example.com sor-feladatszám parancsot.
Bizonyos adatok még a nyomtatási feladat sorból való törlése után is továbbítódhatnak a nyomtatóra. Ellenorizze, hogy fut-e a sorért felelos CUPS háttérfolyamat, és ha igen, állítsa le. Például a párhuzamos portra csatlakoztatott nyomtató esetében a fuser -k /dev/lp0 paranccsal szüntetheto meg minden olyan folyamat, amelyik még mindig a nyomtatót (pontosabban a párhuzamos portot) próbálja elérni.
Állítsa teljesen alaphelyzetbe a nyomtatót: kapcsolja ki hosszabb idore. Ezután helyezzen bele papírt, majd kapcsolja újra be.
A CUPS nyomtatási rendszer problémái az alábbi eljárással kereshetok meg:
Állítsa be az /etc/cups/cupsd.conf fájlban a LogLevel debug paramétert.
Állítsa le a cupsd démont.
Törölje a /var/log/cups/error_log* fájlokat, hogy ne kelljen nagyon nagy naplófájlokban keresgélni.
Indítsa el a cupsd démont.
Ismételje meg a muveletet, ami a hibához vezetett.
Ellenorizze a /var/log/cups/error_log* fájlokban található üzeneteket a probléma okának meghatározásához.
Számos speciális probléma megoldása megtalálható a SUSE támogatási adatbázisában (http://en.opensuse.org/SDB:SDB). A vonatkozó cikkek kikereséséhez adja meg az SDB:CUPS keresési feltételt.