[sane-devel] cannon p208 raspberian

Olaf Meeuwissen paddy-hack at member.fsf.org
Fri Nov 27 09:49:41 UTC 2015

Hi Stan,

Sorry for the late reply.  I meant to follow-up earlier.

Stan writes:

> Hi,
> does anyone have an experience with using sane on rasperian OS?

Not me.

> I have found officil linux driver for cannon P-208 scanner.

You may want to mention where so others can find it too.

> Followed installation instruction and compiled module with specific Sane 
> backend sane-backends-1.0.19

1.0.19?  That's ancient, but not necessarily problematic.

> but it did not helped anything.
> Most strange is that sane-find-scanner reports as scanner network 
> devices but not the real scanner.

Please note that sane-find-scanner is mostly just a heuristic.  It
hasn't got much attention in the last, oh, four years.

I had a peek at the source code basically reports *any* USB device with
a vendor specific class as a scanner.  While many USB scanners *are* in
fact devices in the vendor specific class, the reverse is of course not
necessarily true.

> What to do with this?

I wouldn't care too much about the results of sane-find-scanner.

> [...]
> pi at raspberrypi ~ $ sudo scanimage -L
> [bjnp] create_broadcast_socket: bind socket to local address failed - 
> Cannot assign requested address
> No scanners were identified. If you were expecting something different,
> check that the scanner is plugged in, turned on and detected by the
> sane-find-scanner tool (if appropriate). Please read the documentation
> which came with this software (README, FAQ, manpages).
> pi at raspberrypi ~ $

As you have installed the "official driver", one would assume the above
would find your scanner.  It doesn't.  Often this is due to the driver
getting installed in a place where scanimage won't find it.  Assuming
that rasperian is like most Linux distributions, the "drivers" are very
likely installed in /usr/lib/sane/ or /usr/lib/*/sane/ (where the * is
shorthand for an architecture/OS specific name, on my system that would
be x86_64-linux-gnu).

If your "official driver" is installed in any of these places, you may
need to add it to dll.conf (normally installed in /etc/sane.d/) to solve
your problem.

If your "official driver" ended up getting installed some other place,
e.g. /usr/local/lib/sane/, you can:
 - add symbolic links from /usr/lib/sane/ to the installed location, or
 - set and export LD_LIBRARY_PATH to include the directory your driver
   was installed to
You still may have to add it to dll.conf before things work, though.

> On 22/11/15 2:58 PM, Stan wrote:
>> [...]
>> I have also found that product id is slightly different for my device to
>> the one in cannon config, for my device it reports "e" at the end
>> instead of "c"
>> [...]
>> so I added line with my product id to  /etc/sane.d/canon_dr.conf
>> # P-208
>> usb 0x1083 0x164c
>> usb 0x1083 0x164e

If the canon_dr backend supports your scanner that should to the trick.
But, seeing that you had to add them, we don't know yet whether the
canon_dr backend actually does.

>> not sure for what this exatly is but I have also created
>> /lib/udev/rules.d/40-libsane.rules

# These are used to set device access permissions.  You will need to
# replug your scanner to make sure the permissions are updated.

>> with
>> # Canon P208
>> ATTRS{idVendor}=="1083", ATTRS{idProduct}=="164e",
>> ENV{libsane_matched}="yes"
>> # Canon P208
>> ATTRS{idVendor}=="1083", ATTRS{idProduct}=="164c",
>> ENV{libsane_matched}="yes"

Assuming you followed the pattern of the installed libsane.rules, that
should do.

>> Not sure what else to check.

You might want to try running scanimage so that it produces debugging
output.  Maybe that will give other people a clue.  To do so for the
canon_dr backend

  SANE_DEBUG_CANON_DR=127 scanimage -L

For the "official driver" all I can do is guess.  I would try something
like for the canon_dr backend but with the CANON_DR part replaced by the
driver name in ALLCAPS (or check the source code for a hint to turn on

By the way, to check if scanimage finds your "official driver", you can

  SANE_DEBUG_DLL=5 scanimage -L

# Bigger numbers normally mean more debugging output.

Hope this helps,
Olaf Meeuwissen, LPIC-2            FSF Associate Member since 2004-01-27
Support Free Software               Support the Free Software Foundation
https://my.fsf.org/donate                        https://my.fsf.org/join
 GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13  F43E B8A4 A88A F84A 2DD9

More information about the sane-devel mailing list