home | help
UNTITLED()			      LOCAL			      UNTITLED()

NAME
     fdread -- read floppy disks

SYNOPSIS
     fdread [-qr] [-d device] [-f fillbyte] [-o file]
     fdread [-d device] -I numsects [-t trackno]

DESCRIPTION
     The  fdread  utility  reads floppy disks.	Effective read blocking based on
     the track size is performed, and floppy-specific error recovery  of  other-
     wise bad blocks can be enabled.

     The  fdread utility will always read an entire floppy medium, and write its
     contents to the respective output file.  Unlike  other  tools  like  dd(1),
     fdread  automatically  uses  a  read block size that is more efficient than
     reading single blocks (usually one track of data at a time), but falls back
     to reading single floppy sectors in case of an input/output error occurred,
     in order to obtain as much valid data as possible.  While fdread  is  work-
     ing, kernel error reporting for floppy errors is turned off, so the console
     and/or syslog are not flooded with kernel error messages.

     The fdread utility accepts the following options:

     -q      Turn  on  quiet mode.  By default, the medium parameters of the de-
	     vice are being written to standard error output, progress	will  be
	     indicated	by  the approximate number of kilobytes read so far, and
	     errors will be printed out in  detail,  including	the  information
	     about the location of recovered data in the output.  In quiet mode,
	     none of these messages will be generated.

     -r      Enable  error  recovery.	By default, fdread stops after the first
	     unrecovered read error, much like dd(1) does.   In  recovery  mode,
	     however, one of two recovery actions will be taken:

	     *	 If  the  error was a CRC error in the data field, the kernel is
		 told to ignore the error, and data are transferred to the  out-
		 put  file anyway.  Note that this will cause the erroneous data
		 to be included in the output file!  Still, this is the best re-
		 covery action that can be taken at all.

	     *	 All other errors are really fatal (usually, the FDC didn't find
		 the sector ID fields), thus a dummy block with fill bytes  will
		 be included in the output file.

	     Unless  operating	in quiet mode, the action taken and the location
	     of the error in the output file will be displayed.

     -d device
	     Specify the input floppy device, defaulting to /dev/fd0.  The para-
	     meter device must be a valid floppy disk device.

     -f fillbyte
	     Value of the fill byte used for dummy blocks in the output file  in
	     recovery  mode.  Defaults to `0xf0'.  (Mnemonic: "foo".)  The value
	     can be specified using the usual C language notation of the  number
	     base.

     -o file
	     Specify  the  output file to be file.  By default, the data will be
	     written to standard output.

     -I numsects
	     Read numsects sector ID fields, and write	out  their  contents  to
	     standard output.  Each sector ID field contains recorded values for
	     the cylinder number (`C'), the head number (`H'), the record number
	     (sector  number  starting with 1) (`R'), and the sector shift value
	     (0 = 128 bytes, 1 = 256 bytes, 2 =  512  bytes,  3  =  1024  bytes)
	     (`N').   The -I option is mutually exclusive with all other options
	     except -d device and -t trackno.

     -t trackno
	     Specify the track number (cylinder number * number of heads +  head
	     number)  to  read	the sector ID fields from; only allowed together
	     with the -I numsects option.

FILES
     /dev/fd0  Default device to read from.

DIAGNOSTICS
     The fdread utility sets the exit value according to sysexits(3).  In recov-
     ery mode, the exit value will be set to EX_IOERR if any error occurred dur-
     ing processing (even in quiet mode).

     Unless running in quiet mode, upon encountering an error, the status of the
     floppy disc controller (FDC) will be printed out, both in hexadecimal form,
     followed by a textual description that translates those values into  a  hu-
     man-readable  form  for the most common error cases that can happen in a PC
     environment.

     The FDC error status includes the three FDC status registers `ST0',  `ST1',
     and  `ST2',  as well as the location of the error (physical cylinder, head,
     and sector number, plus the "sector shift value", respectively).	See  the
     manual  for  the  NE765 or compatible for details about the status register
     contents.

     The FDC's status is then examined to determine whether the error is  deemed
     to  be  recoverable.   If error recovery was requested, the location of the
     bad block in the output file is  indicated  by  its  (hexadecimal)  bounds.
     Also, a summary line indicating the total number of transfer errors will be
     printed before exiting.

SEE ALSO
     dd(1), fdwrite(1), sysexits(3), fdc(4), fdcontrol(8)

HISTORY
     The  fdread  utility was written mainly to provide a means of recovering at
     least some of the data on bad media, and to  obviate  the	need  to  invoke
     dd(1) with too many hard to memorize options that might be useful to handle
     a floppy.

     The command appeared in FreeBSD 5.0.

AUTHORS
     Program and man page by Jorg Wunsch.

BUGS
     Concurrent  traffic on the second floppy drive located at the same FDC will
     make error recovery attempts pointless, since the FDC status obtained after
     a read error occurred cannot be guaranteed to actually belong to the  erro-
     neous  transfer.	Thus  using  option -r is only reliable if device is the
     only active drive on that controller.

     No attempt beyond the floppy error retry mechanism of fdc(4) is made in or-
     der to see whether bad sectors could still be read without errors by trying
     multiple times.

     Bits that are (no longer) available on the floppy medium cannot be  guessed
     by fdread.

FreeBSD 5.0			  May 14, 2001			       FDREAD(1)

home | help