Backend for Canon network protocol

Michael Sweet mike at
Sat May 3 17:02:34 PDT 2008

Louis Lagendijk wrote:
> A month ago I bought a Canon multi functional with network
> capabilities. This happens to use a proprietary protocol (BJNP), for
> which I could not find any documentation or drivers. I have now
> reverse engineered the protocol and written a first draft of a Cups
> backend. This is piggy backed on the existing socket backend. The
> changes are pretty small. Would there be interest in including this
> backend in CUPS?

Possibly, just depends on how extensive the changes are.

 > If so, I can cleanup the code and add missing bits
> and pieces. If not, would it be ok to package my code with the
> relevant parts of Cups (mainly a copy of socket.c and small
> modifications to runloop.c) and release it under GPL?

Sure, that's in line with both the spirit and "the law" of the

> For those interested: I have made some changes to runloop.c that
> allow me to use my own write functions that do the Canon bjnp magic.
> I have for now copied socket.c, but could easily make it double as
> both socket and bjnp driver. best regards, Louis

If it is just a matter of providing some encoding on top of a
regular socket connection, it might make sense to write a port
monitor instead - then any Canon driver PPD can use:

     *cupsPortMonitor socket/BJNP: "bjnp"

to tell CUPS to use the port monitor with the socket backend.

Michael Sweet, Easy Software Products           mike at easysw dot com

More information about the cups mailing list