Canon Pixma Scanner Driver for Linux

Copyright (C) 2006 Martin Schewe


This is a driver for the Canon Pixma MP7x0 scanner, which has been developed by sniffing and analysing the Windows driver's communication. It is far from perfect, but after all, it supports among other things these basic features:

  • all resolutions: 75/150/300/600/... dpi
  • user defined image offsets and sizes
  • ADF and flatbed
  • calibration
  • reset / recovery on errors
  • basic status handling and
  • things I might have forgotten :)

If you have a Pixma scanner other than 7x0, you should consider contacting me. It is pretty simple to check if your scanner uses a similar protocol and maybe your model could be integrated smoothly by just adding another USB product ID.


MP730, MP750, MP760, MP780 supported
MP150, MP170, MP450, MP500 : work in progress
MP800, MP830 : unknown
MP110, MP130 : looks incompatible

Mailing list




pixma-0.5.1.tar.gz   (MD5: 68415c7bf3ca909e56642e26e2680754)
pixma-0.4.5.tar.gz   (MD5: 8696bd5e44933231cd033444d20bda60)
pixma-0.3.tar.gz   (MD5: 29496e96416d6b203e32be498bad120c)
log2io for sniff analysis   (MD5: 471ea14be751eea6f927983b5d97a40b)


$ make
$ sudo make install


$ sudo make test


The image acquisition tool is called pixma_scan and must be run as root. You will get a short help message if you run it without any argument:
Canon Pixma Scanner Driver 0.1
Copyright (C) 2006  Martin Schewe

Usage: pixma_scan [OPTION]... -o <outfile.pnm>

-r <resolution>        set resolution in dpi (default: 75)
-x <x>     -y <y>      set image offset
-w <width> -h <height> set image size
-c                     calibrate before scanning
-a                     use ADF
-m                     use monochrome color weights
-v <level>             set verbosity level (default: 1)
-o <outfile.pnm>       write PNM image date to outfile.pnm


$ sudo pixma_scan -r 150 -x 60 -y 10 -w 800 -h 580 -o test.pnm


A little late I noticed some similarities between the protocol of the CanoScan parallel scanners and the Pixma USB scanner. Sometimes the code of the sane-backend canon_pp was helpful to clarify things.
Thanks to Jose Juan Iglesias Rebollo, Farvil and Wittawat Yamwong for helping with devices I do not own (MP450 and MP150). BTW: Wittawat has written his own driver for the MP150, which will probably be officially released by him soon.