Contents of /alx-src/tags/kernel26-2.6.12-alx-r9/Documentation/paride.txt
Parent Directory | Revision Log
Revision 630 -
(show annotations)
(download)
Wed Mar 4 11:03:09 2009 UTC (15 years, 6 months ago) by niro
File MIME type: text/plain
File size: 17066 byte(s)
Wed Mar 4 11:03:09 2009 UTC (15 years, 6 months ago) by niro
File MIME type: text/plain
File size: 17066 byte(s)
Tag kernel26-2.6.12-alx-r9
1 | |
2 | Linux and parallel port IDE devices |
3 | |
4 | PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net> |
5 | |
6 | 1. Introduction |
7 | |
8 | Owing to the simplicity and near universality of the parallel port interface |
9 | to personal computers, many external devices such as portable hard-disk, |
10 | CD-ROM, LS-120 and tape drives use the parallel port to connect to their |
11 | host computer. While some devices (notably scanners) use ad-hoc methods |
12 | to pass commands and data through the parallel port interface, most |
13 | external devices are actually identical to an internal model, but with |
14 | a parallel-port adapter chip added in. Some of the original parallel port |
15 | adapters were little more than mechanisms for multiplexing a SCSI bus. |
16 | (The Iomega PPA-3 adapter used in the ZIP drives is an example of this |
17 | approach). Most current designs, however, take a different approach. |
18 | The adapter chip reproduces a small ISA or IDE bus in the external device |
19 | and the communication protocol provides operations for reading and writing |
20 | device registers, as well as data block transfer functions. Sometimes, |
21 | the device being addressed via the parallel cable is a standard SCSI |
22 | controller like an NCR 5380. The "ditto" family of external tape |
23 | drives use the ISA replicator to interface a floppy disk controller, |
24 | which is then connected to a floppy-tape mechanism. The vast majority |
25 | of external parallel port devices, however, are now based on standard |
26 | IDE type devices, which require no intermediate controller. If one |
27 | were to open up a parallel port CD-ROM drive, for instance, one would |
28 | find a standard ATAPI CD-ROM drive, a power supply, and a single adapter |
29 | that interconnected a standard PC parallel port cable and a standard |
30 | IDE cable. It is usually possible to exchange the CD-ROM device with |
31 | any other device using the IDE interface. |
32 | |
33 | The document describes the support in Linux for parallel port IDE |
34 | devices. It does not cover parallel port SCSI devices, "ditto" tape |
35 | drives or scanners. Many different devices are supported by the |
36 | parallel port IDE subsystem, including: |
37 | |
38 | MicroSolutions backpack CD-ROM |
39 | MicroSolutions backpack PD/CD |
40 | MicroSolutions backpack hard-drives |
41 | MicroSolutions backpack 8000t tape drive |
42 | SyQuest EZ-135, EZ-230 & SparQ drives |
43 | Avatar Shark |
44 | Imation Superdisk LS-120 |
45 | Maxell Superdisk LS-120 |
46 | FreeCom Power CD |
47 | Hewlett-Packard 5GB and 8GB tape drives |
48 | Hewlett-Packard 7100 and 7200 CD-RW drives |
49 | |
50 | as well as most of the clone and no-name products on the market. |
51 | |
52 | To support such a wide range of devices, PARIDE, the parallel port IDE |
53 | subsystem, is actually structured in three parts. There is a base |
54 | paride module which provides a registry and some common methods for |
55 | accessing the parallel ports. The second component is a set of |
56 | high-level drivers for each of the different types of supported devices: |
57 | |
58 | pd IDE disk |
59 | pcd ATAPI CD-ROM |
60 | pf ATAPI disk |
61 | pt ATAPI tape |
62 | pg ATAPI generic |
63 | |
64 | (Currently, the pg driver is only used with CD-R drives). |
65 | |
66 | The high-level drivers function according to the relevant standards. |
67 | The third component of PARIDE is a set of low-level protocol drivers |
68 | for each of the parallel port IDE adapter chips. Thanks to the interest |
69 | and encouragement of Linux users from many parts of the world, |
70 | support is available for almost all known adapter protocols: |
71 | |
72 | aten ATEN EH-100 (HK) |
73 | bpck Microsolutions backpack (US) |
74 | comm DataStor (old-type) "commuter" adapter (TW) |
75 | dstr DataStor EP-2000 (TW) |
76 | epat Shuttle EPAT (UK) |
77 | epia Shuttle EPIA (UK) |
78 | fit2 FIT TD-2000 (US) |
79 | fit3 FIT TD-3000 (US) |
80 | friq Freecom IQ cable (DE) |
81 | frpw Freecom Power (DE) |
82 | kbic KingByte KBIC-951A and KBIC-971A (TW) |
83 | ktti KT Technology PHd adapter (SG) |
84 | on20 OnSpec 90c20 (US) |
85 | on26 OnSpec 90c26 (US) |
86 | |
87 | |
88 | 2. Using the PARIDE subsystem |
89 | |
90 | While configuring the Linux kernel, you may choose either to build |
91 | the PARIDE drivers into your kernel, or to build them as modules. |
92 | |
93 | In either case, you will need to select "Parallel port IDE device support" |
94 | as well as at least one of the high-level drivers and at least one |
95 | of the parallel port communication protocols. If you do not know |
96 | what kind of parallel port adapter is used in your drive, you could |
97 | begin by checking the file names and any text files on your DOS |
98 | installation floppy. Alternatively, you can look at the markings on |
99 | the adapter chip itself. That's usually sufficient to identify the |
100 | correct device. |
101 | |
102 | You can actually select all the protocol modules, and allow the PARIDE |
103 | subsystem to try them all for you. |
104 | |
105 | For the "brand-name" products listed above, here are the protocol |
106 | and high-level drivers that you would use: |
107 | |
108 | Manufacturer Model Driver Protocol |
109 | |
110 | MicroSolutions CD-ROM pcd bpck |
111 | MicroSolutions PD drive pf bpck |
112 | MicroSolutions hard-drive pd bpck |
113 | MicroSolutions 8000t tape pt bpck |
114 | SyQuest EZ, SparQ pd epat |
115 | Imation Superdisk pf epat |
116 | Maxell Superdisk pf friq |
117 | Avatar Shark pd epat |
118 | FreeCom CD-ROM pcd frpw |
119 | Hewlett-Packard 5GB Tape pt epat |
120 | Hewlett-Packard 7200e (CD) pcd epat |
121 | Hewlett-Packard 7200e (CD-R) pg epat |
122 | |
123 | 2.1 Configuring built-in drivers |
124 | |
125 | We recommend that you get to know how the drivers work and how to |
126 | configure them as loadable modules, before attempting to compile a |
127 | kernel with the drivers built-in. |
128 | |
129 | If you built all of your PARIDE support directly into your kernel, |
130 | and you have just a single parallel port IDE device, your kernel should |
131 | locate it automatically for you. If you have more than one device, |
132 | you may need to give some command line options to your bootloader |
133 | (eg: LILO), how to do that is beyond the scope of this document. |
134 | |
135 | The high-level drivers accept a number of command line parameters, all |
136 | of which are documented in the source files in linux/drivers/block/paride. |
137 | By default, each driver will automatically try all parallel ports it |
138 | can find, and all protocol types that have been installed, until it finds |
139 | a parallel port IDE adapter. Once it finds one, the probe stops. So, |
140 | if you have more than one device, you will need to tell the drivers |
141 | how to identify them. This requires specifying the port address, the |
142 | protocol identification number and, for some devices, the drive's |
143 | chain ID. While your system is booting, a number of messages are |
144 | displayed on the console. Like all such messages, they can be |
145 | reviewed with the 'dmesg' command. Among those messages will be |
146 | some lines like: |
147 | |
148 | paride: bpck registered as protocol 0 |
149 | paride: epat registered as protocol 1 |
150 | |
151 | The numbers will always be the same until you build a new kernel with |
152 | different protocol selections. You should note these numbers as you |
153 | will need them to identify the devices. |
154 | |
155 | If you happen to be using a MicroSolutions backpack device, you will |
156 | also need to know the unit ID number for each drive. This is usually |
157 | the last two digits of the drive's serial number (but read MicroSolutions' |
158 | documentation about this). |
159 | |
160 | As an example, let's assume that you have a MicroSolutions PD/CD drive |
161 | with unit ID number 36 connected to the parallel port at 0x378, a SyQuest |
162 | EZ-135 connected to the chained port on the PD/CD drive and also an |
163 | Imation Superdisk connected to port 0x278. You could give the following |
164 | options on your boot command: |
165 | |
166 | pd.drive0=0x378,1 pf.drive0=0x278,1 pf.drive1=0x378,0,36 |
167 | |
168 | In the last option, pf.drive1 configures device /dev/pf1, the 0x378 |
169 | is the parallel port base address, the 0 is the protocol registration |
170 | number and 36 is the chain ID. |
171 | |
172 | Please note: while PARIDE will work both with and without the |
173 | PARPORT parallel port sharing system that is included by the |
174 | "Parallel port support" option, PARPORT must be included and enabled |
175 | if you want to use chains of devices on the same parallel port. |
176 | |
177 | 2.2 Loading and configuring PARIDE as modules |
178 | |
179 | It is much faster and simpler to get to understand the PARIDE drivers |
180 | if you use them as loadable kernel modules. |
181 | |
182 | Note 1: using these drivers with the "kerneld" automatic module loading |
183 | system is not recommended for beginners, and is not documented here. |
184 | |
185 | Note 2: if you build PARPORT support as a loadable module, PARIDE must |
186 | also be built as loadable modules, and PARPORT must be loaded before the |
187 | PARIDE modules. |
188 | |
189 | To use PARIDE, you must begin by |
190 | |
191 | insmod paride |
192 | |
193 | this loads a base module which provides a registry for the protocols, |
194 | among other tasks. |
195 | |
196 | Then, load as many of the protocol modules as you think you might need. |
197 | As you load each module, it will register the protocols that it supports, |
198 | and print a log message to your kernel log file and your console. For |
199 | example: |
200 | |
201 | # insmod epat |
202 | paride: epat registered as protocol 0 |
203 | # insmod kbic |
204 | paride: k951 registered as protocol 1 |
205 | paride: k971 registered as protocol 2 |
206 | |
207 | Finally, you can load high-level drivers for each kind of device that |
208 | you have connected. By default, each driver will autoprobe for a single |
209 | device, but you can support up to four similar devices by giving their |
210 | individual co-ordinates when you load the driver. |
211 | |
212 | For example, if you had two no-name CD-ROM drives both using the |
213 | KingByte KBIC-951A adapter, one on port 0x378 and the other on 0x3bc |
214 | you could give the following command: |
215 | |
216 | # insmod pcd drive0=0x378,1 drive1=0x3bc,1 |
217 | |
218 | For most adapters, giving a port address and protocol number is sufficient, |
219 | but check the source files in linux/drivers/block/paride for more |
220 | information. (Hopefully someone will write some man pages one day !). |
221 | |
222 | As another example, here's what happens when PARPORT is installed, and |
223 | a SyQuest EZ-135 is attached to port 0x378: |
224 | |
225 | # insmod paride |
226 | paride: version 1.0 installed |
227 | # insmod epat |
228 | paride: epat registered as protocol 0 |
229 | # insmod pd |
230 | pd: pd version 1.0, major 45, cluster 64, nice 0 |
231 | pda: Sharing parport1 at 0x378 |
232 | pda: epat 1.0, Shuttle EPAT chip c3 at 0x378, mode 5 (EPP-32), delay 1 |
233 | pda: SyQuest EZ135A, 262144 blocks [128M], (512/16/32), removable media |
234 | pda: pda1 |
235 | |
236 | Note that the last line is the output from the generic partition table |
237 | scanner - in this case it reports that it has found a disk with one partition. |
238 | |
239 | 2.3 Using a PARIDE device |
240 | |
241 | Once the drivers have been loaded, you can access PARIDE devices in the |
242 | same way as their traditional counterparts. You will probably need to |
243 | create the device "special files". Here is a simple script that you can |
244 | cut to a file and execute: |
245 | |
246 | #!/bin/bash |
247 | # |
248 | # mkd -- a script to create the device special files for the PARIDE subsystem |
249 | # |
250 | function mkdev { |
251 | mknod $1 $2 $3 $4 ; chmod 0660 $1 ; chown root:disk $1 |
252 | } |
253 | # |
254 | function pd { |
255 | D=$( printf \\$( printf "x%03x" $[ $1 + 97 ] ) ) |
256 | mkdev pd$D b 45 $[ $1 * 16 ] |
257 | for P in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
258 | do mkdev pd$D$P b 45 $[ $1 * 16 + $P ] |
259 | done |
260 | } |
261 | # |
262 | cd /dev |
263 | # |
264 | for u in 0 1 2 3 ; do pd $u ; done |
265 | for u in 0 1 2 3 ; do mkdev pcd$u b 46 $u ; done |
266 | for u in 0 1 2 3 ; do mkdev pf$u b 47 $u ; done |
267 | for u in 0 1 2 3 ; do mkdev pt$u c 96 $u ; done |
268 | for u in 0 1 2 3 ; do mkdev npt$u c 96 $[ $u + 128 ] ; done |
269 | for u in 0 1 2 3 ; do mkdev pg$u c 97 $u ; done |
270 | # |
271 | # end of mkd |
272 | |
273 | With the device files and drivers in place, you can access PARIDE devices |
274 | like any other Linux device. For example, to mount a CD-ROM in pcd0, use: |
275 | |
276 | mount /dev/pcd0 /cdrom |
277 | |
278 | If you have a fresh Avatar Shark cartridge, and the drive is pda, you |
279 | might do something like: |
280 | |
281 | fdisk /dev/pda -- make a new partition table with |
282 | partition 1 of type 83 |
283 | |
284 | mke2fs /dev/pda1 -- to build the file system |
285 | |
286 | mkdir /shark -- make a place to mount the disk |
287 | |
288 | mount /dev/pda1 /shark |
289 | |
290 | Devices like the Imation superdisk work in the same way, except that |
291 | they do not have a partition table. For example to make a 120MB |
292 | floppy that you could share with a DOS system: |
293 | |
294 | mkdosfs /dev/pf0 |
295 | mount /dev/pf0 /mnt |
296 | |
297 | |
298 | 2.4 The pf driver |
299 | |
300 | The pf driver is intended for use with parallel port ATAPI disk |
301 | devices. The most common devices in this category are PD drives |
302 | and LS-120 drives. Traditionally, media for these devices are not |
303 | partitioned. Consequently, the pf driver does not support partitioned |
304 | media. This may be changed in a future version of the driver. |
305 | |
306 | 2.5 Using the pt driver |
307 | |
308 | The pt driver for parallel port ATAPI tape drives is a minimal driver. |
309 | It does not yet support many of the standard tape ioctl operations. |
310 | For best performance, a block size of 32KB should be used. You will |
311 | probably want to set the parallel port delay to 0, if you can. |
312 | |
313 | 2.6 Using the pg driver |
314 | |
315 | The pg driver can be used in conjunction with the cdrecord program |
316 | to create CD-ROMs. Please get cdrecord version 1.6.1 or later |
317 | from ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ . To record CD-R media |
318 | your parallel port should ideally be set to EPP mode, and the "port delay" |
319 | should be set to 0. With those settings it is possible to record at 2x |
320 | speed without any buffer underruns. If you cannot get the driver to work |
321 | in EPP mode, try to use "bidirectional" or "PS/2" mode and 1x speeds only. |
322 | |
323 | |
324 | 3. Troubleshooting |
325 | |
326 | 3.1 Use EPP mode if you can |
327 | |
328 | The most common problems that people report with the PARIDE drivers |
329 | concern the parallel port CMOS settings. At this time, none of the |
330 | PARIDE protocol modules support ECP mode, or any ECP combination modes. |
331 | If you are able to do so, please set your parallel port into EPP mode |
332 | using your CMOS setup procedure. |
333 | |
334 | 3.2 Check the port delay |
335 | |
336 | Some parallel ports cannot reliably transfer data at full speed. To |
337 | offset the errors, the PARIDE protocol modules introduce a "port |
338 | delay" between each access to the i/o ports. Each protocol sets |
339 | a default value for this delay. In most cases, the user can override |
340 | the default and set it to 0 - resulting in somewhat higher transfer |
341 | rates. In some rare cases (especially with older 486 systems) the |
342 | default delays are not long enough. if you experience corrupt data |
343 | transfers, or unexpected failures, you may wish to increase the |
344 | port delay. The delay can be programmed using the "driveN" parameters |
345 | to each of the high-level drivers. Please see the notes above, or |
346 | read the comments at the beginning of the driver source files in |
347 | linux/drivers/block/paride. |
348 | |
349 | 3.3 Some drives need a printer reset |
350 | |
351 | There appear to be a number of "noname" external drives on the market |
352 | that do not always power up correctly. We have noticed this with some |
353 | drives based on OnSpec and older Freecom adapters. In these rare cases, |
354 | the adapter can often be reinitialised by issuing a "printer reset" on |
355 | the parallel port. As the reset operation is potentially disruptive in |
356 | multiple device environments, the PARIDE drivers will not do it |
357 | automatically. You can however, force a printer reset by doing: |
358 | |
359 | insmod lp reset=1 |
360 | rmmod lp |
361 | |
362 | If you have one of these marginal cases, you should probably build |
363 | your paride drivers as modules, and arrange to do the printer reset |
364 | before loading the PARIDE drivers. |
365 | |
366 | 3.4 Use the verbose option and dmesg if you need help |
367 | |
368 | While a lot of testing has gone into these drivers to make them work |
369 | as smoothly as possible, problems will arise. If you do have problems, |
370 | please check all the obvious things first: does the drive work in |
371 | DOS with the manufacturer's drivers ? If that doesn't yield any useful |
372 | clues, then please make sure that only one drive is hooked to your system, |
373 | and that either (a) PARPORT is enabled or (b) no other device driver |
374 | is using your parallel port (check in /proc/ioports). Then, load the |
375 | appropriate drivers (you can load several protocol modules if you want) |
376 | as in: |
377 | |
378 | # insmod paride |
379 | # insmod epat |
380 | # insmod bpck |
381 | # insmod kbic |
382 | ... |
383 | # insmod pd verbose=1 |
384 | |
385 | (using the correct driver for the type of device you have, of course). |
386 | The verbose=1 parameter will cause the drivers to log a trace of their |
387 | activity as they attempt to locate your drive. |
388 | |
389 | Use 'dmesg' to capture a log of all the PARIDE messages (any messages |
390 | beginning with paride:, a protocol module's name or a driver's name) and |
391 | include that with your bug report. You can submit a bug report in one |
392 | of two ways. Either send it directly to the author of the PARIDE suite, |
393 | by e-mail to grant@torque.net, or join the linux-parport mailing list |
394 | and post your report there. |
395 | |
396 | 3.5 For more information or help |
397 | |
398 | You can join the linux-parport mailing list by sending a mail message |
399 | to |
400 | linux-parport-request@torque.net |
401 | |
402 | with the single word |
403 | |
404 | subscribe |
405 | |
406 | in the body of the mail message (not in the subject line). Please be |
407 | sure that your mail program is correctly set up when you do this, as |
408 | the list manager is a robot that will subscribe you using the reply |
409 | address in your mail headers. REMOVE any anti-spam gimmicks you may |
410 | have in your mail headers, when sending mail to the list server. |
411 | |
412 | You might also find some useful information on the linux-parport |
413 | web pages (although they are not always up to date) at |
414 | |
415 | http://www.torque.net/parport/ |
416 | |
417 |