Portál AbcLinuxu, 4. května 2025 15:40

Připojení skeneru s USB rozhraním

13. 5. 2003 | Tomáš Oberhuber
Články - Připojení skeneru s USB rozhraním  

Základní návod pro zprovoznění USB skeneru pod Linuxem.

Kamarád mi zapůjčil na odzkoušení USB skener Umax Astra 3400, a tak jsem byl zvědavý, zda s ním budu úspěšný i v Linuxu. Můj paralelní Mustek ScanExpress 1200P v Linuxu podporu nemá a navíc je strašně pomalý. Po několika hodinách útrap jsem dosáhl kýženého výsledku a spustil Xsane. O něco později jsem naskenoval i první obrázek. Na následujících řádcích se pokusím sepsat postup, který by měl pomoci ostatním. Kromě již zmíněného modelu skeneru mám nainstalovaný Debian 3.0 Woody, což se odráží v tomto návodu. Pro ostatní distribuce se však nebude příliš lišit.

Informace o ovladačích

Nejprve se podívejte na http://www.mostang.com/sane/ nebo http://sane.informatik.uni-freiburg.de/cgi-bin/driver.pl, zda je váš skener podporován. Zde také najdete, jaký Sane backend potřebujete. Nejspíše to bude sane-plustek, který podporuje mnoho USB, dále např. sane-mustek_usb apod. Pokud zde svůj skener nenajdete, zřejmě ho v Linuxu nepřipojíte, neboť o žádném jiném rozhraní nevím. Není však na škodu se sem čas od času podívat, jestli nepřibyl právě ten ovladač, který potřebujete.

Kontrola BIOSu a připojení

Pokud máte na svém počítači nainstalované M$ Windows, můžete provést zkušební instalaci v nich, abyste se ujistili, že je skener dobře zapojený a správně nastavený BIOS. Jinak alespoň zkontrolujte nastavení BIOSu, zda máte zapnutou podporu USB.

Konfigurace jádra

Nevím, jakou minimální verzi jádra budete potřebovat. Já mám 2.4.18, ale možná bude stačit i nižší verze. Zcela logicky potřebujete podporu USB. Předtím musíte zjistit typ vašeho USB rozhraní - UHCI nebo OHCI. To lze zjistit z nápovědy ke konfiguraci jádra nebo pomocí příkazu

lspci

který vám mimo jiné vypíše právě typ USB (bude to někde na řádcích začínajících USB Controller nebo podobně). Zde je příklad:

00:11.2 USB Controller: VIA Technologies, Inc. UHCI USB (rev1b)
00:11.3 USB Controller: VIA Technologies, Inc. UHCI USB (rev1b)
00:11.4 USB Controller: VIA Technologies, Inc. UHCI USB (rev1b)

Proveďte

make menuconfig

a v USB support ---> nastavte:

<*> Support for USB
[*] Preliminary USB device filesystem
<M> USB Scanner support

a podle typu Vašeho USB zaškrtněte jedno z

< > UHCI (Intel PIIX4, VIA, ...) support
< > UHCI Alternate Driver (JE) support
< > ohci (compaq, imacs, opti, sis, ali, ...) support

nejlépe jako modul. Preliminary USB device filesystem je nutné pro podporu USB v /proc adresáři.

V File systems ---> můžete zaškrtnout

[*] /dev file system support (EXPERIMENTAL)

což je jakási lepší správa adresáře /dev. Volba

[ ] Automatically mount at boot

v mém případě moc dobře nefungovala. Pokud vám něco chybělo, přeložte a zaveďte nové jádro. Zaveďte subsystém pro USB (jako root)

modprobe usb-uhci

nebo

modprobe usb-ohci.

Dále zkuste

modprobe scanner

a (stále jako root, abychom se vyhnuli problémům s přístupovými právy)

scanimage -L

a pokud byl váš skener nalezen, máte vyhráno. Pokud ne, pokračujeme dalším bodem.

Připojení skeneru

Nyní otestujeme, zda je váš skener vůbec vidět. K tomu stačí mít zavedený modul pro USB. Ten musíte zavádět, pokud je skener připojený (proto je lepší přeložit podporu USB jako modul). Proveďte

cat /proc/bus/usb/drivers

pokud takový soubor existuje. Když ne, je potřeba provést připojení. Do /etc/fstab přidejte řádek

none /proc/bus/usb usbdevfs defaults,devmode=0666 0 0

a použijte

mount -a

Nyní zopakujte příkaz cat.

Pozorně si prohlédněte výstup a měli byste tam najít zmínku o připojeném skeneru. Nejzajímavější jsou tyto řádky (nebo jim podobné):

P: Vendor=1606 ProdID=0060 Rev= 1.00
S: Manufacturer=UMAX
S: Product=USB SCANNER

Čísla u Vendor a ProdID nyní použijeme k zavedení modulu pro skener. Například

modprobe scanner vendor=0x1606 product=0x0060

Aby se modul zaváděl automaticky, do /etc/modules.conf přidejte řádek

options scanner vendor=0x1606 product=0x0060

nebo v Debianu použijte modconf a nezapomeňte přidat argumenty vendor=0x1606 product=0x0060.

'devfs' by vám mělo samo vytvořit body /dev/usb/scanner? (zde si ovšem nejsem moc jistý), kde otazník zastupuje číslo od 0 do 15. Každopádně si můžete vytvořit body /dev/usbscanner? pomocí

mknod /dev/usbscanner0 c 180 48
ln -s /dev/usbscanner0 /dev/usbscanner

nebo

mknod /dev/usbscanner0 c 180 48
mknod /dev/usbscanner1 c 180 49
.
.
.
mknod /dev/usbscanner15 c 180 63

pro více skenerů. Dále nezapomeňte nastavit přístupová práva

chmod 666 /dev/usbscanner0

nebo lépe s přístupem jen pro určitou skupinu uživatelů

chmod 660 /dev/usbscanner0
addgroup scanner
chgrp scanner /dev/usbscanner0

a následně přidat do skupiny 'scanner' požadované uživatele (soubor /etc/group). Nastavení práv byste měli provést i pro /dev/usb/scanner?, pokud tyto body existují.

Konfigurace rozhraní Sane

Dalším krokem je konfigurace rozhraní Sane. Budete potřebovat balíky se jmény libsane, sane, xsane a sane-utils.

apt-get install xsane sane-utils

by mělo provést vše potřebné. Toto rozhraní však většinou již bývá nainstalované. Podle toho, jaký backend pro sane potřebujete (viz informace na webové stránce Sane) se podívejte na příslušnou manuálovou stránku, např.

man sane-plustek

a zjistíte, zda je daný model podporován přímo vaším systémem. Pokud zde není, ale Sane by ho mělo podporovat, musíte si stáhnout nejnovější ovladače pro váš backend a nejlépe také nové Sane.

Poslední verze Sane je na http://www.mostang.com/sane, backend pro Plustek je na http://www.gjaeger.de/scanner/plustek.html. Rozbalte si zdrojáky Sane a do podadresáře backend rozbalte i zdrojáky pro potřebný backend. Postup instalace je klasický:

./configure
make
make install

Když jsem toto provedl v Debianu, měl jsem tak nainstalované dvě verze knihoven pro Sane. Takto vám Sane nejspíše fungovat nebude a odstraněním původního balíčku se naruší závislosti. Proto jsem na www.apt-get.org našel neoficiální zdroj pro Sane. Do /etc/apt/sources.list můžete přidat řádek

deb http://people.debian.org/~aurel32/SANE stable main

Bohužel

apt-get update
apt-get upgrade

mi nechtělo provést upgrade. Proto jsem nejprve balíčky pro Sane odinstaloval, a potom znovu nainstaloval. Instalace se již provedla z nového zdroje.

Pokud tedy máte nainstalované i sane-utils, použijte

sane-find-scanner

Nejprve to zkuste jako root, potom jako normální uživatel. Pokud oba testy proběhnou úspěšně, máte jistotu, že jádro o vašem skeneru ví a že máte dobře nastavená přístupová práva k /dev/usbscanner nebo /dev/usb/scanner. Pokud se skener neobjeví ani s právy roota, zkontrolujte /proc/bus/usb/devices - zda existuje a co obsahuje. Jak ho vytvořit je popsáno výše, případně zkuste moduly pro USB a skener vyjmout pomocí rmmod a znovu vložit (viz. modprobe výše).

Až sem byste se měli dostat bez problémů. Příkaz sane-find-scanner najde i skenery, které Sane nepodporuje a pokud jste s tímto testem neuspěli, zřejmě nemá cenu pokračovat dál. Nyní je potřeba nastavit Sane. V souboru /etc/sane.d/dll.conf byste měli najít svůj backend a ověřit, že je odkomentovaný. Dále podle vašeho backendu editujte soubor např. /etc/sane.d/plustek.conf (mimo Debian to může být jinde). Uvádím svojí konfiguraci pro Plustek, pro jiné backendy se může lišit.

[usb]
option lampOff 5
option warmup 60
option lOffOnEnd 0

To jsou jediné řádky, které potřebujete mít odkomentované. Pokud uvedete jenom [usb], provede se autodetekce, což je asi nejlepší. Pokud to takhle nefunguje, můžete přidat čísla vendor a product, které jste dávali k modulu skeneru. Také můžete uvést bod připojení v /dev. lampOff je prodleva pro vypnutí lampy a pozor na nastavení warmup, kde bylo původně 180 vteřin. Asi půl dne jsem se divil, proč to pořád nechce skenovat a obával se chyby v ovladači, než jsem si všiml tohoto nastavení. Čekat tři minuty se mi zdá být nesmysl.

Teď zkuste

scanimage -L

což by mělo vypsat všechny připojené skenery. Pokud se povedlo i to, jste již u konce cesty. Pokud se nic nenašlo, hledejte chybu v nastavení Sane.

Závěr

Tak a to je všechno. Je to více práce než v M$ Windows (i když ani u Billa se to neobešlo bez problémů), ale na druhou stranu si dokážu představit, že v RedHatu nebo v Mandraku by stačilo zapojit a skenovat. Stačí mít nové Sane a moduly do jádra, autodetekce pak funguje dobře.

Rozhraní XSane se mi zdá lepší než leckterý Twain ovladač dodávaný se skenery. Linux navíc umožňuje dávkově zpracovávat naskenované obrázky (doostřit, upravit barvy atd.). Jak na to se můžete dočíst v seriálu o grafice, který vycházel na Rootu. Zbývá už jen doufat, že GIMP brzy doroste do kvality Photoshopu.

Jeden problém se mi ještě nepodařilo vyřešit. Pokud Debian nastartuje s vypnutým skenerem, je nutné znovu vkládat modul pro USB, aby si všiml, že už jsem skener zapnul, nebo vytáhnout a zastrčit USB kabel.

Můj postup nebyl tak přímočarý, jak je zde uveden, takže je možné, že jsem někde něco uvedl nepřesně, doufám však, že ne špatně. Na případné nedostatky můžete upozornit v diskuzi. Dále ještě uvádím jiné zdroje informací, které by vám mohly pomoci.

Související články

Genius ColorPage VIVID III pod Linuxem

Odkazy a zdroje

man sane-usb - návod na zprovoznění USB skenerů
Plustek-USB.txt - návod pro USB Plustek backend

Dokumentace jádra:


Další články z této rubriky

HW novinky: podzimní přehled #2
HW novinky: podzimní přehled #1
HW novinky: návrat skleněných ploten v HDD
HW novinky: PCI Express 4.0 prý ještě letos
HW novinky: i Skylake-X s 12 jádry používá levnou teplovodivou pastu

Diskuse k tomuto článku

13.5.2003 07:46 Karel Vitásek
Rozbalit Rozbalit vše Jednoduché
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak pravil autor v závěru, v recentních versích RedHatu a pod. stačí jen zasunout a jet....
13.5.2003 08:53 Vlastimil Ott | skóre: 66 | blog: Plastique | Opava
Rozbalit Rozbalit vše Jednoduché
Myslíte jako "ZasunoutAHrát"? ;-) --vo
Práce: Liberix, o.p.s. | Blog: OpensourceBlog.cz | Online kurz Zlatý WordPress
13.5.2003 09:52 Mti.
Rozbalit Rozbalit vše Jednoduché
plug & pray ... zastrc a prej si ... :-]
13.5.2003 09:55 Miša Balcar
Rozbalit Rozbalit vše Jednoduché
je to snad "zastrc a modli se", ne?
13.5.2003 11:01 kmarty | skóre: 15
Rozbalit Rozbalit vše devfs
Odpovědět | Sbalit | Link | Blokovat | Admin
Nechci nijak rypat(to myslim vazne, neb se Linuxem furt jenom nejak prokousavam :-) ), ale /dev filesystem nema s USB nic moc spolecneho a v pripade pokusu o rozchozeni (navic uzivetelem, pro koho by mohl byt clanek tohoto typu) nejakeho zarizeni (napr USB) by to uzivateli mohlo zkomplikovat zivot. Jinak nevim jak Vam, ale mne devfs chodi v poradku. Jen mam takovy pocit, ze "Automatically mount at boot" Vas nezbavuje povinosti mit ono mountovani zapsane ve fstab. Dale je zdrave mit nainstalovany a bezici devsfd pokud chcete mit stale jeste funkcni nazvy jako /dev/hda1 a tak. Jinak byste se mohl divat pouze na /dev/ide/host0/bus0/target0/lun0/part1 a podobne ( napr. /dev/usb/scanner0 ). Tusim ze na Mandrake (nejsem si jisty, pouzivam Debian a jinou distribuci jsem mel naposled pred cca peti roky) je devfs jiz zakladem distribuce.
13.5.2003 12:17 Ondra 'Kepi' Kudlík | skóre: 29 | Brno
Rozbalit Rozbalit vše devfs
S tím devfs bych si dal taky pozor. Sice je funkční, ale může způsobit problémy s dalšími zařízeními, takže pokud nejste odborníci, doporučuji devfs nepoužívat. Scanner pojede absolutně bez problémů i bez toho, možná akorát budete muset vytvořit zařízení, ale to je v článku popsáno...
13.5.2003 18:38 Tomáš Oberhuber | skóre: 18
Rozbalit Rozbalit vše devfs
Podle me to s USB lehce souvisi. V souboru scanner.txt je to popsane tak, ze s pouzitim devfs se body v /dev/usb vytvareji automaticky. V dokumentaci o devfs se pise, ze je to system resici problemy s adresarem /dev, napriklad velke mnozstvi zbytecnych bodu, ke kterym neni nic pripojene. Proto jsem se snazil devfs pouzit. Samozrejme je pravda, ze lze skener rozchodit i bez toho. Stejne tak ho lze ale rozchodit bez jakekoliv podpory v /dev pomoci libusb. Pokud mate tuto knihovnu nainstalovanou, sane-find-scanner se pokousi Vas skener detekovat i pomoci ni - lze to videt ve vypisu tohoto programu. Ale pouzitim libusb se pripravujeme napriklad o moznost nastaveni pristupovych prav. Zalezi pak na kazdem, co pro nej ma vyznam. Uznavam, ze to muze nekoho zmast, coz mi pri psani nedoslo. Na druhou stranu ten, kdo se v jadru moc nestoura a ma jadro z puvodni distribuce, nejspise bude mit potrebne moduly pripravene a staci mu jen stahnout nove Sane. Pak se takovym problemum nejspise vyhne.
13.5.2003 12:26 Ondra 'Kepi' Kudlík | skóre: 29 | Brno
Rozbalit Rozbalit vše Znovu zavádění modulu usb při vypnutém scanneru
Odpovědět | Sbalit | Link | Blokovat | Admin
Vy máte uhci i scanner zkompilováno jako modul, že? První možnost, proč musíte ten modul znovuzavádět by mohla být zakompilování podpory pro usb i scanner přímo do jádra. Já to tak mám a nemám žádný problém, modul scanneru parametr vendor a ten další nikdy nevyžadoval (alespoň po mě). Jinak daleko reálněji by ten problém mohl vězet právě v devfs. Moc jsem s tím nepracoval, ale pokud vím, funguje tak, že vytváří soubory v dev jen pro zařízení, která opravdu existují, ne? Pokud tomu tak je, je věc jasná. Pro váš počítač scanner neexistuje, pokud není zapojený, a když ho pak zapnete, devfs si toho možná všimnou až po znovunahrání toho usb...
13.5.2003 18:55 Tomáš Oberhuber | skóre: 18
Rozbalit Rozbalit vše Znovu zavádění modulu usb při vypnutém scanneru
Zkusim tu podporu dat primo do jadra. Mne to slo take i bez cisel vendor a product, ale v dokumentaci pro plustek je uvadeji, tak si myslim, ze by to mohlo pomoct v pripade problemu s autodetekci. Co se tyka toho devfs, chapu to taky tak, ze se pripojne body vytvareji jen pro existujici zarizeni. Ale sane-find-scanner nedetekuje nic ani pres /dev/usbscanner ani pres libusb. Mozna to tedy bude temi moduly.
CIJOML avatar 13.5.2003 18:59 CIJOML | skóre: 58 | Praha
Rozbalit Rozbalit vše Kdybys radeji pouzival hotplug
Odpovědět | Sbalit | Link | Blokovat | Admin
Kdybys radeji pouzival mostrecent hotplug, nemusel bys resit problemy s vendor a spol :)

Jen takova napoveda zacatecnikovi a BTW na devfs se vyser je to na nic :)

13.5.2003 21:26 kmarty | skóre: 15
Rozbalit Rozbalit vše Kdybys radeji pouzival hotplug
To teda nemas pravdu :-) Takovy krasny dlouhy vecery co sem si s devfs uzil... :-))
14.5.2003 00:01 jose
Rozbalit Rozbalit vše jak vypnut lampu?
Odpovědět | Sbalit | Link | Blokovat | Admin
to s tym p&p je pekna predstava.. ja som svoj benq 4300usb musel rozbiehat podobnym sposobom ako popisujete.. nebolo to vsak az tak narocne. trapi ma len jeden problem, jak donutit scanner, aby vypol v dobe necinnosti lampu.. spusti sa pri starte xsane a potom svieti, svieti az do vytiahnutia zo zastrcky. benq support pre linux nema tak skusam tu.. diky -- jose
14.5.2003 09:17 Martin Vorel | skóre: 6
Rozbalit Rozbalit vše bearpaw 1200f
Odpovědět | Sbalit | Link | Blokovat | Admin
mam scaner Mustek bearpaw 1200f ..bohuzel je 'unsuported'.. myslite ze by sel pouzit ovladac od Mustek bearpaw 1200? je nehaka jina moznost jak ho alespon omezene rozchodit? achjo . diky...

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.