Updated Plustek backend and added code for alternative CIS calibration.

All the supported CanoScan devices should work now correctly.
Moved the Plustek parallelport support into a separate backend: plustek_pp.
Added new backend for Plustek ASIC 9600x/9800x based parallelport scanner.
merge-requests/1/head
Gerhard Jaeger 2003-09-23 07:09:19 +00:00
rodzic b98ec23929
commit 86cead990d
8 zmienionych plików z 687 dodań i 9 usunięć

Wyświetl plik

@ -0,0 +1 @@
11

385
doc/plustek/FAQ 100644
Wyświetl plik

@ -0,0 +1,385 @@
Plustek-Driver TROUBLESHOOTING/FAQ - 19.04.2001
-----------------------------------------------
The driver exists now since March 2000, this is the first trial to setup
a FAQ. This leads into the following:
First we have a part, which is more a troubleshooting section and the second
one is the FAQ.
To search through this text, search for "SYMPTOM" or "Q:".
If you have some more FAQ entries, let me know <gerhard@gjaeger.de>
THANKS to Jochen <jochen@puchalla-online.de>, who roamed through the
mailing-list and gathered the different questions.
*******************************************************************************
* TROUBLE-SHOOTING *
* *
* DRIVER TOPICS *
*******************************************************************************
SYMPTOM: "kernel-module version mismatch"
--------
"When I try to "make load" I get an error"
/sbin/modprobe pt_drv || exit 1
/lib/modules/2.2.14-6.0.6/misc/pt_drv.o: kernel-module version mismatch
/lib/modules/2.2.14-6.0.1/misc/pt_drv.o was compiled
for kernel version 2.2.14-5.0
while this kernel is version 2.2.14-6.0.1.
PROBLEM:
--------
You're using the wrong Kernel-header files.
The path
/usr/include/linux is a link to
/usr/src/linux/include/linux and
/usr/src/linux is normally a link to your current
kernel, i.e:
/usr/src/linux-2.2.14
If you now upgrade your kernel and you have
forgotten to correct the link /usr/src/linux, then
every kernel-module you build outside the
kernelsource structure will include the wrong
version information.
SOLUTION:
---------
Set the link /usr/src/linux
to your current kernel-source tree before recompiling
kernel-modules like pt_drv, then your version mismatch
problem should be solved.
SYMPTOM: "Device or resource busy"
--------
Any attempt to "modprobe" or "make load" the driver leads
to this message.
PROBLEM:
--------
The driver refuses to load. During startup, the driver performs
some tests according to the parallel port and the connected
scanners.
If the parallel port is not supported or the scanner cannot be
found, the driver returns an error and the system will report
"device or resource busy"
SOLUTION:
---------
There's no way to provide a general solution. First of all
you should check your connections and the parallel port.
Also check power for your scanner.
If the problem still exists, enable the debug-messages of the
pt_drv module (see INSTALL).
Then check the messages after loading or send the output to
the mailing list.
Most of these problems are related to HW-problems. Before
giving up, check the scanner under Windows (not really a
good advice I know, but it helps to find HW-damage).
There was also one case were the internal plugs of the parport
connection were wrong...
SYMPTOM: "Unresolved symbols"
--------
"make load" or "modprobe pt_drv" produces this message:
/sbin/modprobe pt_drv || exit 1
/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_unregister_device
/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_enumerate
/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_register_device
/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_claim
/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_release
/lib/modules/2.2.14-5.0/misc/pt_drv.o: insmod
/lib/modules/2.2.14-5.0/misc/pt_drv.o failed
PROBLEM:
--------
The driver needs at least the parport_pc and the parport modules
to work. They MUST be loaded prior to pt_drv. If these modules
are not loaded you get this message.
SOLUTION:
---------
Simply load the parport module. You can add this dependency to
your /etc/modules.conf (or /etc/conf.modules) file (see INSTALL).
Then everytime you load pt_drv with modprobe, parport will be loaded
automatically. After modifying this file, call
depmod -va
SYMPTOM: Scanner makes awful noise
--------
PROBLEM:
--------
This can have two major causes:
- You have an ASIC96001/3 based scanner, then the sensor hits the
scanbed: !!! TURN OFF SCANNER POWER !!!
- You have an ASIC98001 based scanner, then the motor control does
not work correctly --> hit the cancel button
SOLUTION:
---------
For the first case (ASIC 96001/3), there's no solution available. This
happens, when the driver can't keep track of the stepper motor. The image
you get is normally unusable.
The second case is often reported when the printer driver lp.o is
already loaded. So remove lp.o before loading pt_drv.
SYMPTOM: Printer starts to print while scanning
--------
PROBLEM:
--------
It has been reported, that some printers (esp. HP printers) start to
print, even during startup of the driver. This is a problem to printers
which use a bidirectional protocol for talking with the system.
SOLUTION:
---------
There is no possibility to handle this problem inside the driver.
One possibility is to switch off the bidirectional communication of the
printer. The other one is to connect the printer to another parallel port.
*******************************************************************************
* SANE-topics *
*******************************************************************************
Here you will not find how to setup xscanimage to work with GIMP or
how to compile sane to obtain xscanimage, for such questions, please
refer to the mailing lists at SANE (http://www.mostang.com/sane)
SYMPTOM: error in loading shared libraries: libsane.so.1: cannot open
-------- shared object file: No such file or directory
PROBLEM:
--------
The shared libraries for SANE have been installed to a
directory which is not in your "library path"
SOLUTION:
---------
SANE installs its shared libraries to PREFIX/lib/sane.
PREFIX is in general /usr or /usr/local. You should
either add the path to your /etc/ld.so.conf file or
set links to the libraries from a wellknown lib-path.
(i.e. ln -s /usr/lib/sane/libsane.so.1 /usr/lib/libsane.so.1)
In any case you should run "ldconfig -v"
SYMPTOM: "no SANE devices found"
--------
While testing with "scanimage -L" nothing happens. And when starting scanimage
this message is displayed.
PROBLEM:
--------
The frontend cannot find any sane-device, this might have several causes:
- the driver is not loaded
- you have no access to the driver
- the backend is not enabled
- the driver is not specified
- version conflict between the loaded driver and the backend
SOLUTION:
---------
Driver not loaded: check "cat /proc/pt_drv" if this does not exist, load
the driver (see INSTALL)
No access to the driver: check "ls -l /dev/pt_drv*" and you should get
crw-rw-r-- 1 root root 40, 0 Aug 29 15:18 /dev/pt_drv
crw-rw-r-- 1 root root 40, 0 Aug 29 15:18 /dev/pt_drv0
crw-rw-r-- 1 root root 40, 1 Aug 29 15:18 /dev/pt_drv1
crw-rw-r-- 1 root root 40, 2 Aug 29 15:18 /dev/pt_drv2
crw-rw-r-- 1 root root 40, 3 Aug 29 15:18 /dev/pt_drv3
If not, call "make load" in the driver source directory. This call sometimes
fails, so you might create the entries by using mknod:
mknod -m 0664 /dev/pt_drv c 40 0
mknod -m 0664 /dev/pt_drv0 c 40 0
mknod -m 0664 /dev/pt_drv1 c 40 1
mknod -m 0664 /dev/pt_drv2 c 40 2
mknod -m 0664 /dev/pt_drv3 c 40 3
The backend is not enabled: Check the SANE configuration in /etc/sane.d,
/usr/etc/sane.d or /usr/local/etc/sane.d (depending on your installation).
Your dll.conf MUST include an enabled "plustek" entry (no "#" in front of
that line)
The driver is not specified: Check the sane configuration (see above)
for the file plustek.conf and make sure that it contains at least
/dev/pt_drv as entry.
Version conflict: After enabling the SANE debug messages you will
get something like upon starting scanimage:
ioctl PT_DRV_OPEN_DEVICE failed(-9019)
Version problem, please recompile driver!
In this case, you MUST recompile the backend AND the driver and reinstall
both. This feature makes sure, that both always will use the same ioctl
interface.
PROBLEM:
--------
I have SANE-1.0.4 and there's no backend-directory after unpacking, so
what to do?
SOLUTION:
---------
You're wrong there is a backend directory!!!
Since SANE-1.0.4, there are two packages:
sane-backends
sane-frontends
For the installation, you need the backend tarball. This should give
you something like:
sane-1.0.4/sane-backends
and there below sane-backends is the backend directory. So you have
to unpack the plustek-sane...tgz in sane-backends.
*******************************************************************************
* F A Q *
*******************************************************************************
Q: What does "Turbo" mean ?
A: Turbo does not mean, that the scanner is faster ;-)
There are currently three OpticPro9636P Scanners.
OP9636P
OP9636P+
OP9636PTurbo
The + and the Turbo models are quite the same and the difference between
the Turbo and the non-Turbo is the scan-sensor. The Turbo uses the same
like the newer OP9636T/12000T and the non-Turbo uses the older ones
from the OP9630....
Q: Is it possible to use the front-button of my Plustek 9630P ?
A: It is possible since version 0.37. After loading the driver,
use the proc filesystem to get the button value:
cat /proc/pt_drv/device0/button0
Q: Is it possible to use the scanner in gimp ?
A: You should be able to use xscanimage with gimp:
1. Login as root
2. Go into the gimp plug-in directory
(on SuSE it is: /usr/lib/gimp/1.1/plug-ins/ )
3. Find xscanimage : which xscanimage
4. Create a symbolic link to xscanimage :
ln -s "/path/to/"xscanimage xscanimage
5. logout as root
Now call gimp, in the xtns menu you should find
now the Acquire Image menu entry. That's all.
If not, start gimp from an xterm and have a look at the output.
Q: Is there any way to load the plustek_driver at bootup-time?
A: Normally, there is no need to do so, because once you
altered your /etc/conf.modules file (or /etc/modules.conf)
and added the suggested stuff (see INSTALL file), you won't
have to worry about loading the driver. It happens automagically. ;-)
The driver will be loaded when needed (and eventually
removed after a specific time of not using it).
Nevertheless, another possibility is to do a modprobe pt_drv in the
/etc/rc.d/boot.local (using SuSE) or
/etc/rc.d/rc.local (using RedHat or Mandrake) file
So the driver will be loaded at bootup-time...
!!! YOUR SCANNER MUST BE ONLINE during power-up then !!!
Q: I wonder if Mandrake 7.1's sane rpm file has this support already built in.
My scanner light is coming on yet Xscanimage seems to report that there
is no scanner present.
A: The backend code will be included in Version 1.0.3 of sane and
AFAIK Mandrake 7.1 only includes 1.0.2.
Anyway go to the plustek-driver download page at
http://home.t-online.de/home/g-jaeger/plustek.html
download and install the driver.
Q: Mandrake installs sane by default at install-time.
Is there a way to install the driver with the preinstalled sane
or should the preinstalled sane be removed first?
If so, how do I remove the preinstalled sane?
A: I recommend to uninstall the previous one.
I think Mandrake uses RPM for managing the packages. To remove sane
do the following (as root)
Ask for all installed packages and filter sane:
rpm -qa | grep sane
you should get something like this:
sane-1.0.1-94
Now remove this package:
rpm -e sane-1.0.1-94
After theses steps, sane should be removed.
I'm not sure, but you might have to remove the /etc/sane.d manually...
Now got to your sane-1.0.3 stuff and reinstall this
as described. Before using, you might have a look
at the dll.conf and enable only the plustek backend.
Q: Now that there's a sane 1.0.3, how do i uninstall sane 1.0.2?
Or can i install it over?
A: In general you can install it over. BUT this has caused
quite a lot of trouble, so I recommend to remove the 1.0.2
completely and install 1.0.3...
try the rpm-tool:
Get a list of the installed packages and filter out sane:
rpm -qa | grep sane
You should get something like:
sane-1.0.2-48
Then use rpm to remove sane:
rpm -e sane-1.0.2-48
The other way is:
rm -rf /etc/sane.d
rm -rf /usr/lib/sane
rm -rf /usr/lib/libsane*
rm -rf /usr/include/sane
rm -rf /usr/etc/sane.d
rm -rf /usr/share/sane*
rm -rf /usr/local/lib/sane
rm -rf /usr/local/lib/libsane*
rm -rf /usr/local/include/sane
rm -rf /usr/local/etc/sane.d
rm -rf /usr/local/share/sane*
This should cover all the directories where maybe some
sane files are installed...

Wyświetl plik

@ -0,0 +1,254 @@
# Makefile for the plustek scanner driver (kernel-module)
#
###############################################################################
#
# define the directories
#
HOME_DIR := .
SRC_DIR := $(HOME_DIR)/../../backend
INC_DIR := $(SRC_DIR)
OBJ_DIR := $(HOME_DIR)/obj
DOC_DIR := $(HOME_DIR)/doc
BACKEND := $(SRC_DIR)
#
# define the used tools
#
MD = mkdir -p
CC = gcc
TAR = tar
REF = cxref
#
# Comment/uncomment the following line to disable/enable debugging
# can also be set by commandline parameter: make all DEBUG=y
#
#DEBUG = y
#
# common compiler options
#
OPT = -fomit-frame-pointer -D_PTDRV_V1=$(VERSION1) \
-D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD)
#
# cxref options
#
REFOPT = -xref-all -index-all -html32
#
# Comment out if you are not running SMP. Someone take this out of here
# when the SMP stuff gets moved out of the kernel Makefile.
# SMP = 1
# SMP_PROF = 1
#
# add the following to get assembly listing
# -Wa,-alh,-L -g
#
#
#
ifeq ($(LINUXVERSION),)
LINUXVERSION = $(shell uname -r)
endif
VERSION0 = $(shell cat VERSION0)
VERSION1 = $(shell cat VERSION1)
BUILD = $(shell cat BUILD)
# Change it here or specify it on the "make" commandline
ifeq ($(HEADER_PATH),)
MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
ifeq ($(MACHTYPE),1)
# debian
HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
else
# redhat, slackware
HEADER_PATH = /usr/src/linux/include
endif
# HEADER_PATH = /usr/include
endif
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
else
DEBFLAGS = -O2
endif
#
# the new style reference
#
K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
#
# try to autodetect if we can use the new style header include references
#
KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
echo $(K24_HEADER_PATH); \
else \
echo $(HEADER_PATH); \
fi; )
#
# seems to be necessary for kernels 2.4.x
#
MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
echo $(KERNEL_HEADERS)/linux/modversions.h ; \
else \
echo $(KERNEL_HEADERS)/linux/modsetver.h ; \
fi )
MODFLAGS = -DMODULE
#
# set MODVERSIONS if the kernel uses it
#
VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
$(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
ifeq ($(VERSUSED),1)
MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
endif
WARNFLAGS = -Wall -Wstrict-prototypes
CFLAGS = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
MODLIB = /lib/modules/$(LINUXVERSION)
ifdef SMP
CFLAGS += -D__SMP__
ifdef SMP_PROF
CFLAGS += -D__SMP_PROF__
endif
endif
TARGET = pt_drv
OBJ = $(TARGET).o
NAMES := dac detect genericio image map misc models io procfs
NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
NAMES := $(addprefix plustek-pp_, $(NAMES))
SRCS := $(addprefix $(SRC_DIR)/, $(NAMES))
SRCS := $(addsuffix .c, $(SRCS))
OBJS := $(addprefix $(OBJ_DIR)/, $(NAMES))
OBJS := $(addsuffix .o, $(OBJS))
INCS := scan dbg types scandata procs hwdefs sysdep
INCS := $(addsuffix .h, $(INCS))
HDRS = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
#
# the header files we need from the backend
#
BACKINCS := plustek-share.h
BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
group = "root"
mode = "644"
info:
@clear
@echo "Makefile to create the Plustek-Scanner kernel-module:"
@echo "all ... builds the module"
@echo "all DEBUG=y ... builds the module with debug-messages enabled"
@echo "clean ... cleans up the show"
@echo "install ... installs the module to the library path"
@echo "uninstall ... removes the module from the library path"
@echo "load ... tries to load the module and creates device nodes"
@echo "unload ... unloads the module"
all: .depend chkdir $(TARGET).o
#
# create object directory
#
.PHONY : chkdir
chkdir:
@-$(MD) $(OBJ_DIR)
@-$(MD) $(DOC_DIR)
$(TARGET).o: $(OBJS)
$(LD) -r $^ -o $@
$(OBJS): Makefile.module $(HDRS) $(BACKINCS)
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/ptdrv.o: VERSION1 VERSION0
#
# copy the driver to the modules directory
#
install:
mkdir -p /lib/modules/$(LINUXVERSION)/misc
install -c -m $(mode) $(TARGET).o /lib/modules/$(LINUXVERSION)/misc
/sbin/depmod -a
#
#
#
uninstall:
rm -f /lib/modules/$(LINUXVERSION)/misc/$(TARGET).o
#
# use modprobe to load the driver, remember to set the
# parameter in /etc/conf.modules (see INSTALL for more details)
#
load: /lib/modules/$(LINUXVERSION)/misc/$(TARGET).o
# invoke modprobe with all arguments we got
/sbin/modprobe $(TARGET) || exit 1
# Remove stale nodes and replace them, then give gid and perms
rm -f /dev/$(TARGET)*
# when using the devfs support, we check the /dev/scanner entries
# and only create links to the devfs nodes
# at least we create one link
@if [ -e /dev/scanner/$(TARGET)* ]; then \
ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
for name in `ls /dev/scanner | grep $(TARGET)`; do \
ln -s /dev/scanner/$$name /dev/$$name ; \
done \
else \
mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
\
chgrp $(group) /dev/$(TARGET)*; \
chmod $(mode) /dev/$(TARGET)*; \
fi
#
# unload the driver
#
unload:
/sbin/modprobe -r $(TARGET) || exit 1
# Remove stale nodes
rm -f /dev/$(TARGET)*
#
# create reference docu
#
doc: chkdir
$(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
-D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
-D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
clean:
@-rm -f $(OBJ_DIR)/*.o .depend depend dep $(OBJ) $(REF).* *.html
@-rm -rf $(OBJ_DIR)
@-rm -rf $(DOC_DIR)
depend .depend dep:
$(CC) $(CFLAGS) -M $(SRCS) > $@
ifeq (.depend,$(wildcard .depend))
#include .depend
endif

Wyświetl plik

@ -0,0 +1,23 @@
Version 0.42-11
TODO (in general):
- more documentation/comments on the different functions
- remove/check the CHECK marks
- add additional button handler
- Move documents to its correct SANE place
- ADD: Adjustment of the scan area
- checking timeout conditions (MiscCheckTimer !) and handle them correctly
- test concurrency between scanner and printer on the same port
- test interaction with CUPS
- better dither maps
- let the 96001/3 based models work with the highest available
phys. resolution
- make the backtrace work for ASIC 96001/3 based models
- Update the IOCTL interface and remove some old structs (CmdBlk)
- Create the modes out of the capability list of each device
- FIX: P9636 problem (detected as OP12000)
- FIX: Genius VividPro II Film, Halftone/Gray > 450 dpi didn't work
- make A3I work correctly

Wyświetl plik

@ -1,4 +1,4 @@
Plustek-USB.txt (2003-05-08) Gerhard Jäger <gerhard@gjaeger.de>
Plustek-USB.txt (2003-17-09) Gerhard Jäger <gerhard@gjaeger.de>
================================================================
NOTE:
@ -77,6 +77,13 @@ Product ID Device-description and status
0x0060 UMAX 3400/3450 - working (TPA on 3450 not supported)
0x0160 UMAX 5400 - working
COMPAQ
======
Vendor ID: 0x049F
Product ID Device-description and status
0x001A S4-100 - working, identical with UMAX 3400
CANON
=====
Vendor ID: 0x04A9
@ -84,9 +91,9 @@ Vendor ID: 0x04A9
Product ID Device-description and status
0x???? FB620U - not integrated
0x2206 N650U - working
0x2207 N1220U - mostly tested
0x220D N670U - mostly working
0x220E N1240U - mostly working
0x2207 N1220U - working
0x220D N670U/LiDE20 - working
0x220E N1240U/LiDE30 - working
How to use and configure the Plustek USB backend
@ -140,7 +147,7 @@ tar xvzf /tmp/plustek-sane-0.45-1.tar.gz
Now do the ./configure step...
Especially for SuSE with a preinstalled SANE-RPM:
./configure --prefix=/usr --sysconfdir=/etc
./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --infodir=/usr/share/info
Then do the make step and after that as root user perform the make install
step.

Wyświetl plik

@ -1,8 +1,14 @@
Plustek.changes (2003-05-08) Gerhard Jäger <gerhard@gjaeger.de>
Plustek.changes (2003-22-09) Gerhard Jäger <gerhard@gjaeger.de>
===============================================================
V 0.45 (2003-05-08)
V 0.46 (2003-15-09)
-------------------
- Added alternate calibration for CIS devices
- Added coarse calibration data-cache
- Moved parallelport code to extra backend file plustek_pp
V 0.45 (2003-05-08)
-------------------
- Starting this changelog
- Updates since V 0.44:
* better CIS device support

Wyświetl plik

@ -0,0 +1 @@
42

Wyświetl plik

@ -0,0 +1 @@
0