This is the command xorrecord that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
NAME
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso
SYNOPSIS
xorrecord [ options ] dev=device [track_source]
DESCRIPTION
xorrecord writes preformatted data to CD, DVD, and BD media.
It understands some options of program cdrecord from cdrtools by Joerg Schilling. Its
implementation is part of program xorriso which shares no source code with cdrtools, but
rather makes use of libburn for communicating with the drive.
Another, more complete cdrecord emulator is program cdrskin which uses the same burn
functions as xorrecord, but is able to burn audio CDs and to handle CD-TEXT.
MMC, Session, Track, Media types:
MMC is a standard out of the SCSI family which defines the interaction between computers
and optical drives. Since more than a decade all CD, DVD, or BD recorders obey this
standard regardless by what bus cabling they are attached to the computer. libburn relies
on this standard compliance and on the capability of the operating system to perform SCSI
transactions over the particular bus cabling.
A Session is a data region on an optical disc which usually gets written in a single
sweep. It contains at least one Track which is a contiguous string of readable blocks.
xorrecord produces a single session with a single data track which consists of blocks with
2048 bytes each. It chooses the write mode automatically according to media type, medium
state, and option -multi.
On CD media there are other track types, like audio, and particular write modes like TAO
and SAO. CD and DVD- media can put more than one track into a session. Some of these
features can be addressed by program cdrskin.
MMC describes several recordable media types which roughly form two families.
Sequentially recordable media are CD-R, CD-RW, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL,
BD-R. Except DVD-R DL they can store more than one session if there is still unwritten
space and if the previous session was written with option -multi. CD-RW and DVD-RW can be
blanked in order to be re-usable from scratch.
Overwritable media are DVD-RAM, DVD+RW, formatted DVD-RW, BD-RE. They offer a single
session with a single track for random access writing. There is no need to blank
overwritable media before re-use.
DVD-RW media are sold in sequentially recordable state but can be formatted once to become
overwritable. See options blank=format_overwrite and blank=deformat.
If ISO 9660 filesystems are to be stored on overwritable media, then it is possible to
emulate multiple sessions, by using option --grow_overwriteable_iso. In this case, the
need for blanking before re-use is emulated too.
Drive preparation and addressing:
The drives, CD, DVD, or BD burners, are accessed via file addresses which are specific to
libburn and the operating system. Those addresses get listed by a run of xorrecord
--devices or xorriso -device_links.
On GNU/Linux, FreeBSD, and NetBSD, the user needs rw-permission for the device file. On
Solaris, the user needs r-permission and privilege "sys_devices", which is usually gained
by running xorrecord via command pfexec.
These permissions or privileges are needed already for listing a drive. So it might be
necessary to get the overview as superuser or via pfexec.
xorrecord does not perform cdrecord option -scanbus and does not accept the addresses of
form Bus,Target,Lun which are told by -scanbus. If support for these addresses is
necessary, consider to use program cdrskin.
It is possible to let xorrecord work on emulated drives. Their addresses begin by prefix
"stdio:" followed by a file address. The emulated media behavior depends on the file
type. See man xorriso for details.
If standard output is chosen as emulated drive, then all program result texts, which
usually appear on standard output, will get redirected to standard error.
Relation to program xorriso:
xorrecord is actually a command mode of program xorriso, which gets entered either by
xorriso command "-as cdrecord" or by starting the program by one of the names "xorrecord",
"cdrecord", "wodim", or "cdrskin".
This command mode can be left by argument "--" which leads to generic xorriso command
mode. See man xorriso for its description. Other than in xorriso command mode, the
sequence of the cdrecord emulation options does not matter. All pending actions get
performed in a fixed sequence before the program run ends or before cdrecord emulation
ends.
OPTIONS
Addressing the drive:
--devices
Print the list of accessible CD, DVD, or BD drives to standard output. Drives
might be inaccessible if the user lacks of permissions to use them or if the drive
is in use by another program.
Each accessible drive is shown by a line like:
0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'
The libburn address of this drive is '/dev/sr0'. 'TSSTcorp' is the name of the
vendor (in this case: Toshiba Samsung Storage Technologies Corporation), 'CDDVDW
SH-S203B' is the model name (in this case: a DVD burner).
Afterwards end emulation without performing any further drive operation.
dev=drive_address
Set the libburn address of the drive to be used.
E.g. on GNU/Linux: dev=/dev/sr0
E.g. on FreeBSD: dev=/dev/cd0
E.g. on NetBSD: dev=/dev/rcd0d
E.g. on Solaris: dev=/dev/rdsk/c2t2d0s2
See also above "Drive preparation and addressing".
The medium in the drive should not be mounted or be otherwise in use.
This option will only get into effect if a track source, a blank= option, or a
drive inquiry option is given. Else it will lead to a SORRY event and normally
cause a non-zero exit value.
Inquiring drive and media:
-inq Print to standard output: vendor, model name, and firmware revision of the drive.
-checkdrive
Print unconditionally that the drive supports burnfree, SAO, and TAO. Also print
the output of option -inq.
-atip Print the output of -checkdrive, the most capable profile of the medium in the
drive, the list of profiles which are supported by the drive, whether it is
erasable (i.e. can be blanked), the media manufacturer, and the medium product
name.
Profiles are usage models, which are often tied to a particular media type (e.g.
CD-RW), but may also apply to a family of media. E.g. profile CD-ROM applies to all
CD media which contain data.
-toc Print a table of content of the medium in the drive. The output is not compatible
to cdrecord option -toc, but rather the one of xorriso command -toc. It lists the
address, vendor, model name, and firmware revision of the drive.
About the medium it tells product name and manufacturer, whether there is already
content written, and if so, whether the medium is closed or appendable. Appendable
media can take another session. The amount of readable and writable data is told.
If there are sessions, then their start block address and size is reported. If a
session contains an ISO 9660 filesystem, then its Volume Id is reported. If the
medium is writable, then the next writable block address is reported.
If not option --grow_overwriteable_iso is given or no ISO 9660 file system is
present on the medium, then overwritable media are reported as being blank. This is
due to the fact that they can be written from scratch without further preparation,
and that MMC does not distinguish between data written by the most previous burn
run and older data which have not been overwritten by that burn run. Consequently,
these media are reported with 0 readable blocks, although all their writable blocks
normally are readable, too.
-msinfo
Print the argument text for option -C of programs mkisofs, genisoimage, or
xorrisofs. It consists of two numbers separated by a comma.
The first number tells the first block of the first track of the last recorded
session. This is also the address used by default when operating systems mount a
medium with e.g. ISO 9660 filesystem.
The second number tells the next writable address, where xorrecord will begin to
write the next session.
This option is only valid for written, appendable media. In all other cases it will
yield no output text but will abort the program with non-zero exit value.
Settings for the burn run:
A burn run requires exactly one track source address argument, which tells from where to
read the data wich shall be put into the upcomming session. The medium state must be
either blank or appendable.
Track source may be "-" for standard input or the address of a readable file of any type
except directories. Nearly all media types accept a track source with unpredictable byte
count, like standard input or named pipes. Nevertheless, DVD-R DL and DVD-RW blanked by
mode deformat_quickest demand exact in-advance reservation of the track size, so that they
either need to be read from a source of predictable length, or need to be accompanied by
option tsize= or by option -isosize.
Several options expect a size value as argument. A number with a trailing letter "b" or
without a trailing letter is a plain byte count. Other trailing letters cause
multiplication of the given number by a scaling factor:
"k" or "K" = 1024 , "m" or "M" = 1024k , "g" or "G" = 1024m , "s" or "S" = 2048
E.g. tsize=234567s means a size of 234567 * 2048 = 480393216 bytes.
blank=mode
Blank a CD-RW or DVD-RW to make it re-usable from scratch. Format a DVD-RW,
DVD+RW, DVD-RAM, BD-R, or BD-RE if not yet formatted.
This operation normally makes any recorded data on the medium unreadable. It is
combinable with burning in the same run of xorrecord, or it may be performed
without a track source, leaving the medium empty.
The mode given with blank= selects the particular behavior:
as_needed
Try to make the media ready for writing from scratch. If it needs
formatting, then format it. If it is not blank, then try to apply
blank=fast. It is a reason to abort if the medium cannot assume thoroughly
writeable state, e.g. if it is a non-blank write-once.
This leaves unformatted DVD-RW in unformatted blank state. To format DVD-RW
use blank=format_overwrite. Blank unformatted BD-R stay unformatted.
(Note: blank=as_needed is not an original cdrecord option.)
all
Blank an entire CD-RW or an unformatted DVD-RW.
fast
Minimally blank an entire CD-RW or blank an unformatted DVD-RW.
deformat
Like blank=all but with the additional ability to blank overwriteable
DVD-RW. This will destroy their formatting and make them sequentially
recordable.
(Note: blank=deformat is not an original cdrecord options)
deformat_quickest
Like blank=deformat but blanking DVD-RW only minimally. This is faster than
full blanking but yields media incapable of writing tracks of unpredicatable
size. Multi-session will not be possible either.
(Note: blank=deformat_quickest is not an original cdrecord option.)
format_overwrite
Format a DVD-RW to "Restricted Overwrite". The user should bring some
patience.
Format unformatted DVD+RW, BD-RE or blank BD-R to their default size. It is
not mandatory to do this with DVD+RW and BD-RE media, because they will get
formatted automatically on the first write attempt.
BD-R media may be written in unformatted state. This keeps disabled the
replacement of bad blocks and enables full nominal write speed. Once BD-R
media are written, they cannot be formatted any more.
For re-formatting already formatted media or for formatting with non-default
size, use program xorriso with command -format.
(Note: blank=format_overwrite is not an original cdrecord options)
help
Print a short overview of blank modes to standard error output.
Afterwards end emulation without performing any drive operation.
-multi This option keeps CD, unformatted DVD-R[W], DVD+R, or BD-R appendable after the
current session has been written. Without it the disc gets closed and may not be
written any more - unless it is a -RW and gets blanked, which causes loss of its
content.
This option cannot be applied to DVD-R DL or to DVD-RW which were blanked by mode
"deformat_quickest". Option --multi_if_possible may automatically recognize and
handle this situation.
In order to have all filesystem content accessible, the eventual ISO-9660
filesystem of a follow-up session needs to be prepared in a special way by the
filesystem formatter program. mkisofs, genisoimage, and xorrisofs expect particular
info about the situation which can be retrieved by xorrecord option -msinfo.
With overwriteable DVD or BD media, -multi cannot mark the end of the session. So
when adding a new session, this end has to be determined from the payload.
Currently only ISO-9660 filesystems can be used that way. See option
--grow_overwriteable_iso.
-dummy Try to perform the drive operations without actually affecting the inserted media.
There is no warranty that this will work with a particular combination of drive and
media. Blanking is prevented reliably, though. To avoid inadverted real burning,
-dummy refuses burn runs on anything but CD-R[W], DVD-R[W], or emulated
stdio-drives.
-waiti Wait until input data is available at stdin or EOF occurs at stdin. Only then
begin to access any drives.
One should use this if xorrisofs is working at the end of a pipe where the feeder
process reads from the drive before it starts writing its output into xorrisofs.
Example:
xorrisofs ... -C 0,12800 -M /dev/sr0 ... |
xorrecord dev=/dev/sr0 ... -waiti -
This option works even if standard input is not the track source. If no process is
piping in, then the Enter key of your terminal will act as trigger for xorrecord.
Note that this input line will not be consumed by cdrskin if standard input is not
the track source. It will end up as shell command, usually.
tsize=size
Announce the exact size of the track source. This is necessary with DVD-R DL media
and with quickest blanked DVD-RW, if the size cannot be determined in advance from
the track source. E.g. if it is standard input or a named pipe.
If the track source does not deliver the predicted amount of bytes, the remainder
of the track is padded with zeros. This is not considered an error. If on the
other hand the track source delivers more than the announced bytes then the track
on media gets truncated to the predicted size and xorrecord exits with non-zero
value.
-isosize
Try to obtain the track size from the content of the track source. This works only
if the track source bears an ISO 9660 filesystem. Any other track source content
will cause the burn run to abort.
If the track source is not a regular file or block device, then this option will
work only if the program's fifo size is at least 64k. See option fs=.
padsize=size
Add the given amount of trailing zeros to the upcomming track. This feature can be
disabled by size 0. Default is 300 kB in order to work around a problem with
GNU/Linux which often fails to read the last few blocks of a CD track which was
written in write mode TAO. TAO is used by xorrecord if the track size cannot be
predicted or if the CD medium is not blank but appendable.
-nopad The same as padsize=0.
-pad The same as padsize=15s. This was once sufficient with older GNU/Linux kernels.
Meanwhile one should at least use padsize=128k, if not padsize=300k.
-data Explicitly announce that the track source shall be recorded as data track, and not
as audio track. This option has no effect with xorrecord, because there is no
support for other track formats anyway.
-tao Explicitly demand that write type TAO shall be used for CD, or Incremental for
DVD-R. Normally the program will choose the write type according to the given
medium state, option -multi, and track source. Demanding it explicitly prevents the
start of a write run, if it is not appropriate to the situation.
-sao Explicitly demand that write type SAO shall be used for CD, or DAO for DVD-R. This
might prevent the write run, if it is not appropriate to the situation.
-dao Alias of -sao.
fs=size
Set the size of the program fifo buffer to the given value rather than the default
of 4m.
The fifo buffers a temporary surplus of track source data in order to provide the
drive with a steady stream during times of temporary lack of track source supply.
Other than cdrecord, xorrecord enables drive buffer underrun protection by default
and does not wait with writing until the fifo is full for a first time. On very
old CD drives and slow computers, this might cause aborted burn runs. In this
case, consider to use program cdrskin for CD burning. DVD and BD drives tolerate
buffer underrun without problems.
The larger the fifo, the longer periods of poor source supply can be compensated.
But a large fifo can deprive the operating system of read cache for better
filesystem performance.
speed=value
Set the write speed. Default is 0 = maximum speed. Speed can be given in media
type dependent x-speed numbers or as a desired throughput per second in MMC
compliant kB (= 1000) or MB (= 1000 kB). Media x-speed factor can be set explicity
by appending "c" for CD, "d" for DVD, "b" for BD. "x" is optional.
Example speeds:
706k = 706kB/s = 4c = 4xCD
5540k = 5540kB/s = 4d = 4xDVD
If there is no hint about the speed unit attached, then the medium in the drive
will decide. Default unit is CD, 1x = 176,400 raw bytes/second. With DVD, 1x =
1,385,000 bytes/second. With BD, 1x = 4,495,625 bytes/second.
MMC drives usually activate their own idea of speed and take the speed value given
by the burn program only as a hint for their own decision.
minbuf=percentage
Equivalent to:
modesty_on_drive=<percentage>
-immed Equivalent to:
modesty_on_drive=75
-eject Eject the drive tray after alll other work is done.
Program version and verbosity:
-version
Print to standard output a line beginning by
"Cdrecord 2.01-Emulation Copyright"
and further lines which report the version of xorriso and its supporting libraries.
They also state the license under which the program is provided, and disclaim any
warranty, to the extent permitted by law.
Afterwards end emulation without performing any drive operation.
-v Increase program verbosity by one level. There are four verbosity levels from
nearly silent to debugging verbosity. The both highest levels can be enabled by
repeated -v or by -vv or by -vvv.
-V Log SCSI commands and drive replies to standard error. This might be of interest
if xorrecord and a particular drive or medium do not cooperate as expected, or if
you just want to know how libburn interacts with the drive. To understand this
extremely verbous log, one needs to read SCSI specs SPC, SBC, and MMC.
Please do not add such a log to a bug report on the first hand, unless you want to
point out a particular deviation from said specs, or if you get asked for this log
by a maintainer of xorrecord who feels in charge for your bug report.
-help Print a sparse list of program options to standard error and declare not to be
cdrecord.
Afterwards end emulation without performing any drive operation.
Options not compatible to cdrecord:
--no_rc
Only if used as first command line argument this option prevents reading and
interpretation of startup files. See section FILES below.
--grow_overwriteable_iso
Enable emulation of multi-session writing on overwriteable media which contain an
ISO 9660 filesystem. This emulation is learned from growisofs -M but adapted to the
usage model of
xorrecord -msinfo
xorrisofs -C -M | xorrecord -waiti -multi -
for sequential media.
--grow_overwriteable_iso does not hamper the use of true multi-session media. I.e.
it is possible to use the same xorrecord options with both kinds of media and to
achieve similar results if ISO 9660 filesystem images are to be written. This
option implies option -isosize and therefore demands that the track source is a ISO
9660 filesystem image.
With overwriteable media and no option blank=fast|all present it expands an
eventual ISO 9660 filesystem on media. It is assumed that this image's inner size
description points to the end of the valuable data. Overwriteable media with a
recognizable ISO 9660 size will be regarded as appendable rather than as blank.
I.e. options -msinfo and -toc will work. -toc will always show a single session
with its size increasing with every added ISO 9660 image.
--multi_if_possible
Apply option -multi if the medium is suitable. Not suitable are DVD-R DL and
DVD-RW, which were blanked with mode "deformat_quickest".
Not all drives correctly recognize such fast-blanked DVD-RW which need "on". If
there is well founded suspicion that a burn run failed due to -multi, then this
causes a re-try without -multi.
stream_recording="on"|"off"|number
Mode "on" requests that compliance to the desired speed setting is preferred over
management of write errors. With DVD-RAM and BD this can bring effective write
speed near to the nominal write speed of the media. But it will also disable the
automatic use of replacement blocks if write errors occur. It might as well be
disliked or ignored by the drive.
If a number is given, then error management stays enabled for all byte addresses
below that number. Any number below 16s is the same as "off".
dvd_obs="default"|"32k"|"64k"
Linux specific: Set the number of bytes to be transmitted with each write operation
to DVD or BD media. Tracks get padded up to the next multiple of this write size. A
number of 64 KB may improve throughput with bus systems which show latency
problems. The default depends on media type, option stream_recording=, and on
compile time options.
modesty_on_drive=parameter[:parameters]
Control whether the drive buffer shall be kept from getting completely filled.
Parameter "on" (or "1") keeps the program from trying to write to the burner drive
while its buffer is in danger to be filled over a given limit. If this filling is
exceeded then the program will wait until the filling reaches a given low
percentage value.
This can ease the load on operating system and drive controller and thus help with
achieving better input bandwidth if disk and burner are not on independent
controllers (like hda and hdb). It may also help with simultaneous burns on
different burners with Linux kernels like 3.16. On the other hand it increases the
risk of buffer underflow and thus reduced write speed.
Some burners are not suitable because they report buffer fill with granularity too
coarse in size or time, or expect their buffer to be filled to the top before they
go to full speed.
Parameters "off" or "0" disable this feature.
The threshhold for beginning to wait is given by parameter "max_percent=".
Parameter "min_percent=" defines the threshhold for resuming transmission.
Percentages are permissible in the range of 25 to 100. Numbers in this range
without a prepended name are interpreted as "on:min_percent=".
E.g.: modesty_on_drive=75
The optimal values depend on the buffer behavior of the drive.
Parameter "timeout_sec=" defines after which time of unsuccessful waiting the
modesty shall be disabled because it does not work.
Parameter "min_usec=" defines the initial sleeping period in microseconds. If the
drive buffer appears to be too full for sending more data, the program will wait
the given time and inquire the buffer fill state again. If repeated inquiry shows
not enough free space, the sleep time will slowly be increased to what parameter
"max_usec=" defines.
Parameters, which are not mentioned with a modesty_on_drive= option, stay
unchanged. Default is:
modesty_on_drive=off:min_percent=90:max_percent=95:
timeout_sec=120:min_usec=5000:max_usec=25000
write_start_address=value
Set the block address on overwritable media where to start writing the track. With
DVD+RW, DVD-RAM or BD-RE, byte_offset must be aligned to 2 kiB blocks, but better
is 32 kiB on DVD and 64 kiB on BD. With formatted DVD-RW 32 kiB alignment is
mandatory.
Other media are not suitable for this option.
stdio_sync="on"|"off"|number
Set the number of bytes after which to force output to emulated stdio: drives.
This forcing keeps the memory from being clogged with lots of pending data for slow
devices. Default "on" is the same as "16m". Forced output can be disabled by
"off".
EXAMPLES
Overview of examples:
Get an overview of drives and their addresses
Get info about a particular drive or loaded media
Prepare CD-RW or DVD-RW for re-use, BD-R for bad block handling
Format DVD-RW to avoid need for blanking before re-use
De-format DVD-RW to make it capable of multi-session again
Write a single ISO 9660 filesystem image
Write multiple ISO 9660 sessions
Write ISO 9660 session on-the-fly
Write compressed afio archive on-the-fly
Get an overview of drives and their addresses:
$ xorrecord --devices
Get info about a particular drive and loaded media:
$ xorrecord dev=/dev/sr0 -atip -toc --grow_overwriteable_iso
Prepare CD-RW or DVD-RW for re-use:
$ xorrecord -v dev=/dev/sr0 blank=as_needed -eject
Format DVD-RW to avoid need for blanking before re-use:
$ xorrecord -v dev=/dev/sr0 blank=format_overwrite -eject
This command may also be used to format BD-R media before first use, in order to enable
handling of write errors. Several hundred MB of spare blocks will be reserved and write
runs on such media will perform with less than half nominal speed.
De-format DVD-RW to make it capable of multi-session again:
$ xorrecord -v dev=/dev/sr0 blank=deformat
Write a single ISO 9660 filesystem image:
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m
blank=as_needed -eject padsize=300k my_image.iso
Write multiple ISO 9660 sessions:
This is possible with all media except minimally blanked DVD-RW and DVD-R DL, which cannot
do multi-session.
The first session is written like in the previous example, except that option -multi is
used. It will contain the files of hard disk directory ./tree1 under the ISO 9660
directory /dir1:
$ xorrisofs -o image_1.iso -J -graft-points /dir1=./tree1
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m
-multi --grow_overwriteable_iso
blank=as_needed -eject padsize=300k image_1.iso
For the second session xorrisofs needs to know the -msinfo numbers of the medium. Further
it will read data from the medium by using the system's read-only CD-ROM driver.
It is advised to load the tray manually or via dd by the CD-ROM driver, rather than
letting xorrecord do this by its own SCSI driver. Many system CD-ROM drivers do not take
notice of xorrecord's activities.
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
Now get the -msinfo numbers:
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
and use them with xorrisofs to add ./tree2 to the image as /dir2:
$ xorrisofs -M /dev/sr0 -C $m -o image_2.iso
-J -graft-points /dir2=./tree2
Now burn the new session onto the same medium. This time without blanking:
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m
-multi --grow_overwriteable_iso
-eject padsize=300k image_2.iso
Operating systems which mount this medium will read the superblock of the second session
and show both directories /dir1 and /dir2.
Write ISO 9660 session on-the-fly:
It is possible to combine the run of xorrisofs and xorrecord in a pipeline without storing
the ISO 9660 image as file on hard disk:
$ xorrisofs -M /dev/sr0 -C $m
-J -graft-points /dir2=./tree2
| xorrecord -v dev=/dev/sr0 speed=12 fs=8m
-waiti -multi --grow_overwriteable_iso
-eject padsize=300k -
This is also the main use case of program xorriso itself, where this run would look like:
$ xorriso -dev /dev/sr0 -joliet on -speed 12 -fs 8m
-map ./tree2 /dir2 -commit_eject all
Write compressed afio archive on-the-fly:
This is possible with all media except minimally blanked DVD-RW and DVD-R DL. Since the
compressed output stream is of very variable speed, a larger fifo is advised.
Nevertheless, this example is not suitable for very old CD drives which have no underrun
protection and thus would abort the burn run on temporary data shortage.
$ find . | afio -oZ - |
xorrecord -v dev=/dev/sr0 speed=12 fs=64m
-multi padsize=300k -
afio archives do not contain references to absolute data block addresses. So they need no
special precautions for multi-session. One may get the session start addresses by option
-toc, and then use dd option skip= to begin reading at one of those addresses. E.g. for
listing its content:
$ dd if=/dev/sr0 bs=2048 skip=64046 | afio -tvZ -
afio will know when the end of the archive is reached.
Use xorrecord online using onworks.net services