841 lines
22 KiB
Groff
841 lines
22 KiB
Groff
|
.\" @(#)readcd.1 1.50 17/06/06 Copyright 1996-2017 J. Schilling
|
|||
|
.\"
|
|||
|
.\" The contents of this file are subject to the terms of the
|
|||
|
.\" Common Development and Distribution License, Version 1.0 only
|
|||
|
.\" (the "License"). You may not use this file except in compliance
|
|||
|
.\" with the License.
|
|||
|
.\"
|
|||
|
.\" See the file CDDL.Schily.txt in this distribution for details.
|
|||
|
.\" A copy of the CDDL is also available via the Internet at
|
|||
|
.\" http://www.opensource.org/licenses/cddl1.txt
|
|||
|
.\"
|
|||
|
.\" When distributing Covered Code, include this CDDL HEADER in each
|
|||
|
.\" file and include the License file CDDL.Schily.txt from this distribution.
|
|||
|
.\"
|
|||
|
.if t .ds a \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'a
|
|||
|
.if t .ds o \v'-0.55m'\h'0.00n'\z.\h'0.45n'\z.\v'0.55m'\h'-0.45n'o
|
|||
|
.if t .ds u \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'u
|
|||
|
.if t .ds A \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'A
|
|||
|
.if t .ds O \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'O
|
|||
|
.if t .ds U \v'-0.77m'\h'0.30n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.75n'U
|
|||
|
.if t .ds s \\(*b
|
|||
|
.if t .ds S SS
|
|||
|
.if n .ds a ae
|
|||
|
.if n .ds o oe
|
|||
|
.if n .ds u ue
|
|||
|
.if n .ds s sz
|
|||
|
.TH READCD 1 "Version 3.02 2017/06/06" "J\*org Schilling" "Schily\'s USER COMMANDS"
|
|||
|
.SH NAME
|
|||
|
readcd \- read or write data Compact Discs or related madia
|
|||
|
.SH SYNOPSIS
|
|||
|
.B readcd
|
|||
|
[
|
|||
|
.BI dev= device
|
|||
|
][
|
|||
|
.I options
|
|||
|
]
|
|||
|
|
|||
|
.SH DESCRIPTION
|
|||
|
.B Readcd
|
|||
|
is used to read or write Compact Discs.
|
|||
|
.PP
|
|||
|
.SS "Device naming"
|
|||
|
Most users do not need to care about device naming at all.
|
|||
|
If no
|
|||
|
.B dev=
|
|||
|
option was specified,
|
|||
|
.B readcd
|
|||
|
implements
|
|||
|
.B auto target
|
|||
|
support and automagically finds the drive in case that exactly
|
|||
|
one CD-ROM type drive is available in the system.
|
|||
|
In case that more than one CD-ROM type drive exists on the system,
|
|||
|
a list of possible device name parameters may be retrieved with
|
|||
|
.B "readcd \-scanbus
|
|||
|
or from the target example from the output of
|
|||
|
.BR "readcd dev=help" ,
|
|||
|
then the
|
|||
|
.B dev=
|
|||
|
parameter may be set based on the device listing.
|
|||
|
.PP
|
|||
|
The
|
|||
|
.I device
|
|||
|
parameter to the
|
|||
|
.B dev=
|
|||
|
option
|
|||
|
explained below refers to the
|
|||
|
.B SCSI\ CAM
|
|||
|
standard notation for
|
|||
|
.IR scsibus / target / lun
|
|||
|
of the CD/DVD/BluRay-Recorder.
|
|||
|
If a file /etc/default/cdrecord exists, the parameter to the
|
|||
|
.B dev=
|
|||
|
option may also be a drive name label in said file (see FILES section).
|
|||
|
|
|||
|
.SH OPTIONS
|
|||
|
.PP
|
|||
|
If no options except the
|
|||
|
.I dev=
|
|||
|
option have been specified,
|
|||
|
.B readcd
|
|||
|
goes into interactive mode.
|
|||
|
Select a primary function and then follow the instructions.
|
|||
|
.PP
|
|||
|
.SS "Informative options"
|
|||
|
.TP
|
|||
|
.B \-help
|
|||
|
display version information for
|
|||
|
.B readcd
|
|||
|
on standard output.
|
|||
|
.TP
|
|||
|
.B \-version
|
|||
|
Print version information and exit.
|
|||
|
.TP
|
|||
|
.B \-v
|
|||
|
Increment the level of general verbosity by one.
|
|||
|
This is used e.g. to display the progress of the process.
|
|||
|
.SS "Readcd functional options"
|
|||
|
.TP
|
|||
|
.B \-clone
|
|||
|
Do a clone read. Read the CD with all sub-channel data and a full TOC.
|
|||
|
The full TOC data will be put into a file with similar name as with the
|
|||
|
.B f=
|
|||
|
option but the suffix
|
|||
|
.B .toc
|
|||
|
added.
|
|||
|
.sp
|
|||
|
Note that reading in
|
|||
|
.B clone
|
|||
|
mode results in having no error correction at sub-channel level. Even in the main data channel,
|
|||
|
there is less error correction than with other read modes. This results in a slightly quality
|
|||
|
degradation. Avoid copying audio CDs in
|
|||
|
.B clone
|
|||
|
mode for this reason.
|
|||
|
.TP
|
|||
|
.B \-c2scan
|
|||
|
Scans the whole CD or the range specified by the
|
|||
|
.BI sectors= range
|
|||
|
for C2 errors. C2 errors are errors that are uncorrectable after the second
|
|||
|
stage of the 24/28 + 28/32 Reed Solomon correction system at audio level
|
|||
|
(2352 bytes sector size). If an audio CD has C2 errors, interpolation is needed
|
|||
|
to hide the errors. If a data CD has C2 errors, these errors are in most
|
|||
|
cases corrected by the ECC/EDC code that makes 2352 bytes out of 2048 data
|
|||
|
bytes. The ECC/EDC code should be able to correct about 100 C2 error bytes
|
|||
|
per sector.
|
|||
|
.sp
|
|||
|
If you find C2 errors you may want to reduce the speed using the
|
|||
|
.B speed=
|
|||
|
option as C2 errors may be a result of dynamic unbalance on the medium.
|
|||
|
.TP
|
|||
|
.B \-cxscan
|
|||
|
Scans the whole CD or the range specified by the
|
|||
|
.BI sectors= range
|
|||
|
for C1/C2/CU errors.
|
|||
|
In non-verbose mode, only a summary is printed.
|
|||
|
With
|
|||
|
.BR \-v ,
|
|||
|
a line for each non error free second is printed.
|
|||
|
with
|
|||
|
.BR \-vv ,
|
|||
|
a line for each second is printed.
|
|||
|
This scan method only works for a few drives.
|
|||
|
.TP
|
|||
|
.B \-edc\-corr
|
|||
|
In this mode,
|
|||
|
.B readcd
|
|||
|
reads CD data sectors in uncorrected audio mode
|
|||
|
and then tries to correct the data using the ECC/EDC decoder library
|
|||
|
.\" Das Bl<42>de nroff kan nicht mit <20> umgehen (speziell ISO-8859-1 vs. UTF-8)
|
|||
|
from Heiko Eissfeldt. As this library implements looping over two layers
|
|||
|
of error correction,
|
|||
|
.B readcd
|
|||
|
may be able to correct more data than the firmware of the CD-ROM drive.
|
|||
|
.sp
|
|||
|
This option is currently experimental and only applicable with
|
|||
|
CD media and currently only supports
|
|||
|
plain 2048 Byte CD-ROM sectors.
|
|||
|
.TP
|
|||
|
.BI f= file
|
|||
|
Specify the filename where the output should be written or the input should
|
|||
|
be taken from. Using '\-' as filename will cause
|
|||
|
.B readcd
|
|||
|
to use
|
|||
|
.BR stdout " resp. " stdin .
|
|||
|
.TP
|
|||
|
.B \-factor
|
|||
|
Output the speed values for
|
|||
|
.BR meshpoints= #
|
|||
|
as factor based on
|
|||
|
.I "single speed
|
|||
|
of the current medium.
|
|||
|
This only works if
|
|||
|
.B readcd
|
|||
|
is able to determine the current medium type.
|
|||
|
.TP
|
|||
|
.B \-fulltoc
|
|||
|
Retrieve a full TOC from the current disk and print it in hex.
|
|||
|
.TP
|
|||
|
.BR meshpoints= #
|
|||
|
Print read-speed at # locations.
|
|||
|
The purpose of this option is to create a list of read speed values suitable
|
|||
|
for e.g.
|
|||
|
.BR gnuplot .
|
|||
|
The speed values are calculated assuming that 1000 bytes are one kilobyte
|
|||
|
as documented in the SCSI standard.
|
|||
|
The output data created for this purpose is written to
|
|||
|
.IR stdout .
|
|||
|
.TP
|
|||
|
.B \-nocorr
|
|||
|
Switch the drive into a mode where it ignores read errors in data sectors that
|
|||
|
are a result of uncorrectable ECC/EDC errors before reading.
|
|||
|
If
|
|||
|
.B readcd
|
|||
|
completes, the error recovery mode of the drive is switched back to the remembered
|
|||
|
old mode.
|
|||
|
.TP
|
|||
|
.B \-noerror
|
|||
|
Do not abort if the high level error checking in
|
|||
|
.B readcd
|
|||
|
found an uncorrectable error in the data stream.
|
|||
|
.TP
|
|||
|
.B \-notrunc
|
|||
|
Do not truncate the output file when opening it.
|
|||
|
.TP
|
|||
|
.B \-overhead
|
|||
|
Meter the SCSI command overhead time.
|
|||
|
This is done by executing several commands 1000 times and printing the
|
|||
|
total time used. If you divide the displayed times by 1000, you get
|
|||
|
the average overhead time for a single command.
|
|||
|
.TP
|
|||
|
.B \-pi8scan
|
|||
|
Scans the whole DVD or the range specified by the
|
|||
|
.BI sectors= range
|
|||
|
for
|
|||
|
.B pisum8
|
|||
|
errors.
|
|||
|
In non-verbose mode, only a summary is printed.
|
|||
|
With
|
|||
|
.BR \-v ,
|
|||
|
a line for each non error free block of 8 * 32 kB is printed.
|
|||
|
with
|
|||
|
.BR \-vv ,
|
|||
|
a line for each block of 8 * 32 kB is printed.
|
|||
|
This scan method only works for a few drives.
|
|||
|
.TP
|
|||
|
.B \-pifscan
|
|||
|
Scans the whole DVD or the range specified by the
|
|||
|
.BI sectors= range
|
|||
|
for
|
|||
|
.B pif
|
|||
|
errors.
|
|||
|
In non-verbose mode, only a summary is printed.
|
|||
|
With
|
|||
|
.BR \-v ,
|
|||
|
a line for each non error free block of 32 kB is printed.
|
|||
|
with
|
|||
|
.BR \-vv ,
|
|||
|
a line for each block of 32 kB is printed.
|
|||
|
This scan method only works for a few drives.
|
|||
|
.TP
|
|||
|
.B \-plot
|
|||
|
This option modified the behavior for
|
|||
|
.BR \-cxscan ,
|
|||
|
.BR \-pi8scan
|
|||
|
and
|
|||
|
.BR \-pifscan .
|
|||
|
The output is better suited for gnuplot.
|
|||
|
.TP
|
|||
|
.BI retries= #
|
|||
|
Set the retry count for high level retries in
|
|||
|
.B readcd
|
|||
|
to
|
|||
|
.IR # .
|
|||
|
The default is to do 128 retries which may be too much if you like to read a CD
|
|||
|
with many unreadable sectors.
|
|||
|
.TP
|
|||
|
.BI sectors= range
|
|||
|
Specify a sector range that should be read.
|
|||
|
The range is specified by the starting sector number, a minus sign and the
|
|||
|
ending sector number.
|
|||
|
The end sector is not included in the list, so
|
|||
|
.BR sectors= 0-0
|
|||
|
will not read anything and may be used to check for a CD in the drive.
|
|||
|
.TP
|
|||
|
.BR speed= #
|
|||
|
Set the speed factor of the read or write process to #.
|
|||
|
# is an integer, representing a multiple of the audio speed.
|
|||
|
This is about 150 KB/s for CD-ROM and about 172 KB/s for CD-Audio.
|
|||
|
If no
|
|||
|
.I speed
|
|||
|
option is present,
|
|||
|
.B readcd
|
|||
|
will use maximum speed.
|
|||
|
Only MMC compliant drives will benefit from this option.
|
|||
|
The speed of non MMC drives is not changed.
|
|||
|
.sp
|
|||
|
Using a lower speed may increase the readability of a CD or DVD.
|
|||
|
.TP
|
|||
|
.B \-w
|
|||
|
Switch to write mode.
|
|||
|
Writing is only possible to DVD-RAM media. For other media, use
|
|||
|
.B cdrecord
|
|||
|
instead.
|
|||
|
Note that
|
|||
|
.B cdrecord
|
|||
|
also supports to write DVD-RAM media.
|
|||
|
.sp
|
|||
|
If this option is not present,
|
|||
|
.B readcd
|
|||
|
reads from the specified device.
|
|||
|
.SS "SCSI options"
|
|||
|
.TP
|
|||
|
.BI dev= target
|
|||
|
Set the SCSI target for the CD/DVD/BluRay-Recorder, see notes above.
|
|||
|
A typical target device specification is
|
|||
|
.BI dev= 1,6,0
|
|||
|
\&.
|
|||
|
If a filename must be provided together with the numerical target
|
|||
|
specification, the filename is implementation specific.
|
|||
|
The correct filename in this case can be found in the system specific
|
|||
|
manuals of the target operating system.
|
|||
|
On a
|
|||
|
.I FreeBSD
|
|||
|
system without
|
|||
|
.I CAM
|
|||
|
support, you need to use the control device (e.g.
|
|||
|
.IR /dev/rcd0.ctl ).
|
|||
|
A correct device specification in this case may be
|
|||
|
.BI dev= /dev/rcd0.ctl:@
|
|||
|
\&.
|
|||
|
.sp
|
|||
|
.B \h'-2m'General SCSI addressing
|
|||
|
.br
|
|||
|
The
|
|||
|
.I target device
|
|||
|
to the
|
|||
|
.B dev=
|
|||
|
option
|
|||
|
refers to the
|
|||
|
.B SCSI\ CAM
|
|||
|
standard notation for
|
|||
|
.IR scsibus / target / lun
|
|||
|
of the CD/DVD/BluRay-Recorder. Communication on
|
|||
|
.I SunOS
|
|||
|
is done with the SCSI general driver
|
|||
|
.B scg.
|
|||
|
Other operating systems are using a library simulation of this driver.
|
|||
|
Possible syntax is:
|
|||
|
.B dev=
|
|||
|
.IR scsibus , target , lun
|
|||
|
or
|
|||
|
.B dev=
|
|||
|
.IR target , lun .
|
|||
|
In the latter case, the CD/DVD/BluRay-Recorder has to be connected to the default
|
|||
|
SCSI bus of the machine.
|
|||
|
.IR Scsibus ,
|
|||
|
.I target
|
|||
|
and
|
|||
|
.I lun
|
|||
|
are integer numbers.
|
|||
|
Some operating systems or SCSI transport implementations may require to
|
|||
|
specify a filename in addition.
|
|||
|
In this case the correct syntax for the device is:
|
|||
|
.B dev=
|
|||
|
.IR devicename : scsibus , target , lun
|
|||
|
or
|
|||
|
.B dev=
|
|||
|
.IR devicename : target , lun .
|
|||
|
If the name of the device node that has been specified on such a system
|
|||
|
refers to exactly one SCSI device, a shorthand in the form
|
|||
|
.B dev=
|
|||
|
.IR devicename : @
|
|||
|
or
|
|||
|
.B dev=
|
|||
|
.IR devicename : @ , lun
|
|||
|
may be used instead of
|
|||
|
.B dev=
|
|||
|
.IR devicename : scsibus , target , lun .
|
|||
|
.sp
|
|||
|
.B \h'-2m'Remote SCSI addressing
|
|||
|
.br
|
|||
|
To access remote SCSI devices, you need to prepend the SCSI device name by
|
|||
|
a remote device indicator. The remote device indicator is either
|
|||
|
.BI REMOTE: user@host:
|
|||
|
or
|
|||
|
.BI REMOTE: host:
|
|||
|
A valid remote SCSI device name may be:
|
|||
|
.BI REMOTE: user@host:
|
|||
|
to allow remote SCSI bus scanning or
|
|||
|
.BI REMOTE: user@host:1,0,0
|
|||
|
to access the SCSI device at
|
|||
|
.I host
|
|||
|
connected to SCSI bus # 1,target 0, lun 0.
|
|||
|
In order to allow remote access to a specific
|
|||
|
.IR host ,
|
|||
|
the
|
|||
|
.BR rscsi (1)
|
|||
|
program needs to be present and configured on the
|
|||
|
.IR host .
|
|||
|
.sp
|
|||
|
.B \h'-2m'Alternate SCSI transports
|
|||
|
.br
|
|||
|
.B Cdrecord
|
|||
|
is completely based on
|
|||
|
.B SCSI
|
|||
|
commands but this is no problem as all CD/DVD/BluRay writers
|
|||
|
ever made use
|
|||
|
.B SCSI
|
|||
|
commands for the communication. Even
|
|||
|
.B ATAPI
|
|||
|
drives are just
|
|||
|
.B SCSI
|
|||
|
drives that inherently use the
|
|||
|
.I "ATA packet interface
|
|||
|
as
|
|||
|
.B SCSI
|
|||
|
command transport layer build into the IDE (ATA) transport.
|
|||
|
You may need to specify an alternate transport layer on the command line
|
|||
|
if your OS does not implement a fully integrated kernel driver subsystem that
|
|||
|
allows to access any drive using
|
|||
|
.B SCSI
|
|||
|
commands via a single unique user interface.
|
|||
|
.sp
|
|||
|
To access SCSI devices via alternate transport layers,
|
|||
|
you need to prepend the SCSI device name by a transport layer indicator.
|
|||
|
The transport layer indicator may be something like
|
|||
|
.B USCSI:
|
|||
|
or
|
|||
|
.BR ATAPI: .
|
|||
|
To get a list of supported transport layers for your platform, use
|
|||
|
.B dev=
|
|||
|
.IR HELP :
|
|||
|
.sp
|
|||
|
.B \h'-2m'Portability Background
|
|||
|
.br
|
|||
|
To make
|
|||
|
.B readcd
|
|||
|
portable to all \s-2UNIX\s0 platforms, the syntax
|
|||
|
.B dev=
|
|||
|
.IR devicename : scsibus , target , lun
|
|||
|
is preferred as it hides OS specific knowledge about device names from the user.
|
|||
|
A specific OS may not necessarily support a way to specify a real device file name nor a
|
|||
|
way to specify
|
|||
|
.IR scsibus , target , lun .
|
|||
|
.sp
|
|||
|
.I Scsibus
|
|||
|
0 is the default SCSI bus on the machine. Watch the boot messages for more
|
|||
|
information or look into
|
|||
|
.B /var/adm/messages
|
|||
|
for more information about the SCSI configuration of your machine.
|
|||
|
If you have problems to figure out what values for
|
|||
|
.IR scsibus , target , lun
|
|||
|
should be used, try the
|
|||
|
.B \-scanbus
|
|||
|
option of
|
|||
|
.B readcd
|
|||
|
described below.
|
|||
|
.sp
|
|||
|
.B \h'-2m'Using logical names for devices
|
|||
|
.br
|
|||
|
If no
|
|||
|
.I dev
|
|||
|
option is present,
|
|||
|
.B readcd
|
|||
|
will try to get the device from the
|
|||
|
.B CDR_DEVICE
|
|||
|
environment.
|
|||
|
.sp
|
|||
|
If a file /etc/default/cdrecord exists, and
|
|||
|
if the argument to the
|
|||
|
.B dev=
|
|||
|
option
|
|||
|
or the
|
|||
|
.B CDR_DEVICE
|
|||
|
environment
|
|||
|
does not contain the characters ',', '/', '@' or ':',
|
|||
|
it is interpreted as a device label name that was defined in the file
|
|||
|
/etc/default/cdrecord (see FILES section).
|
|||
|
.sp
|
|||
|
.B \h'-2m'Autotarget Mode
|
|||
|
.br
|
|||
|
If no
|
|||
|
.B dev=
|
|||
|
option
|
|||
|
and no
|
|||
|
.B CDR_DEVICE
|
|||
|
environment
|
|||
|
is present, or if it
|
|||
|
only contains a transport specifyer but no address notation,
|
|||
|
.B readcd
|
|||
|
tries to scan the SCSI address space for CD-ROM drives.
|
|||
|
If exactly one is found, this is used by default.
|
|||
|
.TP
|
|||
|
.BI debug= "#, " \-d
|
|||
|
Set the misc debug value to # (with debug=#) or increment
|
|||
|
the misc debug level by one (with \-d). If you specify
|
|||
|
.I \-dd,
|
|||
|
this equals to
|
|||
|
.BI debug= 2.
|
|||
|
This may help to find problems while opening a driver for libscg.
|
|||
|
as well as with sector sizes and sector types.
|
|||
|
Using
|
|||
|
.B \-debug
|
|||
|
slows down the process and may be the reason for a buffer underrun.
|
|||
|
.TP
|
|||
|
.BR kdebug= "#, " kd= #
|
|||
|
Tell the
|
|||
|
.BR scg -driver
|
|||
|
to modify the kernel debug value while SCSI commands are running.
|
|||
|
.TP
|
|||
|
.B \-scanbus
|
|||
|
Scan all SCSI devices on all SCSI busses and print the inquiry
|
|||
|
strings. This option may be used to find SCSI address of the
|
|||
|
devices on a system.
|
|||
|
The numbers printed out as labels are computed by:
|
|||
|
.B "bus * 100 + target
|
|||
|
.TP
|
|||
|
.BI scgopts= list
|
|||
|
A comma separated list of SCSI options that are handled by libscg.
|
|||
|
The implemented options may be uptated indepentendly from applications.
|
|||
|
Currently, one option:
|
|||
|
.B ignore\-resid
|
|||
|
is supported to work around a Linux kernel bug.
|
|||
|
.TP
|
|||
|
.BR \-silent ", " \-s
|
|||
|
Do not print out a status report for failed SCSI commands.
|
|||
|
.TP
|
|||
|
.BI timeout= #
|
|||
|
Set the default SCSI command timeout value to
|
|||
|
.IR # " seconds.
|
|||
|
The default SCSI command timeout is the minimum timeout used for sending
|
|||
|
SCSI commands.
|
|||
|
If a SCSI command fails due to a timeout, you may try to raise the
|
|||
|
default SCSI command timeout above the timeout value of the failed command.
|
|||
|
If the command runs correctly with a raised command timeout,
|
|||
|
please report the better timeout value and the corresponding command to
|
|||
|
the author of the program.
|
|||
|
If no
|
|||
|
.I timeout
|
|||
|
option is present, a default timeout of 40 seconds is used.
|
|||
|
.TP
|
|||
|
.BR ts= #
|
|||
|
Set the maximum transfer size for a single SCSI command to #.
|
|||
|
The syntax for the
|
|||
|
.B ts=
|
|||
|
option is the same as for cdrecord fs=# or sdd bs=#.
|
|||
|
.sp
|
|||
|
If no
|
|||
|
.B ts=
|
|||
|
option has been specified,
|
|||
|
.B readcd
|
|||
|
defaults to a transfer size of 256 kB. If libscg gets lower values from the
|
|||
|
operating system, the value is reduced to the maximum value that is possible
|
|||
|
with the current operating system.
|
|||
|
Sometimes, it may help to further reduce the transfer size or to enhance it,
|
|||
|
but note that it may take a long time to find a better value by experimenting
|
|||
|
with the
|
|||
|
.B ts=
|
|||
|
option.
|
|||
|
.TP
|
|||
|
.B \-V
|
|||
|
Increment the verbose level with respect of SCSI command transport by one.
|
|||
|
This helps to debug problems
|
|||
|
during the process, that occur in the CD-Recorder.
|
|||
|
If you get incomprehensible error messages you should use this flag
|
|||
|
to get more detailed output.
|
|||
|
.B \-VV
|
|||
|
will show data buffer content in addition.
|
|||
|
Using
|
|||
|
.B \-V
|
|||
|
or
|
|||
|
.B \-VV
|
|||
|
slows down the process.
|
|||
|
.SH EXAMPLES
|
|||
|
.PP
|
|||
|
For all examples below, it will be assumed that the drive is
|
|||
|
connected to the primary SCSI bus of the machine. The SCSI target id is
|
|||
|
set to 2.
|
|||
|
.PP
|
|||
|
To read the complete media from a CD-ROM writing the data to the file
|
|||
|
.IR cdimage.raw :
|
|||
|
.PP
|
|||
|
readcd dev=2,0 f=cdimage.raw
|
|||
|
.PP
|
|||
|
To read sectors from range 150 ... 10000 from a CD-ROM writing the data to the file
|
|||
|
.IR cdimage.raw :
|
|||
|
.PP
|
|||
|
readcd dev=2,0 sectors=150-10000 f=cdimage.raw
|
|||
|
.PP
|
|||
|
To write the data from the file
|
|||
|
.I cdimage.raw
|
|||
|
(e.g. a filesystem image from
|
|||
|
.BR mkisofs )
|
|||
|
to a DVD-RAM, call:
|
|||
|
.PP
|
|||
|
readcd dev=2,0 \-w f=cdimage.raw
|
|||
|
|
|||
|
.SH ENVIRONMENT
|
|||
|
.TP
|
|||
|
.B RSH
|
|||
|
If the
|
|||
|
.B RSH
|
|||
|
environment is present, the remote connection will not be created via
|
|||
|
.BR rcmd (3)
|
|||
|
but by calling the program pointed to by
|
|||
|
.BR RSH .
|
|||
|
Use e.g.
|
|||
|
.BR RSH= /usr/bin/ssh
|
|||
|
to create a secure shell connection.
|
|||
|
.sp
|
|||
|
Note that this forces
|
|||
|
.B cdrecord
|
|||
|
to create a pipe to the
|
|||
|
.B rsh(1)
|
|||
|
program and disallows
|
|||
|
.B cdrecord
|
|||
|
to directly access the network socket to the remote server.
|
|||
|
This makes it impossible to set up performance parameters and slows down
|
|||
|
the connection compared to a
|
|||
|
.B root
|
|||
|
initiated
|
|||
|
.B rcmd(3)
|
|||
|
connection.
|
|||
|
.TP
|
|||
|
.B RSCSI
|
|||
|
If the
|
|||
|
.B RSCSI
|
|||
|
environment is present, the remote SCSI server will not be the program
|
|||
|
.B /opt/schily/sbin/rscsi
|
|||
|
but the program pointed to by
|
|||
|
.BR RSCSI .
|
|||
|
Note that the remote SCSI server program name will be ignored if you log in
|
|||
|
using an account that has been created with a remote SCSI server program as
|
|||
|
login shell.
|
|||
|
.SH EXIT STATUS
|
|||
|
The following exit codes are used:
|
|||
|
.TP
|
|||
|
.B 0
|
|||
|
No error appeared.
|
|||
|
.TP
|
|||
|
.B \-1
|
|||
|
A specific error appeared. This may be a usage error caused by an illegal command line
|
|||
|
or another error with a problem specific error message from
|
|||
|
.BR readcd .
|
|||
|
.TP
|
|||
|
.B \-2
|
|||
|
An unspecified error appeared during the process of talking to the drive.
|
|||
|
See SCSI error message for more informations. The section
|
|||
|
.B DIAGNOSTICS
|
|||
|
below contains an explanation on how to read SCSI error messages.
|
|||
|
.LP
|
|||
|
Note that older operating systems and older shells may not support the full 32 bit
|
|||
|
range of the exit code
|
|||
|
and mask the value with 0xFF. This results in shortened exit codes in the range
|
|||
|
.BR 0 .. 255
|
|||
|
where
|
|||
|
.B \-1
|
|||
|
is mapped to
|
|||
|
.BR 255 .
|
|||
|
|
|||
|
.SH FILES
|
|||
|
.SH SEE ALSO
|
|||
|
.BR cdrecord (1),
|
|||
|
.BR mkisofs (8),
|
|||
|
.BR scg (7),
|
|||
|
.BR fbk (7),
|
|||
|
.BR rcmd (3),
|
|||
|
.BR ssh (1).
|
|||
|
|
|||
|
.SH NOTES
|
|||
|
.PP
|
|||
|
If you don't want to allow users to become root on your system,
|
|||
|
.B readcd
|
|||
|
may safely be installed suid root. This allows all users or a group of
|
|||
|
users with no root privileges to use
|
|||
|
.B readcd.
|
|||
|
.B Readcd
|
|||
|
in this case will only allow access to CD-ROM type drives-
|
|||
|
To give all user access to use
|
|||
|
.B readcd,
|
|||
|
enter:
|
|||
|
.PP
|
|||
|
chown root /usr/local/bin/readcd
|
|||
|
.br
|
|||
|
chmod 4711 /usr/local/bin/readcd
|
|||
|
.PP
|
|||
|
To give a restricted group of users access to
|
|||
|
.B readcd
|
|||
|
enter:
|
|||
|
.PP
|
|||
|
chown root /usr/local/bin/readcd
|
|||
|
.br
|
|||
|
chgrp cdburners /usr/local/bin/readcd
|
|||
|
.br
|
|||
|
chmod 4710 /usr/local/bin/readcd
|
|||
|
.PP
|
|||
|
and add a group
|
|||
|
.I cdburners
|
|||
|
on your system.
|
|||
|
.PP
|
|||
|
Never give write permissions for non root users to the
|
|||
|
.I /dev/scg?
|
|||
|
devices unless you would allow anybody to read/write/format
|
|||
|
all your disks.
|
|||
|
.PP
|
|||
|
You should not connect old drives that do not support
|
|||
|
disconnect/reconnect to either the SCSI bus that is connected to the
|
|||
|
CD-Recorder or the source disk.
|
|||
|
.PP
|
|||
|
When using
|
|||
|
.B readcd
|
|||
|
with the
|
|||
|
.B "Linux SCSI generic driver."
|
|||
|
You should note that
|
|||
|
.B readcd
|
|||
|
uses a layer, that tries to emulate the functionality of the scg driver
|
|||
|
on top of the drives of the local operating system.
|
|||
|
Unfortunately, the sg driver on
|
|||
|
.B Linux
|
|||
|
has several flaws:
|
|||
|
.TP
|
|||
|
\(bu
|
|||
|
It cannot see if a SCSI command could not be sent at all.
|
|||
|
.TP
|
|||
|
\(bu
|
|||
|
It cannot get the SCSI status byte.
|
|||
|
.B Readcd
|
|||
|
for that reason cannot report failing SCSI commands in some
|
|||
|
situations.
|
|||
|
.TP
|
|||
|
\(bu
|
|||
|
It cannot get real DMA count of transfer.
|
|||
|
.B Readcd
|
|||
|
cannot tell you if there is an DMA residual count.
|
|||
|
.TP
|
|||
|
\(bu
|
|||
|
It cannot get number of bytes valid in auto sense data.
|
|||
|
.B Readcd
|
|||
|
cannot tell you if device transfers no sense data at all.
|
|||
|
.TP
|
|||
|
\(bu
|
|||
|
It fetches to few data in auto request sense (CCS/SCSI-2/SCSI-3 needs >= 18).
|
|||
|
|
|||
|
.SH DIAGNOSTICS
|
|||
|
.PP
|
|||
|
.PP
|
|||
|
A typical error message for a SCSI command looks like:
|
|||
|
.sp
|
|||
|
.RS
|
|||
|
.nf
|
|||
|
readcd: I/O error. test unit ready: scsi sendcmd: no error
|
|||
|
CDB: 00 20 00 00 00 00
|
|||
|
status: 0x2 (CHECK CONDITION)
|
|||
|
Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
|
|||
|
Sense Key: 0x5 Illegal Request, Segment 0
|
|||
|
Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
|
|||
|
Sense flags: Blk 0 (not valid)
|
|||
|
cmd finished after 0.002s timeout 40s
|
|||
|
.fi
|
|||
|
.sp
|
|||
|
.RE
|
|||
|
The first line gives information about the transport of the command.
|
|||
|
The text after the first colon gives the error text for the system call
|
|||
|
from the view of the kernel. It usually is:
|
|||
|
.B "I/O error
|
|||
|
unless other problems happen. The next words contain a short description for
|
|||
|
the SCSI command that fails. The rest of the line tells you if there were
|
|||
|
any problems for the transport of the command over the SCSI bus.
|
|||
|
.B "fatal error
|
|||
|
means that it was not possible to transport the command (i.e. no device present
|
|||
|
at the requested SCSI address).
|
|||
|
.PP
|
|||
|
The second line prints the SCSI command descriptor block for the failed command.
|
|||
|
.PP
|
|||
|
The third line gives information on the SCSI status code returned by the
|
|||
|
command, if the transport of the command succeeds.
|
|||
|
This is error information from the SCSI device.
|
|||
|
.PP
|
|||
|
The fourth line is a hex dump of the auto request sense information for the
|
|||
|
command.
|
|||
|
.PP
|
|||
|
The fifth line is the error text for the sense key if available, followed
|
|||
|
by the segment number that is only valid if the command was a
|
|||
|
.I copy
|
|||
|
command. If the error message is not directly related to the current command,
|
|||
|
the text
|
|||
|
.I deferred error
|
|||
|
is appended.
|
|||
|
.PP
|
|||
|
The sixth line is the error text for the sense code and the sense qualifier if available.
|
|||
|
If the type of the device is known, the sense data is decoded from tables
|
|||
|
in
|
|||
|
.IR scsierrs.c " .
|
|||
|
The text is followed by the error value for a field replaceable unit.
|
|||
|
.PP
|
|||
|
The seventh line prints the block number that is related to the failed command
|
|||
|
and text for several error flags. The block number may not be valid.
|
|||
|
.PP
|
|||
|
The eight line reports the timeout set up for this command and the time
|
|||
|
that the command really needed to complete.
|
|||
|
|
|||
|
.SH BUGS
|
|||
|
|
|||
|
.SH CREDITS
|
|||
|
|
|||
|
.SH "MAILING LISTS
|
|||
|
If you want to actively take part on the development of cdrecord,
|
|||
|
you may join the developer mailing list via this URL:
|
|||
|
.sp
|
|||
|
.B
|
|||
|
https://lists.sourceforge.net/lists/listinfo/cdrtools-developers
|
|||
|
|
|||
|
.SH AUTHOR
|
|||
|
.nf
|
|||
|
J\*org Schilling
|
|||
|
Seestr. 110
|
|||
|
D-13353 Berlin
|
|||
|
Germany
|
|||
|
.fi
|
|||
|
.PP
|
|||
|
Additional information can be found on:
|
|||
|
.br
|
|||
|
http://cdrecord.org/private/cdrecord.html
|
|||
|
.PP
|
|||
|
If you have support questions, send them to:
|
|||
|
.PP
|
|||
|
.B
|
|||
|
cdrtools-support@lists.sourceforge.net
|
|||
|
.PP
|
|||
|
If you have definitely found a bug, send a mail to:
|
|||
|
.PP
|
|||
|
.B
|
|||
|
cdrtools-developers@lists.sourceforge.net
|
|||
|
.br
|
|||
|
or
|
|||
|
.B
|
|||
|
joerg.schilling@fokus.fraunhofer.de
|
|||
|
.PP
|
|||
|
To subscribe, use:
|
|||
|
.PP
|
|||
|
.B
|
|||
|
https://lists.sourceforge.net/lists/listinfo/cdrtools-developers
|
|||
|
.br
|
|||
|
or
|
|||
|
.B
|
|||
|
https://lists.sourceforge.net/lists/listinfo/cdrtools-support
|
|||
|
.br
|
|||
|
.ne 7
|
|||
|
.SH "INTERFACE STABILITY
|
|||
|
The interfaces provided by
|
|||
|
.B readcd
|
|||
|
are designed for long term stability.
|
|||
|
As
|
|||
|
.B readcd
|
|||
|
depends on interfaces provided by the underlying operating system,
|
|||
|
the stability of the interfaces offered by
|
|||
|
.B readcd
|
|||
|
depends on the interface stability of the OS interfaces.
|
|||
|
Modified interfaces in the OS may enforce modified interfaces
|
|||
|
in
|
|||
|
.BR readcd .
|