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 lehetőséget adnak a megkerülésükre. Szó lesz a GDI-nyomtatókról, a PPD-fájlokról és a portbeállításokról, valamint a hálózati nyomtatókkal kapcsolatos legjellemzőbb gondokról, a rossz nyomtatási kimenetekről valamint a sorkezelésről.
A szabványos nyomtatónyelveket nem támogató, csak speciális vezérlőszekvenciá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 illesztőprogramot. 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 illesztőprogramot és mivel a Windows-illesztő 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érelhetők.
Egyes nyomtatók átkapcsolhatók, hogy GDI-módban műkö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-illesztő 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 bővítőmodulok.
Egyes gyártók egyedi illesztőprogramokat biztosítanak GDI-nyomtatóikhoz. Az egyedi illesztőprogramok hátránya, hogy nincs garancia arra, hogy ezek működnek a telepített nyomtatórendszerrel, és hogy megfelelők 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-illesztőprogramok 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 illesztőprogram problémáját egyszer és mindenkorra: nincs többé szükség speciális illesztőprogramok telepítésére és beállítására, valamint a nyomtatási rendszer fejlesztései miatt új illesztőprogram-verziók beszerzésére.
Ha a manufacturer-PPDs
csomag nem tartalmaz megfelelő PPD-fájlt egy PostScript-nyomtatóhoz, akkor használható a nyomtatógyártó illesztőprogram CD-jén található PPD-fájl, vagy letölthető 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. Először tekintse meg a PPD-fájl licencfeltételeit. Ezután a cupstestppd segédprogrammal ellenőrizze, hogy a PPD-fájl megfelel-e az „Adobe PostScript Printer Description File Format Specification, version 4.3.” specifikáció előí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 lehetőleg 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 első párhuzamos portra kötni és az alábbi beállításokat megadni a BIOS-ban:
I/O-cím: 378
(hexadecimális)
Megszakítás: mindegy
Mód: Normál
, SPP
vagy Csak kimenet
DMA: letiltva
Ha a nyomtató a fenti beállítások ellenére sem érhető 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ó (20.1. példa -
/etc/modprobe.conf
: Az első párhuzamos port megszakítási módja
). A megszakítási mód aktiválása előtt ellenőrizze 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.
20.1. példa -
/etc/modprobe.conf
: Az első 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 működik, akkor a probléma a hálózatban lesz.
A TCP/IP-hálózatnak és a névfeloldásnak működnie kell.
A cupsd alapértelmezésben csak a belső hálózati illesztőkön figyel (localhost
). Ellenőrizze, hogy az /etc/cups/cupsd.conf
fájl Listen
irányelvében (irányelveiben) engedélyezett-e a hozzáférés a külső hálózatról:
Listen 192.168.2,*:631
A CUPS-kiszolgálónak vagy a belső tűzfalzónában kell lennie, vagy ha a külső zónában van, akkor képesnek kell lennie adatok küldésére és fogadására a 631-es UDP- és TCP-porton keresztül.
Az alábbi paranccsal ellenőrizhető, hogy létesíthető-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íthető 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 gép_neve
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 gép_neve
gépsorára (queue
). Ha a 20.2. példa - Az lpd hibaüzenete példában bemutatotthoz hasonló választ kap, akkor a problémát a távoli lpd okozza.
20.2. példa - 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övetkező parancs használható annak kiderítésére, hogy működik-e CUPS hálózati kiszolgáló a hálózaton.
netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID
Ha létezik nyilvános üzeneteket küldő CUPS hálózati kiszolgáló, akkor a kimenet az alábbi példában bemutatotthoz lesz hasonló: 20.3. példa - A CUPS hálózati kiszolgáló nyilvános üzenete.
Az alábbi paranccsal ellenőrizhető, hogy létesíthető-e TCP-kapcsolat a gép_neve
gépen futó cupsd-vel (631
-es port):
netcat -z host
631 && echo ok || echo failed
Ha a cupsd felé nem létesíthető kapcsolat, akkor lehet, hogy a cupsd nem fut, vagy valamilyen gond van a hálózattal. Az lpstat -h host
-l -t paranccsal lekérhető egy (várhatóan jó hosszú) állapotjelentés a gép_neve
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övetkező paranccsal ellenőrizhető, hogy a gép_neve
gépen található sor (queue)
) elfogad-e egy mindössze egyetlen soremelés karakterből álló nyomtatási feladatot. Semmi sem kerül kinyomtatásra. A nyomtató esetleg kidob egy üres oldalt.
echo -en "\r" \
| lp -d queue -h host
A nyomtatókiszolgáló egységekben (pl. JetDirect) futó nyomtatásisor-kezelők 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 működő nyomtatásisor-kezelő okozza, semmit nem lehet tenni vele. Kerülő megoldásként ki lehet hagyni a nyomtatókiszolgáló egységben működő nyomtatásisor-kezelőt, ha közvetlenül, egy TCP-socketen keresztül címzi meg a nyomtatót. Lásd:20.5. szakasz - Hálózati nyomtatók
Ily módon a nyomtatókiszolgáló egység az adatátvitel különböző formái (TCP/IP-hálózat és helyi nyomtatókapcsolat) közötti átalakítóvá egyszerűsö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övetkező 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 érhető el. Alapértelmezésben az nmap csak az /usr/share/nmap/nmap-services
fájlban felsorolt ismert portokat ellenőrzi. Az összes lehetséges port ellenőrzéséhez használja az nmap -p mettől
-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 megfelelő portra annak ellenőrzésére, hogy a nyomtató valóban elérhető-e ezen a porton.
A nyomtatórendszerben a nyomtatási feladat akkor fejeződik 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 megfelelő 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, mielőtt visszajelezné, hogy az adatátvitel nem sikerült. Mivel a 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 az /usr/bin/enable paranccsal.
Ha egy CUPS hálózati kiszolgáló meghirdeti a sorait a kliensgépek felé tallózáson keresztül, és egy megfelelő helyi cupsd aktív a kliensgépeken, akkor a kliens cupsd elfogadja az alkalmazások nyomtatási feladatait és továbbítja őket 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ˇjellemzőenˇazonnalˇtovábbításraˇkerülnek,ˇnemˇtörölhetőkˇaˇfeladatszámmalˇaˇkliensgépen,ˇmivelˇaˇkliensˇcupsd-jeˇa nyomtatási feladatot befejezettnek tekinti azonnal, ahogy az továbbításra került 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övetkező paranccsal törölhető 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 megelőzéséhez tegye a következőket:
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örlődnek a sorból, ha teljes egészükben el lettek küldve a nyomtatóra. Az lpstat -o vagy lpstat -h cups.example.com -o paranccsal ellenőrizheti, 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 feladatnak a sorból törlése után is továbbítódhatnak a nyomtatóra. Ellenőrizze, hogy fut-e a sorért felelős 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üntethető 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 időre. Ezután helyezzen bele papírt, majd kapcsolja újra be.
A CUPS nyomtatási rendszer problémái az alábbi eljárással kereshetők 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 műveletet, ami a hibához vezetett.
Ellenőrizze a /var/log/cups/error_log*
fájlokban található üzeneteket a probléma okának meghatározásához.