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

FreeBSD Manual Pages


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

     fdread -- read floppy disks

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

     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 working,	kernel error reporting for floppy errors is turned
     off, so the console and/or	syslog are not flooded with kernel error mes-

     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:

	     +o	 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
		 output	file anyway.  Note that	this will cause	the erroneous
		 data to be included in	the output file!  Still, this is the
		 best recovery action that can be taken	at all.

	     +o	 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 pa-
	     rameter 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 to-
	     gether with the -I	numsects option.

     /dev/fd0  Default device to read from.

     The fdread	utility	sets the exit value according to sysexits(3).  In re-
     covery mode, the exit value will be set to	EX_IOERR if any	error occurred
     during 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 human-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 cylin-
     der, head,	and sector number, plus	the "sector shift value", respec-
     tively).  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 er-
     rors will be printed before exiting.

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

     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 han-
     dle a floppy.

     The command appeared in FreeBSD 5.0.

     Program and man page by Jorg Wunsch.

     Concurrent	traffic	on the second floppy drive located at the same FDC
     will make error recovery attempts pointless, since	the FDC	status ob-
     tained after a read error occurred	cannot be guaranteed to	actually be-
     long to the erroneous 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
     order 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.

BSD				 May 14, 2001				   BSD


Want to link to this manual page? Use this URL:

home | help