## Homepage of

# cdrskin

## Limited cdrecord compatibility wrapper for libburn

## Purpose:

- Burns preformatted data to CD-R, CD-RW, DVD-RAM, DVD+RW, DVD-RW

## Hardware requirements:

A CD recorder suitable for libburnia.pykix.org (SCSI or IDE/ATAPI writers compliant to mmc-3 standard).

## Software requirements :

Linux kernel 2.4 or higher
  With kernel 2.4 the drive has to be under ide-scsi emulation.
  With kernel 2.6 the drive should not be under ide-scsi.
libpthread
  is supposed to be a standard system component.

## GPL software included:

libburn-0.3.0
  (by Derek Foreman, Ben Jansens, and team of libburnia.pykix.org)
  transfers data to CD

This program system has been tested on Intel/AMD Linux systems only.
Ports to other usable systems are appreciated. Reports are welcome.

## Special features:

- Source code is independent of cdrecord

## Commands:

The goal is to provide some of cdrecord's options in a compatible way. This has been achieved quite sufficiently for the needs of backup tool scdbackup and for data CD projects of K3b (see examples). Suitability for audio CD frontends has been improved much and is now being evaluated.
DVD are written in a pseudo -tao mode which is very different from the write mode used by cdrecord(-ProDVD).
Further enhancements depend on people who can describe and discuss their wishes as well as on the development of libburn.
Get an overview of drives:
  $ cdrskin -scanbus
  $ cdrskin dev=ATA -scanbus
  $ cdrskin --devices
Get info about a particular drive or loaded media:
  $ cdrskin dev=0,1,0 -checkdrive
  $ cdrskin dev=ATA:1,0,0 -atip
  $ cdrskin dev=/dev/hdc -toc
Make used CD-RW writable again:
  $ cdrskin -v dev=/dev/sg1 blank=all -eject
  $ cdrskin -v dev=/dev/dvd blank=fast -eject
Format DVD-RW before first use with cdrskin
  $ cdrskin -v dev=0,1,0 blank=format_overwrite -eject
Write ISO-9660 filesystem image:
  $ cdrskin -v dev=/dev/hdc speed=12 fs=8m driveropts=burnfree -eject padsize=300k my_image.iso
Write compressed afio archive on-the-fly :
  $ find . | afio -oZ - | cdrskin -v dev=0,1,0 fs=32m speed=8 driveropts=burnfree padsize=300k -tao -
Write audio tracks:
  $ cdrskin -v dev=ATA:1,0,0 speed=48 driveropts=burnfree -sao track1.wav track2.au -audio -swab track3.raw
Get overview of the cdrecord compatible options:
  $ cdrskin -help
Get overview of the non-cdrecord options:
  $ cdrskin --help
Read the detailed manual page:
  $ man cdrskin
Read about the standard for which cdrskin is striving:
  $ man cdrecord
  Do not bother Joerg Schilling with any cdrskin problems. (Be cursed if you install cdrskin as "cdrecord" without clearly forwarding this "don't bother Joerg" demand.)

## Known deficiencies:

- Appending sessions to unclosed media is restricted to write mode TAO.
- cdrskin -scanbus or --devices hangs for quite a while if there is a CD drive which does not work properly (e.g. because it has individual problems with DMA). So if the superuser gets no result with cdrskin --devices then one should disable DMA with the problematic CD drives (like: `hdparm -d0 /dev/hdd` ) and try again.
  In severe cases it might be necessary to guess the device name /dev/sgN resp. /dev/hdX of the non-ill burner if it cannot be found otherwise among its ill peers. Alternatively one can guess the address of the ill device, remove rw-permissions and retry the bus scan as non-superuser.

Download as source code (see README):
  cdrskin-0.3.0.pl01.tar.gz (540 KB).
  The "stable" cdrskin tarballs are source code identical with "stable" libburn releases or with "stabilized" libburn SVN snapshots. They get produced via a different procedure, though.
  cdrskin is part of libburn - full libburn is provided with cdrskin releases.
Download as single x86 binaries (untar and move to /usr/bin/cdrskin):
  cdrskin_0.3.0.pl01-x86-suse9_0.tar.gz, (75 KB),
    runs on SuSE 9.0 (2.4.21) , RIP-14.4 (2.6.14) , Gentoo (2.6.15 x86_64 Athlon).
  cdrskin_0.3.0.pl01-x86-suse9_0-static.tar.gz, (275 KB), -static compiled,
    runs on SuSE 7.2 (2.4.4), and on the systems above.

Documentation:
  README a short introduction
  cdrskin --help non-cdrecord options
  cdrskin -help cdrecord compatible options
  man cdrskin the manual page

Contact:
  Thomas Schmitt, scdbackup@gmx.net
  libburn development mailing list, libburn-hackers@pykix.org

License:
  GPL, an Open Source approved license

Enhancements towards previous stable version cdrskin-0.2.6:

- Improved recognition of unsuitable media types
- Ban of chmod u+s is replaced by a loud warning
- Detailed man page
- Burning to DVD+RW and DVD-RAM as non-multi, non-appending, single-track session
- Formatting and then burning to DVD-RW like to DVD+RW
- Emulation of new wodim option msifile=path

Bug fix towards previous patch level 0:

- Tracks >= 2 GB were only possible via a pipe to stdin but not directly from a disk file

### Development snapshot, version 0.3.1 :

  Enhancements towards stable version 0.3.0:
  - -none yet-
  README 0.3.1
  cdrskin_0.3.1 --help
  cdrskin_0.3.1 -help
  man cdrskin (as of 0.3.1)
Maintainers of cdrskin unstable packages please use SVN of libburnia.pykix.org
  Download: `svn co http://libburnia-svn.pykix.org/libburn/trunk libburn_pykix`
  Build: `cd libburn_pykix ; ./bootstrap ; ./configure ; make`
  Build of SVN versions needs autotools of at least version 1.7 installed. But after the run of `./bootstrap`, only vanilla tools like make and gcc are needed.
The following downloads are intended for adventurous end users or admins with full system souvereignty.
  Source (./bootstrap is already applied, build tested, for more see upcoming README ):
  cdrskin-0.3.1.tar.gz (550 KB).
  Binary (untar and move to /usr/bin/cdrskin):
  cdrskin_0.3.1-x86-suse9_0.tar.gz, (75 KB).
  cdrskin_0.3.1-x86-suse9_0-static.tar.gz, (275 KB)

Many thanks to Joerg Schilling for cdrecord,
and to Derek Foreman and Ben Jansens for creating libburn.
Historic versions based on Derek's and Ben's icculus.org/burn :
cdrskin-0.1.2.0.2.ts.tar.gz
cdrskin-0.1.3.0.2.ts.tar.gz

Example for a setup of device permissions. To be done by the superuser:
(CD devices which offer no r-permission are invisible to normal users.)
(CD devices which offer no w-permission are not useable.)
  # `cdrskin --devices`
  `...`
  `0 dev='/dev/sg0' rwrwr- : 'TEAC' 'CD-ROM CD-532S'`
  `1 dev='/dev/hdc' rwrw-- : 'LITE-ON' 'LTR-48125S'`
  # `chmod a+rw /dev/sg0 /dev/hdc`

Example how to setup K3b to use cdrskin for burning data CD projects.
(K3b is a GUI frontend which uses cdrecord for CD burning.)

Example for a test session with a cdrecord based scdbackup installation:
  $ `cdrskin -scanbus`
  `...`
  `2,0,0 0) 'TEAC' 'CD-ROM CD-532S' '?' Removable CD-ROM`
  $ `cdrskin -scanbus dev=ATA`
  `...`
  `1,0,0 1) 'LITE-ON' 'LTR-48125S' '?' Removable CD-ROM`
  $ `export SCDBACKUP_SCSI_ADR="ATA:1,0,0"`
  $ `export SCDBACKUP_CDRECORD="cdrskin -v -v tao_to_sao_tsize=650m"`
  $ `scdbackup_home`

Example for a permanent configuration of cdrskin based scdbackup
  $ `cd scdbackup-0.8.6/inst`
  $ `export SCDBACKUP_USE_CDRSKIN=1`
  $ `./CONFIGURE_CD`
  `...`
  `cdrskin 0.3.0 : limited cdrecord compatibility wrapper for libburn`

If your system is stricken with some ill CD device then this can stall and you will have to press `Ctrl+C` to abort. In this case, you may execute `export SCDBACKUP_NO_SCANBUS=1` and try again.

  `------------------- SCSI devices. To be used like 0,0,0`
  `2,0,0 0) 'TEAC' 'CD-ROM CD-532S' '?' Removable CD-ROM`
  `------------------- end of SCSI device list`
  `------------------- ATA devices. To be used like ATA:0,0,0`
  `1,0,0 1) 'LITE-ON' 'LTR-48125S' '?' Removable CD-ROM`
  `...`
  `* Your cdrecord offers -driveropts=burnfree with your recorder.`
  `...`
  `scdbackup for CD 0.8.6 : First stage of installation done.`
  `...`
  `Now give it a try. Run : scdbackup_home`
  $ `unset SCDBACKUP_USE_CDRSKIN`

To get back to using cdrecord :
  $ `cd scdbackup-0.8.6/inst`
  $ `export SCDBACKUP_USE_CDRSKIN=0`
  $ `./CONFIGURE_CD`
  `...`
  $ `unset SCDBACKUP_USE_CDRSKIN`

### About the relationship of cdrecord and cdrskin

First of all: this relationship is single sided, as cdrskin has to be aware of cdrecord but not vice versa.
I am a long time user of cdrecord and it works fine for me. Especially i do appreciate its write mode -tao which allows to pipe arbitrary data on CD and CD-RW via stdin. cdrecord is reliable, versatile and well maintained. So for me - there would be not problem with it.
But the author of cdrecord and the Linux kernel people foster a very hostile relationship. Ok, that's their business, not mine (or ours if you are with me). One has to be aware, though, that this relationship might lead to a situation where cdrecord is no longer available for certain Linux kernels.
To have my own project prepared for such a time, i began to implement its cdrecord gestures on top of libburn. From now on i invite other interested users of cdrecord to teach cdrskin the gestures necessary for their cdrecord applications. Contact me. Let's see what we can achieve.
libburn and cdrskin are now mature enough to substitute cdrecord in its major use cases of CD burning. It is possible to foist cdrskin on various software packages if it gets falsely named "cdrecord". I do not encourage this approach, but of course such a replacement opportunity is the goal of a cdrecord compatibility wrapper.
It is very important to me that this project is not perceived as hostile towards Joerg Schilling and his ongoing work. I owe him much. For cdrecord, for mkisofs, for star. Chapeau.

Enjoying free Open Source hosting by www.webframe.org
and by sourceforge.net

Links to my other published software projects :
  scdbackup, multi volume CD backup
    (a second source of above)
  Some Tools for Image Collectors
    (a second source of above)
  pppoem, a DSL throughput monitor (mainly for Linux kernel 2.4)

Legal statement: This website does not serve any commercial purpose.