Portál AbcLinuxu, 4. května 2025 15:40
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.
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.
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.
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
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.
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.
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í.
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.
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.
man sane-usb
- návod na zprovoznění USB skenerůDokumentace jádra:
Documentation/usb/scanner.txt
Documentation/filesystems/devfs/README
Jen takova napoveda zacatecnikovi a BTW na devfs se vyser je to na nic :)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.