Canon iPrint "Job Accounting" and "Get Device Status" Problem Solved
When using iPrint to print to a range of Canon corporate printers the "Job Accounting" and "Get Device Status" features do not work. The following solution will allow the features to work correctly.
At the server side:
- Gateway autoload commands are important, below are the settings used for a Canon IR6870C printer. The Novell gateway was used; you don’t need the canon gateway nlm. Searching Google for “Gateway autoload commands” will get you more information.
NDPSGW PORT=LPR HOSTADDRESS=10.0.120.132 PRINTERNAME=lp
- On the “Client Support\iPrint Direct” tab “Enable iPrint Direct Printing” is not required for the job accounting or get device status to work.
At the client side:
- Install the very latest driver version, when writing this fix version 8.35 for PCL drivers and version 4.25 for Postscript drivers where available off the Canon support website. Install the iPrint printer onto the target workstation.
- Next step is to either search Google for “canon portset utility” or contact Canon support and ask for the file via email. Portset version 1.2 was available at the time.
- Download and unzip the Portset tool into “C:\Program Files\Canon\Portset”, the following files should be in the archive;
AuDHIP.ndh, AuDHIPX.ndh, AuDifSyscon.dll, AuDscvr.dll, AuDscvr.ini, AuDscvrSt.dll, AuOIM.dll, AuSnmp.dll, AuSrvc.dll, AuTrans.dll, auvdc.dat, Ns1213.oim, NsCanon.oim, NsCIS.oim, NsHR.oim, PortSet.cnt, PortSet.exe, PortSet.hlp
- Run the "C:\Program Files\Canon\Portset\Portset.exe" file. Scroll through the list of printer ports until you find the port belonging to the particular Canon iPrint printer, should look something like "\\ipp://*server IP*\*printer name*" (the *server IP* is the iPrint servers IP address and the *printer name* is the name of the printer setup on iPrint). Select the port and press the "Modify" button. Either enter the IP address of the printer into the "Network Address" edit box or click the "Discover" button and wait for discovery to finish (I personally like the discover
button because you know the address is going to be correct when you choose from the printer list. If you chose to discover the printers select the printer model/name from the list and press "OK". Press "OK" again to exit the Portset tool.
**MOST IMPORTANT PART***
When you exit the Portset tool it creates 2 things, first a registry key called "HKEY_LOCAL_MACHINE\SOFTWARE\Canon\PortSet" is created and the key is populated with the following String entry;
This key is queied by the Canon driver on the workstation when using the "Get Device Status" button or printing with "Job Accounting" enabled and tells the software where to find the portset settings file which we will talk about next, if this entry is not created job accounting will not work.
Second the Portset tool creates a file called “C:\Program Files\Canon\Portset\Portset.ini". This file tells the canon drivers how to find the printer on the network. This is where we fix the problem, below is a copy of the file contents after the Portset tool has finished creating it;
[\\ipp://10.0.0.5\PRINTER01] <-- Windows port name (this also displays in the windows printer port list)
PROTOCOL=2 <-- The protocol 1=IPX 2=TCPIP
SERVER=. <-- Not exactly sure what this indicates but who cares its not where the problem lies
DEVICEADDRESS=10.0.0.8 <-- The address of the printer itself
The first line in the “C:\Program Files\Canon\Portset\Portset.ini" file is where the problem lies.
For the techs a quick note on how the canon print drivers use job accounting. When you print using job accounting or use the get device status button the drivers send an SNMP get-request to the printer for the following MIB database entries;
These entries tell the driver if it can communicate with the printer, checks the printer status and detects if the printer has an error. After the entries are read from the printer they are sent back with an SNMP get-response to the workstation. If the hrDeviceStatus.1 entry replys with the value as 3 (from analysis the value 3 is a communication error code but I could be wrong, Canon wouldnt comment on this) as it does when we use the default “C:\Program Files\Canon\Portset\Portset.ini" file.
As stated before the first line is the problem because it can send the requests to the printer in the format its in but from what I can gather Windows cannot interpret the response because its simply in the wrong format.
Using the example above we have [\\ipp://10.0.0.5\PRINTER01] as the first line in the “C:\Program Files\Canon\Portset\Portset.ini" file.
The following format is what worked great for our printers
When using multiple canon iPrint printers on the same workstation the Portset.ini file should look something like;
Well thats it, hope this helps. I will try to post this on forums where people are having similar problems.
A pdf version of the above fix and the portset tool.
Disclaimer: As with everything else at Cool Solutions, this content is definitely not supported by Novell (so don't even think of calling Support if you try something and it blows up).
It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test, test, test before you do anything drastic with it.