Difference between revisions of "SANE"

From ArchWiki
Jump to navigation Jump to search
Line 69: Line 69:
*use {{Codeline|pacman -Ss}} to search for keywords such as "sane" or "scanner"
*use {{Codeline|pacman -Ss}} to search for keywords such as "sane" or "scanner"
*see the [http://www.sane-project.org/sane-frontends.html list of frontends] on the sane-project website
*see the [http://www.sane-project.org/sane-frontends.html list of frontends] on the sane-project website
xsane has an OCR(Optical character recognition) function. To use it, you need to install "gocr".
# pacman -S xsane

Revision as of 07:13, 14 May 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی


Sane provides a library and a command-line tool to use scanners under GNU/Linux.

Step 1: Check if sane supports your scanner

Check if sane supports your scanner

Step 2: Installation

Template:Codeline is available in the Template:Codeline repository so:

# pacman -S sane

Step 3: Configuration

Users that need to use a scanner should be part of the group Template:Codeline. Use Template:Codeline to add a user to a group:

# gpasswd -a username scanner
Note: You need to logout/login for this to take effect.

Now you can try to see if sane recognizes your scanner

$ scanimage -L

If that fails, check that your scanner is plugged into the computer. You also might have to unplug/plug your scanner for Template:Filename to recognize your scanner.

for HP hardware

For HP hardware you may also need to install the Template:Codeline package which is in the Template:Codeline repository:

# pacman -S hplip

for Brother hardware

In order to install a Brother Scanner or Printer/Scanner Combo you need the right driver (which can be found in the AUR). There are only 4 drivers to choose from (brscan1-4) in order to find the right one you should search for your model at the brother homepage.

After you installed the driver you need to run

# /usr/local/Brother/sane/setupSaneScan2 -i

so the drivers/scanner are recognized by sane

Step 4: Firmware

Note: This section is only needed if you need to upload firmware to your scanner.

Get the firmware

Note: If you don't have an install CD, you might find the required software on the scanner manufacturer's website.

Extract the file from your scanner install CD

Firmwares usually have the Template:Codeline extension.

But it may also be in:

Install the firmware

Firstly you need to put the firmware someplace safe, it is recommended to put it in a subdirectory of Template:Filename.

Then you need to tell sane where the firmware is:

If the backend of your scanner is not part of the sane package (such as hpaio.conf which is part of hplip), you need to uncomment the relevant entry in /etc/sane.d/dll.d/hplip.

Step 5: Install some frontend(s)

XSane provides a GTK-based frontend to Sane. It is available in the Template:Codeline repository.

# pacman -S xsane

Other frontends exist, to find them you can:

xsane has an OCR(Optical character recognition) function. To use it, you need to install "gocr".

# pacman -S xsane


Invalid argument

If you get an "Invalid argument" error with xsane or another sane front-end, one reason could be that you need a firmware (see above for details).

Another reason can be that multiple backends support (or pretend to support) your scanner, and sane chooses one that doesn't after all. This has happend with older Epson scanners and the epson2 resp. epson backends. In this case, the solution is to comment out the unwanted backend in /etc/sane.d/dll.conf. In the Epson case, that would be to change




Permission problem

If you see your scanner only when doing Template:Codeline you might get it working by adding your user to Template:Codeline and/or Template:Codeline group.

# gpasswd -a username scanner
# gpasswd -a username lp

This is reported to work on HP all-in-one models (e.g., PSC 1315 and PSC 2355).

Also you could try to change permission of usb device but this is not recommended, a better solution is to fix the Udev rules so that your scanner is recognized.


First, switch to root and check connected usb devices with command 'lsusb'

#[root@archlinux ~]# lsusb 
#Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
#Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
#Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
#Bus 003 Device 003: ID 04d9:1603 Holtek Semiconductor, Inc. 
#Bus 003 Device 002: ID 04fc:0538 Sunplus Technology Co., Ltd 
#Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
#Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
#Bus 001 Device 006: ID 03f0:2504 Hewlett-Packard 
#Bus 001 Device 002: ID 046d:0802 Logitech, Inc. Webcam C200
#Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
#[root@archlinux ~]# 

In our example we see scanner - 'Bus 001 Device 006: ID 03f0:2504 Hewlett-Packard'

Now edit the file vi /lib/udev/rules.d/53-sane.rules and look for the first part of the ID number found previously and check if there is a line that also reports the second part of the number (model numer), in this example 2504. If not found change or copy a line and enter the idVendor and idProduct of your scanner, in this example it would be:

# Hewlett-Packard ScanJet 4100C
ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="2504", MODE="0664", GROUP="scanner",

Save the file, plug out and back in your scanner and the file permissions should be now correct.

Another tip, is that you can add your device (scanner) in backend file:

In example we add string 'usb 0x03f0 0x2504' to file '/etc/sane.d/hp4200.conf'

Now file looks like this:

#[root@archlinux ~]# cat /etc/sane.d/hp4200.conf
# Configuration file for the hp4200 backend
# HP4200
#usb 0x03f0 0x0105
usb 0x03f0 0x2504
[root@archlinux ~]#

DBus problem

If you get following problem:

arguments to dbus_connection_send() were incorrect, assertion "connection != NULL" failed in file dbus-connection.c

Make sure dbus is actually running:

pgrep -l dbus

If it isn't, start it with:

sudo /etc/rc.d/dbus start

Add Template:Codeline to groups Template:Codeline and Template:Codeline:

# gpasswd -a dbus lp
# gpasswd -a dbus scanner

(Note that dbus must be stopped and started for the group changes take effect.)

Slow startup

If you encounter slow startup issue (e.g. xsane or scanimage -L take a lot to find scanner) it may be that more than one driver supporting it is available.

Have a look at /etc/sane.d/dll.conf and try commenting out one (e.g. you may have epson, epson2 and epkowa enabled at the same time, try leaving only epson or epkowa uncommented)