Installing Printers
(ndps and corresponding queues)

11/14/2005
Eric Low

Installing Printers
Netware 6.5 uses IPP, but IPP is enabled in NDPS setup. I had to set up NDPS, then iPrint.

Each printer has a printer agent (object?), which performs the functions of printer server, queue, printer and spooler. All of our printers are "Controlled Acecss Printers," which means that they have an NDS printer object. The broker.nlm module, which manages printer resources and events, was not initially running on our server, but NDPS requires it to be active. This appears to be accomplished by adding a broker object. The NDPS Manager (ndpsm.nlm) also must be present on the network (one per server), as this communicates with the printer agents (each printer agent is assigned to an NDPS Manager). Most of our printers are HP, which means that we will want to run the hpgate module to act as a gateway between NDPS and the printers (apparently Xerox has one as well). We have a lot of DOS workstations as well, so I had to assign queues to the NDPS printers for compatibility.

Essentially, to create a printer (complete with queue-based printing for those non-NDPS clients), you do the following:
1) Create an NDPS Broker object
2) Create an NDPS Manager object? Multiple NDPSM Objects if different operator right levels?
3) Create an NDPS Printer Agent (PA) for each printer on the network

Assuming you already have a queue for a given printer, both the queue and the printer agent can send jobs to the device. Assign the Printer Agent to service the queue rather than a print server. Configure the printer through the PA.

If you try to create a broker through ConsoleOne, it will tell you that there is no snap-in to create this type of object. Instead, create a broker through iManager (from the left-hand menu, under iPrint). I named mine NDPS_Broker, in my Organization container. I made sure all three services were checked, and assigned the RMS service to the SYS volume (in our case, ..S3_SYS.DataStat.DSROOT). I immediately got the following error: Error: Create Broker Failure com.novell.service.jncp.NDSException: ccode = -610 (0xfffffd9e). I must've had the volume in there wrong, because when I put in S3_SYS.DataStat, it worked ok. Apparently you need to specify the container even though it's already selected above! The broker will then use the /ndps/resdir directory on that volume to store its stuff. You must then load the broker manually by typing LOAD BROKER NDPS_BROKER.DATASTAT. This will keep a status window open at the Server Console to view broker events. You should also add this line to the AUTOEXEC.NCF file (in SYS:/SYSTEM). I added it right near the end before it runs STARTX. In actuality, I thought that the Broker Screen was unnecessary, so I loaded it with the /NOUI option, causing it to display no screen.

Next, you must install an NDPS Manager. Again, there is no snap-in to do this from ConsoleOne, so open up iManager in your browser and select "Create Print Manager" under the iPrint menu on the left. I named mine NDPS_Manager, and again put it in our Organization container and assigned it to the SYS volume (S3_SYS.DataStat). You must load this manually as well, in our case by typing LOAD NDPSM NDPS_MANAGER (You don't need to put the container on the end of this command, because it automatically sticks it on for you. If you do put the container on there, put a period on the end to move you up from your current container first). Once again, stick this in the AUTOEXEC.NCF file after the LOAD BROKER line. The NDPS Broker will use a file under the /ndps directory for its database.

Now, you must create your printer(s). Once again, you can't do it through ConsoleOne, so select "Create Printer" through iManager. However, only the "Novell LPR gateway (LPR on IPP)" gateway option appeared for me (which sounds like a printer locally attached to the parallel port of the server). According to the Netware 6.5 Administrator's Handbook, "Only the Novell LPR gateway is available through iManager. Third-party gateways from specific printer manufacturers must be installed from the server console." Hhhmmm... I decided to go with it. I selected "Create Printer" under the iPrint menu in iManager. For printer name I put in HPLJ5SI-1, and for Manager name I put in NDPS_Manager.DataStat, then hit Next. The next screen asks for the IP or hostname, as well as the LPR Printer Name (such as RAW, PASSTHROUGH, etc.). Apparently, print servers use this name to modify how, or to where (what parallel port), the print job is sent. A list of names for for specific vendors can be found here. This print server was HP JetDirect, so I put in raw. At the next screen, you select drivers for the various versions of Windows. There were similar drivers for WNT and W95, but not for 2000 or XP. I would have to go back and add those later. Voila! The printer Agent was created.

From ConsoleOne, I went into the properties of that printer agent ojbect. Under the "other" tab, I noticed that the IPP URI became ipp://192.168.5.7/ipp/HPLJ5si-1. That IP is the address of NIC2 on the server, and the last part of the URI is of course the Common Name of the Printer Agent Object.

I needed to create a queue for this printer. I opened Netware Administrator, right clicked on our Organizational Unit, selected Create -> Print Queue. I kept "Directory Service Queue" selected and typed the same name for the print queue as for the NDPS Printer Agent. For Print Queue Volume, I selected the SYS drive (S3_SYS.DataStat). I left Define additional properties and clicked Create. Damnit, can't use the same name for the queue object as for the agent object! So, I went back and recreated my PA's with a "-ip" stuck on the end, then left it off for the queue object name. Click Create.

Next, from Netware Administrator, I double clicked on the Printer Agent that this queue should use, which brought up the "Printer Control" page. I clicked on "Jobs v" and selected Spooling configuration. I clicked Add next to "Service Jobs From Netware Queues," then selected the queue I had just created. I clicked OK, and voila! (at this point, if you go into the properties for the queue and select Assignments, you should see your NDPS Manager as an authorized printer server (although it won't list the PA)).

To install printer drivers for a particular operating system, open a browser (which means Internet Explorer, since it won't work in anything else) to iManager and go to iPrint->Manage Broker (from within the OS whose drivers you wish to install). Select your broker. Under Resource Management Service, select the OS that you are using. Click Add From System, select the driver, then click OK. You may also click Add from File, which requires you to have an .inf file (most likely stored in your c:\winnt\inf directory if you have a printer installed) and a corresponding .ppd file (most likely stored in c:\winnt\system32\spool\drivers\w32x86\3). You may then select iPrint->Manage Printer and select that driver for a particular PA/OS.

To install a printer in Windows, browse to https://servername/ipp and click on the printer you want. The first time you try to install a printer, it will ask if you want to install iPrint. When you click yes, it starts a download from your server, which you may have to run manually to install. You then must restart your browser session. The next time you click a printer from iPrint, it will ask you if you're sure. When you click yes, iPrint does the rest.

 

*** To upload Linux printer drivers through iManager, you must, believe it or not, use Internet Explorer. Go into iManager and select iPrint->Manage Broker->Resource Management Service>Linux and Mac Drivers. Click Add From File and browse to the .ppd file that you got from your Linux workstation (for example, the driver that I used for our HP8550N was found at /usr/share/cups/model/manufacturer-PPDs/hplip/HP-Color_LaserJet_8550GN-hpijs.ppd.gz. I ungzipped it to get my basic .ppd file to upload). The driver should get labelled exactly as it does in CUPS. You man then select it from Manage Printer. Voila! If you have your iPrint client installed in Linux, and the plugin installed in the appropriate place for your browser to find it, you should be able to click on a printer from your ipp page and install it just as if you were in Windows.

*** If you have any trouble clicking a printer in Linux and automatically installing the driver (especially if you get a "iPrint.lib - Could not open the file." error), try deleting the /tmp/iprint-username directory. I had to do this, and then it worked flawlessly. The printer showed up in CUPS no problem!

If you want to mess with creating a map of your printers, run SYS:\APACHE2\HTDOCS\IPPDOCS or go to http://servername:631/IPPDOCS/Maptool.htm.

 

Old troubleshooting stuff:

When I tried printing to this printer, I got an LPR Communications error. Apparently, it could not resolve the name! I looked at what IP address the NDPS Broker was servicing, and it turns out it was only using our first NIC, which was not plugged in (because I have two servers of the same name on the network, and the other one only has IPX - so since IPX is only bound to our first NIC, I kept that unplugged for now).

I needed to make sure that the NDPS Manager was listening on both (or at least our other, for now) IP addresses. You can see what address it is listening on by selecting "Manage Print Manager" in iManager, then selecting "Identification" from the drop-down menu. Apparently, you can specify an IP address when you load NDPS Manager by loading it with the following command: load ndpsm NDPS_Manager /IPADDRESS=198.173.192.3. Here are the command line options for ndpsm (and some more here). This option can also be specified when loading the broker - the command line options for the broker can be found here. When I first tried loading ndpsm this way, I got the following error: DNS name S3.DATASTAT.COM resolves to 192.168.5.3. The NDPS Manager address is 198.173.192.3. Program execution cannot continue normally. You can clear the DNS Name associated with ndpsm by running it with a blank dnsname, by typing the following: load ndpsm NDPS_Manager /DNSNAME=, then exiting, and finally, reloading it again with the /IPADDRESS option. Once I did this, the manager appeared to be bound to the proper IP.

Now when I tried printing, it looked like ipp accepted the print job from my workstation. However, when I went to "Manage Printer" in iManager, and looked at "Printer Control" from the drop-down menu, I got the following error:

Printer State: Error Printing
Printer Not Connected: The gateway could not resolve the hostname ndps_hplj5si-1. The hostname may be incorrect or there may be a problem with the sys:etc\hosts file or the sys:etc\resolv.cfg file.

As it turned out, I had specified the name wrong - it had a dash in NDS rather than an underscore. Sorry, no help here!

It appears to me that if the Manager is loaded with a specified IP, that is the IP that is used to reach the ipp server. The printers, however, will try to be reached from the IP that the broker is loaded with. If you had to specify an IP when loading the Manager, but did not load the broker with one, chances are the two IP's are different, and this seems to cause problems. I haven't identified it for sure, but it appears that if the broker is bound to an inactive IP and you print a job which arrives at the Manager, because it IS bound to a valid IP, that job will get stuck in the Manager and you will see a "printer is not connected error." Not only that, but if you try to unload ndpsm at this point, it will freeze! this, of course, will freeze your System Console screen as well, and because it's Netware, you're screwed. If you look at a printer's identification (from "Manage Printer" in iManager), you will notice that it is associated with an IP address. This IP address is the same one that the broker is loaded with! This also seems to be the IP address (and corresponding NIC) that the server (be it broker or ndpsm, I don't know) uses to try to contact the printer. So, it also appears to me that Netware does not understand the idea of subnets - it goes with what is assigned to a particular module, regardless of if there is a better route. For example, if you have two NIC's, on two different subnets, and only one is plugged in, if the printer is on the subnet of the one that IS plugged in, but broker is associated with the NIC that is NOT plugged in, it will still try to use the unplugged NIC to contact the printer - even though that card is not on the right subnet, and there is an active card that is! So, it's wrong on both counts. Oh, well.

 

 

 

I did a little research and it appears that HP discontinued their "HP IP/IPX Printer Gateway for NDPS" as of January 1, 2005. According to them, the Novell SNMP Printer Gateway (Novell Gateway) is the preferred solution. I doubt that, but what the hell. From the NDPS Manager Console, I hit INS at the "Printer Agent List" in order to Create Printer Agent. I typed in the name Laserjet5si3, which is the name I wished people to select to use that printer (both from a queue and from NDPS). On the next screen ("Printer configuration"), I hit enter on the "Configuration Utilities" line. This popped up a list of Gateway Types, which included both the HP Gateway and the Novell Printer Gateway. I selected Novell Printer Gateway. The printer is an HP Laserjet 5si MX, and the "Select a Printer" list had the HP LaserJet 5si and HP LaserJet 5si PostScript. We will probably need both PCL and PS for people, since we do a lot of low-level printing here. Nonetheless, I selected PCL (the one that isn't PostScript). The next screen was a list of "Port Handler types," on which "Novell Port Handler" was the only option. I selected it!

It appears that the best place to create a new Printer Agent from is Netware Administrator. I opened that up (which means I had to go over to my Windows workstation.. fuckers!) and selected "Create NDPS Printer" in our Organization container. In the "Create NDPS Printer" dialog box, I put in HPLJ5si-1 (I'm organizing our printers according to model) for the NDPS Printer Name, selected "Create a New Printer Agent" and "Define Additional Properties," then clicked Create. Another dialog box came up, titled "Create Printer Agent," which had the same name name filled in for "Printer Agent Name." I'm not sure what would happen if you changed the name here, but I didn't. I selected our NDPS Manager (NDPS_Manager.DataStat) and the "Novell Pringer Gateway (SNMP)", then clicked OK. I got the following error:

NDPS was unable to create the specified Printer Agent. This task can also be accomplished at the server console.
Message number: 815
For more information, look up the following error code in the online documentation: (0x03700014:10051:0)

I looked around, and it sounded like this error was caused by either the broker not being loaded or NDPSM needing to be restarted. I restarted the Manager, and that didn't do it (although I got a slightly different error, :10061).. I restarted both, and that didn't do it either. I looked around some more, and apparently this is an error at the "Transport Layer Interface." More specifically, this forum stated the following:

The 0x03700014 means "Winsock error follows:". The 10051 means Winsock's error, WSAENETUNREACH. The zero is not significant.

"Net Unreachable?"

I can't, however, explain why you are getting it except to say that there is a communication failure below the Winsock layer.

 

*** On the client, iPrint can be installed from a button at the top of Virtual Office.

*** To view the status of printers, go to SERVERNAME:631/ipp in your browser. You can also install the IPP Client from here.

*** The iPrint client will automatically prompt you to upgrade if you upgrade it on the server. It seems to check for a new version each time you log into Windows.

If Novell Gateway is selected, with an IP address assigned, the Gateway autoload command looks like this:
NDPSGW PORT=RAW HOSTADDRESS=198.173.192.19

On the other hand, if Novell gateway is selected with a DNS name assigned, the Gateway autoload command looks like this:
NDPSGW PORT=RAW HOSTNAME=ndps-hplj5si-1

Here's a little document about using (and troubleshooting) iPrint. Specifically, there's a section in there about making a print agent print to the screen, which will at least tell you if IPP is working.

 

 

 

Strength of Secure Domain Key? Affects how clear-text passwords are encrypted (DES vs. Triple DES)