Monday 1 September 2014

Printer: Canon printer if deployed from win server - Error message - Cannot get device information

Solution to the Canon “Get Device Status” and “Job Accounting” Print Problems


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:

  1. 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.
  2. NDPSGW PORT=LPR HOSTADDRESS=10.0.120.132 PRINTERNAME=lp
  3. 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:

  1. 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.
  2. 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
  3. 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;
"Path"="C:\Program Files\Canon\Portset"
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 FIX***

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;
hrDeviceStatus.1
hrPrinterStatus.1
hrPrinterDetectedErrorState.1
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
[ipp://10.0.0.5/ipp/PRINTER01]
NOTE!!! When using multiple canon iPrint printers on the same workstation the Portset.ini file should look something like;
[ipp://10.0.0.5/ipp/PRINTER01]
PROTOCOL=2
SERVER=.
DEVICEADDRESS=10.0.120.8
[ipp://10.0.0.6/ipp/PRINTER02]
PROTOCOL=2
SERVER=.
DEVICEADDRESS=10.0.120.9
[ipp://10.0.0.7/ipp/PRINTER03]
PROTOCOL=2
SERVER=.
DEVICEADDRESS=10.0.120.10

Well thats it, hope this helps. I will try to post this on forums where people are having similar problems.
1 vote, average: 4.00 out of 51 vote, average: 4.00 out of 51 vote, average: 4.00 out of 51 vote, average: 4.00 out of 51 vote, average: 4.00 out of 5 (1 votes, average: 4.00 out of 5)
You need to be a registered member to rate this post.
Categories: Uncategorized

No comments:

Post a Comment