Setting up Automatic Printer Driver Downloads for Windows Clients

From SambaWiki
Revision as of 01:02, 17 August 2014 by Mmuehlfeld (talk | contribs) (Moved the Point'n'Print stuff from the Printer HowTo to a separate page for more clearness)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Windows Point'n'Print driver deployment is a process administrators uses to upload and preconfigure drivers on the print server. This allows users to simply connect a printer. The driver is downloaded from the print server automatically and used preconfigured settings.

This documentation describes everything around this process.


Uploading printer drivers for Point'n'Print driver installation

If you have already uploaded the driver for your printer in the past, you can skip this section.

Important notes:

  • If you want to provide Point'n'Print support for drivers, used on different architectures (typically 32-bit and 64-Bit Windows), you have to upload a driver with the same name for all that architectures! This is the only way to define the default printer settings just once on a platform of your choice. And when the driver is sent to a host with a different architecture, these default values are used as well. But this requires, that the driver name is exactly the same for each platform. E. g. „HP Universal Printing PS“ for x86 and „HP Universal Printing PS (v5.5.0)“ for x64 would't match, as they are different! Choose exactly the same driver for all platforms, you want to support.
  • Drivers for x64, can only be uploaded from a x64 Windows! Drivers for the x86 architecture can be uploaded from 32- and 64-bit Windows.

The following steps are done on a 64-bit platform, because 64-bit Windows allows uploading drivers for x86 and x64:

  • Start the „Print Management“ Console (printmanagement.msc).
  • Expand the „Print Servers“ node. If your print server isn't listed, add it, via right-click / „Add/Remove Servers...“.
File:Add Printserver.png
  • Navigate to „Drivers“ below your print server. Right-click and choose „Add driver“ to upload a new driver to your server.
File:Print Management Add Driver.png
  • The „Add Printer wizzard will appear.
  • Select the driver architecture you want to upload (upload one by one) and click „Next“.
  • Click the „Have Disk...“ button and browse to the directory containing the driver you want to upload.
  • The wizzard will show you a list of all drivers, the directory you pointed to, contains. Select the appropriate driver for your printer and click „Next“.
Remember: If you upload drivers for additional architectures for one printer, they need all to have exactly the same name! Otherwise the driver can't be associated and used with different platforms!
File:Printer driver selection.png
  • In the end, the wizzard will copy all required files to the print$ share of your print server.
  • If you want to upload drivers for a different plattform or other devices, repeat the steps.
  • The drivers list in the Print Management Console provides you a clearly list of drivers on your printserver and for which platform they are available.
Print Management Driver List.png

Associating a shared printer with a driver and preconfiguring

  • Start the „Print Management“ Console (printmanagement.msc).
  • Expand the „Print Servers“ node. If your print server isn't listed, add it, via right-click / „Add/Remove Servers...“.
File:Add Printserver.png
  • If you navigate to the „Printers“ node for your Print Server, you see a list of all shared printers.
File:View remote printers.png
  • You could do the association of the driver with the printer share on Windows or on *nix side:
  • On Windows:
  • Right-click to the shared printer, you would associate a driver with and choose „Properties“.
  • If there's no driver associated with an printer yet, you'll been asked if you want to install the driver now. Answer this question with „No“!
File:Question install driver.png
  • A default printer properties window will appear. Go to the „Advanved“ tab and choose the already uploaded driver from the list, that is suitable for the printer.
FAQ: An uploaded driver is not shown in the list, when trying to associate it with a printer.
File:Choose driver.png
Note: You may receive an „Printer settings could not be saved. Operation could not be completed (error 0x0000007a) error. This can be ignored. The changes are saved anyway. See Bug #10482.
  • Close the windows with „OK“ to associate the driver with the printer.
  • If you do this step on Vista or higher, Windows will ask you, if you trust the server (This can be suppressed by a GPO. See Setting up a GPO for trusting printer drivers). Choose „Install driver“, if you are seeing this window.
File:Question trust printer.png
  • After associating the driver, Windows renames the printer to the driver name. You can leave that or rename it again. For more clearness, it's better to set the name on Windows side to the one you used in your smb.conf.
Note: Renaming the printer via the Printer Management Console is only possible by editing the printers properties - not via [F2] (See Bug #10770).
  • On *nix:
  • Retrieve a list of all drivers, that are on the print$ share
    # rpcclient localhost -U administrator -c 'enumdrivers'
  • Associate the driver with the printer (The driver name, must be exactly the same, like in the output of the above „enumdrivers“ output):
    # rpcclient localhost -U administrator -c 'setdriver "MyDemoPrinter" "HP Universal Printing PS"'
  • You can review the associations with
    # rpcclient localhost -U administrator -c 'enumprinters'
  • On Windows, now right-click and choose „Properties“ again, to preconfigure the printer.
  • First you should take a look on the tabs on the properties windows. Typically there's a tab called „Device Settings“, „Settings“, „Configuration“ or something like that (depending on the driver). This usually allows you to configure the main printer settings (number of trays, duplex on/off, etc.). Set the values fitting to your device and click the „Apply“ button.
File:Device Settings.png
  • On the „Sharing“ tab, you can check „List in the directory“, to publish the printer in your Active Directory, what makes it easier for users to find.
  • To preconfigure the printers default settings, go to the „Advanced“ tab and click the „Printing defaults...“ button. A new window will appear. It's layout and possibilities differ and depent on the driver. Here you can set the default values, the user will receive, when connecting the printer.
File:Printing defaults.png
  • If you have finished configuring your printer, save all changes with „OK“.

If you had uploaded drivers for multiple architectures to that printer, the settings will be retrieved connecting on the different plattforms - regardless on which they have been set. But as mentioned earlier, this requires, that all drivers for each plattform have the same name (versions can differ).

Now it's time to connect to the printer and print a test page.


An uploaded driver is not shown in the list, when trying to associate it with a printer

Windows clients only permit associating a driver with a printer, when the uploaded driver matches the architecture reported by the spoolss server. Samba reports "Windows NT x86" by default.

This causes, that when you had uploaded just a 64-bit driver, you won't see it in the list, when you try to associate it with the printer it's „advanced“ tab.

There are three ways to workaround:

  • Set the following (undocumented) parameter in your [global] section of your smb.conf, to make spoolss announce itself as x64 architecture:
spoolss: architecture = Windows x64
  • Assign the driver with rpcclient.
  • Additionally upload a x86 version of the driver with exactly the same name.

Point'n' Print doesn't deliver the drivers on all architectures

Make sure that you have uploaded exactly the same driver for that printer for all architectures. E. g. „HP Universal Printing PS“ for x86 and „HP Universal Printing PS (v5.5.0)“ for x64 wouldn't match, even if they are shipped in the same driver package!