2 The file attached below provides a short explanation about the nature of ATAPI
3 and the support for it on various platforms. However, it was written for an
4 old version of cdrtools by Joerg Schilling and completed with even older guides
5 supplied by other authors, therefore parts of the content are no longer true or
6 are not applicable anymore. Read and interpret with care!
8 See README.ATAPI.setup for a quick setup guide for Linux.
12 # @(#)README.ATAPI 1.3 04/05/20 Copyright 1997-2004 J. Schilling
14 People (with a Linux only background) often ask me why do you depend on
15 "ATAPI-SCSI emulation", why don't you support generic IDE?
17 Well first a statement: There is no single IDE burner out!
18 Even a CD-ROM cannot be used decently if you use only IDE commands.
19 Opening/closing the door, playing audio and similar things
20 cannot be done using vanilla IDE commands - you will need SCSI commands
21 to do this. But how do we do this with a drive that uses an IDE
24 ATAPI stands for ATA Packet Interface
26 The ATAPI standard describes method of sending SCSI commands over IDE
27 transport with some small limitations to the "real" SCSI standard.
28 SCSI commands are send via IDE transport using the 'ATA packet'
29 command. There is no SCSI emulation - ATAPI drives include native
30 SCSI command support. For this reason, sending SCSI commands to ATAPI
31 drives is the native method of supporting ATAPI devices. Just imagine
32 that IDE is one of many SCSI low level transport mechanisms.
34 This is a list of some known SCSI transports:
36 - Good old Parallel SCSI 50/68 pin (what most people call SCSI)
37 - SCSI over fiber optics (e.g. FACL - there are others too)
38 - SCSI over a copper variant of FCAL (used in modern servers)
39 - SCSI over IEEE 1394 (Fire Wire)
41 - SCSI over IDE (ATAPI)
43 As you now see, the use of the naming convention "ATAPI-SCSI emulation"
44 is a little bit misleading. It should rather be called:
45 "IDE-SCSI host adapter emulation"
47 Some naming explanations:
49 ATA Attachment Adapter
50 IDE Integrated Drive Electronics (A Drive that includes ATA)
51 ATAPI ATA Packet Interface
53 When wodim has problems with ATAPI drives on Linux this usually is a Linux
54 kernel problem. The Linux kernel maintainers unfortunately refuse to correct
55 their current IDE driver system setup which does not support ATAPI by default.
56 ATAPI _is_ SCSI over IDE transport. It is hard to understand why Linux still
57 uses a default driver setup that is designed for IDE CD-ROM drives made
58 before 1994 (using a IDE compat mode that only allows to use the drive
59 read-only) and does not handle to send SCSI commands to ATAPI drives by
60 default. This makes it hard for people who just started with Linux to do
61 CD-writing on Linux if they own an ATAPI drive. Both Linus Torvalds and
62 Alan Cox admit that they don't own a CD/DVD writer, how should they know about
65 There are bugs with the DMA implementation that are known for many years
66 but they don't get fixed.
68 /*--------------------------------------------------------------------------*/
69 Which Operating systems support ATAPI
71 - AIX: Status unknown! Please report your experience...
73 - Apple Mac OS X (Darwin): Supported
75 - BeOS (libscg maps ATAPI to SCSI bus # >= 8
77 - BSD/OS: Status unknown! Please report your experience...
80 - YES for the latest default kernel.
81 It includes finally ATAPI-Cam
83 - NO for the older kernels.
84 Yes, if you install a kernel patch from
85 Thomas Quinot <thomas@cuivre.fr.eu.org>
86 See http://www.cuivre.fr.eu.org/~thomas/atapicam/
89 - HP-UX: It looks like ATAPI does not work correctly due to kernel bugs.
92 HP supports a HP A7853A B/C class machine (s700_800) with HP-UX-11.x
93 You need to install a patch:
95 Patch Name: PHKL_27224 Patch Description: s700_800 11.00 IDE/ATAPI
99 - Linux (unfortunately not in the default configuration)
101 - It works more or less if you include ide-scsi
103 - Linux-2.4.xx includes a CDROM Packet interface in the
104 IDE CD driver. For this driver libscg now includes
105 support in pre-alpha status. Use wodim dev=ATAPI -scanbus
106 to check for drives and e.g. wodim dev=ATAPI:0,0 ....
107 for writing. Note that this interface is not integrated into
108 the standard libscg device naming scheme. Support for
109 this interface has been included because it is the only
110 way to use a PCCARD/PCMCIA writer - trying to use ide-scsi
111 on a PCATA interface will cause a Linux kernel panic
112 or will block all ATAPI drives.
114 - Starting with Linux-2.5.45, there is a new experimental
115 ATAPI interface initiated by Linus Torvalds. Unfortunately,
116 this interface does not fit well into the rest of the Linux
117 SCSI kernel transport naming scheme. Wodim allows to
118 use this interface by calling e.g. wodim dev=ATA:1,0,0 ...
120 All Linux ATAPI transport implementations do not support DMA.
121 Current exceptions are:
123 - ide-scsi with block size 2048 and if DMA has been enabled
125 - The new experimental ATAPI interface starting with Linux-2.5.45
126 allows DMA if DMA has been enabled and the sector size is a
127 multiple of 4. This allows to use DMA for audio CDs and
128 when writing any type of CD in RAW mode.
130 Note that is a bad idea to first implement a new kernel
131 interface that also implements the named DMA implementation
132 bugs and later fix the DMA bug _only_ for this new
133 interface. It looks like the Linux kernel folks are not
136 RAW mode is needed for many new and cheap drives that have bugs when
137 writing in cooked mode. If there is no DMA, you cannot write faster
141 - NetBSD (releases 1.3 and newer)
143 - NeXT: Status unknown! Please report your experience...
145 - OpenBSD: (release 2.6 and newer)
147 - OS/2 (you need to fetch and install ATAPI support first)
148 see: http://www.leo.org/pub/comp/os/os2/leo/drivers/dasd/daniatapi.zip/
150 - OSF-1 / True64 Status unknown! Please report your experience...
152 - SCO-OpenServer: Supported with 5.0.6 and non-public patch or with
153 5.0.7. I don't know whether you need a patch for 5.0.7
155 - SCO-UnixWare: partial support with UnixWare 7.1.3 - some SCSI commands
156 that are needed for cdda2wav and DVD writing are blocked.
157 7.1.4 will have full ATAPI support.
159 - SGI/IRIX: Status unknown! Please report your experience...
161 - Solaris (you may need to use the USCSI transport interface to address
162 ATAPI if the IDE hostadapter idriver implementation does not follow
163 Sun's internal standards).
165 ATAPI works fine on Solaris 7 sparc and on Solaris 7/8 intel.
167 On Solaris 8 (intel) and newer, the ATAPI/SCSI subsystem is integrated
168 correctly according to Sun's SCSA white paper, so the 'scg' driver works.
169 This is not true for Solaris on sparc where the ATAPI driver do not conform
170 to Sun's internal structuring rules. You need to use the USCSI interface
171 on for ATAPI drives on Solaris sparc for this reason.
173 Solaris 8 sparc has a ATA DMA bug that prevents wodim from working at all.
174 There is a fix from Sun available: the patch 108974-16
175 Solaris 9 sparc works again, it has the fix for the ATA DMA bug included.
177 Newer versions of Solaris 9 disable DMA for CD-ROM drives on IDE.
178 Read README.solaris-x86-ATAPI-DMA to learn how this may be circumvented.
180 - VMS: works on recent versions!
182 - Win32 using a recent ASPI Layer supports ATAPI
183 You nay need to exclude mini port drivers (see README.win32).
185 Newer wodim versions also support the SPTI (SCSI Pass through ioctl).
186 Libscg uses SPTI by default if you are running NT-5.x or newer and are
187 administrator. With NT-4.x it may be possible to run wodim dev=SPTI:1,0.0 ...
188 But there are reports for blue screens (kernel crashes).
190 - DOS DOS-7 from win98 includes a ATAPI aware aspi
191 For other versions have a look at README.msdos and use e.g. "oakaspi".
193 /*--------------------------------------------------------------------------*/
196 ***********************
197 NOTE: IDE/ATAPI doesn't have disconnect/reconnect! you cannot expect the needed
198 performance for CD-writing if you connect source and destination drive
199 to the same IDE cable.
200 ***********************
202 If you never like to directly write a CD from CD-ROM source, this configuration
203 seems to be the best:
208 IDE 1 MSTR -> CD-writer
211 If you like to write from both HD source and CD-ROM source, you should have
212 the following configuration:
214 IDE 0 MSTR -> HD1 (does _not_ hold CD mastering data)
215 IDE 0 SLAV -> CD-Writer
217 IDE 1 MSTR -> HD2 (holds CD mastering data)
220 If cou cannot set up a decent cabling (e.g. because you use a notebook)
221 you may try to use wodim -immed ...
222 It runs slow commands in quick (immediate) return background mode and
223 tries to wait between the write commands to allow to free the IDE cable
224 so the wodim read process may fill the FIFO from the other drive
225 on the same IDE cable.
227 /*--------------------------------------------------------------------------*/
228 The rest of this file is only valid for Linux!
230 This was taken out of mails from From: Dave Cohen <dcohen@richmond.infi.net>
231 and From: Gadi Oxman <gadio@netvision.net.il>
232 (slightly modified marked ***JS *** except typo corrects)
234 As all current Linux versions have ATAPI support for wodim,
235 I removed the patch section. If you are running a Linux version
236 that does not support ATAPI<->SCSI command transport, please upgrade.
238 The basic driver design in Solaris would also allow to use ATAPI
239 drives but unfortunately, Sun made a mistake in the mid-level design.
240 If you want to use ATAPI drives with Solaris, ask Sun why they don't
241 support SCSI passthrough to IDE although they are using a common driver
244 Please use cdrecord-1.6 final or later (if available), it includes the
245 modifications needed for ATAPI drives and is still working with other
246 SCSI drives. Older revisions of cdrecord do not support ATAPI drives.
248 If you are using Linux Kernel version prior to 2.1.73 or prior to
249 2.0.35, please upgrade before you try to compile and use wodim.
251 In any case, you need to configure a kernel with ATAPI/SCSI hostadapter
252 emulation. Read carefully the following instructions:
254 In any case, you need to disable generic IDE/ATAPI CDROM support in
255 order to make ATAPI SCSI emulation working.
257 Many people ask why I use ATAPI-SCSI emulation.
259 The use of the naming convention "ATAPI-SCSI emulation" is a
260 little bit misleading. It should rather be called:
261 "SCSI host adapter emulation"
263 The ATAPI standard describes method of sending SCSI commands over IDE
264 with some small limitations to the "real" SCSI standard.
265 For this reason ATAPI-SCSI emulation is the native method of
266 supporting ATAPI devices.
268 If you have problems to talk to the device when it is jumpered as "slave"
269 try to use it as "master". If you connect a hard disk to the same IDE
270 cable as the CD writer or if you try to read/write data from another drive
271 that is connected to the same IDE cable as the CD writer you may get
276 With the newer 2.1.x or 2.2.x kernels it seems to be possible to run
277 SCSI/ATAPI hostadapter emulation and generic IDE at the same time by
278 selectively telling the kernel what to use for which drive. However,
279 this would not be needed if the Linux SCSI CD-ROM driver would be more
280 up to date and supports standard conforming drives.
282 Jörg Schilling <schilling@fokus.fhg.de>
284 --------------------------------------------------
285 Here is a hint from Alan Brown <alanb@manawatu.gen.nz>:
287 To allow ATAPI cd and ide-scsi support on the same machine, add
288 `hd<x>=ide-scsi` to the lilo.conf append entry, or use
289 `hd<x>=ide-scsi` at the bootup lilo prompt.
291 I have my HP-7200 RW drive as the primary drive on the second IDE
292 bus, so the statement used is "hdc=ide-scsi"
294 --------------------------------------------------
296 Hope that the following is helpful to you.
298 I recently purchased a HP-7110i CD-RW, which is the U.S. only version of
299 what you have. The HP 7100 and 7110 CD rewritables use the ATAPI
300 standard. Originally, the drives were not supported under Linux (due to
301 some inconsistencies with SCSI translations between the kernel and the
302 CD), but that problem has just recently been fixed. There are some kernel
303 and wodim patches that have been made to support this device that have
304 yet to be officially incorporated into cdwrite and the kernel. In order to
305 get your drive supported under Linux, you will have to do the following:
307 1. Get the proper version of cdrecord.
309 As of this writing, I am just getting ready to test Joerg's new cdrecord.
310 I am currently operational on cdrecord-1.5, so I know that works, and I
311 have attached patches for that version.
313 If you are in a hurry, you can download ver. 1.5, apply patches, and
314 rock-n-roll. You may want to wait, though. Up to you ;). The version with
315 ATAPI support is cdrecord-1.6alpha5. I'm not sure if the current kernel
316 patches are valid for this version, but i'll know soon enough.
317 **** They are valid **** JS
319 BTW, the new version of xcdroast now supports cdrecord - this version
320 is in beta testing, too (currently uses cdrecord-1.5 but cdrecord-1.6a5
321 should work with the current xcdroast too).
323 2. Upgrade to kernel version 2.0.31
325 IDE/SCSI translation was first added in this kernel. Because your CD-RW is
326 an ATAPI device, it will support SCSI command sets. The translation
327 allows you to map the device as a SCSI generic device. This will allow
328 cdrecord to recognize it as a SCSI device.
329 **** 2.0.31 still needs patches, get 2.0.35 or later **** JS
331 3. Get the patches and apply them
333 Attached find kernel patches for kernel sources ide.h and ide-scsi.c, and
334 cdrecord source scsi_cdr.c (version 1.5 only).
335 **** Get cdrecord-1.6 or later **** JS
337 3. Recompile kernel with SCSI emulation support
339 If you do a "make menuconfig" or "make xconfig", select SCSI emulation
340 under the category "Floppy, IDE, and other block devices".
343 Do not install SCSI support as a module - there is a bug in the makefile
344 structure that will cause the compile to fail. Compile directly into the
347 4. WARNING: Disable generic IDE/ATAPI CDROM support *** JS ***
349 If you don't do this, the SCSI emulation will not work *** JS ***
351 5. This is important too:
352 You also need to enable SCSI and SCSI generic support *** JS ***
354 6. Make sure that /dev/sg* exists.
355 If they are missing, create them.
358 dcohen@richmond.infi.net
359 (Patch instructions below)
361 -----------------------------------------------------------------
362 From: Danilo Fiorenzano <shade@juliet.gppsd.ab.ca>
364 Anyway, here's what I did, using kernel version 2.0.33 I believe this
365 is the proper way to get an HP-7100i to work (and as far as I can tell,
366 any other IDE CD-writer unit):
368 1) patch the kernel as described by README.ATAPI
370 2) save your current kernel config to an alternate file, then run
373 3) run 'make menuconfig' or 'make xconfig', then choose "load config
374 from alternate file" to restore the original configuration
376 4) In "Floppy, IDE and other block devices", disable "IDE/ATAPI CD-ROM
377 support" and enable instead "scsi emulation"
379 5) in "SCSI support" enable "SCSI support", "SCSI CD-ROM support" and
380 "SCSI generic support", everything directly in the kernel.
382 6) compile, install kernel/modules, reboot. Now, if everything went
383 fine, your CDROM units should show up with a message like:
384 "hdb: HP CD-Writer+ 7100, ATAPI CDROM drive - enabling SCSI emulation"
386 7) run "wodim -scanbus" to make sure wodim can see the unit and
389 Don't forget that now -all- of your CD drives are seen as -SCSI- units
390 by all programs (/dev/scd0 etc.), so you might want to relink
391 /dev/cdrom to the proper scd<n> in order to get xcdplay or whatever to
395 -------------------------------------------------------------------------------
398 1) Current wodim releases support ATAPI
400 2) Linux 2.0.35 or Linux 2.1.73 or later include ATAPI support
401 -------------------------------------------------------------------------------
402 From whampton@staffnet.com Fri Jan 14 05:21:34 2000
403 From: "W. Wade, Hampton IV" <whampton@staffnet.com>
405 You may wish to include/append these notes to your ATAPI notes....
407 I have my 4X Acer CD-R/RW ATAPI drive working with Linux. My platform
409 RedHat 6.1 with kernel 2.2.14. My first ATAPI CD device is a DVD with
411 the CD-R. I made the following changes:
415 1. Identify which device is the CD-R -- in my case the fourth ATAPI
418 2. Compile the kernel to include ATAPI CDROM and SCSI emulation:
420 Under the block devices menu:
421 Y or M Include IDE/ATAPI CDROM support
422 Y or M SCSI emulation
424 3. Build and install the upgraded kernel.
426 4. If you selected modules, add them to the /etc/conf.modules file.
428 5. In the /etc/lilo.conf file add an append line for ide-scsi, in my
430 append = "hdc=ide-scsi hdd=ide-scsi"
432 6. Reboot to the new kernel and make sure the ide-scsi module is loaded
434 /sbin/lsmod | grep ide-scsi
436 7. Make a link from the proper SCSI device to a symbolic, e.g.,
438 In my case the DVD is the first CD, hence appears as /dev/scd0 to
440 (cat /proc/scsi/scsi to get a full list of devices -- the first
442 appear as scd0, etc.) With the current ATAPI-SCSI module, each CD
444 device appears as 8 SCSI devices (different logical units). If
446 two devices, like I do, you may have to make a node for the second
448 In my case I had to make scd8:
453 Then make links, in my case:
458 Note, many CD-ROM player programs expect the audio CD drive to
459 be located at /dev/cdrom (xplaycd, etc.), hence this link is
462 If you try to use /dev/hdc (or wherever your CD or CD-R is)
464 the ide-scsi module, you may not be able to mount CD's or play
466 discs -- you have to use the new SCSI names for the device.
468 8. Fix your /etc/fstab file to mount the /dev/cdrom and /dev/cdr
471 /*--------------------------------------------------------------------------*/
472 From: Eduard Bloch <edi@gmx.de>
475 Linux: Kernel 2.2.15 (Debian package kernel-image-2.2.15)
476 Distribution: Debian Potato (deep freeze), i386
477 Devices: one CDRW-Writer, one CDROM-drive, both ATAPI
479 1. Become root, try "grep hd.: /var/log/kern.log" to find out where your
480 ATAPI-devices are connected to (hd?-names).
481 2. Edit your boot configuration file, eg. /etc/lilo.conf if you use
482 lilo or the batch-file if you boot via loadlin.
483 3. Find a line where you can append additional kernel parameters, eg.
484 "append=" in lilo.conf or the loadlin-line in the batch file.
485 4. Append sth. like this: "hdb=ide-scsi hdc=ide-scsi max_scsi_luns=1"
486 The hdX-parameters defines devices that should be mapped to SCSI
487 latter. You may do it with non-writers too, since the emulation layer
488 is almost complete, or let them out so the devices will use their
490 5. Save the file, reinstall the bootloader (ie. running "/sbin/lilo")
491 6. Call "modconf", load "sg" and "ide-scsi" from the SCSI-section
492 7. Reboot Debian, watch while booting, you should see a line like this
493 "Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0".
494 Your old ATAPI devices virtually don't exist any longer, use the
495 SCSI equivalents instead.
496 8. Become root, setup devices:
499 ln -s scd0 cdrom # NOTE: or cdrw, first check which drive is here
500 ln -s scd1 cdrw # NOTE: see above, maybe cdrom
501 Check the new SCSI settings:
503 Setup wodim's environment - edit /etc/wodim.conf:
507 Input the right values, the fields are described in the manpage
508 of wodim. Alternatively, you may use this values as
509 wodim-parameter or take a frontend with an own configuration
510 scheme, then you don't need to modify /etc/wodim.conf.
511 9. It's done! Insert a CD and try "wodim -v -toc"
512 /*--------------------------------------------------------------------------*/
513 He had constant buffer underrun problems:
515 From: "Trenton D. Adams" <trenton.adams@telusplanet.net>
517 I enabled DMA, and 32-bit mode on the CD-Writer using "hdparm".
518 This fixed the writing problem.
520 /*--------------------------------------------------------------------------*/
521 From: "Mario Moder" <clay-man@freenet.de>
525 I recently installed a TEAC CD-W54E (an ATAPI CD-RW-Recorder) and I had
526 problems with buffer underruns and other errors when burning a CD (with
527 Linux and Windows 2000). My system has an old ASUS P/I-P55T2P4 Pentium
528 mainboard with Intel PCI-Bus-Master-IDE (I think the chipset is an Intel
529 430HX and the IDE controller is an 82371SB). The harddisk is the master on
530 the primary IDE channel, and the CD-Recorder is the master on the secondary
533 After turning off DMA for the CD-Recorder AND the harddisk, the drive had no
534 longer problems with burning a CD. You can try the following things to make
535 it work, if you have similar problems with a similar hardware configuration:
537 For Linux (Kernel 2.2.19):
538 Turn off "Enable DMA by default" in the kernel (and then compile a new
539 kernel), if you had it turned on or use "hdparm" to turn of DMA for both the
540 CD-Recorder and the harddisk
543 In the Device Manager go to "IDE ATA/ATAPI-Controller" and open the
544 properties for the first and second IDE channel. There you change the mode
545 of the devices from DMA to PIO.
548 /*--------------------------------------------------------------------------*/
550 Hints for the Linux Packet code in ide-cdrom.c:
552 WARNING! It seems that this driver does not allow to send all
553 SCSI commands. A command that definitely fails is READ FULL TOC.
554 For this reason, you cannot read those 'defective' audio CDs
555 with broken TOC when you use this interface.
557 Thanks to Alexander Kern <alex.kern@gmx.de> for the idea and first
558 code fragments for supporting the CDROM_SEND_PACKET ioctl() from
559 the cdrom.c kernel driver. Please note that this interface in principle
560 is completely unneeded but the Linux kernel is just a cluster of
561 code and does not support planned orthogonal interface systems.
562 For this reason we need CDROM_SEND_PACKET in order to work around a
563 bug in the linux kernel that prevents to use PCATA drives because
564 the kernel panics if you try to put ide-scsi on top of the PCATA
567 The code is currently in "status nascendi" but usable with some trade offs.
571 wodim -scanbus dev=ATAPI:
573 wodim -dao -v speed=24 dev=ATAPI:0,0 ....
575 Be careful! This code is only needed in order to be able to use
576 PCATA CD-writers on notebooks because there is a severe kernel bug.
577 Unfortunately, this bug causes the kernel to hang (and force you
578 to reboot) if you try to call:
582 without the dev=ATAPI: option.
584 In this case wodim will hang infintely and unkillable
585 in open("/dev/sg1", 2) => you need to reboot :-(
587 Repeat by: Insert a PCATA CD-Writer in a Sony VAIO notebook and run