Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FDREAD(1)		     General Commands Manual		       FDREAD(1)

NAME
     fdread -- read floppy disks

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

DEPRECATION NOTICE
     fdread is deprecated and may not be present in FreeBSD 16.0 and later.

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	did  not
		 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.

EXIT STATUS
     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).

DIAGNOSTICS
     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 ports 15.quarterly	November 16, 2025		       FDREAD(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fdread&sektion=1&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help