How to clone an audio CD (including pauses between tracks) under Mac OS X Mountain Lion?

First, what does not work:

  1. Some people suggest Burn, but it is no longer updated and does not work on modern versions of OS X.
  2. Some people suggest LiquidCD, but it is no longer updated and does not work on modern versions of OS X.
  3. Some people suggest Disk Utility, which is great for DATA CDs but does not work for AUDIO CDs because Audio CDs do not have a file system. Disk Utility (and hdiutil behind the scenes) cannot image raw Audio CDs because they have to write into a file system-based .dmg file. When you see an Audio CD mounted in Finder it is using the cddafs convenience file system driver to present Audio CD tracks as playable .aiff files - this is not the raw Audio CD data and so when you image this view from Disk Utility's Disk Image from Folder option you will often have messed up audio gaps. When you mount these .dmg files Finder windows will show you the .aiff audio files again, but iTunes will not recognize the mounted .dmg as an Audio CD and so will not give you the opportunity to rip it as if it were a normal Audio CD.

What does work? cdrdao still works and is freely available through Macports (port install cdrdao) and Homebrew (brew install cdrdao).

I'm not a huge fan of cdrdao but it is suitable for this particular task. It's too complex for the average user because (a) it requires use of the command line (which I'm comfortable with, but most people aren't); (b) it requires knowledge of two different sets of device names and (c) it requires that iTunes is not running because it locks Audio CDs in a way that prevents exclusive access.

NOTE: This whole process is a lot easier if you go to System Preferences > CDs & DVDs and set all options there to Ignore. This should stop Finder, iTunes and other software from breaking things at the wrong times for you.

First up you need to know the /dev/disk(?) name of your optical device, since you're going to have to umount it so that cdrdao can get exclusive access to it, e.g.:

$ diskutil list

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:        CD_partition_scheme Cool Music Disc...     *834.4 MB   disk3
   1:                      CD_DA                         75.3 KB    disk3s0
   2:                      CD_DA                         30.3 MB    disk3s1
...

In this case, /dev/disk3 is our USB-based optical device with an Audio CD inserted.

You also need to know what cdrdao thinks this device is called:

$ cdrdao scanbus

Cdrdao version 1.2.3 - (C) Andreas Mueller <[email protected]>
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/MT1887@14113000/6238--Storage@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices : TSSTcorp, CDDVDW SE-208DB, MF00
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/SDRW-08D1S-U@14112000/IOUSBInterface@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices : ASUS, SDRW-08D1S-U, 1.02

Those massive strings, up to the " : " anyway, are the device names that cdrdao requires. I have two listed because I have two USB-based optical drives plugged in - a Samsung and an ASUS.

To image an Audio CD you issue the commands:

$ diskutil umount /dev/disk3

Volume Cool Music Disc... on disk3 unmounted

$ cdrdao read-cd --device "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/SDRW-08D1S-U@14112000/IOUSBInterface@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices" --with-cddb --datafile test.dat test.toc

Cdrdao version 1.2.3 - (C) Andreas Mueller <[email protected]>
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/SDRW-08D1S-U@14112000/IOUSBInterface@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices: ASUS SDRW-08D1S-U    Rev: 1.02
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

Reading toc and track data...
...

Eventually you'll have two files on disc:

  1. test.dat is a binary file containing the data of the Audio CD
  2. test.toc is a text file containing the track metadata of the Audio CD (including track name/artist information if you used the --with-cddb switch)

Finally, to write the data on to a new disc, pop in a blank CD+/-R and use the command:

$ cdrdao write --device "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/SDRW-08D1S-U@14112000/IOUSBInterface@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices" test.toc

Cdrdao version 1.2.3 - (C) Andreas Mueller <[email protected]>
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/AppleUSBXHCI/SDRW-08D1S-U@14112000/IOUSBInterface@0/IOUSBMassStorageClass/IOSCSIPeripheralDeviceNub/IOSCSIPeripheralDeviceType05/IODVDServices: ASUS SDRW-08D1S-U    Rev: 1.02
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

Starting write at speed 10...
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-\).
WARNING: No super user permission to setup real time scheduling.
Turning BURN-Proof on
Executing power calibration...
Power calibration successful.
Writing track 01 (mode AUDIO/AUDIO )...
...
Writing track 13 (mode AUDIO/AUDIO )....
Wrote 795 of 795 MB (Buffers 100%  98%).
Wrote 354742 blocks. Buffer fill min 93%/max 100%.
Flushing cache...
Writing finished successfully.

When this finishes you'll have an exact duplicate of your original Audio CD. When you pop this in a drive iTunes will recognise it as an Audio CD and it will give you the option to rip its contents.

Hope this helps.


It seems that "Burn" does the trick. Saving the image of a CD in "Raw" format will generate an ISO file along with an ISOINFO file. I figure using "Burn" again to burn the pair to a blank CD will reproduce the original pauses.

I have not verified the pauses, but the songs are definitely on the copy.