11.11 Special Problems and Applications

Once you have your CD writer and software configured properly, burning CDs is usually a pretty straightforward process. There are, however, some special situations that deserve comment. The following sections detail some of the unusual situations you may encounter.

11.11.1 Copy-Protected CDs

This was a very nice section. We provided complete instructions for circumventing the various copy-protection methods that manufacturers use to make life difficult for honest users. But you'll never read that material. Why? Because we don't want to end up like Dmitri Sklyarov, who was imprisoned under the Digital Millennium Copyright Act (DMCA) simply because he exercised his First Amendment right to free speech. (And please don't ask us to email you the deleted text. We can't afford to take that risk.)

The sole purpose of the DMCA is to prevent all of us from doing things we have the right to do?such as making backup copies of the CDs and DVDs we buy?and saying things we have the right to say?such as how to make those backup copies. The DMCA was bought and paid for by the RIAA (Recording Industry Association of America) and MPAA (Motion Picture Association of America), and benefits no one except the music and movie industries.

The definition of an honest politician is one who stays bought, but we nevertheless hope the monstrosity called the DMCA can be overturned. There are several things you can and should do to protect your own interests. Write or call your representatives and senators to complain about DMCA and demand it be repealed. Join the Electronic Frontier Foundation (http://www.eff.org) and support their efforts to preserve free speech. Hit the MPAA and RIAA where it hurts. Boycott their products, particularly those that are copy-protected. Make it clear to the MPAA and RIAA that their insane insistence on treating their customers as thieves is offensive, and that you won't put up with it.

11.11.2 Making Copies of Copies

Although it surprises many people?it certainly surprised us?the CDs you make in your burner are not necessarily exact copies of the source CD. For audio CDs, this usually isn't a problem. An occasional dropped or flipped bit will probably be inaudible. But for data CDs, it can be a major problem. We found this out while playing with a new burner. We duped the original FrontPage CD, and were able to install FrontPage from the dupe. But when we duped the dupe and then tried to install from the second-generation copy, Setup returned file read errors. Doing a binary compare on those files told the sad truth: the files were identical on the original CD and the first-generation copy, but differed on the second-generation copy.

Remember that CDs depend heavily on error-correction and detection code. All CD formats use 3,234-byte physical sectors, which allocate 2,352 bytes to data and the remainder to control and error correction data. Audio CDs use the entire 2,352 bytes for audio data. Yellow Book Mode 1 (data) CDs use only 2,048 bytes for data and allocate the remaining 304 bytes to another ECC layer. The problem arises because of the different ways that CD burners and software read and write Mode 1 data:

Raw mode

The drive reads the entire 2,352 byte sector as a raw bit stream and writes that raw data to the destination device. Any data read errors in either the data segment or the ECC segment are written literally to the destination. Working in this mode, generational degradation can overwhelm the ability of ECC to correct errors and result in a CD that returns read errors or contains corrupted files. This may occur as early as a second-generation copy, and almost certainly after several generations.

Cooked mode

The drive reads only the 2,048 byte data segment, using the ECC segment to verify the data and correct it if necessary. The drive then recalculates the proper ECC segment for that data segment and writes the original data segment with the new ECC segment to the destination disc.

This means it is impossible to ensure an exact copy of any CD that uses 2,352 byte data segments (audio CDs) or 2,336 byte data segments (Mode 2 data CDs) because those segments contain no sector-level ECC data. Fortunately, Mode 2 CDs are rare, and you can copy the common Mode 1 data CDs reliably by using cooked mode, assuming that your drive and software support it. To minimize copying problems, use the following guidelines:

  • For Red Book (audio) CDs, use an original (pressed) CD as the source. There is no reliable way to make a copy of an audio CD that is itself a copy. When copying original source CDs, note that some drives disable some error-correcting features during digital audio extraction, or may use error correction only during DAE at 1X. Experiment to determine the optimum recording speed for best sound quality. Differences are subtle, particularly with recent drives and media, but they do exist. Some people swear you should always dupe audio CDs at 1X (or 2X or 4X), but the truth is that the optimum speed depends on the drive and media. Drive A may make the best dupes with Media A at 1X and with Media B at 4X, while Drive B may be exactly the opposite. Test with each drive and each time you change media.

  • For Yellow Book Mode 2 data CDs, always use an original CD as the source. There is no reliable way to make a copy of a Mode 2 CD that is itself a copy. If you must copy a Mode 2 copy, do a file-by-file binary compare afterward to verify the copy.

  • For Yellow Book Mode 1 data CDs, either use the original CD as the source (using either raw or cooked mode), or use cooked mode when copying from a source CD that is itself a dupe. Also note that problems may arise if the source dupe was made in raw mode rather than cooked mode.

11.11.3 Creating and Using a Bootable CD-R Disc

If your system and drive support the El Torito Specification (http://www.phoenix.com/resources/specs-cdrom.pdf), which allows booting from CD, a bootable CD can be a useful emergency fallback. The process required to create a bootable CD varies according to the mastering software package you use. See the documentation for details.

To boot from CD, the CD/DVD-ROM drive and system BIOS must support CD as a boot device, which nearly all recent models do. To set your system to boot from CD, run BIOS Setup and locate an option named "Boot Sequence" or something similar. That option will typically be set to something like "A:, C:, CD-ROM, SCSI" by default. Insert the bootable CD, change the boot sequence to make the CD-ROM the first boot device, and restart the system. The system will boot from the CD, which it will recognize as drive A:. (The actual FDD will become B:.)

11.11.4 Creating an AutoRun CD-R Disc

At times it's useful to create a CD that, when inserted in the drive, automatically loads and runs a specified program or document. For example, you can distribute HTML content on a CD that automatically invokes the user's browser and loads index.html. The only thing necessary to enable AutoRun for program files is to put a properly formatted AutoRun.inf file in the root directory of that CD. AutoRun.inf is a plain ASCII text file with the following syntax:


Inserting a CD that contains Notepad.exe and Index.html in the root directory and the following AutoRun.inf:

Open=notepad.exe index.html

causes Windows to AutoRun Notepad.exe and load Index.html into it. You can optionally specify a path before the program or document name. AutoRun.inf supports many more options, which are documented at http://www.microsoft.com/msj/0998/win320998.aspx.

Unfortunately, AutoRun does not honor file associations, which makes it difficult to invoke the user's browser to run an HTML source file automatically. There are several workarounds for this problem, but the one we prefer is the small utility Autohtml.exe, developed by Mark Trescowthick and Ross Mack, which is available for download at http://www.avdf.com/oct98/art_ot005.html. That page includes full instructions for using the utility.

Repeatedly burning CDs while you are testing your custom AutoRun.inf is time-consuming and wasteful. One alternative is to modify the registry to allow AutoRun to work on a floppy disk. As always, back up before making changes to the registry, and proceed with caution. To make this change, which works on Windows NT/2000/XP and Windows 9X systems, run Regedit.exe and locate the value entry NoDriveTypeAutoRun, which resides in the key HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. Double-click the value entry to edit the value.

Windows actually stores a 4-byte value, but only the following binary digits of the first byte are meaningful. Those digits are used as a binary bitmap, as follows:

Bit        Type
3        DRIVE_FIXED
5        DRIVE_CDROM

By default, this bit mask is set to 10010101 (95H), which disables AutoRun for DRIVE_UNKNOWN, DRIVE_REMOVABLE, and DRIVE_REMOTE. The high-order bit is also set to disable AutoRun for reserved future devices. (1=disable Autorun; 0=enable it.) Change this bit mask to 10010001 (91H) to enable AutoRun for removable drives, including floppy diskette drives and Zip drives. Save the change and restart the computer. A floppy disk does not AutoRun when inserted because the floppy drive cannot notify Windows that the disk has been inserted. However, you can manually AutoRun that floppy by right-clicking the drive icon and choosing AutoPlay.

11.11.5 Packet Writing with Linux

Beginning with the 2.4 kernel, Linux offers limited packet-writing support. The 2.4 and 2.5 kernels have no native support for packet writing, but a kernel patch is available from the Linux UDF Project (http://sourceforge.net/projects/linux-udf) that adds basic packet-writing functions. The kernel patch should work with any CD-(M)RW drive that supports packet writing. As we write this, the major limitations of the patch are that it supports only CD-RW media and fixed-length packet writing.

To enable packet writing under Linux, take the following steps:

  1. Download the latest version of the patch from kernel.org and apply it.

  2. Configure the kernel by selecting packet support in the block device section and UDF support in the filesystem section.

  3. Compile the kernel and modules, install the kernel, and reboot the system.

  4. Download the latest version of cdrwtool, which is needed to format CD-RW discs.

  5. Use the command make lib tools udf.o install to compile and install UDF support.

  6. Format a new CD-RW disc using the command cdrwtool -d /dev/<device> -q.

  7. Use the command ls /dev/pk* to verify that /dev/pktcdvd0 exists. If it doesn't, use the command mknod /dev/pktcdvd0 b 97 0 to create it.

  8. Use the command pktsetup /dev/pktcdvd0 /dev/<device> to set up the CD writer.

  9. Use the command mount /dev/pktcdvd0 to mount the device, at which point you should be able to read from and write to the drive.