Portál AbcLinuxu, 4. května 2025 10:48
Ahoj, prosím o radu ohledně tisku. Mám NB Asus M2400N, tiskárnu Oki Okipage 6ex a Arch Linux 0.7. Ale ono mi to netiskne. Na tomtéž hardwaru (počítač, tiskárna i kabel) už bez problému tiskly Linux Mandrake 10.0 (CUPS) a Windows XP.
Po zavedení ovladače parport_pc se v logu dočtu:
Apr 24 01:18:40 xandrej parport_pc.c: Specified parameter parport_init_mode=ecpepp Apr 24 01:18:40 xandrej parport: PnPBIOS parport detected. Apr 24 01:18:40 xandrej parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE,EPP] Apr 24 01:18:40 xandrej parport0: irq 7 in use, resorting to polled operation Apr 24 01:18:40 xandrej parport0: Printer, OKI DATA CORP OKI OKIPAGE 6ex
Mé poznámky a otázky k logu
1) Zkoušel jsem všechny režimy portu LPT - SPP, ECP, EPP - ale ani s jedním to nefungovalo.
2) irq7 in use... Mohl by to být hardwarový konflikt. Sdílení IRQ je ale běžné, takže kdoví. Např. na IRQ 5 mám 7 věcí a všechny vesele fungují. Na sedmičce jsou: Intel 82801DB-ICH4, ICH4, yenta.
3) Jak můžu zjistit obsazení všech IRQ? KInfoCenter mi jich vypisuje jen 9 z celkových 16 - některá jsou prostě vynechaná. (Ani procinfo -a mi neukazuje vše.)
4) Ta řádka Printer... svědčí o tom, že modul parport o tiskárně ví.
Jak se to projevuje
Když chci tisknout, systém dělá, že tiskne, ale ono nic. Tiskárna vůbec nezabliká a tisková úloha tam zůstane zmrzlá. Po chvíli (asi po minutě) se mi dokonce v informacích o tiskárně zobrazí: "Printer not connected, retrying in 30 seconds." (Samozřejmě je všechno zapojené a zapnuté.) Nehlásí to žádný problém, nikde v logu není ani zmínka o nějaké chybě při tisku.
V error logu od CUPS je párkrát 'Unknown user "lp"'. Žádného takového uživatele tu nemám. (Jinak je tam spousta dalších divných hlášek... Na co bych se měl zaměřit?)
Co jsem zkoušel
Zavést modul lp. Vypadá to jako zkratka od line printer, tedy nějaké prastaré text-only tiskárny. Jakmile ho zavedu a dám echo něco > /dev/lp0, tiskárna zabliká. Paralelní port tedy nějak funguje.
Nastavení práv, povolených a zakázaných uživatelů, režimů portu. (Vše marné.)
Ve Správci tisku pro KDE jsem tiskárnu několikrát přidal a odstranil. Se zavedenými moduly ji najde a zobrazí její název. URI portu s tiskárnou je prý parallel:/dev/unknown-parallel0. Jenže v /dev nic takového nemám.
Prosím vás o radu, experimentuju s tím bezvýsledně už týden. Určitě to bude něco banálního - někde chybí práva nebo nemám v /etc/group nějakou skupinu, která je ktomu potřeba. Jen na to přijít...
acpi_irq_balance acpi_irq_isa=7
). Začal bych s tímhle, netuším jak moc je paralelní port schopný fungovat bez irq.
V /proc/interrupts chybí IRQ 3, 6, 8, 10, 11 a 13. Příkaz procinfo -a mi jich sice vypíše víc, ale pořád ne všechny...
Ty parametry zkusím, to by mohlo být ono. (Nerozhodí mi něco jiného? Aby mi to pak ještě bootovalo... ) Je někde článek o tom, co přesně ten balance dělá?
Takže "polled operation" znamená, že to nemá přidělené IRQ? No bez IRQ to určitě pracovat nemůže - moderní tiskárna přece potřebuje nějaký ten ECP nebo EPP režim a tam to nejde bez IRQ. Jinak by to nemohlo podporovat plug'n'play, tj. při připojení za provozu by se hotplug o tiskárně nedozvěděl.
Mimochodem - zjistil jsem, že modul od mého PCMCIA slotu (yenta_socket) je psaný hned u dvou IRQ. Ve všech HW managerech se mi pak ukazují dva sloty. To je divné, protože já mám jen jeden slot. Zabírání prostředků neexistujícím slotem asi není ono... (Sice funguje, ale je tam dvojmo.) Nešlo by tomu nějak odpomoci? Slot je totiž psaný i u IRQ7, kde je navíc ten paralelní port. Proto mě napadá, že i tam by mohla být souvislost...
Každopádně moc díky za radu.
lp
, a pak tiskarnu nastavit na parallel:/dev/lp0
. Pak by to vse melo fungovat. Podle me totiz zatim tisknete do /dev/null
.
<DefaultPrinter tiskarna> Info TISKARNA Location Doma DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>Takze vam vrele doporucuju, vypnout cups(/etc/init.d/cupsd stop). Nejlepe i KDE. A po te jako root ten dotycny soubor, editovat dle prikladu. Jo a aby vse fungovalo, jeste musite v /etc/cups/ppd/ mit soubor tiskarna.ppd. Nebo alespon symlink na ppd pro vasi tiskarnu. Nasledne se podivat na prava na /dev/lp0, aby jste mel rw pro vsechny, nebo pro alespon skupinu ve ktere jsou vsichni(cast) uzivatelu.
# passwd -l lpNo a useradd se vas nikdy na heslo nepta, kdyz zalozite uzivatele, heslo mu zmenite pomoci:
# passwd lpNo a samozrejme ze jen root muze pridavat uzivatele a menit hesla jinym uzivatelum.
/var/log/cups/error_log
.
Ahoj, díky ochotným radám mnohých z vás jsem problém úspěšně vyřešil. Zde je obsáhlé shrnutí toho, co bylo třeba udělat, společně s citáty z příspěvků, které mi nejvíc pomohly. Doufám, že jednou pomůže někomu, kdo bude řešit něco podobného. Na diskusních forech Arch Linuxu je spousta ostrých výroků jako Archlinux vůbec neumí tisknout!!! Vracím se k Mandrake! a podobně. Já už vím, jak ho to naučít.
Pokud jsou mé informace nepřesné, prosím doplňte mě, ať je tu vše důkladně popsané.
"Jo a aby vse fungovalo, jeste musite v /etc/cups/ppd/ mit soubor tiskarna.ppd."
Tohle byl jeden z nejdůležitějších hintů. Zkoušel jsem totiž tisknout i s jinou tiskárnou, tentokrát na USB, která opět suverénně nefungovala. PPD jsem samozřejmě měl pro obě tiskárny, ale prostě netiskly, bez ohledu na rozhraní. Nakonec jsem zapnul pro CUPS logování úplně všeho a v logu jsem objevil, kde byl průšvih. Já jsem neměl žádné filtry foomatic! (Více o foomatic na www.linuxprinting.org.) Netušil jsem, že Arch Linux je neinstaluje. Očekával bych, že se instalují zároveň s CUPS. Tvůrci mé distribuce asi předpokládají, že každý má postscriptovou tiskárnu. Nainstaloval jsem tedy foomatic. Tím však ještě zdaleka nebyl vyřešen problém s portem lpt.
"(acpi_irq_balance acpi_irq_isa=7). Začal bych s tímhle, netuším jak moc je paralelní port schopný fungovat bez irq."
Výborná trefa, díky. Je to důležité jen pro port LPT. Tiskárny na USB se to netýká. Chci-li mít port LPT v módu ECP, což je pro moderní tiskárny nutné, pak nejspíš musí mít vlastní IRQ, které s ničím nesdílí. (Špatné řešení: Zavést moduly pro port před všemi ostatními. Pak sice bude mít parport IRQ 7 pro sebe, ale nebude fungovat spousta jiných zařízení včetně zvuku, což je příliš krutá daň za dosažení tohoto cíle.) Správné řešení: Zmíněný kernel parametr způsobí, že IRQ 7 je volné a obsadí ho výhradně port LPT. Pak už vše funguje správně a ostatní zařízení jsou přidělena k jiným IRQ, dosud neobsazeným. Funkce systému vypadá bezproblémově. Zdá se mi dokonce, že při nastavení tohoto parametru dochází k rychlejšímu zavedení modulů při startu.
"V /proc/interrupts chybí IRQ 3, 6, 8, 10, 11 a 13."
To jsem si asi stěžoval zbytečně. Teď to chápu tak, že se tam ukazují jen explicitně obsazená IRQ. Po přidání zmíněného kernel parametru jich tam aspoň mám mnohem víc, i když pořád ne všechna.
"Podle me "parallel:/dev/unknown-parallel0" tohle je ten problem."
Nikoliv problém, ale projev problému. (To nic nemění na tom, že tohle je velice dobrý a důležitý podnět.) Jakmile port LPT nemá přidělený vlastní interrupt, zařízení /dev/lp0 se nedetekuje, přestože je modul lp zavedený a do /dev/lp0 lze úspěšně udělat echo. Místo toho se ukazuje /dev/unknown-parallel0, což je něco velmi divného a neexistujícího. V mém /dev to rozhodně nikdy nebylo. Nestačí ručně nastavit /dev/lp0. Bez IRQ si CUPS (nebo spíš nějaký backend) bude myslet, že tam žádná tiskárna není, a bude ji odpojovat. Ještě aby by o ní věděl, když mu nemůže poslat přes IRQ odpověď! Jakmile se IRQ 7 vyhradí, začne se automaticky detekovat a nabízet /dev/lp0. Mám-li pak nastavený port do režimu ECP (viz dále), je komunikace skutečně obousměrná.
"Jo a jeste, kdyz na vas rve ze nemate user lp, zalozte ho. Rozhodne tim nic nezkazite..."
Uživatele lp jsem založil. Spool vlastní root a skupina sys, zatímco CUPS mi běží pod uživatelem lp. (Musel jsem tedy uživatele lp přidat i do skupiny sys.) Když se kouknu na práva k tomu /dev/lp0, je tam vlastník root a skupina lp. Skupinu lp tam dávno mám (už "z distribuce"). Uživateli lp jsem ji nastavil jako domovskou.
Tentokrát se už v logu dočtu:
May 1 12:47:30 xandrej parport_pc.c: Specified parameter parport_init_mode=ecp May 1 12:47:30 xandrej parport: PnPBIOS parport detected. May 1 12:47:30 xandrej parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE,EPP] May 1 12:47:30 xandrej lp0: using parport0 (interrupt-driven).Nejdůležitější je interrupt-driven. Bez IRQ sice tiskárna může v omezené míře fungovat, např. v textovém režimu, ale žádný tiskový systém s ní nenaváže komunikaci a bude ji považovat za odpojenou. Nevím, zda je opravdu nutný parametr init_mode=ecp, ale našel jsem o něm zmínku v modinfo parport_pc a funguje to, proto tuhle věc dál neřeším. ECP je navíc nejčastěji použivaný standard pro obousměrný paralelní port, takže se to zdá být správné.
Nyní funguje tisk přes LPT (Oki Okipage 6ex) i přes USB (Minolta PagePro 1300W). Uf, to je vše. Doufám, že to někdy někomu ulehčí práci a ušetří pár dnů času. Všem vám moc děkuji za ochotnou pomoc.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.