Setting up Samba as a Print Server: Difference between revisions
Mmuehlfeld (talk | contribs) (Remove point'n'print, GPO creating for drivers and forms sections. All three were independent pages now.) |
|||
(39 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
= |
= Introduction = |
||
If you set up Samba as a print server, clients in your network are able to send print jobs to the Samba host using the server message block (SMB) protocol. The examples shown in this documentation use a raw printer in the back end. This configuration requires that the print job is formatted by a driver on the client and thus can be processed by the printer without further processing or filtering. |
|||
== Introduction == |
|||
This HowTo will provide you an easy guide to setup Samba to act as a Windows print server including Point'n'Click printer driver installation for users. |
|||
'''This HowTo is valid for Samba 3 and 4 print server installations.''' |
|||
= Supported Print Server Back Ends = |
|||
Samba supports the multiple print server back ends, such as [https://www.cups.org/ CUPS] and [http://www.lprng.com/ LPRng]. For a complete list, see the <code>printing</code> parameter in the <code>smb.conf(5)</code> man page. |
|||
== Some definitions == |
|||
{{Imbox |
|||
; Printer share : Each printer is shared by a name. During the printing process, the client sends the printjob to it. |
|||
| type = note |
|||
| text = You must set up the printer server back end locally on the Samba host. Samba cannot forward print jobs to a remote host. However, you can configure the local printer server back end to forward the job to a remote print server. |
|||
}} |
|||
For details how to set up the back end, see the print server's documentation. |
|||
; Print server backend : Samba can use e. g. CUPS, LPD/Lprng and other as backend. The print server forwards the job to local or network printers. |
|||
; Windows printer driver : A piece of software, that converts the printed data to a printer specific form. The driver for each shared printer can be preconfigured with default values. |
|||
; Point'n'Print : Windows 2000 and later support the abillity to automatically download and install drivers from the server including preconfiguring, when connecting a printer. The installation can be done by ordinary users, without special permissions. |
|||
== Samba <code>CUPS</code> or <code>IPRINT</code> Back End Support == |
|||
; Printer forms : Windows is already shipped with an amount of forms, that define the typical paper sizes. If a formular isn't known to the print server, the client could not use this, altought the printer is able to do it. |
|||
When using the <code>CUPS</code> or <code>IPRINT</code> print server back end, Samba must have been built with CUPS support enabled. To verify, enter: |
|||
# smbd -b | grep "HAVE_CUPS" |
|||
HAVE_CUPS |
|||
If no output is displayed: |
|||
== Driver models == |
|||
* Samba was built using the <code>--disable-cups</code> parameter. |
|||
* The Samba <code>configure</code> script was unable to locate the required libraries for CUPS support. For details, see [[Package Dependencies Required to Build Samba]]. |
|||
Supported by Samba: Printer driver version 3 (Windows 2000 to Windows 8) |
|||
Currently not supported by Samba: [http://msdn.microsoft.com/en-us/library/windows/hardware/hh706306%28v=vs.85%29.aspx Printer driver version 4] (Windows 8) |
|||
= Adding a printer to the Print Server Back End = |
|||
== CUPS == |
|||
To add a raw printer to an CUPS print server: |
|||
= Print server backend = |
|||
* Open the CUPS admin web interface in your browser. For example, <nowiki>https://servername:631/admin</nowiki> |
|||
The following sub-chapters will give you a short overview on possible backends, including adding a new network printer, we'll use in our later examples for sharing it by Samba. |
|||
* Select the <code>Administration</code> tab and click <code>Add Printer</code>. |
|||
The examples setup a RAW printer (content is send directly to the device). We don't use filters or drivers on the backend, because a RAW printer allows us to render the output on the workstation and use the printer specific driver. |
|||
* Select the connection type and enter the corresponding URL to the printer's queue or to the remote print server queue. For example: |
|||
We assume here, that you have the print server backend already basically configured and it's running, so printers can be added next. |
|||
:* LPD-based printers: <code>lpd://''printer_name''/''queue''</code> |
|||
:* IPP (Internet Printing Protocol)-based printers: <code>ipp://''printer_name''/ipp/port</code> |
|||
:* SMB (Server Message Block)-based printers: <code>smb://''username'':''password''@''domain''/''windows_print_server_host_name''/''printer_name''</code> |
|||
:: Note that forwarding a job to a print server running Windows Vista or newer, or Windows Server 2008 or newer requires authentication. |
|||
* Enter a name for the printer. This name is used in the <code>smb.conf</code> when sharing the printer using Samba. |
|||
* Select the <code>Raw</code> printer vendor and model. |
|||
* Save the settings. |
|||
== CUPS == |
|||
[http://www.cups.org CUPS] is currently the most widely used spool system in *nix environments and shipped with most distributions. Samba has built-in support and defaults to CUPS if the development package (aka header files and libraries) could be found at compile time. |
|||
Basically all sorts of files can be printed with CUPS, but using a Postscript or a RAW printer driver will give you the most benefit in combination with the Windows printer driver, because then all settings can be controlled on the Windows client. |
|||
== LPRng == |
|||
To add a raw printer to a LPRng print server: |
|||
* Add the following line to the <code>/etc/printcap</code> file: |
|||
=== Adding a new printer === |
|||
''printer_name'':sd=/var/spool/lpd/''printer_name''/:sh:mx=0:mc=0:rm=''Printer_DNS_name_or_IP_address'' |
|||
* Open the CUPS admin webfrontend (https://servername:631/admin). |
|||
: The printer name is used in the smb.conf when sharing the printer using Samba. |
|||
: For further details about the options used, see the <code>printcap(5)</code> man page. |
|||
* To create the spool directory, enter: |
|||
* On the „Administration“ tab click the „Add Printer“ button. |
|||
# checkpc -f |
|||
* Choose the way, how your printer is connected and enter the appropriate URL. Examples: |
|||
# LPD protocol |
|||
lpd://hostname/queue |
|||
# Internet Printing Protocol |
|||
ipp://hostname/ipp/port |
|||
# Forwarding the jobs to a Windows print server. |
|||
# Hint: Vista and higher, don't allow anonymous connects by default, so you must provide a username and password. |
|||
smb://username:password@domain/servername/printername |
|||
* Restart the LPRng service. |
|||
* Enter a name for the printer |
|||
* When you reached the step, where to choose the vendor and model, choose „Raw“ for both, because the rendering is already done later by the Windows driver. |
|||
* Save the new added printer. |
|||
= Enabling the <code>spoolssd</code> Service = |
|||
== LPD == |
|||
This was the first widely used printing system and still runs on many servers. It is very simple to install and configure. There are different implementations of LPD servers, like the often used [http://www.lprng.org/ LPRng]. |
|||
{{Imbox |
|||
| type = warning |
|||
| text = This only applies to Samba version 4.15 and older versions! |
|||
}} |
|||
The Samba <code>spoolssd</code> is a service that is integrated into the smbd service. If you configured Samba as a print server, you can additionally enable <code>spoolssd</code> to increase performance on print servers with a high number of jobs or printers. |
|||
=== Adding a new printer === |
|||
: Without <code>spoolssd</code>, Samba forks the <code>smbd</code> process or each print job and initializes the <code>printcap</code> cache. In case of a large number of printers, the <code>smbd</code> service can become unresponsive for multiple seconds when initializing the cache. The <code>spoolssd</code> service enables you to start pre-forked <code>smbd</code> processes that are processing print jobs without any delay. The main <code>spoolssd</code> <code>smbd</code> process uses a low amount of memory, and forks and terminates child processes |
|||
To enable the <code>spoolssd</code> service: |
|||
* To add a new network printer, you simply need to add the following line to your 'printcap' (typically '/etc/printcap'). For the different options used in the example, see 'man printcap'. |
|||
* Edit the <code>[global]</code> section in your <code>smb.conf</code> file: |
|||
PRINTERNAME:sd=/path/to/spool/directory:sh:mx=0:mc=0:rm=IP_or_DNS_Name |
|||
:* Add the following parameters: |
|||
* After adding the new printer entry, run the following command to create the LPD spool directory and restart/reload the service, to take the changes affect. |
|||
rpc_server:spoolss = external |
|||
# checkpc -f |
|||
rpc_daemon:spoolssd = fork |
|||
# service lpd restart |
|||
:* Optionally, you can set the following parameters: |
|||
* The following command allows you query the state of the printer: |
|||
::{| class="wikitable" |
|||
!Parameter |
|||
!Default |
|||
!Description |
|||
|- |
|||
|spoolssd:prefork_min_children |
|||
|5 |
|||
|Minimum number of child processes |
|||
|- |
|||
|spoolssd:prefork_max_children |
|||
|25 |
|||
|Maximum number of child processes |
|||
|- |
|||
|spoolssd:prefork_spawn_rate |
|||
|5 |
|||
|Samba forks this number of new child processes, up to the value set in <code>spoolssd:prefork_max_children</code>, if a new connection is established |
|||
|- |
|||
|spoolssd:prefork_max_allowed_clients |
|||
|100 |
|||
|Number of clients, a child process serves |
|||
|- |
|||
|spoolssd:prefork_child_min_life |
|||
|60 |
|||
|Minimum lifetime of a child process in seconds. 60 seconds is the minimum. |
|||
|} |
|||
* Restart Samba. |
|||
# lpq -P PRINTERNAME |
|||
Printer: PRINTERNAME@SAMPRINTSERVER (dest PRINTERNAME@IP_or_DNS_Name) |
|||
Queue: no printable jobs in queue |
|||
Ready |
|||
no entries |
|||
After the restart, Samba automatically starts <code>smbd</code> sub-processes: |
|||
# ps axf |
|||
... |
|||
30903 smbd |
|||
30912 \_ smbd |
|||
30913 \_ smbd |
|||
30914 \_ smbd |
|||
30915 \_ smbd |
|||
... |
|||
= Tuning rpcd-spoolss = |
|||
{{Imbox |
|||
| type = note |
|||
| text = This applies to Samba 4.16 and newer versions! |
|||
}} |
|||
By default there is no dcerpc service running at all. You need to connect to a service in order to spawn the process. |
|||
= Configuring Samba as print server = |
|||
If you connect the very first time, then the printers list is not filled up and you need some time till it collects all the information. |
|||
== General == |
|||
This can be time consuming as we need ~1s to get information for a printer from CUPS. If you have more than 50 printers you need to tune it. |
|||
=== Enabling spoolssd (optional) === |
|||
Make sure that the idle seconds are bigger than the number of printers connected to CUPS! |
|||
''Note: Some features of spoolssd were broken before 4.0.17 and 4.1.7. That's why it is recommended to use at least this versions!'' |
|||
[global] |
|||
spoolssd is a feature, introduced in Samba 4.0, that increases the performance in printing affairs. In the past, when a print job came in, a smbd child process was forked, that initializes the printcap cache, spoolss, etc. If you are having a huge printcap cache and it needs to be updated first, the client could hang for several seconds. |
|||
rpcd_spoolss:idle_seconds=300 |
|||
If it doesn't scale you can increase the number of workers (default=5): |
|||
Since Samba 4, you can configure, that spoolssd is started as forked processes. If enabled, you'll see additional smbd processes, which will handle only spoolss requests. The master process is a simple daemon with a small memory footprint, that only forks and kills childs serving the spoolss pipe. When a connection comes in, it can directly start to talk to the daemon and e. g. ask any information about the printer without any delay, what causes a performance improvement. |
|||
[global] |
|||
To enable spoolssd, add the following to the [global] section of your smb.conf: |
|||
rpcd_spoolss:num_workers = 10 |
|||
= Enabling the Print Server Support in Samba = |
|||
rpc_server:spoolss = external |
|||
rpc_daemon:spoolssd = fork |
|||
To enable the print server support: |
|||
After you have restarted Samba, you will discover additional smbd processes, that handle spoolss requests: |
|||
* Set the printing back end in the <code>printing</code> parameter of the <code>[global]</code> section in your <code>smb.conf</code> file. For example: |
|||
With spoolssd enabled after startup: With spoolssd disabled (default): |
|||
printing = CUPS |
|||
30903 smbd 30955 smbd |
|||
30912 \_ smbd 30963 \_ smbd |
|||
30913 \_ smbd |
|||
30914 \_ smbd |
|||
30915 \_ smbd |
|||
30916 \_ smbd |
|||
30917 \_ smbd |
|||
30918 \_ smbd |
|||
30920 \_ smbd |
|||
30921 \_ smbd |
|||
30922 \_ smbd |
|||
30923 \_ smbd |
|||
30924 \_ smbd |
|||
* Add the following section to your <code>smb.conf</code>: |
|||
You can adjust the daemons behavior through the following parameters (the values in the examples are the defaults): |
|||
[printers] |
|||
spoolssd:prefork_min_children = 5 # Minimum number of child processes |
|||
path = /var/tmp/ |
|||
spoolssd:prefork_max_children = 25 # Maximum number of child processes |
|||
printable = yes |
|||
spoolssd:prefork_spawn_rate = 5 # Start (fork) x new childs if one connection comes in (up to prefork_max_children) |
|||
spoolssd:prefork_max_allowed_clients = 100 # Number of clients, a child process should be responsible for |
|||
spoolssd:prefork_child_min_life = 60 # Minimum lifetime of a child process (60 seconds |
|||
# is the minimum, even a lower value has been configured) |
|||
* Reload Samba: |
|||
spoolssd is still a new feature. If you may encounter any bug, please report it at [https://bugzilla.samba.org/ https://bugzilla.samba.org/], to get it fixed soon. |
|||
# smbcontrol all reload-config |
|||
= Sharing a Printer = |
|||
== Automatic Sharing of All Printers Configured in the Print Server Back End == |
|||
=== Granting print operator privileges === |
|||
Using the default setting, all printers configured in the print server back end are automatically shared. |
|||
Users or groups, who should be able to administrate printers on your server, have to be granted the „SePrintOperatorPrivilege“ privilege. This is required on member servers, as they have their own, local SAM database. It is recommended, to grant it to a domain group, because changes can be done quick and easily with the typical user management tools like ADUC. |
|||
The following example grants the privilege to the domain group „Domain Admins“: |
|||
# net rpc rights grant 'SAMDOM\Domain Admins' SePrintOperatorPrivilege -Uadministrator |
|||
=== Disabling the Automatic Printer Sharing === |
|||
Existing privileges you can reviewed by |
|||
To disable the automatic printer sharing: |
|||
# net rpc rights list accounts -Uadministrator |
|||
* Add the following parameter to the <code>[global]</code> section of your <code>smb.conf</code> file: |
|||
load printers = no |
|||
* Reload Samba: |
|||
=== Setup the [printers] share === |
|||
# smbcontrol all reload-config |
|||
This share defines general information about your printing backend. See the „[printers]“ section in the man page for additional information. |
|||
* Add the new section to your smb.conf |
|||
[printers] |
|||
path = /var/spool/samba |
|||
printable = yes |
|||
printing = CUPS|LPRNG|... |
|||
* If you choose CUPS as backend, make sure, that your smbd is compiled with CUPS support: |
|||
# smbd -b | grep CUPS |
|||
HAVE_CUPS_CUPS_H |
|||
HAVE_CUPS_LANGUAGE_H |
|||
HAVE_CUPS |
|||
HAVE_LIBCUPS |
|||
If you don't get any output, make sure, that the CUPS header files and libraries are installed and recompile Samba with --with-cups. |
|||
== Manual Sharing of Printers == |
|||
* The next step is to create the samba spool directory, defined in the „[printer]“ share. Set the appropriate permissions, depending to your needs. |
|||
To manually share a printer: |
|||
# mkdir -p /var/spool/samba/ |
|||
# chmod 1777 /var/spool/samba/ |
|||
* Verify that the automatic printer sharing is disabled. See [[#Disabling_the_Automatic_Printer_Sharing|Disabling the Automatic Printer Sharing]]. |
|||
* Add the share for the printer to your <code>smb.conf</code> file: |
|||
[''Samba_printer_name''] |
|||
=== Setup the [print$] share === |
|||
path = /var/tmp/ |
|||
printable = yes |
|||
printer name = ''printer_name_in_the_back_end'' |
|||
: Set the <code>printer name</code> parameter to the name of the printer used in the local print server back end. |
|||
To enable Point'n'Print support, a share named „print$“ must exist. This share name is hardcoded in Windows clients and can't be choosen. |
|||
* Reload Samba: |
|||
* Add the share to your smb.conf |
|||
# smbcontrol all reload-config |
|||
[print$] |
|||
path = /srv/samba/Printer_drivers |
|||
comment = Printer Drivers |
|||
writeable = yes |
|||
* Create the folder, that will contain the drivers later: |
|||
# mkdir -p /srv/samba/Printer_drivers/ |
|||
* Next we create the required directory structure for the print$ share (newer versions of Samba will create it on the fly): |
|||
BASEDIR=/srv/samba/Printer_drivers |
|||
for i in COLOR IA64 W32ALPHA W32MIPS W32PPC W32X86/{2,3} WIN40 x64; do |
|||
mkdir -p $BASEDIR/$i; |
|||
done |
|||
= Setting up Automatic Printer Driver Download for Windows Clients = |
|||
* At last, set the permissions. It is recommended that normal users have just read-only access to the share, while the group you have [[Samba_as_a_print_server#Granting_print_operator_privileges|granted print operator privileges]] to, has write permissions to upload printer drivers. The following examples are granting write permissions to the „Domain Admins“ group. |
|||
See [[Setting_up_Automatic_Printer_Driver_Downloads_for_Windows_Clients|Setting up Automatic Printer Driver Downloads for Windows Clients]]. |
|||
: Example for Samba 3.x: |
|||
# chgrp -R „SAMDOM\Domain Admins“ /srv/samba/Printer_drivers/ |
|||
# chmod -R 2755 /srv/samba/Printer_drivers/ |
|||
:If you're running Samba 4.x, you can set the ACLs on the print$ share, throught Windows. Your benefit would be, that you can use the full Windows ACLs. Have a look at the [[Setup_and_configure_file_shares_with_Windows_ACLs#Change_permissions_on_folder_of_a_share|Setup and configure file shares]] HowTo. It describes detailed the process, how to set permissions. The suggested filesystem permissions for the print$ share are: |
|||
:* Creator Owner: Full control (Subfolders and files only) |
|||
:* Authenticated Users: Read & execute, List folder contents, Read (This folder, subfolders and files) |
|||
:* System: Full control (This folder, subfolders and files) |
|||
:* Domain Admins: Full control (This folder, subfolders and files) |
|||
== Sharing a printer with Samba == |
|||
* For each printer you want to share via Samba, you have to create a separate share (unless you have "load printers = yes" defined in your smb.conf). The following is an example: |
|||
---- |
|||
[MyDemoPrinter] |
|||
[[Category:Active Directory]] |
|||
path = /var/spool/samba/ |
|||
[[Category:Domain Members]] |
|||
browseable = yes |
|||
[[Category:NT4 Domains]] |
|||
printable = yes |
|||
[[Category:Printing]] |
|||
printer name = Printername_in_backend |
|||
[[Category:Standalone Server]] |
|||
* Set the „printer name“ parameter to the name of your corresponding CUPS/LPD/... queue. |
|||
* To bring the changes live, reload the Samba configuration: |
|||
# smbcontrol all reload-config |
Revision as of 08:34, 28 July 2022
Introduction
If you set up Samba as a print server, clients in your network are able to send print jobs to the Samba host using the server message block (SMB) protocol. The examples shown in this documentation use a raw printer in the back end. This configuration requires that the print job is formatted by a driver on the client and thus can be processed by the printer without further processing or filtering.
Supported Print Server Back Ends
Samba supports the multiple print server back ends, such as CUPS and LPRng. For a complete list, see the printing
parameter in the smb.conf(5)
man page.
You must set up the printer server back end locally on the Samba host. Samba cannot forward print jobs to a remote host. However, you can configure the local printer server back end to forward the job to a remote print server. |
For details how to set up the back end, see the print server's documentation.
Samba CUPS
or IPRINT
Back End Support
When using the CUPS
or IPRINT
print server back end, Samba must have been built with CUPS support enabled. To verify, enter:
# smbd -b | grep "HAVE_CUPS" HAVE_CUPS
If no output is displayed:
- Samba was built using the
--disable-cups
parameter. - The Samba
configure
script was unable to locate the required libraries for CUPS support. For details, see Package Dependencies Required to Build Samba.
Adding a printer to the Print Server Back End
CUPS
To add a raw printer to an CUPS print server:
- Open the CUPS admin web interface in your browser. For example, https://servername:631/admin
- Select the
Administration
tab and clickAdd Printer
.
- Select the connection type and enter the corresponding URL to the printer's queue or to the remote print server queue. For example:
- LPD-based printers:
lpd://printer_name/queue
- IPP (Internet Printing Protocol)-based printers:
ipp://printer_name/ipp/port
- SMB (Server Message Block)-based printers:
smb://username:password@domain/windows_print_server_host_name/printer_name
- Note that forwarding a job to a print server running Windows Vista or newer, or Windows Server 2008 or newer requires authentication.
- LPD-based printers:
- Enter a name for the printer. This name is used in the
smb.conf
when sharing the printer using Samba.
- Select the
Raw
printer vendor and model.
- Save the settings.
LPRng
To add a raw printer to a LPRng print server:
- Add the following line to the
/etc/printcap
file:
printer_name:sd=/var/spool/lpd/printer_name/:sh:mx=0:mc=0:rm=Printer_DNS_name_or_IP_address
- The printer name is used in the smb.conf when sharing the printer using Samba.
- For further details about the options used, see the
printcap(5)
man page.
- To create the spool directory, enter:
# checkpc -f
- Restart the LPRng service.
Enabling the spoolssd
Service
This only applies to Samba version 4.15 and older versions! |
The Samba spoolssd
is a service that is integrated into the smbd service. If you configured Samba as a print server, you can additionally enable spoolssd
to increase performance on print servers with a high number of jobs or printers.
- Without
spoolssd
, Samba forks thesmbd
process or each print job and initializes theprintcap
cache. In case of a large number of printers, thesmbd
service can become unresponsive for multiple seconds when initializing the cache. Thespoolssd
service enables you to start pre-forkedsmbd
processes that are processing print jobs without any delay. The mainspoolssd
smbd
process uses a low amount of memory, and forks and terminates child processes
To enable the spoolssd
service:
- Edit the
[global]
section in yoursmb.conf
file:
- Add the following parameters:
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
- Optionally, you can set the following parameters:
Parameter Default Description spoolssd:prefork_min_children 5 Minimum number of child processes spoolssd:prefork_max_children 25 Maximum number of child processes spoolssd:prefork_spawn_rate 5 Samba forks this number of new child processes, up to the value set in spoolssd:prefork_max_children
, if a new connection is establishedspoolssd:prefork_max_allowed_clients 100 Number of clients, a child process serves spoolssd:prefork_child_min_life 60 Minimum lifetime of a child process in seconds. 60 seconds is the minimum.
- Restart Samba.
After the restart, Samba automatically starts smbd
sub-processes:
# ps axf ... 30903 smbd 30912 \_ smbd 30913 \_ smbd 30914 \_ smbd 30915 \_ smbd ...
Tuning rpcd-spoolss
This applies to Samba 4.16 and newer versions! |
By default there is no dcerpc service running at all. You need to connect to a service in order to spawn the process.
If you connect the very first time, then the printers list is not filled up and you need some time till it collects all the information.
This can be time consuming as we need ~1s to get information for a printer from CUPS. If you have more than 50 printers you need to tune it.
Make sure that the idle seconds are bigger than the number of printers connected to CUPS!
[global] rpcd_spoolss:idle_seconds=300
If it doesn't scale you can increase the number of workers (default=5):
[global] rpcd_spoolss:num_workers = 10
Enabling the Print Server Support in Samba
To enable the print server support:
- Set the printing back end in the
printing
parameter of the[global]
section in yoursmb.conf
file. For example:
printing = CUPS
- Add the following section to your
smb.conf
:
[printers] path = /var/tmp/ printable = yes
- Reload Samba:
# smbcontrol all reload-config
Sharing a Printer
Automatic Sharing of All Printers Configured in the Print Server Back End
Using the default setting, all printers configured in the print server back end are automatically shared.
Disabling the Automatic Printer Sharing
To disable the automatic printer sharing:
- Add the following parameter to the
[global]
section of yoursmb.conf
file:
load printers = no
- Reload Samba:
# smbcontrol all reload-config
Manual Sharing of Printers
To manually share a printer:
- Verify that the automatic printer sharing is disabled. See Disabling the Automatic Printer Sharing.
- Add the share for the printer to your
smb.conf
file:
[Samba_printer_name] path = /var/tmp/ printable = yes printer name = printer_name_in_the_back_end
- Set the
printer name
parameter to the name of the printer used in the local print server back end.
- Reload Samba:
# smbcontrol all reload-config
Setting up Automatic Printer Driver Download for Windows Clients
See Setting up Automatic Printer Driver Downloads for Windows Clients.