Scanner utility and SANE backend for Canon PIXMA MP series

Copyright © 2006-2007 Wittawat Yamwong <mailto:wy-pixma -at- arcor -dot- de>
Homepage: http://home.arcor.de/wittawat/pixma/
Last modified: Sat Jul 21 17:18:42 CEST 2007

News

Warning - If you grant a group a full permission to access the scanner (by using udev, hotplug, resmgr etc.), every members in the group will have full access rights not only for the scanner part but also for the other parts of the device i.e. printer, memory-card reader and fax. These users can bypass your system's security policy and do everything with the device intentionally and unintentionally. If this is not what you want especially for a workgroup computer, you should consider using saned as a proxy. Then all other user frontends should be able to access the scanner only through saned. (saned is included in the sane-backends package.)

21 July 2007 - Canon's official driver for MP160, MP510 and MP600. Go to the "Support&Download" section. Some part of the driver is GPLed but the most important part is binary-only, unfortunately.

19 July 2007 - Release version 0.13.1.

21 April 2007 - Update links to printer drivers and status of MP180, MP510 and MP830.

8 April 2007 - Finally, after a long break, release version 0.13.0. Some information may be out of date at this moment. I'll try to update the rest of the website/document on the next days.

Contents

About

Canon PIXMA MP is a series of multi-function devices (All-in-one printer). This software supports only the scanning function of the device. MP150, MP170, MP450 and MP500 are currently supported. I'm working on support for MP750 and other devices in the series. (See status) I've contacted Martin Schewe (the author of the driver for MP750/MP780) and started some experiments to integrate the both drivers in one binary. Because I only have MP150, I need your help for testing the software with other models. Currently, the software compiles and runs on Linux. Porting to other OSes that support USB is also possible.

The core driver, on which the SANE backend and stand-alone utility are based, is in an ALPHA stage and will stay in this stage because I've no programming manual or protocol specification for the devices at all. By analyzing USB traffics I could get enough information to write a driver that seems to work. Although many testers and I do our best to test the software, it will not work in every situation.

If you are looking for a Linux printer driver for these devices, have a look at

License

  Scanner utility and SANE backend for Canon PIXMA MP series
  Copyright (C) 2006-2007 Wittawat Yamwong

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:

  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Status

See also detailed status (out of date).

Model USB ID Hardware features Status and comments
DPI GR GT AD BT
Protocol 1a: The backend is ready for day-to-day use although some features are missing.
MP150 4A9:1709 1200(1) Y Y - 1x1 working
MP170 4A9:170A 1200(1) Y Y - 2x1 working
MP450 4A9:170B 1200(1) Y Y - 2x4 working but making loud noise at 600 DPI
MP500 4A9:170C 1200(1) Y Y - 2x4 working
MP530 4A9:1712 1200(1) Y Y Y 2x1 working
MP800 4A9:170D 2400(2) Y Y - 2x5 working but no support for film scan
MP800R 4A9:170E 2400(2) Y Y - 2(?) working but no support for film scan
MP830 4A9:1713 2400(2) Y Y Y 2x1 working but no duplex ADF yet, problem with RGB color alignment at high resolution (if you know the technical term, please let me know.)
Protocol 1b
MP160 4A9:1714 600 ? Y - ? Full scan @ 75DPI color works. TBD
MP180 4A9:1715 1200 ? Y - ? working, TBD
MP460 4A9:1716 1200 ? Y - ? Full scan @ 75DPI color works. TBD
MP510 4A9:1717 1200 ? Y - ? working, TBD
MP600 4A9:1718 2400 ? Y - ? working but buggy at 2400DPI. TBD
MP600R 4A9:1719 2400 ? ? - ? working but buggy at 2400DPI. TBD
MP810 4A9:171A 4800 ? ? - ? untested
MP960 4A9:171B 4800 ? ? - ? Full scan @ 75 DPI works. TBD
Protocol 2
MP360 4A9:263C 1200 Y - - ? The scanner locks up sometimes.
MP370 4A9:263D 1200 ? - - ? TBD
MP390 4A9:263E 1200 ? - - ? ?
MP700 4A9:2630 1200 Y - - 1x1 working except grayscale @ 1200DPI
MP730 4A9:262F 1200 Y(?) - ? 1x1(?) ADF and grayscale are untested.
Protocol 3
MP750 4A9:1706 2400(2) - - Y 2x1 Canceling scan in ADF mode doesn't eject the paper!
MP760 4A9:1708 2400(2) - - - 2(?) The scanner hangs!
MP780 4A9:1707 2400(2) - - Y 2(?) Both flatbed and ADF work but scanner hangs when cancel during a scan.
Unknown protocol: These devices don't work with this backend and there is no easy way to add supports because they use a different command set which has to be analyzed first. Co-programmers are welcome! :-) I personally cannot do this because I don't have the devices.
MP110 4A9:1700 1200 N N - N unsupported
MP130 4A9:1701 1200 N N - N unsupported
  • DPI - maximum resolution
  • GR - grayscale
  • GT - gamma table
  • AD - automatic document feeder
  • BT - number of buttons x number of events per button
  • Y - supported by the subdriver
  • N - not supported by the subdriver
  • - - not applicable, no such feature in hardware
  • ? - unknown, please correct me!

Notes

  1. Maximum hardware resolution is 1200x2400 DPI but limited by the user interface to 1200x1200 DPI.
  2. Maximum hardware resolution is 2400x4800 DPI but limited by the user interface to 2400x2400 DPI.

Download and ChangeLog

The SANE backend is now included in the sane-backends CVS. It can be downloaded from the SANE project homepage. Please follow the download instruction.

Note: For Linux kernel 2.4.x and other OSes please download the driver (backend) from the SANE project homepage.

Version Comment
0.13.1 md5sum: 3a0374af96a9d93af1fb5aca345da42d
  • Added MP960.
0.13.0 md5sum: aef52ea4bca25605c5cbff09920d0987
  • Added MP160, MP180, MP460, MP510 and MP600. Thanks to David Nicklay for the patch.
  • Fixed a buffer-overflow bug in sane_read().
0.12.2 md5sum: ca94896251b339691f1c1ed4585d8ed8
  • Added SmartBase MP360 and PIXMA MP800R
  • MP760: Fixed color alignment (line correction) for 300DPI and 600DPI.
0.12.1 md5sum: d697d20454944e5f820008f04b1e5e28
  • MP830: Fixed ADF. Single-side ADF should work now. Duplex mode is still a work in progress. Many thanks to Klaus Wurmstein!
  • MP760: Fixed "fuzzy" scanned images. Line correction should be correct now.
  • MP760,MP780: Added work-around for the problem: device doesn't response to the first command. (Was the "hang" problem.) There are still cases that the second command is also timed out.
0.12.0 md5sum: 3a4d6f4eb830c14b8e32aa5bf4de28b1
  • Now use own error codes. This increases portability a bit.
  • Added MP530 product ID.
  • MP700,MP730: Added experimental grayscale mode. Please test!
0.11.3 md5sum: 3ab071e4e44d1ed34502a915d5b35947
  • Fixed installation script, again. Look for libsane-dll.so.1 not libsane-dll.so.
  • MP750: Fixed lockups problems. Do MP750,MP760 and MP780 still hang with this version?
  • MP750: Added support for button events.
  • Fixed buffer underrun problem. If the scanner sends less data than expected, the driver will fill the rest with 0xff.
  • Added description for button-controlled option in sane-pixma.html. It's experimental.
0.11.2 md5sum: 08b31221fa21d5a77d5f48925ed96cd0
  • Fixed installation script. It should also find SANE installation in /usr/local.
  • Added sane-pixa.html - the backend man page in html format.
  • MP730: Added experimental code for ADF. Test with
    ./scan -d 10 -a -F experiment output.pnm
  • MP730,MP750: Added experimental code for buttons. Test with
    ./scan -d 10 -B
    and try pressing scanner buttons. Please report the result!
  • If the installation script cannot find your SANE installation although you've properly installed SANE, try this install.sh. Replace the old script with this new one.
0.11.1 md5sum: 0b3f067498f712856bf5fa0e514d737d
  • Added product ID for MP700 and MP800.
  • Fixed paper detection for ADF.
  • libsane-pixma.so: Fixed sane_get_devices(), now compatible with the SANE standard.
  • libsane-pixma.so: Removed emulate-adf option, use button-controlled instead.
  • libsane-pixma.so: Added button-controlled option, should work with both scanadf and xsane.
  • libsane-pixma.so: Improved button handling.
  • scan: Added compression option for tiff output format.
0.11.0 md5sum: 872b39013b753d9babdfae12368831ce
  • Removed scan's option: -P
  • Added product ID for MP830
  • Added sane.h and saneopts.h, so that libsane-pixma.so can be compiled without installing additional header files.
  • Implemented a reader task in the SANE backend. It makes the backend compatible with the SANE standard. Please test!
  • Added a simple installation and test script. Just type "sudo make install"
0.10.1 md5sum: 25ac6e465082554e0896202762fc46e8
  • Added new options for scan
    • -B wait until a scanner button is pressed and exit
  • Added 3 usage examples
  • (patch 0.10.0a) MP730: Fixed random horizontal lines issue.
  • (patch 0.10.0b) Fixed for "struct usbdevfs_ctrltransfer has no member named request" etc. If it still doesn't compile, please send me the error messages and the output of
    grep -n1 VERSION /usr/include/linux/version.h
0.10.0 md5sum: b3c5e6bfcbea469cec3fc2a66d4ca2ef
  • Added new options for scan
    • -W allow overwriting output file
    • -a use automatic document feeder (experimental)
  • Changed: output width doesn't need to be multiple of 4 or 12.
  • Added scanner simulator for developers
  • Rewrote subdriver for MP750. Testers needed.

Contents of the package

Features

Installation

The software has been successfully tested on SUSE Linux 10.0 OSS (i386 and x86_64), kernel 2.6.13. It should compile on other Linux distributions as well. You need an ANSI C-Compiler and make, such as GNU gcc and make, and glibc. resmgr and libtiff (3.7.3 or later) are optional. SANE's header files sane.h and saneopts.h are also optional. If they are installed, Makefile will use them. If not, the files that come with the driver are used instead.

Please read README.html in the package for more information.

Acknowledgments

I would like to thank: (The list needs to be updated.)

and many others who are not (yet) listed in the above list.

Links

Contact

For the SANE backend: sane-devel mailing list and bug tracking system.

Or mail to wy-pixma at arcor dot de. If the size of log files are more than 50kB, put them on the web and send me just the link. (Prefered languages: Thai, German and English)


counter