CDRSKIN(1)
๐ฟ cdrskin(1) โ General Commands Manual ๐ฟ
okay bestie, welcome to cdrskin, and no this is not a drill, it's the manual page, and I'm gonna walk you through literally every single thing in it ๐ซถ
โจ NAME โจ
cdrskin โ burns preformatted data to CD, DVD, and BD via libburn. that's the whole job description, she's a burner ๐
โจ SYNOPSIS โจ
cdrskin [options|track_source_addresses]
โจ DESCRIPTION โจ
so cdrskin is a program that provides some of cdrecord's options in a compatible way for CD media. With DVD and BD it has its own ways. And the best part? You do not need to be superuser for its daily usage. not me being accessible ๐
๐ Overview of features:
- Blanking of CD-RW and DVD-RW.
- Formatting of DVD-RW, DVD+RW, DVD-RAM, BD.
- Burning of data tracks or audio tracks with CD-TEXT to CD,
- either in versatile Track at Once mode (TAO)
- or in Session at Once mode for seamless tracks.
- Multi session on CD (follow-up sessions in TAO only)
- or on DVD-R[W] (in Incremental mode) or DVD+R[/DL] or BD-R.
- Single session Disk-at-once on DVD-RW, DVD-R, DVD-R DL.
- Single session or emulated ISO-9660 multi-session
- on overwriteable DVD+RW, DVD-RW, DVD-RAM, BD-RE
- or on data file or block device.
- Extraction of audio tracks and CD-TEXT to hard disk files.
- Bus scan, burnfree, speed options, retrieving media info, padding, fifo.
See section EXAMPLES at the end of this text. (iykyk, we'll get there ๐)
๐ General information paragraphs:
- Track recording model
- Write mode selection
- Recordable CD Media
- Sequentially Recordable DVD or BD Media
- Overwriteable DVD or BD Media
- Drive preparation and addressing
- Emulated drives
๐ธ Track recording model:
The input-output entities which get processed are called tracks. A track stores a stream of bytes. slay, that's it, that's the unit of work โจ
More than one track can be burned by a single run of cdrskin. In the terms of the MMC standard all tracks written by the same run constitute a session.
Normally, each track is initiated by one track source address argument, which may either be - for standard input or the address of a readable file. Alternatively, option cuefile= may be used to read a session description from a text file and to read the session content from a single data file.
If no write mode is given explicitly then one will be chosen which matches the peculiarities of track sources and the state of the output media. she picks for you, she's thoughtful like that ๐
Some media types can be kept appendable so that further tracks can be written to them in subsequent runs of cdrskin (see option -multi). Info about the addresses of burned tracks is kept in a table of content (TOC) on media and can be retrieved via cdrskin option -toc. This information is also used by the operating systems' CD-ROM read drivers.
In general there are two types of tracks: data and audio. They differ in sector size, throughput and readability via the systems' CD-ROM drivers and by music CD players. With DVD and BD there is only type data. If not explicitly option -audio is given, then any track is burned as type data, unless the track source is a file with suffix .wav or .au. Such files are burned as audio tracks by default. lowkey magic, highkey useful ๐ฆ
While audio tracks just contain a given time span of acoustic vibrations, data tracks may have an arbitrary meaning. Nevertheless, ISO-9660 filesystems are established as a format which can represent a tree of directories and files on all major operating systems. Such filesystem images can be produced by programs mkisofs or genisoimage or xorriso. They can also be extended by follow-up tracks if prepared properly. See the man pages of said programs. cdrskin is able to fulfill the needs about their option -C.
Another type of data track content are archive formats which originally have been developed for magnetic tapes. Only formats which mark a detectable end-of-archive in their data are suitable, though. Well tested are the archivers afio and star. Not suitable seems GNU tar. ๐ rip tar bestie, not your moment
๐ธ Write mode selection:
In general there are two approaches for writing media:
- A permissive mode selected by option
-taowhich needs no predicted track size and can use multi-session capabilities if offered by drive and medium. - A more restrictive mode
-sao(alias-dao) which usually demands a predictable track size and is not necessarily capable of multi-session. It can be used to write CD-TEXT and it is the only one that works with optioncuefile=.
If none of the options -dao, -tao or -sao is given then the program will try to choose a write mode which matches the defined recording job, the capabilities of the drive and the state of the present media.
So the mentioning of write modes in the following paragraphs and in the examples is not so much a demand that the user shall choose one explicitly, but rather an illustration of what to expect with particular media types. periodt ๐
๐ธ Recordable CD Media:
CD-R can be initially written only once and eventually extended until they get closed (or are spoiled because they are overly full). After that they are read-only. Closing is done automatically unless option -multi is given which keeps the media appendable.
Write mode -tao is able to use track sources of unpredictable length (like stdin) and to write further sessions to appendable media. -sao produces audio sessions with seamless tracks but needs predicted track sizes and cannot append sessions to media.
CD-RW media can be blanked to make them re-usable for another round of overwriting. Usually blank=fast is the appropriate option. Blanking damages the previous content but does not make it completely unreadable. It is no effective privacy precaution. Multiple cycles of blanking and overwriting with random numbers might be needed. ๐ listen to her, do not use this to hide your secrets
๐ธ Sequentially Recordable DVD or BD Media:
Currently DVD-RW, DVD-R[DL], DVD+R[DL], and BD-R can be used for the Sequential recording model. It resembles the model of CD media. Only DVD-RW can be blanked and re-used from scratch.
DVD-RW are sequential media if they are in state "Sequential Recording". The media must be either blank or appendable. Newly purchased DVD-RW and DVD-R media are in this state. Used DVD-RW get into blank sequential state by option blank=deformat_sequential .
With DVD-R[W] two write modes may be available:
Mode DAO has many restrictions. It does not work with appendable media, cannot do -multi and writes only a single track. The size of the track needs to be known in advance. So either its source has to be a disk file of recognizable size or the size has to be announced explicitly by options tsize= or tao_to_sao_tsize= .
DAO is the only mode for DVD-R media which do not offer feature 21h Incremental Streaming (e.g. DVD-R DL). DAO may also be selected explicitly by option -sao . Program growisofs uses DAO on sequential DVD-R[W] media for maximum DVD-ROM/-Video compatibility.
The other mode, Incremental Streaming, is the default write mode if it is available and if the restrictions of DAO would prevent the job. Incremental Streaming may be selected explicitly by option -tao as it resembles much CD TAO by accepting track sources of unpredicted length and being able to keep media appendable by option -multi . It does not work with DVD-R DL and minimally blanked DVD-RW. The only restriction towards CD-R[W] is the lack of support for -audio tracks. Multiple tracks per session are permissible.
The write modes for DVD+R[/DL] and BD-R resemble those with DVD-R except that each track gets wrapped in an own session. There is no -dummy writing with DVD+R[/DL] or BD-R. ๐ญ
Quite deliberately write mode -sao insists in the tradition of a predicted track size and blank media, whereas -tao writes the tracks open ended and can be applied to appendable media.
BD-R may be formatted before first use to enable the Defect Management which might catch and repair some bad spots at the expense of slow speed even with flawless media. ๐ slow but safe, choose your fighter
Note: Option -multi might make DVD media unreadable in some DVD-ROM drives. Best reader compatibility is achieved without it (i.e. by single session media).
๐ธ Overwriteable DVD or BD Media:
Currently types DVD+RW, DVD-RW, DVD-RAM and BD-RE can be overwritten via cdrskin.
Option -audio is not allowed. Only one track is allowed. Option -multi cannot mark a recognizable end of overwriteable media. Therefore -multi is banned unless ISO-9660 images shall be expandable by help of option --grow_overwriteable_iso . Without this option or without an ISO-9660 filesystem image present on media, -toc does not return information about the media content and media get treated as blank regardless whether they hold data or not.
Currently there is no difference between -sao and -tao. If ever, then -tao will be the mode which preserves the current behavior.
DVD+RW and DVD-RAM media need no special initial formatting. They offer a single continuous data area for blockwise random access. BD-RE need explicit formatting before use. See blank=as_needed or blank=format_defectmgt .
DVD-RW are sold in state "Sequential Recording". To become suitable for the Overwriteable DVD recording model they need to get formatted to state "Restricted Overwrite". Then they behave much like DVD+RW. This formatting can be done by option blank=format_overwrite .
Several programs like dvd+rw-format, cdrecord, wodim, or cdrskin can bring a DVD-RW out of overwriteable state so that it has to be formatted again. If in doubt, just give it a try. ๐ she said just vibe check it
๐ธ Drive preparation and addressing:
The drives, CD, DVD, or BD burners, are accessed via addresses which are specific to libburn and the operating system. Those addresses get listed by a run of cdrskin --devices or cdrskin --device_links.
On Linux, they are device files which traditionally do not offer w- permissions for normal users. Because libburn needs rw- permission, it might be only the superuser who is able to get this list without further precautions.
It is consensus that chmod a+rw /dev/sr0 or chmod a+rw /dev/hdc is less security sensitive than chmod u+s,a+x /usr/bin/cdrskin. The risk for the drive is somewhat higher but the overall system is much less at stake. Consider to restrict rw-access to a single group which bundles the users who are allowed to use the burner drive (like group "floppy").
For drive permission examples on Linux, FreeBSD, and Solaris, see cdrskin/README.
If you only got one CD capable drive then you may leave out cdrskin option dev= . Else you should use this option to address the drive you want.
cdrskin option dev= not only accepts the listed addresses but also traditional cdrecord SCSI addresses which consist of three numbers: Bus,Target,Lun. On Linux there is also a related address family "ATA" which accesses IDE drives not under control of Linux SCSI drivers: ATA:Bus,Target,Lun.
See option -scanbus for getting a list of cdrecord style addresses.
Further are accepted: links to libburn-suitable device files, device files which have the same major and minor device number, and device files which have the same SCSI address parameters (e.g. /dev/sg0). ๐
๐ Emulated drives ๐
Okay bestie, so pseudo-drives are a whole thing. Option --allow_emulated_drives unlocks addressing of fake drives that get emulated on top of filesystem objects. They're not real hardware, they're ~concepts~ ๐
- Regular data files and block devices โ you get pseudo-drives that behave much like DVD-RAM.
- If the address you hand over doesn't exist yet but its directory does, then it gets created as a regular file. Manifesting, fr.
- Other file types, like character devices or pipes โ pseudo-drives that behave much like a blank DVD-R.
- The target file address is given after the prefix
stdio:.
Example, because examples eat every time:
dev=stdio:/tmp/my_pseudo_drive
Addresses of the form stdio:/dev/fd/<number> are treated special โจ The number is read literally and used as an open file descriptor. So with dev="stdio:/dev/fd/1" the normal standard output of the program gets redirected to stderr, and the stream data of a burn run will show up on stdout.
Not good for terminals ! Redirect it. ๐ซฃ
Pseudo-drives support -dummy. Their reply with --tell_media_space can be utopic. And -dummy burn runs touch the file but do not modify its data content.
Note:--allow_emulated_drivesis restricted tostdio:/dev/nullif cdrskin is run by the superuser, or if it has changed user identity via the setuid bit of its access permissions. The ban for the superuser can be lifted by a skillfully created file. See section FILES below. ๐
โจ OPTIONS โจ
--helpโ Show non-cdrecord compatible options.-helpโ Show cdrecord compatible options. Note that some of the help texts are quite wrong โ for cdrecord as well as for cdrskin (e.g.-format,blank=,-load). They are, nevertheless, traditional indicators for the availability of the listed options. Some frontend programs make decisions after reading them. ๐-versionโ Print cdrskin id line, compatibility lure line, libburn version, cdrskin version, version timestamp, build timestamp (if available), and then exit.
Alphabetical list of options which are intended to be compatible with original cdrecord by Joerg Schilling:
-atipโ Retrieve some info about media state. With CD-RW print"Is erasable". With DVD media print"book type:"and a media type text. With BD media print"Mounted Media:"and media type text.-audioโ Announce that the subsequent tracks are to be burned as audio. The source is supposed to be uncompressed headerless PCM,44100Hz,16bit, stereo. For little-endian byte order (which is usual on PCs) use option-swab. Unless marked explicitly by option-data, input files with suffix".wav"are burned as audio. They are also examined whether they have a header in MS-WAVE format announcing above parameters. If so, then raw audio data are extracted with appropriate byte order and burned. If unsuitable MS-WAVE parameters are detected, then the program run will end without burning. ๐ญ The same is done for suffix".au"and SUN Audio. Option-audiomay be used only with CD media and not with DVD or BD.--audio_not_rawโ Demand that all audio track sources are recognizable MS-WAVE or SUN Audio files with suitable parameters. If this demand is not fulfilled, then the program run will end without burning. All audio track source files will be examined for the demanded formats regardless of their file name suffix. The raw audio data will be extracted as appropriate with the recognized file format. Without this option any unrecognizable audio track source is treated as raw audio data and burned as is. Only recognized WAVE or SUN Audio track sources with unsuitable parameters cause a refusal to burn. Only track source files with suffix".wav"or".au"are considered for recognition.blank=typeโ Blank a CD-RW, DVD-RW, or format a DVD-RW, DVD+RW, DVD-RAM, BD. This is combinable with burning in the same run of cdrskin. The type given withblank=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 applyblank=fast. It is a reason to abort if the media cannot assume thoroughly writeable state, e.g. if it is non-blank write-once. This leaves unformatted DVD-RW in unformatted blank state. To format DVD-RW useblank=format_overwriteable. Blank unformatted BD-R stay unformatted. (Note:blank=as_neededis not an original cdrecord option.)
The following blank types are specific to particular media familes. Use them if special features are desired.
allโ Blank an entire CD-RW or an unformatted DVD-RW. (See also--prodvd_cli_compatible,--grow_overwriteable_iso)fastโ Minimally blank an entire CD-RW or blank an unformatted DVD-RW. (See also--prodvd_cli_compatible,--grow_overwriteable_iso)deformat_sequentialโ Likeblank=allbut with the additional ability to blank overwriteable DVD-RW. This will destroy their formatting and make them sequentially recordable. Another peculiarity is the ability to blank media which appear already blank. This is similar to option-forcebut does not try to blank media other than recognizable CD-RW and DVD-RW. (Note:blank=deformat_*are not original cdrecord options.)deformat_sequential_quickestโ Likeblank=deformat_sequentialbut blanking DVD-RW only minimally. This is faster than full blanking but may yield media incapable of Incremental Streaming (-tao).format_if_neededโ Format a media if it is not formatted yet, and if cdrskin supports formatting for the media type, and if formatting will not happen automatically during write. This currently applies to unformatted DVD-RW, DVD-RAM, BD-RE, and blank unformatted BD-R. Eventually the appropriate default formatting is chosen. If other media or states are encountered then nothing happens. The following formatting types are more specialized to particular media families.format_overwriteโ Format a DVD-RW to"Restricted Overwrite". The user should bring some patience. ๐ง (Note:blank=format_*are not original cdrecord options.)format_overwrite_quickestโ Likeformat_overwritewithout creating a128MiB trailblazer session. Leads to"intermediate"state which only supports sequential write beginning from address0. The"intermediate"state ends after the first session of writing data.format_overwrite_fullโ For DVD-RW this is likeformat_overwritebut claims full media size rather than just128MiB. Most traditional formatting is attempted. No data get written. Much patience is required. ๐ฎโ๐จ This option treats already formatted media even if not option-forceis given. For DVD+RW this is the only supported explicit formatting type. It provides complete"de-icing"so no reader slips on unwritten data areas.format_defectmgtโ Format DVD-RAM or BD to reserve the default amount of spare blocks for defect management. The followingformat_defectmgt_*enable the user to submit wishes which nevertheless have to match one of the available formats. These formats are offered by the drive after examining the media.format_defectmgt_cert_offโ Disable the usual media quality certification in order to save time and format to default size. The certification setting persists even if subsequentblank=options override the size of the format selection. Whether formatting without certification works properly depends much on the drive. One should check the"Format status:"from--list_formatsafterwards.format_defectmgt_cert_onโ Re-enable the usual media quality certification and format to default size. The certification setting persists like withformat_defectmgt_cert_off. Whether there happens certification at all depends much on the media state and the actually selected format descriptor.format_defectmgt_maxโ Format DVD-RAM or BD to reserve a maximum number of spare blocks.format_defectmgt_minโ Format DVD-RAM or BD to reserve a minimum number of spare blocks. It might be necessary to formatformat_defectmgt_nonefirst in order to get offered the most minmal spare blocks sizes forformat_defectmgt_min.format_defectmgt_noneโ Format DVD-RAM or BD-RE to the largest available payload in the hope to disable defect management at all. This may or may not have a speed increasing effect. Unformatted blank BD-R will be left unformatted.format_defectmgt_payload_<size>โ Format DVD-RAM or BD. The text after"format_defectmgt_payload_"gives a number of bytes, eventually with suffixes"s","k","m". The largest number of spare blocks will be chosen which enables at least the given payload size.format_by_index_<number>โ Format DVD-RW, DVD+RW, DVD-RAM or BD. The number after"format_by_index_"is used as index to the list of available format descriptors. This list can be obtained by option--list_formats. The numbers after text"Format idx"are the ones to be used withformat_by_index_. Format descriptor lists are volatile. Do neither eject nor write the media between the run of--list_formatsand the run ofblank=format_by_index_or else you may get a different format than desired. ๐helpโ Print this list of blanking types.
-checkdriveโ Retrieve some info about the addressed drive and then exit. Exits with non-zero value if the drive cannot be found and opened.-copyโ makes the following tracks writable with permission for an unlimited number of copies ๐ no cap, infinite dupes.cuefile=pathโ reads a whole session description straight out of a cue sheet file in CDRWIN format ๐. The tracks all get based on a single file that the sheet points to with theFILEcommand. If you want CD-TEXT to come along from that cue sheet, you gotta havecdrskinoption-textpresent โ otherwise it just doesn't show up, periodt. Right nowcdrskinsupportsTRACKdatatypesAUDIOandMODE1/2048, and bestie, those may not be mixed ๐ซ. The data source can beFILEtypeBINARY,MOTOROLA, orWAVE. The non-CDRWIN commandsARRANGER,COMPOSER, andMESSAGE? Yeah, those are supported too โจ. The cue sheet file commandsCATALOGandISRCcan get overridden by optionmcn=and byinput_sheet_v07t=purpose specifiers"UPC / EAN"and"ISRC". Heads up tho: this does not change how they appear in CD-TEXT, only on the Q sub-channel. And the track numbers? Those can be overridden by optioncd_start_tno=๐.-daoโ just an alias for option-sao๐ฆ. It writes the CD in Session at Once mode, or a DVD-R[W] in Disc-at-once mode.-dataโ the following tracks are data tracks ๐. This one is the default, and honestly it's only there so you can mark the end of a range that an earlier-audioor-xa1started.
Real talk: options-mode2,-xa, and-xa2get mapped to-data, which means they do not use the CD sector formats you actually asked for, so they don't take advantage of the potentially higher payload ๐ญ.
-xa1โ the following tracks are data tracks with input suitable for CD-ROM XA mode 2 form 1 ๐ธ. It's different from-datainput because of 8 extra header bytes per block. And plot twist:cdrskinwill not write CD-ROM XA โ it strips those header bytes and writes them as-datatracks instead ๐ .dev=targetโ sets the address of the drive you're using ๐ฅ. Valid addresses include at least the ones listed with options--devicesor--device_links, theX,Y,Zaddresses from option-scanbus, theATA:X,Y,Zaddresses from optionsdev=ATA -scanbus, and volatile libburn drive numbers (numbering starts at"0"). Other device file addresses that lead to the same drive might work too, iykyk. If you don't give adev=, the volatile address"dev=0"is assumed โ that's the first drive found being available. But like, better avoid this ambiguity on systems with more than one drive ๐. The special target"help"lists hints about available addressing formats. And be aware that the deprecated option--old_pseudo_scsi_adrmay change the meaning of Bus,Target,Lun addresses โ ๏ธ.driveropts=optโ set"driveropts=noburnfree"to disable the drive's eventual protection mechanism against temporary lack of source data (aka buffer underrun) ๐ก๏ธ. And a drive that announces no such capabilities won't get them enabled anyway, even if you try explicitly via"driveropts=burnfree". It's giving "no, and also no" ๐.-dummyโ tries to do the drive operations without actually affecting the inserted media ๐ง. Ngl there's no warranty this works with any particular combo of drive, media, and write mode. Blanking is prevented reliably though. To avoid inadverted real burning,-dummyrefuses burn runs on anything except CD-R[W], DVD-R[W], or emulated stdio-drives ๐ฅ.-ejectโ ejects the disc after the work is done โจ.-forceโ assumes the user knows better in situations wherecdrskinorlibburnare refusing because of concerns about drive or media state ๐ .
Caution: use option -force only when in urgent need ๐ญ.
This option enables the attempt to blank media that are classified as unknown or unsuitable, plus the attempt to use write modes that libburn believes the drive doesn't support. Another use: enforcing blanking or re-formatting of media that already appear to be in the desired blank or format state. It also enables a burn run with option -dummy even if libburn believes the drive and media won't simulate the write mode but will write for real ๐. And it enables a burn run where cdrskin expects to exceed the available media capacity. This is known as "overburn" and might succeed on CD media with write type SAO. Too much overburning might be harmful to the medium and might make the drive unusable (hopefully only until it gets powered off and on ๐). The man page of cdrecord mentions 88 seconds = 6600 blocks as a halfways safe amount over the official medium capacity. The assessment of track sizes by libburn will be wrong if the written size reaches or exceeds 90 minutes = 405000 sectors. The overall medium size assessment by the Linux kernel is supposed to yield roughly the written size, but bestie you should test this yourself with every overburnt medium ๐ซถ. First consider using a medium with more capacity rather than trying to overburn a CD, fr fr.
-formatโ same asblank=format_overwrite_full -forcebut restricted to DVD+RW ๐.fs=sizeโ sets the fifo size to the given value ๐. The value may have letters appended that multiply the preceding number:"k"or"K"= 1024"m"or"M"= 1024k"g"or"G"= 1024m"s"or"S"= 2048 Set size to0to disable the fifo entirely (default is"4m"). The fifo buffers an eventual temporary surplus of track source data so the drive gets a steady stream during times of temporary lack of track source supply ๐ง. The larger the fifo, the longer the periods of poor source supply can be compensated. But a large fifo needs substantial time to fill up if it's not curbed via optionfifo_start_at=sizeโณ.
gracetime=secondsโ sets the grace time before starting to write ๐ธ. (Default is0.)-immedโ equivalent to:
modesty_on_drive=1:min_percent=75:max_percent=95
The name of this cdrecord option stems from the "Immed" bit, which can make some long running drive commands asynchronous and thus eases the load on some wiring hardware types ๐
. Regardless of option -immed, cdrskin uses asynchronous commands where possible and appropriate. To really disable asynchronous command execution, use option use_immed_bit=off ๐ซ.
index=listโ sets a comma separated list of index start address numbers for the next track ๐. This applies to CD SAO sessions only. The addresses count sectors from the start of the next track. The first number is for index 1 and must be 0. The following numbers have to be larger than their respective predecessors. Up to 99 numbers are allowed. Sector numbers are computed from Min:Sec:Frame addresses by
Sector = ((Min*60)+Sec)*75+Frame
E.g.: "0,7512,20408" sets index 2 to 01:40:12 and index 3 to 04:32:08 โจ.
-inqโ prints the identification of the drive, then exits ๐ฆ.-isosizeโ the next track following this option will try to obtain its source size from the header information in the first few blocks of the source data ๐. If those blocks indicate an ISO-9660 filesystem, then its declared size gets used, under the assumption that it's a single session filesystem. If not, the burn run gets aborted ๐ญ. The range of-isosizeis exactly one track. Further tracks may be preceded by further-isosizeoptions though. At least 15 blocks of padding will be added to each-isosizetrack โ but be advised to rather usepadsize=300k๐. This option can be performed on track sources that are regular files or block devices. For the first track of the session, it can be performed on any type of source if there's a fifo of at least 64 kiB. See optionfs=.isrc=textโ sets the ISRC for the next track source to the given text, which must be exactly 13 characters long ๐. It has to comply to the formatCCOOOYYSSSSS.CCis the country codeOOOis the owner code- both
CCandOOOmay consist of capital lettersAtoZand decimal digits0to9 YYis the year (00to99)SSSSSis the serial number (00000to99999) This option does not affect CD-TEXT, only the Q sub-channel ๐ .
-loadโ loads the media and exits ๐. Exit value is0if any kind of media was found, non zero otherwise. Note: option-ejectwill unload the media even if-loadis given ๐.-lockโ like option-load, but leaves the drive's eject button disabled if any media is found and option-ejectis not given ๐. Use program"eject"orcdrskin -ejectto get the tray out of the drive. Runs of programs likecdrecord,growisofs,wodim,cdrskinwill not be hampered, and normally enable the drive's eject button when they're done ๐ซถ.mcn=textโ sets the CD Media Catalog Number to text, which must be exactly 13 characters long and should consist of decimal digits ๐ข. This option does not affect CD-TEXT, only the Q sub-channel โจ.minbuf=percentageโ equivalent to:
modesty_on_drive=1:min_percent=<percentage>:max_percent=95
Percentage is permissible between 25 and 95 ๐.
-minfoโ prints information about the loaded media ๐ธ. This includes media type, writability state, and a quite readable table of content ๐.msifile=pathโ runs option-msinfoand copies the result line into the file given by path ๐. Unlike-msinfo, this option does not redirect all normal output away from standard output. But it may be combined with-msinfoto achieve that.
Note:msifile=pathis actually an option ofwodimand not ofcdrecord๐ญ.
-msinfoโ retrieves multi-session info for preparing a follow-up session via option-Cof programsmkisofs,genisoimage, orxorriso -as mkisofs๐ฅ. Prints the result to standard output. This option redirects to stderr all message output except the one of option--tell_media_spaceand its own result string, which consists of two numbers. That result string shall be used as the argument of option-Cwith said programs ๐ . It gives the start address of the most recent session and the predicted start address of the next session to be appended. The string is empty if the most recent session was not written with option-multi๐. To have a chance of working on overwriteable media, this option has to be accompanied by option--grow_overwriteable_isoโญ.-multiโ keeps CD, unformatted DVD-R[W], DVD+R, or BD-R appendable after the current session is done ๐พโจ. Without it, the disc gets closed and can't be written to anymore โ unless it's a-RWand gets blanked, which means you lose all its content ๐ญ. Follow-up sessions can only be written in-taomode. Also:-multiis prohibited with DVD-R[W] DAO write mode and on DVD-R DL media. Option--prodvd_cli_compatibleeventually makes-multitolerable but cannot make it work. For all your filesystem content to be accessible, the eventual ISO-9660 filesystem of a follow-up session has to be prepared in a special way by the filesystem formatter program.mkisofsandgenisoimageexpect particular info about the situation, which you can grab with cdrskin option-msinfo. To retrieve an archive file written as a follow-up session, you can use option-tocto learn about the"lba"of the track number you want โ this lba is the address of the2048byte block where the archive begins. With overwriteable DVD or BD media,-multicannot mark the end of the session, so when adding a new session that end has to be determined from the payload โ and currently only ISO-9660 filesystems can be used that way. See option--grow_overwriteable_isofor lifting the ban on-multi.
โ ๏ธ Note: -multi might make DVD media unreadable in some DVD-ROM drives. Not a vibe, bestie, just facts.
-nocopyโ create subsequent tracks with permission for a single level of copies ๐ฏ. I.e. those copies would then be marked by-scmsas offering no permission for further copies.-nopadโ do not add trailing zeros to the data stream. That said, since there seems to be no use for audio tracks with an incomplete last sector, this option only applies to data tracks. And there, it's the default. ๐-nopreempโ indicate for subsequent tracks that they were mastered without pre-emphasis.-padโ add30 kiBof trailing zeros to each data track. (This is not sufficient to avoid problems with various CD-ROM read drivers. ๐)padsize=sizeโ add the given amount of trailing zeros to the next data track. This option gets reset topadsize=0after that next track is written, and it may be set again before the next track argument. About size specifiers, see optionfs=.-preempโ indicate for subsequent tracks that they were mastered with pre-emphasis.-saoโ write CD in Session At Once mode, or sequential DVD-R[W] in Disc-at-once (DAO) mode โจ.- With CD, this mode is able to put several audio tracks on media without producing audible gaps between them. Iconic.
- With DVD-R[W], this mode can only write a single track, and no
-multiis allowed with DVD-R[W]-sao. -saois permissible with overwriteable DVD, or DVD+R[/DL], or BD, but actually only imposes restrictions without providing known advantages. ๐-saocan only be used for tracks of fixely predicted size. This implies that track arguments which depictstdinor named pipes need to be preceded by optiontsize=or by optiontao_to_sao_tsize=.-saocannot be used on appendable media.
-scanbusโ scan the system for drives ๐. On Linux the drives at/dev/s*and at/dev/hd*are to be scanned by two separate runs: one withoutdev=for/dev/s*, and one withdev=ATAfor/dev/hd*devices. (Option--driveslists all available drives in a single run.) Drives which are busy, or which offer no rw-permission to the user of cdrskin, are not listed โ busy drives get reported in the form of warning messages. The useful fields in a result line are:
Bus,Target,Lun Number) 'Vendor' 'Mode' 'Revision'
-scmsโ create subsequent tracks without permission for being copied ๐ซ. This is usually done for tracks which are copies of tracks that were marked with-nocopy(but not yet with-scms). So copies of copies are prohibited. This option gets reset by option-copy, so the combination-copy -nocopymeans-nocopysurely without-scms.speed=numberโ set speed of drive ๐๏ธ. With data CD,1xspeed corresponds to a throughput of153,600 bytes/second. With DVD,1x=1,385,000 bytes/second. With BD,1x=4,495,625 bytes/second. It is not an error to set a speed higher than is suitable for drive and media, but one should stay within a realistic speed range though. Special speed settings are:0= minimal speed-1= maximal speed (default)- text
"any"= like-1.
-swabโ announce that the raw audio data source of subsequent tracks is byte swapped versus the expectations ofcdrecord๐. This option is suitable for audio where the least significant byte of a16 bitword is first (little-endian, Intel). Most raw audio data on PC systems are available in this byte order. Less guesswork is needed if track sources are in format MS-WAVE in a file with suffix".wav".-taoโ write CD in Track At Once (TAO) mode, sequential DVD-R[W] in Incremental Streaming mode, or DVD+R[/DL] without traditional-saorestrictions. This mode also applies pro-forma to overwriteable media. Mode-taocan be used with track sources of unpredictable size, like standard input or named pipes ๐ซถ. It is also the only mode that can be used for writing to appendable media which already hold data. With unformatted DVD-R[W] it is the only mode which can keep media appendable by option-multi. Mode-taois not usable for minimally blanked DVD-RW and for DVD-R DL. ๐-textโ enable writing of CD-TEXT attributes read by optioncuefile=๐. Without option-text, cue sheet file commandCDTEXTFILEwill be ignored and no CD-TEXT attributes will be read from the file. Nevertheless,CATALOGandISRCwill have the same effect as optionsmcn=andisrc=.textfile=pathโ read CD-TEXT packs from the file depicted by path and put them into the Lead-in of the emerging session ๐. This session has to be done by Session At Once (SAO) mode and may only contain audio tracks. path must lead to a regular file, which consists of an optional header of four bytes and one or more text packs of18bytes each. Suitable would be the file'cdtext.dat'which gets extracted from CD media by options-vv -tocand shown in human readable form by-vvv -toc. The header, if present, must tell the file size minus2, encoded as big-endian16 bitword. The other two bytes must be0. If there is no4-byte header, then a trailing0-byte, as of Sony specification, is tolerated and ignored. A text pack consists of a pack type byte, a track number byte, a counter byte, a Block Number and Character Indicator byte,12text characters or data bytes, and two optional CRC bytes. For details see libburn documentation filedoc/cdtext.txt. By default, the input file is checked for correct CRC bytes. If all CRC bytes are0, then the correct values get silently inserted. If there are non-zero CRC bytes, then a mismatch causes the abort of the burn run. This check can be disabled by option-force. Note that this option overrides optioninput_sheet_v07t=.-tocโ print the table of content (TOC) which describes the tracks recorded on disc ๐. The output contains all info from option-atipplus lines which begin with"track:", the track number, the word"lba:"and a number which gives the start address of the track. Addresses are counted in CD sectors which with SAO or TAO data tracks hold2048bytes each. If verbosity is set to level 2 (-v -v) then the CD-TEXT packs from the lead-in of an audio CD get extracted and written into file'cdtext.dat', if that file does not yet exist. Prepended is a4byte header, followed by one or more packs of18bytes each. Verbosity level 3 causes the CD-TEXT packs to be printed as hex numbers to standard output. Bytes4to15of certain pack types are printed as ASCII characters if they have values in the range of32to126. See optiontextfile=for more information about the text pack format.
Example. Retrieve an afio archive from track number 2:
tracknumber=2
lba=$(cdrskin dev=/dev/cdrom -toc 2>&1 | \
grep '^track:[ ]*[ 0-9][0-9]' | \
tail +"$tracknumber" | head -1 | \
awk '{ print $4}' )
dd if=/dev/cdrom bs=2048 skip="$lba" | \
afio -t - | less
tsize=sizeโ announces the exact size of the next track source ๐. This is necessary with any write mode other than-taoif the track source is not a regular disk file, but e.g."-"(standard input) or a named pipe. About size specifiers, see optionfs=. 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 cdrskin exits with non-zero value. ๐ฌ-vโ increment verbosity level by one ๐. Startlevel is0with only few messages. Level1prints progress report with long running operations and also causes some extra lines to be put out with info retrieval options. Level2additionally reports about option settings derived from arguments or startup files. Level3is for debugging and useful mainly in conjunction with somebody who had a look into the program sourcecode. ๐-Vโ enable logging of SCSI commands tostderr๐ฅ๏ธ. This is helpful for expert examination of the interaction between libburn and the drive. The commands are specified in SCSI-3 standards SPC, SBC, MMC.
-waitiโ okay bestie, this one makes cdrskin chill out until there's actually input data waiting at stdin, or until stdin hits EOF. Only then does it go anywhere near a drive. ๐๐ฟ
You want this when cdrskin is sitting at the end of a pipe and the feeder process over there reads from the drive before it starts pushing its output into cdrskin. Like, it's a whole mutual-waiting situation and somebody has to go first. That's cdrskin. โจ
mkisofs ... -C 0,12800 -M /dev/sr0 | \
cdrskin dev=/dev/sr0 ... -waiti -
This works even if stdin isn't one of the track sources, which is lowkey the whole point. And if nobody's piping anything in? Then just hitting the Enter key on your terminal is the trigger for cdrskin. ๐
Heads up though: that input line will not be consumed by cdrskin if stdin isn't among the track sources. So it'll end up as a shell command. Usually. iykyk ๐
โจ Alphabetical list of options that are genuinely cdrskin's and meant for normal use โจ
--adjust_speed_to_driveโ this one curbs any explicitly givenspeed=values down to the maximum the drive actually announces for the loaded media. respecting the limit, periodt. By default, that adjustment only happens with the pseudo-speeds0and-1โ whereasspeedsettings> 0get sent to the drive totally unchanged, and then the drive picks an appropriate speed on its own. ๐--allow_emulated_drivesโ turns on drive addresses of the formdev=stdio:<path>. See the paragraph above called "Drive preparation and addressing". ๐ฆ--allow_setuidโ silences the loud warning about the insecure discrepance between login user and effective user, which is the thing that tells you somebody appliedchmod u+sto the program binary. You should not do thatchmod u+s, bestie. But it is an old cdrecord tradition. ๐--any_trackโ letssource_addressesbegin with"-"(plus further characters) or contain a"="character. By default, arguments like that get read as misspelled options. Note: it's still not possible to use one of the options listed with--list_ignored_options. ๐assert_write_lba=block_number|byte_addressโ aborts if the write address you gave here isn't the same as what's predicted immediately before the write session starts. This can make sure a start address presumed by a formatter likemkisofs -Cis really used by the drive for writing. ๐ฏ Andassert_write_lba=0effectively demands blank media and excludes appendables.
The block numbering here is peculiar, so listen up: if the last character of the option string is a letter [a-zA-Z], then the usual unit scaling by "s", "k", "m", etc. applies and the result gets divided by 2048. Otherwise the number value of the string is taken as a plain block number with block size 2048 byte.
So like, ...=1000 or ...=1000s means block 1000, ...=1m means block 512, ...=4096b means block number 2. math girlie hours ๐งฎ๐
cd_start_tno=numberโ sets the number that shall be written as the CD track number with the first track of the session. The following tracks then get written with consecutive CD track numbers. The resulting number of the last track must not exceed99. The lowest possible start number is1, which is also the default. ๐ต
This setting applies only to CD SAO writing. And it overrides the track number settings caused by options cuefile= or input_sheet_v07t=.
cdtext_to_textfile=pathโ extracts the CD-TEXT packs from the lead-in of an audio CD and writes them to the file with the given path. If CD-TEXT can be retrieved, then this file will be suitable for optiontextfile=. ๐พโจ
Fr fr though: not all drives can read CD-TEXT and not all audio CDs even bear CD-TEXT. It is not considered an error if no CD-TEXT is available. no drama, just vibes ๐ฆ
cdtext_to_v07t=pathโ extracts the CD-TEXT packs from the lead-in of an audio CD and writes them as human readable Sony Input Sheet Version 0.7T to the file with the given path. If CD-TEXT can be retrieved, then this file will be suitable for optioninput_sheet_v07t=. ๐ธ
If the given path is "-", then the result gets printed to standard output. ๐จ๏ธ
Same disclaimer as above, and it matters: not all drives can read CD-TEXT and not all audio CDs bear CD-TEXT. It is not considered an error if no CD-TEXT is available.
--demand_a_driveโ exits with a nonzero value if no drive can be found during a bus scan. no drive, no service ๐ญ--devicesโ lists the device file addresses of all accessible CD drives. In order to get listed, a drive has to offer rw-permission for the cdrskin user and it may not be busy. The superuser should be able to see all idle drives listed, and busy drives reported as"SORRY"messages. ๐
Each available drive gets listed by a line containing these fields:
Number dev='Devicefile' rw-Permissions : 'Vendor' 'Model'
Number and Devicefile can both be used with option dev=, but just know that number is volatile โ the numbering changes if drives become busy. chaotic, honestly ๐
--device_linksโ like--devices, but presenting the drives with addresses of symbolic links which point to the actual device files. ๐ฆ
Modern GNU/Linux systems may shuffle drive addresses from boot to boot. The udev daemon is supposed to create links which always point to the same drive, regardless of its system address. Option --device_links shows the addresses of such links if they begin by "/dev/dvd" or "/dev/cd". Precedence is: "dvdrw", "cdrw", "dvd", "cdrom", "cd". ๐
direct_write_amount=sizeโ this one doesn't write a session with tracks, bestie, it instead makes an appropriate number of direct write operations with no preparations. Flushing the drive buffer will be the only finalization. ๐ฅ
You're advised to eject the media afterwards, because the write operations circumvent the usual system i/o with its caches and buffers. By ejecting, those invalid memory copies get surely discarded. eject it, girl ๐
Only a few media can be written this way: DVD-RAM, BD-RE, RVD+RW and overwriteable DVD-RW. Writing is restricted to the already formatted area of the media. ๐
Writing starts at byte 0 of the media, or at the address given by option write_start_address=. Only the first track source is used as input for the write operations. The fifo (fs=) is disabled. ๐ซ
Parameter size controls the amount of data to be written. Size 0 means the track source shall be used up until EOF โ and in this case, the last write transaction gets padded up to the necessary size by zeros. Size -1 revokes direct writing and switches back to normal session oriented writing. ๐
Both write_start_address and direct_write_amount size must be aligned to a media dependent transaction size. With DVD-RAM, BD-RE, DVD+RW this is 2k, with overwriteable DVD-RW it is 32k. alignment is the moment โจ
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 of64 KBmay improve throughput with systems which show latency problems. ๐
The default depends on media type, option stream_recording=, and on compile time options. it's giving mysterious, it's giving compiled ๐ง
extract_audio_to=directory_pathโ extracts tracks from an audio CD as separate WAVE audio files into the given directory. ๐ถ
That directory has to already exist, but none of the track files may exist. This option will rather fail than overwrite an existing file. no overwriting on my watch ๐
By default all tracks of the CD are extracted to files with names NN.wav, where NN is the track number from 01 to at most 99. ๐
extract_basename=nameโ sets a filename prefix which shall be used byextract_audio_to=instead of the empty default name prefix. ๐ท๏ธ--extract_dapโ enables Digital Audio Play flaw obscuring mechanisms like audio data mute and interpolate. make it sound fine, bestie ๐งextract_tracks=number[,number[,...]]โ sets a list of track numbers to define which tracks shall be extracted byextract_audio_to=. If noextract_tracks=is given, then all audio tracks get extracted. ๐ต
It's permissible to have more than one extract_tracks= option in order to split a long list into shorter pieces. The lowest permissible track number is 1, the highest is 99. ๐
fallback_program=commandโ sets a command name to be executed if cdrskin encounters a known cdrecord option which it does not yet support. If a non-empty command is given withfallback_program=, and if no essential options are given which are specific to cdrskin, then cdrskin will delegate the job to said command. ๐ซถ
The natural commands to be given are cdrecord or wodim, but one may well submit the address of an own program. ๐
The fallback program will get all arguments of cdrskin which do not match the shell patterns --?* or *_*=*. This eventually suppresses path names of track sources which happen to match those patterns. The options from the startup files are not handed to the fallback program. ๐
Security check! Fallback program execution is disabled if cdrskin is run setuid and not option--allow_setuidis given. In general, the drive's device files and the involved programs should be set up so that each program runs under its advised conditions. (E.g. cdrskin as member of groupfloppy, cdrecord setuidroot.) ๐
Two alias names for cdrskin are predefined with default fallback programs:
unicordimpliesfallback_program=cdrecordcodimimpliesfallback_program=wodim
--four_channelโ indicates for subsequent tracks that they were mastered with four channels. ๐๏ธโจfifo_start_at=sizeโ do not wait for a full fifo, but start burning as soon as the given number of bytes is read. This option may be helpful to bring the average throughput near to the maximum throughput of a drive. ๐ฅ
A large fs= and a small fifo_start_at= combine a quick burn start and a large savings buffer to compensate for temporary lack of source data. At the beginning of burning, the software protection against buffer underrun is as weak as the size of fifo_start_at=. So it is best if the drive offers hardware protection which is enabled automatically if not driveropts=noburnfree is given. tl;dr: let the drive help you ๐
--grow_overwriteable_isoโ okay so this one is giving emulation of multi-session writing on overwriteable media that contain an ISO-9660 filesystem. ๐ฟโจ It learned this fromgrowisofs -Mbut adapted it to howcdrskin -msinfoworks:
mkisofs -C -M | cdrskin -waiti [-multi] -
It does not hamper true multi-session media, so you can use the same cdrskin options on both kinds and get similar results if you're writing ISO-9660 filesystem images. This option implies -isosize and therefore demands that the track source is an ISO-9660 filesystem image.
With overwriteable media and no blank=fast|all present, it expands an eventual ISO-9660 filesystem on the media. It assumes the image's inner size description points to the end of the valuable data. Overwriteable media with a recognizable ISO-9660 size will be treated as appendable rather than blank โ meaning -msinfo and -toc will work. And -toc will always show a single session with its size increasing with every added mkisofs image.
If not overridden by write_start_address=, the track with the new image gets placed behind the end of the old one. You can use assert_write_lba= to make sure the media state and the mkisofs job actually match.
--grow_overwriteable_iso causes blank=fast|all to invalidate an eventual ISO-9660 image by altering the first few bytes of block 16 on overwriteable media. Option -multi is tolerated so it doesn't mess up true multi-session media.
An equivalent of growisofs -Z for overwriteable media is:
mkisofs | cdrskin --grow_overwriteable_iso blank=fast [-multi] -
With multi-session DVD, blank=fast will act like dvd+rw-format -blank=full .
And growisofs -dvd-compat is roughly equivalent to cdrskin without option -multi.
input_sheet_v07t=pathโ read CD-TEXT definitions from a Sony Input Sheet version 0.7T. Up to eight or seven such sheets can be read by multipleinput_sheet_v07t=options. Each one defines one CD-TEXT language block. ๐ถ
The first line of a sheet file decides whether more than one sheet may be defined by the file. If it is
Input Sheet Version = 0.7T
then each further line with that text switches to the next sheet for the next block. If it's not, then all definitions apply to a single block.
The information in such a sheet is given by text lines of the following form:
purpose specifier [whitespace] = [whitespace] content text
[whitespace] is zero or more ASCII 32 (space) or ASCII 9 (tab) characters. The purpose specifier tells the meaning of the content text. Empty content text does not cause a CD-TEXT attribute to be attached.
The following purpose specifiers apply to the session as a whole:
Text Code=8859Language Code=EnglishAlbum Title=Joyful NightsArtist Name=United Cat OrchestraSongwriter=Various SongwritersComposer=Various ComposersArranger=Tom CatAlbum Message=For all our fansCatalog Number=1234567890Genre Code=ClassicalGenre Information=Feline classic musicClosed Information=This is not to be shown by CD playersUPC / EAN=1234567890123Text Data Copy Protection=OFFFirst Track Number=1Last Track Number=3
The following purpose specifiers apply to particular tracks:
Track 01 Title=Song of JoyTrack 01 Artist=Felix and The PurrsTrack 01 Songwriter=Friedrich SchillerTrack 01 Composer=Ludwig van BeethovenTrack 01 Arranger=Tom CatTrack 01 Message=Fritz and Louie once were punksISRC 01=XYCRR1101234
Track numbers are decimal despite the leading 0. There should be as many track definitions as there are track source files given.
See libburn's doc/cdtext.txt for a detailed definition of 0.7T and the possible values for Text Code, Language Code, Genre Code, Text Data Copy Protection.
The Q sub-channel settings by "UPC / EAN" and "ISRC" may be overridden by options mcn= and isrc=. This will not affect their appearance as CD-TEXT. They may override cuefile= commands CATALOG and ISRC in the same way.
If options -text cuefile= are given and if the cue sheet file defines CD-TEXT, then only seven input_sheet_v07t= options may be given. They will then be used as CD-TEXT language blocks 1 to 7.
This option will get into effect only if no option textfile= is given. The write mode must be SAO on CD. All tracks must be -audio tracks.
The track numbers may be overridden by option cd_start_tno=.
--list_formatsโ list the available format descriptors as reported by the drive for the loaded media. Each descriptor line begins with"Format idx"and the descriptor's list index, followed by a":", the format type, the number of payload blocks and that same number converted to MiB. ๐
The meaning of the format types is defined by the MMC standard with command FORMAT UNIT. A user will more be interested in the sizes than in the types.
--list_ignored_optionsโ list all ignored cdrecord options. The"-"options cannot be used as addresses of track sources. No track source address may begin with a text equal to an option which ends by"=". The list is ended by an empty line. ๐ซ
--list_speedsโ put out a list of speed values as reported by the output drive with the loaded medium. This does not necessarily mean that the medium is writable or that these speeds are actually achievable. Especially the lists reported with empty drive or with ROM media obviously advertise speeds for other media. ๐๏ธ
It is not mandatory to use speed values out of the listed range. The drive is supposed to choose a safe speed that is as near to the desired speed as possible.
At the end of the list, "Write speed L" and "Write speed H" are the best guesses for lower and upper speed limit. "Write speed l" and "Write speed h" may appear only with CD and eventually override the list of other speed offers.
Only if the drive reports contradicting speed information there will appear "Write speed 0" or "Write speed-1", which tell the outcome of speed selection by options speed=0 or speed=-1, if it deviates from "Write speed L" or "Write speed H", respectively.
--long_tocโ like option-tocbut marking each session start by a line"first: X last: Y"and each session end by"track:lout ...". ๐ฏ
--no_loadโ when aquiring the optical drive, do not try to load its tray. This yields the same behavior for desktop drives with tray loader as is shown by laptop drives which usually lack a motorized tray loader. ๐ป
--no_rcโ only if used as first command line argument this option prevents reading and interpretation of eventual startup files. See section FILES below. ๐
--pacifier_with_newlineโ adds a newline character to each pacifier line that would elsewise be overwritten by the next pacifier line. Such lines are emitted during a run of writing, formatting, or blanking if option-vis given. ๐
--perform_opcโ order the drive to perform Optimum Power Calibration (OPC) before writing begins. Many drives do their own power calibration even without explicit order. ๐ฌ
So this option may or may not be beneficial. Use this only if you suspect burn failures have happened because of poor compatibility between drive and medium.
--perform_opc_growisofsโ order 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. ๐๏ธ
It may or may not be beneficial. Use this option only if you suspect burn failures have happened because of poor compatibility between drive and medium.
--prodvd_cli_compatibleโ activates behavior modifications with some DVD situations which bringcdrskinnearer to the behavior ofcdrecord-ProDVD:- Option
-multiwith unsuitable media is not an error but simply has no effect. - Options
blank=fastandblank=alldeformat overwriteable DVD-RW media. - Option
blank=fastdoes indeed minmal blanking with DVD-RW. This may yield media which can only do DAO but not Incremental Streaming.
- Option
--single_trackโ accept only the last argument of the command line as track source address. โ๏ธ
stdio_sync=on|off|numberโ set the number of bytes after which to force output to drives with prefix"stdio:". 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". ๐พ
stream_recording=on|off|numberโ by setting"on"request 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".
tao_to_sao_tsize=sizeโ ok so this sets an exact, fixed size for the next track, but only when ALL of these are true: the track source can't give a size prediction, notsize=was given, and the write mode is demanding an exact track size prediction. This was the fallback from the bad old days when cdrskin couldn't burn in mode-taoat all. It came back for minimally blanked DVD-RW, which can't do Incremental Streaming (-tao), and for when you explicitly pick write mode-saofor best DVD-ROM compatibility. If the track source delivers fewer bytes than announced, the missing ones get filled with zeros. ๐--tell_media_spaceโ bestie, this one is a reconnaissance mission, not a burn. It prepares a recording session but does NOT perform it โ instead it asks how many 2048 byte data blocks you could write in the current state of the media with the setup you prepared. So it disables recording of data. It does not disable blanking though, and it'll measure the space afterwards. ๐ต๏ธโ๏ธ You don't have to give track sources, but their nature may influence the available capacity. So for the most realistic results, set up the full burn session and add--tell_media_space. But if you might be dealing with a cdrskin version before 0.3.3, give no track source, so you don't accidentally start an involuntary burn session. In that case set at least-saoor-taoexplicitly. The result gets printed to standard output, and it's0or empty if no writing is possible with the given options. This option redirects to stderr all message output except its own result string and eventual output of-msinfo.textfile_to_v07t=pathโ read a CD-TEXT pack file (likecdtext.datfrom a run with-v -v -toc) and print its content in the human readable format described with optioninput_sheet_v07t=. The program run ends immediately after that. No drive scan happens and no drive gets acquired. To avoid the cdrskin start message in the output, run:
cdrskin textfile_to_v07t=cdtext.dat | grep -v '^cdrskin'
--two_channelโ tells cdrskin that subsequent tracks were mastered with two channels. ๐งโจwrite_start_address=byte_offsetโ sets the address on the media where writing of the track starts. With DVD+RW, DVD-RAM or BD-RE,byte_offsetmust be aligned to 2 kiB blocks, but 32 kiB is better. With DVD-RW, 32 kiB alignment is mandatory. Other media aren't suitable for this option yet. ๐modesty_on_drive=<mode>[:parameter=<value>[:parameter=<value>...]]โ okay this one's a whole vibe, let's break it down. ๐ธ Mode 1 keeps the program from trying to write to the burner drive while its buffer is in danger of being filled by more than parameter"max_percent". If that filling gets exceeded, the program waits until the filling is at most the value of parameter"min_percent". Percentages are allowed in the range of 25 to 100. This can ease the load on the operating system and drive controller, and so help with achieving better input bandwidth if the disk and the burner are not on independent controllers (likehdaandhdb). Insufficient input bandwidth shows up as output"(fifo xy%)"from option-vifxyis lower than 90 for some time.modesty_on_drive=might hamper output bandwidth and cause buffer underruns. A new use case is working around the poor simultaneous performance of multiple burn runs on Linux kernel 3.16 and alike. Here it's not about giving the hard disk enough time to fill the fifo, but about keepingioctl(SG_IO)from blocking for a longer time and thus blocking all the other burn runs. ๐ซถ Havingmax_percentlarger than the burner's best actual buffer fill has the same effect asmin_percent==max_percent. Some burners don't use their full buffer with all media types. Watch output"[buf xy%]"of option-vto get an impression of the actual buffer usage. Some burners aren't suitable because they report buffer fill with granularity too large in size or time, or because they only go to full speed when their buffer is full. ๐ญ If a write attempt is delayed, the program waits for a number of microseconds given by parameter"min_usec"before inquiring the buffer again. If more retries occur, this waiting time between inquiries increases up to the value of parameter"max_usec". If the delay lasts longer than the number of seconds given by parameter"timeout_sec", then mode 1 is set to 0 and normal burning goes on. Mode 0 disables this feature. Mode -1 keeps it unchanged. The default is:
0:min_percent=65:max_percent=95:timeout_sec=120:
min_usec=10000:max_usec=100000
The defaults of cdrskin are good for IDE problems. With concurrent Linux SG_IO problems on modern hardware, higher min_percent and lower usec might yield better buffer fills while still avoiding the problem:
min_percent=90:max_percent=95:min_usec=5000:max_usec=25000
๐ Alphabetical list of options which are only intended for very special situations and not for normal use ๐
Translation: these are the "iykyk" options. You probably don't need them. But they're here, and they're iconic.
--abort_handlerโ establishes default signal handling so a drive isn't left in a busy state, but instead gets shut down and waited on until it has ended the final operations. This option is only needed for revoking eventual--ignore_signalsor--no_abort_handler. ๐--allow_untested_mediaโ enables the use of media profiles which have been implemented but not yet tested. Currently this option is without effect because no media types are under test reservation. (If you really test experimental media, then please report the outcome onpkg-libburnia-devel@alioth-lists.debian.net) ๐จ--cdtext_dummyโ prepares a burn run, reports the effective array of CD-TEXT packs to stdout, and then ends the program run without starting to burn the session. A blank CD-R or CD-RW has to be present in the drive, nevertheless. ๐ The output is formatted in lines which describe 18 bytes as 2-digit hex numbers or as single printable characters. See libburn documentdoc/cdtext.txtabout the format of these records.--cdtext_verboseโ like--cdtext_dummybut without preventing the burn run. Combinable with option-dummyto exercise a CD burn run with no persistent impact on the medium. โจdev_translation=<sep><from><sep><to>โ sets a drive address alias. This was necessary before cdrskin-0.2.4 to manually translate cdrecord addresses into cdrskin addresses.<sep>is a single character which may not occur in the address string<from>.<from>is an address as expected to be given by the user via optiondev=.<to>is the address to be used instead whenever<from>is given. More than one translation instruction can be given in one cdrskin run. E.g.:
dev_translation=+ATA:1,0,0+/dev/sr1
dev_translation=+ATA:1,1,0+/dev/sr2
--drive_abort_on_busyโ Linux specific: abort process if a busy drive is encountered. ๐--drive_blockingโ Linux specific: try to wait for a busy drive to become free. This isn't guaranteed to work with all drivers. Some need nonblocking i/o. โณ--drive_f_setlkโ Linux specific: try to get exclusive lock on drive device file viafcntl(2). ๐--drive_not_exclusiveโ Linux specific: combines--drive_not_f_setlkand--drive_not_o_excl.--drive_not_f_setlkโ Linux specific: do not try to get exclusive lock on drive device file viafcntl(2).--drive_not_o_exclโ Linux specific: do not ask the operating system to prevent opening busy drives. Whether this leads to senseful behavior depends on operating system and kernel. ๐คทโ๏ธdrive_scsi_dev_family=sr|scd|sgโ Linux specific: select a SCSI device file family to be scanned for by options--devices,--device_linksand-scanbus. Normally this is/dev/sgNon kernel versions < 2.6 and/dev/srNon kernels >= 2.6. This option explicitly overrides that default in order to meet other programs at a common device file for each drive. On kernel 2.4 familiessrandscdwill find no drives. Device file family/dev/hdXon kernel >= 2.6 is not affected by this setting. ๐ง--drive_scsi_exclusiveโ Linux specific: try to exclusively reserve device files/dev/srN,/dev/scdM,/dev/sgKof drives. This would be helpful to protect against collisions with program growisofs. Regrettably on Linux kernel 2.4 with ide-scsi emulation this seems not to work. Whether it becomes helpful with new Linux systems has to be evaluated. ๐ฌ--fifo_disableโ disable fifo despite anyfs=. ๐ซ--fifo_per_trackโ use a separate fifo for each track.--fill_up_mediaโ expands the last track of the session to occupy all remaining free space on the media. This option overrides option-multi. It will not fill up media if option-saois given with CD media. โ ๏ธ
Caution: with multi-session media this option might increase readatibility on DVD-ROM drives, but with some DVD recorders and media types it might also fail to produce readable media at all. "Your mileage may vary".
You can expect the best possible read compatibility if you do not use -multi at all.
grab_drive_and_wait=secondsโ opens the addressed drive, waits the given number of seconds, releases the drive, and does normal work as indicated by the other options used. This option helps to explore the program behavior when faced with busy drives. Just start a second cdrskin with option--deviceswhilegrab_drive_and_wait=is still active. ๐ฃ--ignore_signalsโ tries to ignore any signals rather than abort the program. This is not a very good idea. You might end up waiting a very long time for cdrskin to finish. ๐--list_featuresโ bestie this one spills ALL the tea โ about the SCSI/MMC features that got pulled off the drive the last time it was acquired or re-assessed. Yeah it's way easier on the eyes than the raw reply to the SCSI commandGET CONFIGURATION, but ngl you still need the MMC spec text to actually decode it. The list comes as line groups shaped like this:
Code +/- : Name : Version,P/N
Raw feature data bytes as hex numbers
Parsed info as Name=Value pairs
The headline is the only line that doesn't start with a blank. Code shows up as a 16 bit hex number. A "+" means the feature is currently offered, and "-" marks the ones that might be offered under different circumstances. Name is the feature name straight out of the MMC specs. "P" flags persistent features, "N" flags non-persistent ones. The raw data can run over more than one line, and you'll never see a "=" in those lines. If there's no raw data at all, you get one line with some blanks instead. The parsed info shows some extracted field values whose names vibe with the names used in the MMC description of that particular feature โ parsed info lines have at least one Name=Value pair, and more than one line is totally possible. If no parsed info got produced, one line with some blanks shows up instead. Example:
0107 - : Real Time Streaming : 4,N
1f 00 00 00
RBCB=1 , SCS=1 , MP2A=1 , WSPD=1 , SW=1
--no_abort_handlerโ on signals, it exits even if the drive is in busy state. Girl. This is not a very good idea. You might end up with a stuck drive that refuses to hand out the media. ๐ญ--no_blank_appendableโ refuses to blank appendable CD-RW or DVD-RW. This is a feature that was once builtin with libburn, and fr fr there's no information available for what use case it was even needed. ๐--no_convert_fs_adrโ only does literal translations ofdev=. This stops cdrskin from test-opening device files just to find one that matches the givendev=specifier. Partly Linux specific: that kind of opening is needed for Bus,Target,Lun addresses unless option--old_pseudo_scsi_adris given. It's also needed to resolve device file addresses which are not listed withcdrskin --devicesbut nevertheless point to a usable drive. (Like/dev/sg0using the same SCSI address as/dev/sr0.) ๐ฆ--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 gets applied automatically to BD-R depends on option--bdr_obs_exempt. Use this option if you're suspicious that DVD-R[W] DAO or BD-R sessions abort with your kernel and/or DVD drive when their size isn't 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 isn't requested by--obs_padand that nostream_recordingis requested. This is a new feature introduced with version 1.5.6, and it might become default in later versions. ๐--old_pseudo_scsi_adrโ Linux specific: use and report literal Bus,Target,Lun addresses rather than real SCSI and pseudo ATA addresses. This method is outdated and was never compatible with original cdrecord. Not the vibe anymore, bestie. ๐sao_postgap=off|numberโ defines whether a post-gap shall be written at the end of the track, and how many sectors this gap shall have. A post-gap occupies the range of an additional index of the track and contains zeros. No bytes from the track source will be read for writing the post-gap. This setting affects only CD SAO write runs. ๐sao_pregap=off|numberโ defines whether a pre-gap shall be written before the track, and how many sectors this pre-gap shall have. A pre-gap is written in the range of track index 0 and contains zeros. No bytes from the track source will be read for writing the pre-gap. This setting affects only CD SAO write runs. The first track automatically gets a pre-gap of at least 150 sectors, and its size can only be enlarged by this call. ๐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. cdrskin then 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 whetheruse_immed_bit=is set to"off"by default. ๐ธ--xa1-ignoreโ silently interprets option-xa1as-data. This may be necessary if a frontend does not prepare-xa1block headers but insists in using option-xa1. ๐
๐ EXAMPLES ๐
๐ซ Get an overview of drives and their addresses:
cdrskin -scanbus
cdrskin dev=ATA -scanbus
cdrskin --device_links
๐ซ Get info about a particular drive or loaded media:
cdrskin dev=0,1,0 -checkdrive
cdrskin dev=ATA:1,0,0 -v -atip
cdrskin dev=/dev/hdc -minfo
๐ซ Prepare CD-RW or DVD-RW for re-use, DVD-RAM or BD-RE for first use:
cdrskin -v dev=/dev/sg1 blank=as_needed -eject
๐ซ Format DVD-RW to avoid need for blanking before re-use:
cdrskin -v dev=/dev/sr0 blank=format_overwrite
๐ซ De-format DVD-RW to make it capable of multi-session again:
cdrskin -v dev=/dev/sr0 blank=deformat_sequential
๐ซ Write ISO-9660 filesystem image as only one to blank or formatted media:
cdrskin -v dev=/dev/hdc speed=12 fs=8m \
blank=as_needed -eject padsize=300k my_image.iso
๐ซ Write compressed afio archive on-the-fly (not possible with minimally blanked DVD-RW or DVD-R DL):
find . | afio -oZ - | \
cdrskin -v dev=0,1,0 fs=32m speed=8 \
blank=as_needed padsize=300k -
๐ซ Write multi-session to the same CD, DVD-R[W], DVD+R[/DL], or BD-R:
cdrskin dev=/dev/sr0 -v padsize=300k -multi 1.iso
cdrskin dev=/dev/sr0 -v padsize=300k -multi 2.iso
cdrskin dev=/dev/sr0 -v padsize=300k -multi 3.iso
cdrskin dev=/dev/sr0 -v padsize=300k 4.iso
๐ซ Get multi-session info for option -C of program mkisofs:
c_values=$(cdrskin dev=/dev/hdc -msinfo 2>/dev/null)
mkisofs ... -C "$c_values" ...
๐ซ Inquire free space on media for a -multi run:
x=$(cdrskin dev=/dev/sr0 -multi \
--tell_media_space 2>/dev/null)
echo "Available: $x blocks of 2048 data bytes"
๐ซ Write audio tracks and CD-TEXT to CD:
cdrskin -v dev=ATA:1,0,0 speed=48 -sao \
input_sheet_v07t=cdtext.v07t \
track1.wav track2.au -audio -swab track3.raw
๐ซ Extract audio tracks and CD-TEXT from CD into directory /home/me/my_cd:
mkdir /home/me/my_cd
cdrskin -v dev=/dev/sr0 extract_audio_to=/home/me/my_cd \
cdtext_to_v07t=/home/me/my_cd/cdtext.v07t
๐๏ธ FILES ๐๏ธ
๐ Startup files:
If --no_rc is not given as the first argument, then cdrskin attempts on startup to read the arguments from the following files:
/etc/default/cdrskin
/etc/opt/cdrskin/rc
/etc/cdrskin/cdrskin.conf
$HOME/.cdrskinrc
The files are read in the sequence given above, but none of them is required for cdrskin to function properly. Each readable line is treated as one single argument โ no extra blanks. A first character '#' marks a comment, and empty lines are ignored. Example content of a startup file:
# This is the default device
dev=0,1,0
# Some more options
fifo_start_at=0
fs=16m
๐ Disabling superuser safety precautions:
The superuser is normally banned from using any other emulated drive but /dev/null. This ban can be lifted by the existence of file
/root/cdrskin_permissions/allow_emulated_drives
where the directory must be owned by the superuser and must not offer w- permissions for group or others.
Warning: Superusers must take care not to spoil their hard disk via its raw block device (likestdio:/dev/hdaorstdio:/dev/sd0). Like, genuinely bestie, do NOT do that. ๐ญ
๐ SEE ALSO ๐
Formatting data track sources for cdrskin:
mkisofs(8), genisoimage(8), xorriso(1), afio(1), star(1)
Other CD/DVD/BD burn programs:
cdrecord(1), wodim(1), xorriso(1)
For DVD/BD burning (also tutor of libburn's DVD/BD capabilities):
๐ AUTHOR ๐
cdrskin was written by Thomas Schmitt <scdbackup@gmx.net>.
This manual page was started by George Danchev <danchev@spnet.net> and is now maintained by Thomas Schmitt.
And that's the whole thing, bestie โ this was Version 1.5.8, Mar 31, 2026 of the CDRSKIN(1) page ๐ you read the entire manual fr fr, that's main character energy ๐ซถ slay, now go burn something iconic ๐ฅ๐
๐ฆ where this page comes from
- alpine 3.24: libburn-doc 1.5.8-r0 ยท GPL-2.0-or-later
- arch rolling: libburn 1.5.8-1 ยท GPL-2.0-or-later
- fedora 43: cdrskin 1.5.8-1.fc43 ยท GPL-2.0-or-later
- fedora 44: cdrskin 1.5.8-1.fc44 ยท GPL-2.0-or-later
- nixpkgs unstable: libburn 1.5.8
- ubuntu stonking: cdrskin 1.5.8-1.3 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms