I spent an afternoon staring at LINUX forums to get my scanner working. There was a bug introduced in Ubuntu 18.04 that hit Canon scanners, mine is a CanoScan LIDE 200. Symptom was that there was a thick vertical bar in the middle of the image, being black when scanning grey, else being randomly coloured. It is a known bug, nevertheless a system-update did not fix it, because the fix might open a bug for another type of scanner (at least this is what I understood from the forums).
I use the graphical xsane scanner tool,
which is a frontend for the
sane-genesys
backend drivers. The bug was reported to be in the backend,
which is called "libsane1".
To fix it I followed the advices given on a
launchpad web page,
it was the entry of date
2018-12-01,
written by gary17
, that helped.
But of course not without problems.
Commands to fix libsane1 on Ubuntu 18.04
Following were the commands I launched, in a terminal window, to get my scanner working.
sudo apt-get install dpkg-dev fakeroot
This installs two needed libraries, unless they are already installed. They serve for compiling and building Debian packages (Ubuntu is a Debian derivate).
cd $HOME/programs/ mkdir sanebackend-1.0.27-fix cd sanebackend-1.0.27-fix apt-get source libsane1
We need to get the current source code of the genesys drivers,
here I create a directory where to put these sources, and change into it.
Then I download the sources by apt-get
,
not as super-user because this is not needed to compile them,
and I don't want files in my user-directory that belong to root.
A decent developer already found the problem and published the solution. So we just need to patch the source, here is the diff-text:
2075c2075,2079 < if (dev->model->flags & GENESYS_FLAG_SHADING_REPARK && dev->model->cmd_set->rewind) --- > if (dev->model->flags & GENESYS_FLAG_SHADING_REPARK && dev->model->cmd_set->slow_back_home) > { > status = dev->model->cmd_set->slow_back_home (dev, dev->model->flags); > } > else if (dev->model->flags & GENESYS_FLAG_SHADING_REPARK && dev->model->cmd_set->rewind)
Save this into file genesys.c.diff, or store the contents of this link into it.
patch sane-backends-1.0.27/backend/genesys.c < genesys.c.diff
This command fixes the source code using the diff-file. Now we need to build and install.
sudo apt-get build-dep libsane1
This prepares all system-dependencies for package libsane1
so that we can build it.
build-dep
is an apt-get
command just like install
and remove
.
cd sane-backends-1.0.27 ./configure dpkg-buildpackage -rfakeroot -uc -b
Here I change into the source-directory of libsane1
and "configure" it,
which is a platfom-preparation of the "build". Makefiles get generated. This takes a while.
The final dpkg-buildpackage
command starts the compilation.
This again will take some time, and output a lot of compiler messages.
echo $?
This command outputs the exit-code of the latest command, in this case the compilation. If it is NOT zero (0 is positive!), something went wrong. I got 2 as exit code, and saw following error message:
.... kpathsea: Running mktexmf ptmr7t ! I can't find file `ptmr7t'. ....
This happened on generating "manpages", i.e. the UNIX documentation for the library. As I did not know how I could bypass this, and the new driver was not built due to this failing sub-build, I tried to find hints about this error message. I found out that it originates from TeX statements like the following:
\usepackage{times,mathptmx,courier}
And I found out that the times font is obsolete. So a missing font for the documentation made the build of a scanner driver fail! Was it called dependency-hell :-?
I searched where the font was used, and found it just once in file
doc/sane.tex
in line 3:
\documentclass[11pt]{report} \usepackage{times,graphicx,url} % ....
So I searched for another font that I could apply there, and I found it on a
TeX forum.
I edited the doc/sane.tex
file and replaced "times" by "helvet".
Then I ran again the compilation:
dpkg-buildpackage -rfakeroot -uc -b
Yes, it failed again. This time because of a missing m4/libtool.m4
file.
I tried to run ./configure
again, but there was no such script any more.
Instead of starting all over I found a workaround by copying an existing libtool.m4
:
cp /usr/share/aclocal/libtool.m4 m4/
Another compilation now finished successfully:
dpkg-buildpackage -rfakeroot -uc -b ..... echo $? 0
The exit code 0 reports a successful build.
The resulting Debian-package was in ../libsane-dev_1.0.27-1~experimental3ubuntu2_amd64.deb
.
I installed this package into the operating-system by following command:
cd .. sudo dpkg -i libsane1_1.0.27-1~experimental3ubuntu2_amd64.deb
It finished successfully. Now I started xsane and tried to scan a page, without rebooting the system:
No vertical bar showed any more!
To protect my fix against system-updates I launched this command:
sudo apt-mark hold libsane1
Response was: libsane1 set on hold.
Hope this will be respected by the Ubuntu updater!
Else I will have to come back here and do the same again,
until they find out how to fix this bug for all types of scanners.
Resume
Using an open-source operating system may cause lost afternoons :-)
But why did I "stare" at the LINUX forums?
Because these entries are missing quality, they ...
- talk too much jargon, slang, lingo, gobbledygook
- don't mention the risks, e.g. when downgrading a library
- don't explain the command lines, and what they are for
- don't tell the expected outcome, i.e. how to check whether a command worked or not
- are incomplete sometimes
I spent 90% of that afternoon trying to understand instructions and considering risks, only 10% with real editing work. So, does quality of communication count?
Keine Kommentare:
Kommentar veröffentlichen