[sane-devel] backend in progress: canon i-sensys mf4570dn, 'mfnp' protocol

chrysn chrysn at fsfe.org
Thu Feb 24 02:44:25 UTC 2011


hi sane developers,

i recently bought a Canon i-SENSYS MF4570dn printer/scanner for use in a
LAN and carelessly forgot to check for linux support for scanning.
(printing is another issue...)

by analyzing the udp and tcp traffic generated from scanning with the
windows driver, i've constructed a simple proof-of-concept program that
can start a scan and save the output to a file.

(the current program is restricted to scanning a fixed area with
hardcoded settings; reverse-engineering the parameters from the windows
gui should be sufficiently easy. the other missing feature compared to
the windows driver is device autodetection, which seems to work using
snmp. and of course, i don't know how much this is restricted to my
hardware, as i have no other for testing.)

that being done, i had a closer look at the existing sane backends again
(my first attempt at looking for existing drivers came to a halt when
the product name rang no bell at the sane websites), i noticed some
similarities with what is described in `pixma_bjnp_private.h` (i
recognized the port number, and some of the status codes seemed
similar), but other parts indicated that there are significant
differences (my dumps always show 'MFNP' at the beginning of every
package; that seems to be 'BJNP' in the existing backends).

is there documentation on how the information at `pixma_bjnp_private.h`
was obtained? (from comments like "unknown, always 0?" i read that it
was probably created just like i did with my code.) 

i'd like to contribute to the sane project with what i find out while
enhancing my proof-of-concept scanning program, but can't write a
complete sane backend, due to time constraints, lack of c language
skills and because i'm not sure that this scanner would need its own
backend (rather an extension of the existing bjnp stuff).

(to be honest, it might happen that i'm out of here once my
proof-of-concept program is feature complete and works on my server,
where it files everything that is scanned in a shared directory.)

so my questions to the list are:

* what is the background of the existing bjnp code, and how extensible
  is it?

  (this question probably goes to louis lagendijk (judging from the
  copyright notes), and the answer will partially depend on the
  differences between the protocol variants in use, which i hope to be
  able to judge better once i understand what the current code does.)

* are there other (similar, i-sensys or other mf) devices in reach of
  list readers, which could help me to understand more of the protocol
  and test the implementation?

* is there a way to have an out-of-process backend in sane? (i could
  provide that easily with the current python implementation, and
  messing around with signals for udp timeouts feels much more
  comfortable when i'm in my own process)

* do you have any general recommendations on how we could get on with
  this project?

regards
chrysn

-- 
A beginning is the time for taking the most delicate care that the
balances are correct.
  -- Princess Irulan, Manual of Muad'Dib
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20110224/9c620254/attachment-0001.pgp>


More information about the sane-devel mailing list