XORRECORD(1)
πΏ XORRECORD β bestie edition β¨
okay so this is xorrecord from the XORRECORD(1) manual β it's the whole "pretend to be cdrecord" situation, and honestly? it ate. π
πΈ NAME πΈ
xorrecord β emulation of the CD/DVD/BD program cdrecord, done by program xorriso. that's it, that's the name, no notes. π
β¨ SYNOPSIS β¨
xorrecord [ options ] dev=device [track_source]
like. one line. she's efficient. π
π¦ DESCRIPTION π¦
xorrecord writes preformatted data to CD, DVD, and BD media. no cap.
She understands some options of the program cdrecord from cdrtools by Joerg Schilling. Her implementation is part of program xorriso, which shares no source code with cdrtools β instead she makes use of libburn for communicating with the drive. teamwork, bestie. π«Ά
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. (so like, cdrskin is her overachieving cousin π)
π MMC, Session, Track, Media types π
MMC is a standard out of the SCSI family which defines the interaction between computers and optical drives. For more than a decade now, all CD, DVD, or BD recorders obey this standard regardless of what bus cabling they're attached to the computer with. libburn relies on this standard compliance, and on the capability of the operating system to perform SCSI transactions over the particular bus cabling. iykyk. β¨
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. She chooses the write mode automatically according to media type, medium state, and option -multi. main character energy fr. π
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. ExceptDVD-R DLthey can store more than one session if there is still unwritten space and if the previous session was written with option-multi.CD-RWandDVD-RWcan be blanked in order to be re-usable from scratch. - Overwritable media are
DVD-RAM,DVD+RW, formattedDVD-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. slay. π
π₯ 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. annoying but true bestie π
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. plot twist!! π
π 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. periodt. β¨
π 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 thelibburnaddress 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
- E.g. on GNU/Linux:
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, ablank=option, or a drive inquiry option is given. Else it will lead to aSORRYevent 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. profileCD-ROMapplies 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_isois 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. it's giving confusing but it's fine π-msinfoβ Print the argument text for option-Cof programsmkisofs,genisoimage, orxorrisofs. 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, wherexorrecordwill 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 which shall be put into the upcoming 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. no pressure tho β¨
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. math ate, she's iconic π
- *
blank=mode* β Blank aCD-RWorDVD-RWto make it re-usable from scratch. Format aDVD-RW,DVD+RW,DVD-RAM,BD-R, orBD-REif not yet formatted.
β οΈ This operation normally makes any recorded data on the medium unreadable. bestie I'm serious.
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:
okay so blank= is literally the mood ring of your disc, and here's every mode it can be in, bestie:
blank=as_neededβ tries to make the media ready for writing from scratch. If it needs formatting, then format it. If it is not blank, then try to applyblank=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 useblank=format_overwrite. Blank unformatted BD-R stay unformatted. (Note:blank=as_neededis not an original cdrecord option.) πblank=allβ blank an entire CD-RW or an unformatted DVD-RW. periodt.blank=fastβ minimally blank an entire CD-RW or blank an unformatted DVD-RW. quick lil reset, no cap.blank=deformatβ likeblank=allbut with the additional ability to blank overwritable DVD-RW. This will destroy their formatting and make them sequentially recordable. (Note:blank=deformatis not an original cdrecord option.) it's giving destructive but iconic.blank=deformat_quickestβ likeblank=deformatbut blanking DVD-RW only minimally. This is faster than full blanking but yields media incapable of writing tracks of unpredictable size. Multi-session will not be possible either. (Note:blank=deformat_quickestis not an original cdrecord option.) speedrun strats, but read the fine print.blank=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 programxorrisowith command-format. (Note:blank=format_overwriteis not an original cdrecord option.) main character formatting energy β¨blank=helpβ print a short overview of blank modes to standard error output. Afterwards end emulation without performing any drive operation. just here for the lore.
so now the main options, bestie β vibe check:
-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-RWand 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_possiblemay 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, andxorrisofsexpect particular info about the situation which can be retrieved by xorrecord option-msinfo. With overwritable DVD or BD media,-multicannot 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. multi-session slay π¦-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,-dummyrefuses burn runs on anything but CD-R[W], DVD-R[W], or emulated stdio-drives. fake it till you make it, but safely.-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 ifxorrisofsis working at the end of a pipe where the feeder process reads from the drive before it starts writing its output intoxorrisofs. 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. wait for itβ¦ wait for itβ¦ π
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 andxorrecordexits with non-zero value. size matters, fr fr.-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 least64k. See optionfs=. ISO 9660 or it's a no from me.padsize=sizeβ add the given amount of trailing zeros to the upcoming track. This feature can be disabled by size0. Default is300 kBin 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 byxorrecordif the track size cannot be predicted or if the CD medium is not blank but appendable. padding is self-care π-nopadβ the same aspadsize=0. no padding, no problem.-padβ the same aspadsize=15s. This was once sufficient with older GNU/Linux kernels. Meanwhile one should at least usepadsize=128k, if notpadsize=300k. legacy vibe, but maybe upgrade bestie.-dataβ explicitly announce that the track source shall be recorded as data track, and not as audio track. This option has no effect withxorrecord, because there is no support for other track formats anyway. data only, we don't do audio here.-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. TAO? more like slay-O.-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. SAO said what it said.-daoβ alias of-sao. same vibe, different name.fs=sizeβ set the size of the program fifo buffer to the given value rather than the default of4m. 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 thancdrecord,xorrecordenables 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 programcdrskinfor 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. fifo buffer is the emotional support water bottle.speed=valueβ set the write speed. Default is0= 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 explicitly 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. speed, I am speed ποΈβ¨
minbuf=percentageβ equivalent to:
modesty_on_drive=<percentage>
same thing, different font.
-immedβ equivalent to:
modesty_on_drive=75
In cdrecord, this also controls use of the Immed bit. But xorriso uses Immed where possible and appropriate, unless it is disabled by option use_immed_bit=off. immediate, but make it modest.
-ejectβ eject the drive tray after all other work is done. bye bye disc, you ate π
π 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. receipts and legal tea β
-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-vor by-vvor by-vvv. turn up the volume, bestie π-Vβ bestie, this logs every SCSI command and every drive reply to standard error. π You'd want this ifxorrecordand some specific drive or medium are being not cooperative the way you expected, or honestly if you're just nosy and wanna see how libburn and your drive are gossiping with each other. To actually read this extremely verbose log you need to know your SCSI specs β SPC, SBC, and MMC β no cap. π And please, do not slap such a log into a bug report right away, unless you're pointing out a specific deviation from those specs, or a maintainer ofxorrecordwho's taken charge of your bug report literally asks you for it. π-helpβ prints a sparse list of program options to standard error and declares that it is not</>cdrecord. After that it ends emulation without doing any drive operation at all. β¨
β¨ Options not compatible to cdrecord β¨
These ones? They do not play nice with cdrecord vibes. Periodt. π
--no_rcβ only does anything if you use it as the first command line argument, and then it prevents reading and interpretation of startup files. See the section FILES below, bestie. π--drive_not_exclusiveβ this one disables the use of device file locking mechanisms when acquiring the drive. On GNU/Linux the locking is done byopen(O_EXCL), and on FreeBSD byflock(LOCK_EX). π¦ Be aware that it can cause problems if you use a drive which is mounted, or opened by some other process, or guarded by/dev/pktcdvd*. Make sure that other users of the drive do not cause drive activities while axorrecordburn run is going on. πdrive_scsi_dev_family=sr|scd|sg|defaultβ GNU/Linux specific, okay? By default,xorrecordtries to map Linux drive addresses to/dev/sr*before they get opened for operating the drive. This coordinates well with other use cases of optical drives, likemount(8). But between year 2010 and 2020 all/dev/sr*shared a global lock which allowed only one drive to process an SCSI command while all others had to wait for its completion. That yielded awful throughput if more than one drive was writing or reading simultaneously. π The global lock was never applied to device files/dev/sg*and also not with the system callsread(2),write(2). Butioctl(SG_IO)was affected, which is needed to perform the SCSI commands for optical burning. π₯ So for simultaneous burn runs on GNU/Linux 2.6 to 5.5 it is advisable to usedrive_scsi_dev_family="sg". The drive addresses may then well be given as/dev/sr*, but will nevertheless get used as/dev/sg*. β¨--grow_overwriteable_isoβ enables emulation of multi-session writing on overwritable media which contain an ISO 9660 filesystem. This emulation is learned fromgrowisofs -Mbut 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 overwritable 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. Overwritable 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β applies option-multiif 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 below16sis the same as"off". β¨dvd_obs="default"|"32k"|"64k"β sets the number of bytes to be transmitted with each write operation to DVD or BD media. With most write types, tracks get padded up to the next multiple of this write size (see option--obs_pad). A number of 64 KB may improve throughput with bus systems which show latency problems. The default depends on media type, optionstream_recording=, and on compile time options. π--obs_padβ pads the data of the last write operation of a DVD-R[W] DAO session, or BD-R session, orstdio:pseudo-drive session up to the full size of an output chunk. This padding has to be applied automatically to the other DVD and BD media types, where it causes e.g. ISO images to have trailing unclaimed blocks. Whether it is applied automatically to BD-R depends on option--bdr_obs_exempt. πΈ Use this option if there is the suspicion that DVD-R[W] DAO or BD-R sessions abort with your kernel and/or DVD drive, if their size is not a multiple of 16 blocks. π± This option may also get enabled at compile time of libburn. π₯--bdr_obs_exemptβ exempts BD-R media from automatic unconditional transaction end padding, provided that this padding is not requested by--obs_padand that nostream_recordingis requested. This is a new feature introduced with version 1.5.6. It might become default in later versions. π--perform_opcβ orders the drive to perform Optimum Power Calibration (OPC) before writing begins. Many drives do their own power calibration even without an explicit order. This option may or may not be beneficial. Use it only if you suspect burn failures have happened because of poor compatibility between drive and medium. π«Ά--perform_opc_growisofsβ orders the drive to perform Optimum Power Calibration before writing begins, but only with DVD-R and unformatted DVD-RW and only if the drive offers no OPC table entries. This is whatgrowisofsdoes by default. This option may or may not be beneficial. Use it only if you suspect burn failures have happened because of poor compatibility between drive and medium. πmodesty_on_drive=parameter[:parameters]β controls 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 (likehdaandhdb). It may also help with simultaneous burns on different burners with Linux kernels between 2.6 and 5.5, if one has reason not to fix the problem bydrive_scsi_dev_family="sg". 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 threshold for beginning to wait is given by parameter"max_percent=". Parameter"min_percent="defines the threshold 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 amodesty_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
use_immed_bit="on"|"off"|"default"β controls whether several long lasting SCSI commands shall be executed with the Immed bit, which makes the commands end early while the drive operation is still going on.xorrisothen inquires progress indication until the drive reports to be ready again. If this feature is turned off, then blanking and formatting will show no progress indication. π It may depend on the operating system whether-use_immed_bitis set to"off"by default. π¦write_start_address=byte_offsetβ sets the byte address on overwritable media where to start writing the track. With DVD+RW, DVD-RAM or BD-RE,byte_offsetmust 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β sets the number of bytes after which to force output to emulatedstdio: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 β¨
okay bestie this is the part where it all clicks, because reading flags in a list is one thing and actually doing the thing is another. here's the vibe tour π
the lil menu 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
that's it. that's the whole thing. go find your drive, queen. π
get info about a particular drive and loaded media π¦
$ xorrecord dev=/dev/sr0 -atip -toc --grow_overwriteable_iso
toc, atip, grow_overwriteable_iso... it's giving full intel report. π
prepare CD-RW or DVD-RW for re-use πΈ
$ xorrecord -v dev=/dev/sr0 blank=as_needed -eject
also the move for BD-R when you want bad block handling, iykyk.
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. heads up though: several hundred MB of spare blocks will be reserved and write runs on such media will perform with less than half nominal speed. so like. it's slow but it's safe. π
de-format DVD-RW to make it capable of multi-session again π§
$ xorrecord -v dev=/dev/sr0 blank=deformat
un-formatting. yes it's a real word now. β¨
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
fs=8m fifo, padsize=300k, speed=12, eject at the end. this is the classic. the moment. the debut single. π
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. so those two are sitting this one out, bestie. πͺ
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.
many systems do not take notice of xorrecord's write activities. it is necessary to force their attention by ejecting and reloading the drive tray. therefore above run uses option -eject.
get the -msinfo numbers (and properly reload the tray if it has a motor) by:
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
offer a victim to any problem caused by obtrusive demons after tray loading:
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
(yes, dd is the sacrifice. it's fine. it's fine. π)
use the numbers 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. two dirs, one disc. main character energy fr fr. π
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.
the piped run is more vulnerable to the problem that some systems have not enough patience with automatic tray loading and that demons may interfere with a first CD-ROM driver read attempt from a freshly loaded medium. it is advised to load the tray manually or via a separate run of xorriso with a subsequent run of dd.
again, xorriso has the patience and dd is a dispensable victim for demons.
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
$ 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 the run would need no system workarounds and simply look like:
$ xorriso -dev /dev/sr0 -joliet on -speed 12 -fs 8m \
-map ./tree2 /dir2 -commit_eject all
see that? no workarounds, no demon sacrifice. just vibes. π«Ά
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.
like, actual old hardware. know your drive before you commit. β οΈ
$ 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. queen knows her own limits. π
β¨ FILES β¨
startup files π
if not --no_rc is given as the first argument then xorrecord attempts on startup to read and execute lines from the following files:
/etc/default/xorriso
/etc/opt/xorriso/rc
/etc/xorriso/xorriso.conf
$HOME/.xorrisorc
the files are read in the sequence given here, but none of them is required to exist. the lines are not interpreted as xorrecord options but as generic xorriso commands. see man xorriso.
β¨ SEE ALSO β¨
- for generic xorriso command mode:
xorriso(1) - formatting track sources for xorrecord:
xorrisofs(1),mkisofs(8),genisoimage(8),afio(1),star(1) - other programs which burn sessions to optical media:
growisofs(1),cdrecord(1),wodim(1),cdrskin(1)
β¨ BUGS β¨
to report bugs, request help, or suggest enhancements for xorriso, please send electronic mail to the public list <bug-xorriso@gnu.org>. if more privacy is desired, mail to <scdbackup@gmx.net>.
please describe what you expect xorriso to do, the program arguments or dialog commands by which you tried to achieve it, the messages of xorriso, and the undesirable outcome of your program run.
expect to get asked more questions before solutions can be proposed. that's not shade, that's just debugging. π
β¨ AUTHOR β¨
Thomas Schmitt <scdbackup@gmx.net> for libburnia-project.org
β¨ COPYRIGHT β¨
Copyright (c) 2011 - 2026 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of xorriso. If you make use of the license to derive modified versions of xorriso then you are entitled to modify this text under that same license.
β¨ CREDITS β¨
xorriso is in part based on work by Vreixo Formoso who provides libisofs together with Mario Danic who also leads the libburnia team. thanks to Andy Polyakov who invented emulated growing, to Derek Foreman and Ben Jansens who once founded libburn.
compliments towards Joerg Schilling whose cdrtools served me for ten years. π«‘
and that's the whole page bestie!! π this was Version 1.5.8, Apr 01, 2026 β so go forth, xorrecord responsibly, and remember: eject the tray, sacrifice the dd, and never trust a demon with your first CD-ROM driver read. periodt πβ¨π¦
π¦ where this page comes from
- alpine 3.24: libisoburn-doc 1.5.8-r0 Β· GPL-2.0-or-later
- arch rolling: libisoburn 1.5.8.2-1 Β· GPL-2.0-or-later
- fedora 43: xorriso 1.5.8-2.fc43 Β· GPL-2.0-or-later
- fedora 44: xorriso 1.5.8-2.fc44 Β· GPL-2.0-or-later
- nixpkgs unstable: libisoburn 1.5.8.pl02
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms