I am running:
- Lenovo Thinkpad T560
- Linux Mint 18.3 Mate
- 4.10.0-42-generic #46~16.04.1-Ubuntu SMP
- EPSON PERFECTION 3170 PHOTO with USB interface
Unfortunately, this scanner is not supported by SANE. Moreover, it requires a proprietary driver and the iscan software from Epson. Both are provided for i386 (32bit) Linux systems on the Epson website:
http://download.ebz.epson.net/dsc/searc ... archModule
Note, I did not find a more recent release of iscan (Image Scan) than 2.10 that really supports my scanner.
- RPM Download
I downloaded the following RPM files:
Note, Epson does not seem to provide any source of the driver. As a result, the entire installation has to be based on i386 (32bit) systems. The compilation of the iscan software for i386 systems is not straightforward, which is the reason, why I finally dropped the idea to compile iscan.iscan-plugin-gt-9400-1.0.0-1.c2.i386.rpm (the driver)
iscan-2.10.0-1.c2.i386.rpm (the iscan software) - Open the RPM Packages
Since rpm packages are not really supported by Linux Mint and since the contents of these packages had to be adjusted for Linux Mint 18.3 Mate, it was necessary to open these packages. I have done this and all further operations after login as root.
Each command creates 2 directories, one holding the original contents (*.org) and one for the new contents with no special suffix.Code: Select all
# alien -g --scripts iscan-plugin-gt-9400-1.0.0-1.c2.i386.rpm # alien -g --scripts iscan-2.10.0-1.c2.i386.rpm
- Modification of both Packages
First of all it is necessary to edit the file creating the udev rules in the iscan software package. This modifiction is needed in order to allow non-root users to access the scanner per USB interface.
In this file I made the following changes:Code: Select all
# vim iscan-2.10.0/usr/lib/iscan/make-udev-rules
a) Replaced 'SYSFS' by 'ATTRS'
b) Replaced 'usb_device' by 'usb'
c) Added 'ENV{DEVTYPE}=="usb_device", ' at the beginning of the TEMPLATE statement
I have added the resulting rules file at the end of this post for reference.
Second, both packages have to be re-configured to allow the installation as Debian packages under Linux Mint. In order to be accepted I have made the following changes:
I appended ', amd64' to the line with the 'Architecture' statement. The resulting line became:Code: Select all
# cd <package directory> # vim debian/control
Afterwards I created the Debian packages by runningArchitecture: i386, amd64
in each package directory. As a result, new packages were created in the parent directory:Code: Select all
# debian/rules binary # cd .. # rm -rf <all created package directories>
iscan-plugin-gt-9400_1.0.0-2_amd64.deb
iscan_2.10.0-2_amd64.deb - Installation of Missing i386 Packages per Synaptic
I have installed the following additional i386 packages in order to satisfy the necessary dependencies of both iscan packages:
- libc6-i386
- libpangox-1.0-0-:i386
- libpangoxft-1.0-0-:i386
- libusb-0.1-4:i386
- libjpeg62:i386
- libatk-bridge2.0-0:i386
- libatk-adaptor:i386
- libgusb2:i386
- Installation of the iscan Debian Packages
I have installed the new Debian packages running:
I have ignored all notes about irrelevant packages. I assume they are all given because dpkg considered those new packages to be amd64 packages rather than i386 packages. And since most of the corresponding 64bit packages were already installed on my system, it found 2 packages, one for amd64 and another for i386 and complained about assumed unnecessary packages. If anyone has an idea how to create clean i386 Debian packages on amd64 system that avoid these notes, please let me know.Code: Select all
# dpkg -i iscan-plugin-gt-9400_1.0.0-2_amd64.deb # dpkg -i iscan_2.10.0-2_amd64.deb
- First Run
I have connected the scanner per USB cable and turned it on. Afterwards I have run
It took a busy CPU several seconds until the scanner awoke with some noise and the iscan window opened. I presume that in this time the software checked the USB bus for all supported scanners and created the udev rules fileCode: Select all
# iscan
I have added the contents of this file below for reference:/etc/udev/rules.d/60_iscan.rules
With this file it was also possible to run iscan as normal user, afterwards.Code: Select all
# This file is part of the "Image Scan! for Linux" binary package (or # generated automatically as part of its installation). Any changes # will be overwritten with each upgrade of the package. ACTION!="add", GOTO="iscan_rules_end" SUBSYSTEM!="usb", GOTO="iscan_rules_end" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0101", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0103", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0104", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0106", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0107", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0109", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="010a", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="010b", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="010c", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="010e", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="010f", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0110", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0112", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0116", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0118", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0119", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="011b", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="011c", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="011d", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="011e", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0121", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0122", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0126", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0128", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0129", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012a", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012b", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012c", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012d", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012e", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012f", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0801", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0802", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0805", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0806", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0807", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="080d", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="080e", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="080f", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0810", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0811", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0813", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0814", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0815", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0817", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0818", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0819", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="081a", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="081c", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="081d", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="081f", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0820", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0827", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0828", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0829", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="082a", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="082b", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="082e", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="082f", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0830", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0833", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0835", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0836", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0837", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0838", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0839", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="083a", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="083c", MODE="0666" ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="083f", MODE="0666" LABEL="iscan_rules_end"
- Debugging of the 60_iscan.rules
In this connection it may be interesting to learn how to debug the iscan rules file for correct syntax. In order to do so, I have restarted the udev daemon "systemd-udevd" and set its internal log level to "debug" per:
Afterwards I monitored "/var/log/syslog" while un-plugging and plugging the USB cable to the scanner. The resulting notes in the syslog file helped a lot to correct the rules file.Code: Select all
# udevadm control -R --log-priority=6
Regards
Tom