Graphical CD writing software

Note that these are all merely graphical front-ends that call cdrecord to do the actual writing, so you will need to make sure that cdrecord works (see the following sections for help with this).

  • K3B is the KDE project's GUI burning tool
  • xcdroast has a fairly awful GTK based GUI.
  • eroaster looks much better designed for ease-of-use... written in Python and GTK.
  • GNOME has nautilus-cd-burner, a GNOME VFS thing that means you can drag'n'drop files into the burn:/// virtual directory, and then click the Write to CD button. Nice and easy. In a nautilus window, click on the Go or Places menu and then CD Creator.

Identify Drive Model

Here are a few ways of finding out your drive information.

  • cdrecord -inq
Device type    : Removable CD-ROM
Version        : 0
Response Format: 1
Vendor_info    : 'BENQ    '
Identifikation : 'DVD DD DW1650   '
Revision       : 'BCDC'
Device seems to be: Generic mmc2 DVD-R/DVD-RW.
  • cdrecord -scanbus dev=ATA
        1,0,0   100) 'BENQ    ' 'DVD DD DW1650   ' 'BCDC' Removable CD-ROM
  • dmesg | egrep '(DVD|CD)'
[   30.164585] hdc: BENQ DVD DD DW1650, ATAPI CD/DVD-ROM drive
[   30.566013] hdc: ATAPI 48X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33)
[   30.566021] Uniform CD-ROM driver Revision: 3.20


At least in Debian Woody, the file /etc/default/cdrecord stores settings about your CD writer(s). The last section which maps the device settings to the drive name must be Tab separated. Spaces won't work.

Make sure that your user has permission to any required device files and executable programs. In Debian, the files have the appropriate permissions for people in the cdrom group. If you add yourself to the group you will have to log out and back in for that to take effect.

In later Debian versions cdrecord(1) has been changed to wodim. Wodim is a fork of cdrecord as cdrecord stalled a little and also the license was changed on later versions by the original authour.

How to get your CDR working – ATAPI Styles

Recent 2.4 kernels, and all 2.6 kernels, have support for cdwriting via ATAPI. Historically, the cdrecord program only worked over SCSI and Linux users needed SCSI emulation. There was argument over whether this was the kernel's fault or cdrecord's fault. See Linus's take and the author's take on this as well as an explaination of both points of view on Slashdot.

What to do

Make sure you have the ATAPI CDROM driver compiled in or as a module in your system. Probably best if you disable ide-scsi emulation while you're at it. (That is, make sure no drives are told to use the SCSI emulation on boot. Either remove ide-scsi support from your Kernel, or check your BootLoader's configuration (either LILO or GRUB) to make sure it doesn't pass any hdx=ide-scsi options to the kernel.)

Upgrade cdrecord to the latest versions (2.0.x and above all appear to support this).

Get the latest version of whatever graphical frontend you prefer, and make sure they grok the ATAPI interface. If they don't, email the author requesting the feature and explain why you're now using a different program instead of theirs :)

Finding the CDR

Now find your CDR with cdrecord dev=ATA: -scanbus. Note the dev=ATA: bit. (Warning: case matters - "ATA" works, "ata" does not.)

The above command will return something like
Cdrecord-Clone 2.01a19 (i686-pc-linux-gnu) Copyright (C) 1995-2003 Jörg Schilling
 scsidev: 'ATA:'
 devname: 'ATA'
 scsibus: -1 target: -1 lun: -1
 Warning: Using ATA Packet interface.
 Warning: The related libscg interface code is in pre alpha.
 Warning: There may be fatal problems.
 Using libscg version 'schily-0.7'
         0,0,0     0) *
 cdrecord: Warning: controller returns wrong size for CD capabilities page.
         0,1,0     1) '        ' 'ATAPI CDROM 52X ' '120N' Removable CD-ROM
         0,2,0     2) *
         1,0,0   100) 'CDWRITER' 'IDE4012         ' '409E' Removable CD-ROM
         1,1,0   101) *
         1,2,0   102) *

So, this says there is an ATAPI CDROM on dev=ATA:0,1,0 and an ATAPI CD writer on dev=ATA:1,0,0.

Note! cdrecord seems to have 2 independent ATAPI/IDE drivers: ATA: and ATAPI:, which map device names differently
$ cdrecord dev=ATAPI: -scanbus
Warning: Using ATA Packet interface.
Warning: The related Linux kernel interface code seems to be unmaintained.
Warning: There is absolutely NO DMA, operations thus are slow.
        0,1,0     1) 'CyberDrv' 'CB511D Combo    ' '120A' Removable CD-ROM

$ cdrecord dev=ATA: -scanbus
scsidev: 'ATA:'
devname: 'ATA'
scsibus: -1 target: -1 lun: -1
Warning: Using badly designed ATAPI via /dev/hd* interface.
Linux sg driver version: 3.5.27
        1,1,0   101) 'CyberDrv' 'CB511D Combo    ' '120A' Removable CD-ROM

ATA: appears to be the preferred driver, and ATAPI: seems to be obsolete. If you do not find your drive with one, though, try the other. The ATA driver supports DMA.

You can now burn CDs just as you could before, except use the device names as detailed above (ie, dev=ATA:1,0,0).

You can also save this in the cdrecord config file (either /etc/default/cdrecord on Debian, or maybe /etc/cdrecord.conf on other distros) by adding something like
mycdwriter=      ATA:1,0,0      -1     -1      ""

(and remember to use tabs for separation, and not spaces.)

Another Way

In Debian Sid, the file /usr/share/doc/cdrecord/README.ATAPI.setup.gz describes another way to get cdrecord working with ATAPI drives. With 2.6.x, if you add these lines to /etc/default/cdrecord (fields are tab separated)
cdrw=   /dev/hdc        -1      -1      ""

cdrecord will then use /dev/hdc by default. Then mkisofs -r directory | sudo cdrecord - will burn a CD of directory's contents.

Debian Woody

If you're brave and run Linux 2.6 under Debian Woody, all you need to do is include backports for cdrdao and cdrtools, and you can use ATAPI CD writing just fine. You should already have backports for module-init-tools and other assorted packages like hdparm(8) that need updating for the new kernel, so add these ones as well
deb woody cdrdao
deb woody cdrtools
I've successfully burnt an ISO image to disk using an LG 52x ATAPI CD writer. The output from cdrecord dev=ATAPI: -scanbus looked like this
0,0,0     0) 'HL-DT-ST' 'CD-RW GCE-8525B ' '1.01' Removable CD-ROM

Not tried an audio CD yet.

How to get your CDR working – IDE SCSI emulation

Note: Recent versions of cdrecord(1) combined with a recent LinuxKernel can use native IDE drivers for IDE CD writers, so this whole mumbo jumbo is not necessary. See the notes back up the page. This is left here for anyone using an older distro or kernel.

See our SCSI-IDENotes page for notes on setting up ide-scsi emulation.

Why you should use ATAPI if you can

The main reason might be that you don't have to muck around with ide-scsi emulation and so on. However, the bigger reason is that it appears that ide-scsi has a major bug which may never be fixed, so if you want CD writing to work under 2.6 you'll want to use the ATAPI interface. Another reason is that it's such a PITA to change between using ide-scsi and ide-cd if you want to go from, say, writing a CD to playing a DVD, and you have one of those nifty combo CDR/DVD drives.

Finding the CDR

Now find your CDR with cdrecord -scanbus, which returns something like

Cdrecord 2.01a16 (i686-pc-linux-gnu) (C) 1995-2003 Jörg Schilling
Linux sg driver version: 3.5.28
Using libscg version 'schily-0.7'
        0,0,0     0) 'HP      ' 'CD-Writer+ 9100 ' '1.0c' Removable CDR
        0,1,0     1) *
        0,2,0     2) *

This means your CDR is at 0,0,0 just like on most single-drive machines with IDE CD writers.

Writing bootable CDs

The CD standard supports "floppy emulation", great for getting those old discs backed up and loading at 10× the speed. If you have a floppy image you've downloaded, call it boot.img (or change the command line). If you have a 1.44Mb floppy, run dd if=/dev/fd0 of=boot.img bs=10k count=144. Put boot.img in an otherwise empty directory, and from that directory run mkisofs -b boot.img -c boot.catalog . | cdrecord -v .

mkisofs will generate the boot.catalog file for you. Add -dummy to cdrecord if you want a test run first. If cdrecord doesn't know about your cdr then you'll need to add dev=x,y,z and possibly speed=n. If you just want to create the ISO image then you can use -o boot.iso with mkisofs instead of piping it to cdrecord. The "." at the end of mkisofs is still required though.

/usr/share/doc/mkisofs/README.eltorrito explains how to create bootable CDs.

Writing out downloaded (ISO) CDs

The command you want to use is something like cdrecord dev=/dev/cdwriter abc.iso where you substitute the device name of your CD writer and file you downloaded.

If you do not run as root you get the following message
cdrecord: Operation not permitted. WARNING: Cannot set RR-scheduler
cdrecord: Permission denied. WARNING: Cannot set priority using setpriority().
cdrecord: WARNING: This causes a high risk for buffer underruns.

Basically you can still burn the CD but would recommend you don't do other things at the same time that hog CPU or else you may burn a coaster.

Part of CategoryDiskNotes and CategoryStorage