--------------------------------------------------------------------------
                       cdrskin Wiki - plain text copy
--------------------------------------------------------------------------
[[Image(source:/libburn/trunk/cdrskin/doener_150x200_tr.gif)]] [http://en.wikipedia.org/wiki/D%C3%B6ner_kebab Doener]

'''cdrskin is the cdrecord compatibility middleware of libburn.'''

Its paragon, cdrecord, is a powerful GPL'ed burn program included in Joerg
Schilling's cdrtools. cdrskin strives to be a second source for the services
traditionally provided by cdrecord. Currently it does CD-R and CD-RW this way.
Overwriteable media DVD-RAM, DVD+RW and DVD-RW are handled differently than 
with cdrecord-ProDVD in order to offer TAO-like single track recording.
The current development version handles sequential DVD-RW like CD-RW with TAO
and multi-session.

cdrskin does not contain any bytes copied from cdrecord's sources.
Many bytes have been copied from the message output of cdrecord
runs, though. The most comprehensive technical overview of cdrskin
can be found in [http://libburnia.pykix.org/browser/libburn/trunk/cdrskin/README?format=txt cdrskin/README].

About libburn API for burning CD: http://libburnia-api.pykix.org

--------------------------------------------------------------------------

Appending sessions to an unclosed CD is restricted to write mode TAO.
(Users who have a burner which succeeds with a follow-up session via
cdrecord -sao : please contact us.)

For DVD types other than DVD-RAM, DVD+RW, DVD-RW and for appending sessions
to ISO filesystems on DVD other than DVD-RW see the advise to use dvd+rw-tools
at the end of this text.

--------------------------------------------------------------------------

About the command line options of cdrskin:

They are described in detail in [http://scdbackup.sourceforge.net/man_1_cdrskin_devel.html#OPTIONS section OPTIONS] of
[http://scdbackup.sourceforge.net/man_1_cdrskin_devel.html man cdrskin]

There are two families of options: cdrecord-compatible ones and options
which are specific to cdrskin. The latter are mostly used to configure
cdrskin for its task to emulate cdrecord. There are some, nevertheless,
which provide rather exotic unique features of cdrskin.

The cdrecord-compatible options are listed in the output of
{{{
cdrskin -help
}}}
where the option "help" has *one* dash. Online: [http://scdbackup.sourceforge.net/cdrskin_help_devel cdrskin -help]

For these options you may expect program behavior that is roughly the
same as described in original  man cdrecord . 

Online: http://cdrecord.berlios.de/old/private/man/cdrecord-2.0.html

The cdrskin-specific options are listed by
{{{
cdrskin --help
}}}
where the option "help" has *two* dashes. Online: [http://scdbackup.sourceforge.net/cdrskin__help_devel cdrskin --help]

Some are very experimental and should only be
used in coordination with the libburnia developer team.
Some are of general user interest, though:

--------------------------------------------------------------------------

--devices allows the sysadmin to scan the system for possible drives
and displays their detected properties.
The drives are listed one per line, with fields:
libburn-drive-number, sysadmin-device-file, permissions, vendor, type
{{{
0  dev='/dev/sg0'  rwrw-- :  'HL-DT-ST'  'DVDRAM GSA-4082B'
}}}
This feature is valuable since cdrskin -scanbus will not give you
the device file name and its current permissions.
cdrskin will accept of course the proposed dev= option as address
for any usage of the drive.

Different from cdrecord, cdrskin is intended to be run without special
privileges, i.e. no superuser setuid. It is intended that the sysadmin
controls drive accessability by rw-permissions of the drive rather than
by x-permission of the burn binary. To be usable with cdrskin, the drive
has to offer both, r- and w-permission.

--------------------------------------------------------------------------

Non-cdrecord blank mode blank=format_overwrite is needed to bring a DVD-RW
disc from its initial profile "Sequential Recording" into profile state
"Restricted Overwrite". The latter is usable with cdrskin.
{{{
cdrskin dev=/dev/sr0 -v blank=format_overwrite
}}}

DVD-RAM, DVD+RW and overwriteable DVD-RW appear to cdrskin as blank media
which are capable of taking only a single track. This track may be positioned
on a 32KiB aligned address, though.
{{{
cdrskin ... write_start_address=2412m ...
}}}

--------------------------------------------------------------------------

fifo_start_at=<num> is a throughput enhancer for unsteady data streams
like they are produced by a compressing archiver program when piping to
CD on-the-fly. It makes better use of the general property of a FIFO 
buffer to transport surplus bandwidth into the future. Yep. A time machine.
One-way, i fear.

FIFO originally was introduced by cdrecord's author Joerg Schilling in order
to protect mediocre burner hardware from suffering buffer underruns
and thus producing misburns (at 1x speed on CD-R media at the price of a
DVD-RAM nowadays). This purpose would not justify a fifo any more -
given the limited life time of burners and the seamless underrun protection
of contemporary consumer drives.

With an unsteady data stream the task of the buffer is to soak up peak 
performance and to release it steadily at the drive's maximum speed.
The larger the buffer the more reserves can be built up and the longer
input drought can be compensated.

Original cdrecord has the historical property, though, to first wait until
the buffer is completely filled. Best practice for fighting drive
underruns, of course.
With a very fat fs=# buffer (128 MB for 12x CD is not unrealistic) this
can cause a big delay until burning finally starts and takes its due time.

fifo_start_at=<num> makes cdrskin start burning after the given number of bytes
is read rather than waiting for the FIFO to be completely full resp. the data
stream to end. It risks a few drive buffer underruns at the beginning of burn
- but modern drives stand this.

Usage examples:
{{{
cdrskin ...  fs=128m  fifo_start_at=20m  ...
cdrskin ...  fifo_start_at=0  ...
}}}

Note: no FIFO can give you better average throughput than the average
throughput of the data source and the throughput of the burner.
It can be used, though, to bring the effective throughput very close
to the theoretical limit. Especially with high speed media.

--------------------------------------------------------------------------

--no_rc allows you to surely ban influence from systemwide or user specific
default settings of cdrskin. Possible locations for such settings:

/etc/default/cdrskin

/etc/opt/cdrskin/rc

/etc/cdrskin/cdrskin.conf

$HOME/.cdrskinrc

--------------------------------------------------------------------------

dev_translation=<sep><from><sep><to> may be needed to foist cdrskin to
frontend programs of cdrecord which do *not* ask cdrecord -scanbus but
which make own assumptions and guesses about cdrecord's device addresses.

Normally, cdrskin understands all addresses which are suitable for cdrecord
under Linux. See cdrskin/README, "Pseudo-SCSI Adresses".
This option is mainly for (yet unknown) exotic configurations or very
stubborn frontend programs.

If a frontend refuses to work with cdrskin, look into the error protocol
of that frontend, look at the output of a run of cdrskin --devices and give
cdrskin the necessary hint.
Example: Your frontend insists in using "0,0,0" and --devices reported 
dev='/dev/hdc' resp. cdrskin dev=ATA -scanbus reported "1,0,0" then this
would be the appropriate translation:
{{{
dev_translation=+0,0,0+/dev/hdc
}}}
The "+" character is a separator to be choosen by you.
Currently i am not aware of the need to choose any other than "+"
unless you get playful with custom translations like
{{{
dev_translation=-"cd+dvd"-1,0,0
}}}
See http://scdbackup.sourceforge.net/k3b_on_cdrskin.html
for an illustrated example with K3b 0.10 .

--------------------------------------------------------------------------

DVD advise:

For burning of DVD media other than DVD-RAM, DVD+RW, DVD-RW, the cdrskin
project currently advises to use Andy Polyakov's dvd+rw-tools which despite
their historic name burn for me on above burner: DVD-RAM, DVD+RW, DVD+R,
DVD-RW, DVD-R and are also capable of dual layer and even BD discs. 

http://fy.chalmers.se/~appro/linux/DVD+RW/tools

They are not compatible or related to cdrecord resp. cdrecord-ProDVD
(now obsoleted by original source cdrtools cdrecord with identical
capabilities besides the license key).

A special feature of dvd+rw-tools is growing of ISO-9660 filesystems on
overwriteable media. This is not the same as multi-session writing of cdrskin
with CD media, but retrieves additional information from the existing ISO
image and finally manipulates the start sectors of this existing image.
So for growable ISO filesystems on DVD-RAM or DVD+RW growisofs is the only
choice, currently.

With sequential DVD-RW the development version of cdrskin can offer
multi-session together with associated options blank=, -multi, -msinfo and
-toc. Thus sequential DVD-RW behave much like large CD-RW with possibly more
than 99 tracks.

--------------------------------------------------------------------------

