The Canon ImageRunner 330 is a digital photocopier with an embedded computer bolted to its back. The embedded computer
has an Ethernet card, a hard disk, and a connection to the print engine of the photocopier. The computer appears to run VxWorks. Both PCL and PostScript level 3 RIPs are included. The firmware is provided by EFI (Electronics for Imaging).

PAP

AppleTalk PAP (Printer Access Protocol) is the only one for which bidirectional communication with the PostScript interpreter. The printer advertises three names of type LaserWriter. These consist of the printer's name (as set using its physical control panel) plus the string "_300-405_" plus either "Direct", "Print", or "Hold". Only "Direct" allows communication with the PostScript interpreter. Thus, if you printer is called "MYPRN" and is in the zone "My Zone", its AppleTalk address will be "MYPRN_300-405_Direct:LaswerWriter@My Zone".

LPR

The printer has two LPR queues. They are called "print" and "hold". Thus, if your printer has the DNS name "myprn.myorg.org", its two possible addresses would be "print@myprn.myorg.org" and "hold@myprn.myorg.org".

$ ppad interface myprn print@myprn.myorg.org

SocketAPI

Canon calls SocketAPI "the universal printing protocol".

There are two ports for SocketAPI. Printers with firmware version 2.0 accept connexions on port 1009. Printers with firmware version 2.1 also accept connexions on port 9100, presumably in imitation of HP JetDirect cards. Unfortunately, bidirectional communication is not supported. It appears that the jobs go into the queue called "print" (i.e., that they are spooled on the printer's hard disk rather than being sent directly to the RIP). It also appears that only one connexion can be accepted at a time.

The commands configure a PPR queue to print to one of these printers over the network are:

$ ppad interface myprn socketapi myprn.myorg.org:1009

$ ppad feedback myprn no

According to the printer's PPD file, TBCP protocol is supported. PJL is not mentioned in the PPD file. If one tries setting the jobbreak method to "pjl" it does work somewhat (for instance, PostScript jobs seem to work and the PJL commands don't get printed), but there appear to be problems. For instance, if one sends a PJL job in passthru mode with a banner page, the banner page is printed, but the job isn't. It may be that the printer has hacks to deal with PJL but doesn't really implement it.

SMB

The printer also has an SMB server. It has three printer shares, named "print", "hold", and "direct". The address is a UNC name, such as "\\myprn\print".