fixed a few typos in the instructions and added a longer explaination for
[samba.git] / docs / textdocs / PRINTER_DRIVER.txt
1 !==
2 !== PRINTER_DRIVER.txt for Samba release 1.9.18 08 Jan 1998
3 !==
4 ==========================================================================
5         Supporting the famous PRINTER$ share
6  
7         Jean-Francois.Micouleau@utc.fr, 10/26/97
8         modified by herb@sgi.com 1/2/98
9
10 ===========================================================================
11
12 Disclaimer:
13
14         This ONLY works with Windows 95
15         It does NOT work with Windows NT 4
16
17
18 Goal:
19
20         When you click on a samba shared printer, you can now install the driver
21         automatically onto the Windows 95 machine, as you would from an NT server.
22         
23 How To:
24
25         It's a three step config.
26         
27         First, create a new directory, where you will put the driver files, and
28         make a share in smb.conf pointing to it.
29
30         Example:
31         
32                 [printer$]
33                   path=/usr/local/samba/printer
34                   public=yes
35                   writable=no
36                   browseable=yes
37
38         Second, you have to build the list of the drivers required for a specific
39         printer. This is the most complicated thing to do. Get the files
40         'msprint.inf' and 'msprint2.inf' from Windows 95, the easiest way is to
41         grab them from a working Windows 95 computer. They are usually located
42         in 'c:\windows\inf'. Look in them for the printer you have. Run the new
43         program 'make_printerdef' with the file name and the printer name as
44         parameters. If you have drivers for an unsupported or updated printer,
45         first install these drivers on an Windows 95 system. There will be a
46         file created in your inf directory named 'oem?.inf' (where the ? is some
47         number). Use this file instead of msprint.inf.
48
49         Example:
50                 
51     make_printerdef msprint.inf "Apple LaserWriter" >>/usr/local/samba/lib/printers.def
52          
53         The program will print out a list of required files to stderr.
54         Copy all the files listed into the directory you created in step 1     
55         
56         Third, you need to add 2 new parameters in smb.conf. One is in the
57         [global] section, called 'printer driver file' pointing to the file description,
58         and the other in each printer share, called 'printer driver location' pointing
59         to where the client will get the drivers. Don't forget to set correctly
60         the printer driver parameter to the Windows printer name.
61         Example:
62         
63                 [global]
64                   printer driver file=/usr/local/samba/lib/printers.def
65
66                 [lp]
67                    comment = My old printer laser
68                    browseable = yes
69                    printable = yes
70                    public = yes
71                    writable = no
72                    create mode = 0700
73                    printer driver=Apple LaserWriter
74                    printer driver location=\\%h\PRINTER$
75
76         %h will expand to the computer name, and PRINTER$ is the name of the
77         share created in step one.
78         
79         
80 If it doesn't work for you, don't send flame ! It worked for me. In case of
81 trouble don't hesitate to send me a mail with your smb.conf file and 
82 printers.def
83
84
85 *******  added by herb@sgi.com
86
87 For those of you who like to know the details, and in case I have guessed
88 wrong on some of the fields - The following is the format of the entries 
89 in the printers.def file: (entries are 1 single line - they are split here 
90 for readability)
91
92 <Long Printer Name>:<Driver File Name>:<Data File Name>:<Help File Name>:
93 <Language Monitor Name>:<Default Data Type>:<Comma Separated list of Files>
94
95 The <Help File Name> and the <Language Monitor Name> can be empty.
96 If no <Driver File Name> or <Data File Name> are specified in the inf file,
97 these will default to the section name for the printer.
98
99 The following is an excerpt from the MSPRINT2.INF file on a WIN95 machine.
100 I have deleted all but the entries relating to installing a driver for the
101 "QMS ColorScript 100 Model 30" printer. Using this "file" I'll try to 
102 explain how the printers.def file is created.
103
104 make_printerdef is run with the first argument being the name of this
105 file (MSPRINT2.INF in this case) and the second argument being the
106 name of the printer ("QMS ColorScript 100 Model 30" in this case).
107
108 The printer name is first found in the "Model section" to obtain the
109 name of the "Installer Section" (this is the name after the equal sign).
110 We ignore the alternate name.
111
112 The "Installer Section" contains entries for "CopyFiles" and "DataSection".
113 The "CopyFiles" line gives a list of all the required files for this
114 printer. If the name begins with an @ it is the name of a file (after
115 you strip off the @), otherwise it is the name of a "Copy Section" which
116 in turn is a list of files required. This printer has one file listed
117 "QCS30503.SPD" and two sections "COLOR_QMS_100_30" and "PSCRIPT". The
118 "COLOR_QMS_100_30" section is listed in the "[DestinationDirs]" as 
119 having a value of 23. This means that all files listed in this section
120 should go into the "color" subdirectory. The list of files to copy for
121 this printer is thus:
122
123 QCS30503.SPD,color\QMS10030.ICM,PSCRIPT.DRV,PSCRIPT.HLP,PSCRIPT.INI,
124 TESTPS.TXT,APPLE380.SPD,FONTS.MFM,ICONLIB.DLL,PSMON.DLL
125
126 From the "Data Section" we obtain values for "DriverFile", "HelpFile",
127 and "LanguageMonitor". The % around the value for "LanguageMonitor"
128 indicates that it is a string that can be localized so its actual value
129 is obtained from the "[Strings]" section. The "Data Section" could also
130 have contained an entry for "DefaultDataType".
131
132 Using the information we have obtained we can now construct the entry
133 for the printers.def file.
134
135 <Long Printer Name>     -> QMS ColorScript 100 Model 30  (name given
136                                 on the command line)
137 <Driver File Name>      -> PSCRIPT.DRV  (given in Data Section)
138 <Data File Name>        -> QCS30503.SPD (defaults to Install Section name)
139 <Help File Name>        -> PSCRIPT.HLP  (given in Data Section)
140 <Language Monitor Name> -> PostScript Language Monitor  (given in Data Section)
141 <Default Data Type>     -> RAW (default if not specified)
142
143
144 So.... the enty (actually one line but split here for readability) would
145 be:
146
147 QMS ColorScript 100 Model 30:PSCRIPT.DRV:QCS30503.SPD:
148 PSCRIPT.HLP:PostScript Language Monitor:RAW:
149 QCS30503.SPD,color\QMS10030.ICM,PSCRIPT.DRV,PSCRIPT.HLP,PSCRIPT.INI,
150 TESTPS.TXT,APPLE380.SPD,FONTS.MFM,ICONLIB.DLL,PSMON.DLL
151
152 ---------------------- Info from MSPRINT2.INF ------------------------
153 ;
154 ; The Manufacturer section lists all of the manufacturers that we will
155 ; display in the Dialog box
156
157 [Manufacturer]
158 "QMS"
159
160
161 ;
162 ; Model sections. Each section here corresponds with an entry listed in the
163 ; [Manufacturer] section, above. The models will be displayed in the order
164 ; that they appear in the INF file.
165 ;
166 ; Each model lists a variation of its own name as a compatible ID. This
167 ; is done primarily as an optimization during upgrade.
168 ;
169 [QMS]
170 "QMS ColorScript 100 Model 30"    = QCS30503.SPD,QMS_ColorScript_100_Model_30
171
172
173 ;
174 ; Installer Sections
175 ;
176 ; These sections control file installation, and reference all files that
177 ; need to be copied. The section name will be assumed to be the driver
178 ; file, unless there is an explicit DriverFile section listed.
179 ;
180 [QCS30503.SPD]
181 CopyFiles=@QCS30503.SPD,COLOR_QMS_100_30,PSCRIPT
182 DataSection=PSCRIPT_DATA
183
184 ; Copy Sections
185 ;
186 ; Lists of files that are actually copied. These sections are referenced
187 ; from the installer sections, above. Only create a section if it contains
188 ; two or more files (if we only copy a single file, identify it in the
189 ; installer section, using the @filename notation) or if it's a color
190 ; profile (since the DestinationDirs can only handle sections, and not
191 ; individual files).
192 ;
193 [COLOR_QMS_100_30]
194 QMS10030.ICM
195
196 [PSCRIPT]
197 PSCRIPT.DRV
198 PSCRIPT.HLP
199 PSCRIPT.INI
200 TESTPS.TXT
201 APPLE380.SPD
202 FONTS.MFM
203 ICONLIB.DLL
204 PSMON.DLL
205
206
207 ;
208 ; Data Sections
209 ;
210 ; These sections contain data that is shared between devices.
211 ;
212 [PSCRIPT_DATA]
213 DriverFile=PSCRIPT.DRV
214 HelpFile=PSCRIPT.HLP
215 LanguageMonitor=%PS_MONITOR%
216
217
218 ;
219 ; Color profiles go to the colors directory. All other files go to the
220 ; system directory
221 ;
222
223 [DestinationDirs]
224 DefaultDestDir=11
225 COLOR_QMS_100_30=23
226 COLOR_TEKTRONIX_200I=23
227 COLOR_TEKTRONIX_III_PXI=23
228
229
230 ;
231 ; Localizable Strings
232 ;
233 [Strings]
234 MS="Microsoft"
235 PS_MONITOR="PostScript Language Monitor,PSMON.DLL"
236