We are currently using Samba 2.2.7a with CUPS 1.1.17-0.2 on Redhat 8.0 here and have been able to upload and download drivers for our HP and Epson printers under Windows. However, it has taken us many iterations to get this right and you do have to install fairly recent versions of both Samba and CUPS. Since most of our printing comes from Windows since some Epson printers have proprietary drivers we do generally upload the native ones rather than using cupsaddsmb.
What I notice that is different from our setup is that your smb.conf has: use client driver = yes according to the man page (see below) setting this will prevent you from opening the printer with administrative rights which would logically be necessary for setdriver.
We have found that the default "use client driver = no" not only allows us to keep the drivers on the server, it also lets the printer administrator set such default characteristics as duplexing, paper size, etc. whereas with local drivers, one has to set them on each client machine.
-- John Gerth [EMAIL PROTECTED] (650) 725-3273 fax 723-0033 *********************** from man smb.conf use client driver (S) This parameter applies only to Windows NT/2000 clients. It has no affect on Windows 95/98/ME clients. When serving a printer to Windows NT/2000 clients without first installing a valid printer driver on the Samba host, the client will be required to install a local printer driver. From this point on, the client will treat the print as a local printer and not a network printer connection. This is much the same behavior that will occur when disable spoolss = yes.
The differentiating factor is that under normal circumstances, the NT/2000 client will attempt to open the network printer using MS-RPC. The problem is that because the client considers the printer to be local, it will attempt to issue the OpenPrint- erEx() call requesting access rights associated with the logged on user. If the user possesses local administator rights but not root privilegde on the Samba host (often the case), the Open- PrinterEx() call will fail. The result is that the client will now display an "Access Denied; Unable to connect" message in the printer queue window (even though jobs may successfully be printed).
If this parameter is enabled for a printer, then any attempt to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped to PRINTER_ACCESS_USE instead. Thus allowing the Open- PrinterEx() call to succeed. This parameter MUST not be able enabled on a print share which has valid print driver installed on the Samba server.
See also disable spoolss
Default: use client driver = no